dsh-work-log:把每轮 DSH 对话整理成可复用的 JSON 工作记录

前言

在 DeepSeek Harness(DSH)里和模型协作时,真正有价值的往往不是整段聊天原文,而是「这轮用户要什么、我们改了什么、最后交付了什么」。把历史对话整包塞进下一次提示,噪声大、token 也多;只凭记忆又容易漏掉路径和动作。

下面介绍的 dsh-work-log 是社区插件(维护者 Eule-Lawrence,分类:记忆),在每轮对话正常结束时自动汇总一轮素材,写成叙述式记录,并按工作区与对话分文件存成 JSON,方便你或其他 AI 直接当上下文用。它不是聊天记录备份,而是面向后续推理的工作素材。

这是什么

dsh-work-log 监听 DSH 的轮次结束事件,收集该轮的用户消息、助手回复和工具调用清单,再调用当前默认模型生成一段约 120~220 字、第一人称复数的叙述;若模型不可用,则退回原文摘要,避免丢记录。产物落在可配置的根目录下,结构为 根目录 / 工作区目录名 / 对话标题.json。

插件当前版本为 0.2.0(见仓库 package.json),许可证 MIT。社区目录页:SkillHub - dsh-work-log;源码:GitHub - Eule-Lawrence/dsh-work-log。

工作原理

一轮对话在 turn/end 且 reason: completed 时触发流程:

  1. 收集这一轮的用户消息、助手回复与工具调用清单。
  2. 约束模型只描述「动作清单」里出现过的操作,降低胡编概率。
  3. 将记录追加进 <root>/<工作区>/<对话标题>.json。

同一标题若属于不同会话,文件名会带 -<短id> 后缀,避免覆盖;对话标题后生成时,文件会改名跟随。

子代理会话(origin: subagent)不记录;中途被打断、未 completed 的轮次也不记录。

核心功能

  • 按工作区与对话分文件:工作区名来自会话 cwd 的目录名,一个对话对应一个 JSON 文件。
  • 叙述式 content + 可选 actions:除文字摘要外,可附带本轮实际工具调用列表,便于核对「真的做过什么」。
  • 可关闭模型摘要:配置 summarize: false 时只记原文摘要,省掉每轮约 4k 字符输入的一次小模型调用。
  • 总开关:enabled: false 时不再写入新记录,已有文件保留。

安装与启用

在你的 profile 目录安装。DSH 桌面版可用 GUI 里的插件管理,或 plugin_manager 工具。README 给出的命令形式如下(<本仓库路径或包名> 以你实际使用的来源为准,不要凭插件名自行拼接未文档化的包名):

dsh plugin --profile <你的profile> add <本仓库路径或包名>

装好后插件会进入 dsh.profile.bundles,重启 DSH 后生效。

安装前建议自行浏览仓库源码与 MIT 许可证;插件在 当前 DSH 进程权限 下运行,并能读取对话内容与调用模型写摘要,请只在可信环境启用。

配置

三处可改,优先级从高到低:

位置 说明
界面「插件 → 工作记录」 改根目录等,保存后写入 $DSH_HOME/work-log/config.json
插件内 cordis.patch.yml 的 config 默认值
环境变量 DSH_HOME 决定上述 config.json 的路径

字段含义(默认值以 README 为准):

字段 默认 含义
root E:\DSH-WorkLogs 日志根目录
enabled true 关闭后不再写新记录
summarize true 关闭则记原文摘要,不额外调模型

文件结构与记录格式

磁盘布局:

<root>/
└── <工作区目录名>/
    └── <对话标题>.json

单文件示例(字段含义见 README):

{
  "generator": "dsh-work-log",
  "workspace": "deepseek harness",
  "cwd": "E:\\deepseek harness",
  "conversation": "DSH插件更新报错排查",
  "sessionId": "session-...",
  "createdAt": "2026-11-06 19:32:22",
  "updatedAt": "2026-11-06 20:05:10",
  "records": [
    {
      "index": 1,
      "time": "2026-11-06 19:32:22",
      "turn": 14,
      "content": "你让我把工作日志插件的行为和配置方式摸清楚……",
      "actions": ["write E:\\deepseek harness\\dsh-plugins\\work-log\\index.js", "pwsh node --check"]
    }
  ]
}

records 中:index 为对话内自增序号;turn 为 DSH 轮次号;content 供下游模型阅读;actions 为可选,旧记录可能没有该字段。

典型用法

  1. 安装并重启 DSH,在「插件 → 工作记录」把 root 指到你希望存放 JSON 的目录(例如与项目同盘的路径,便于备份)。
  2. 正常在多轮对话里改代码、跑命令;每轮 正常结束 后检查对应工作区下的 JSON 是否追加了一条 records。
  3. 新开对话或交给其他 Agent 时,读取相关 JSON 中的 records[].content(必要时连同 actions),作为「已做过什么」的上下文,而不必粘贴完整聊天。
  4. 若在意每轮多一次模型调用,将 summarize 设为 false;若暂时不需要写入,将 enabled 设为 false。

适用场景与注意

更适合:长期在同一工作区迭代、需要把「动作级」历史传给下一个会话或外部 AI 的 DSH 用户;与 DSH「一切皆插件」的生态思路一致,社区目录 SkillHub 为独立站点,并非 DeepSeek / 幻方官方应用商店。

需要留意:

  • 摘要质量取决于当前默认模型;关掉 summarize 则内容更接近原文摘抄。
  • 不记录子代理刷屏会话,也不记录未完成轮次,不能替代完整的审计日志。
  • 配置默认根目录示例为 Windows 路径 E:\DSH-WorkLogs,在 Linux 上应在界面或配置中改为本机路径。

结尾

dsh-work-log 把每轮协作压成一条条可读的 JSON 记录,按工作区与对话归档,方便后续 AI 直接引用「要求—动作—结果」链。若要安装或查看说明,可从 SkillHub 目录页 进入,完整行为与限制以 GitHub 仓库 README 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye