dsh-trace-repeat
Task trace recorder/replayer for DSH Web: atomically records every completed reasoning step and tool execution of any session as an immutable version (with reproducibility metadata), supports step-by-step replay and resume-from-version, honors task-control pause/resume, and materializes versions via git worktrees.
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:p2coder/dsh-trace-repeat说明文档
阅读完整 README ↗dsh-trace-repeat
任务 Trace 记录/回放插件(DSH Web):原子、版本化地记录任意会话的执行 trace——每次推理完成(assistant 消息收齐所有 chunk 后的最终消息)或 tool 执行完成 就是一个不可变版本,含完整可复现元数据(provider/model/reasoningEffort/maxTokens/token 用量/输入输出);支持回放(版本时间线 + 详情)与从历史版本恢复执行;与 task-control 暂停/恢复 衔接;多版本经 git commit + worktree 物化。
功能
| 环节 | 行为 |
|---|---|
| 记录 | 宿主订阅 session/event(post-commit 馈送,按序):assistant/message → reasoning 版本;tool/call+tool/result → tool 版本(含工具名/参数/结果);普通用户输入 → user 版本;不记 chunk 增量,只记收齐后的最终消息 |
| 原子性 | 每版本一个不可变 JSON(tmp 写 + rename 原子落盘),trace.json 索引同样原子更新;按源事件 seq 幂等去重 |
| 可复现元数据 | provider/model/reasoningEffort/maxTokens/usage/完整 content(推理);工具名/callId/参数/结果/isError(工具);会话头记 workspace/cwd/preset/agentOptions |
| git 版本化 | 默认开启:trace 根(.dsh-trace/)即专用 git 仓库(自动 init,不污染工作区),每版本一个 commit;worktree 物化在 .dsh-trace-worktrees/-v(git 不允许 worktree 建在仓库内) |
| 暂停/恢复 | 通过 taskControl 服务(task-control 自管的持久化状态,Route A:不再写 task-control/* 会话事件)在每个会话事件上对账:安全暂停(延迟语义)下 tool 运行期间 trace 持续记录、tool/result 落地后(安全界限)才暂停;强制暂停的 paused 版本记录 forced 与 interruptedTool 详情;恢复时记 resumed 标记版本并续记;与 task-control 通过服务解耦 |
| 回放 | /trace 命令族:会话选择 → 版本时间线(类型/时间/git commit)→ 详情(完整输入输出 + 元数据)→ 从该版本恢复(自动物化 worktree) |
| 恢复执行 | /trace resume :以 vN 前 trace 重建平衡上下文(自动截断到最近一个无悬挂 tool 调用的「推理完成」版本),在对应 worktree 里新开会话继续执行,新会话自身继续被记录 |
限制
- 只记录收齐后的最终消息(不含流式增量)。