前言¶
DSH 的会话越长越容易失忆:需求在哪一轮讨论的、代码改到哪一版、测试通过了几轮,等会话页滚到看不见顶部时,这些信息已经找不回来了。靠手写笔记或在另一处 Markdown 里记日志,要么跟不上工具调用,要么事后抄不全。
dsh-session-journal 就是这个场景的解法:它在 DSH Web 端右侧栏维护一份会话工作日志,把每一轮 turn 归纳成若干「工作项」(work item),每项带状态、结果、遗留问题(open items)与决策记录,并提供从日志直接跳转到任意一轮对话的入口。
这是什么¶
dsh-session-journal 是一个 DeepSeek Harness(DSH)Web 插件,由 Edison-A-N 维护,当前版本 0.3.1,许可证 MIT。它定位为会话级工作日志,不替代对话,而是从会话日志中提取事实、用模型做归纳,在右侧栏形成结构化的工作记录。
它面向的是长会话、多阶段任务的开发者:需求、研究、设计、编码、评审、修复、测试混在一个会话里,需要随时回答「我们做到哪了」「还差什么没做完」「刚才哪一轮改了什么」。
核心功能¶
Now 概览:会话是否在运行、当前处于哪个阶段(例如 Review #2)、一行状态摘要;当 agent 停下来等待用户输入时,显示高亮的 “Your turn” 提示。同时展示会话合计:open items 数、决策数、turn 数、耗时、改动文件数与行数、通过的测试数。
工作项(Work items):会话的 turn 按目的分组,而不是按时间顺序排列,每项一张卡片,显示状态、覆盖的 turn、涉及的文件与测试,以及仍 open 与已 decided 的数量。展开后能看到目标(goal)、结果(result)、遗留项、决策,以及两个列表:
- Jump to a turn:每个 turn 一行,显示该轮用户的请求与经历的阶段,点击后聊天区滚动到该 turn 开头(必要时自动加载更早历史)。
- Changed files:文件名、目录、增删行数、触碰它的阶段,点击可在侧栏预览文件。
Header chip:会话标题旁展示当前工作项与阶段的小标签,点击即打开日志面板。
语言跟随 DSH 的界面语言设置(中/英);摘要语言在面板底部单独选择,可与 UI 语言一致,也可强制中文或英文。
安装与启用¶
安装命令来自 README,注意 --profile web 这个限定:
dsh plugin --profile web add github:Edison-A-N/dsh-session-journal
插件自带 bundle patch(dsh.bundle.patch 与 cordis.patch.yml),CLI 与 Web UI 的 Plugins 页都会一步加载。装完重启 DSH、刷新页面、打开任意会话,在右侧栏起始页选 Work log,或点击会话标题旁的 chip。
环境要求:DSH >=0.2.2-alpha.2 <0.3.0-0(0.2.x 及预发布版),Node >=22.19。当前目录页显示星标为 0。
典型用法¶
1、让日志自动维持:只要会话有一轮结束,插件在后台把这一轮做模型摘要,再重新分组工作项;面板开着的会话每几秒检查一次,直到无事可做。失败的摘要一分钟后重试,共三次;无进展五分钟后放弃。
2、查看和追溯:展开工作项卡片看 goal、result、open items、decisions;点 Jump to a turn 里某一行,聊天区回到那一轮;点 Changed files 里的文件,在侧栏预览。
3、切换摘要语言:在面板底部选择,设置按会话缓存,来回切换即时生效。
后台模型默认使用「该会话自己配置的 provider 和模型」,摘要调用是独立请求,不触碰会话或其缓存。若想全局固定一个更便宜的模型,在 DSH 启动环境(例如 $DSH_HOME/.env)同时设置:
SESSION_JOURNAL_PROVIDER=<provider id>
SESSION_JOURNAL_MODEL=<model id>
SESSION_JOURNAL_EFFORT=low # reasoning effort;"default" 交给路由
# SESSION_JOURNAL_MODEL=off # 不调用模型,只用规则
只设其中一个不生效,改完要重启 DSH。没有模型时插件依然工作:阶段用规则(编辑、测试、评审)判断,整个会话合并为一个工作项。首次展示无缓存的长会话时,逐轮摘要需要一两分钟,此期间面板显示规则阶段。
适用场景与注意¶
适合:长时间、多阶段、需要事后回溯「哪一轮做了什么」的 DSH 会话;希望右侧栏有一个接近实时的工作面板的开发者。
先讲实现方式,再决定是否用。工作项分组与摘要由模型完成,分组结果不一定符合人的直觉(一个 release 步骤可能单独成项);轮次运行期间 open items 可能落后一轮,等 turn 结束摘要后才追平。跳转到 turn 依赖聊天视图内部 UI(右侧 turn rail 的点击),不是 DSH 的公开 API——DSH 更新若改动其 DOM,点击会失效或提示,其他功能不受影响。另外,聊天列宽度小于 900px 时 rail 默认隐藏,插件只在点击瞬间临时渲染;当前主区域必须是 Chat 视图,否则插件会提示先切回去。
卸载与安装都建议先看源码。插件以当前 DSH 进程权限运行,执行文件读写与模型调用;安装前检查仓库源码、README 与 cordis.patch.yml 补丁内容,确认许可证为 MIT 并将其纳入内部许可审查流程。
结尾¶
dsh-session-journal 的价值在于把「聊到哪一步」从记忆问题变成面板问题:事实来自会话日志,模型只做归纳,摘要按会话与语言缓存,每轮 turn 只花一次模型调用。如果你管理长 DSH 会话并且经常需要回溯某一轮,值得装上试一个真实项目。
- 目录页:https://www.skillhub.cn/plugins/Edison-A-N/dsh-session-journal
- GitHub:https://github.com/Edison-A-N/dsh-session-journal