Add a workflow run comparison view for debugging and performance analysis
- Dominant language
- TypeScript
- Stars
- 156k
- Forks
- 24.6k
- Avg merge
- 22h 9m
- Merged PRs (30d)
- 610
Description
### Self Checks
- [x] I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542).
- [x] I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones.
- [x] I confirm that I am using English to submit this report, otherwise it will be closed.
- [x] Please do not modify this template :) and fill in all the required fields.
### 1. Is this request related to a challenge you're experiencing? Tell me about your story.
When developing and debugging complex Dify workflows, it is common to run the same workflow multiple times after changing a prompt, model, node configuration, or input.
Currently, investigating the difference between two executions can require opening each run separately and manually comparing node outputs, execution times, and other information. This becomes increasingly difficult for workflows with many nodes or multiple branches.
A dedicated **Compare Runs** feature would make it much easier to understand what changed between two executions.
### 2. Additional context or comments
I propose adding a **Compare Runs** action to the workflow execution history.
Users could select two completed workflow runs and view a comparison such as:
```text
Run A Run B Difference
-------------------------------------------------------------
Total time 8.42 s 6.17 s -2.25 s
LLM tokens 4,820 3,910 -910
Nodes executed 14 14 0
Final status Success Success -
```
The comparison could also highlight differences at the node level:
```text
Node: Generate Summary
Run A output:
"Longer generated summary..."
Run B output:
"Shorter generated summary..."
Latency:
Run A: 2.41 s
Run B: 1.72 s
Token usage:
Run A: 1,240
Run B: 890
```
For workflow branches, the UI could highlight nodes whose execution status, output, latency, or token usage changed between the two runs.
Useful comparison categories could include:
* Node execution status
* Node outputs
* Execution duration
* Token usage
* Model/provider information
* Errors and warnings
* Branches taken
* Overall workflow duration
The comparison should avoid exposing sensitive values unnecessarily and could provide an option to hide or mask node outputs.
This would be particularly useful when evaluating prompt changes, switching models, optimizing workflows, or investigating performance regressions.
### 3. Can you help us with this feature?
I am interested in contributing to this feature.
### 2. Additional context or comments
_No response_
### 3. Can you help us with this feature?
- [ ] I am interested in contributing to this feature.
Contributor guide
Research direction
No files or tests are named in the issue. Start at the workflow execution history and trace how completed runs expose node outputs, status, timing, and token data. Done should be a defined comparison view for two runs, including the agreed overall and node-level differences while protecting sensitive outputs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100