前言¶
在 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 时触发流程:
- 收集这一轮的用户消息、助手回复与工具调用清单。
- 约束模型只描述「动作清单」里出现过的操作,降低胡编概率。
- 将记录追加进
<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 为可选,旧记录可能没有该字段。
典型用法¶
- 安装并重启 DSH,在「插件 → 工作记录」把
root指到你希望存放 JSON 的目录(例如与项目同盘的路径,便于备份)。 - 正常在多轮对话里改代码、跑命令;每轮 正常结束 后检查对应工作区下的 JSON 是否追加了一条
records。 - 新开对话或交给其他 Agent 时,读取相关 JSON 中的
records[].content(必要时连同actions),作为「已做过什么」的上下文,而不必粘贴完整聊天。 - 若在意每轮多一次模型调用,将
summarize设为false;若暂时不需要写入,将enabled设为false。
适用场景与注意¶
更适合:长期在同一工作区迭代、需要把「动作级」历史传给下一个会话或外部 AI 的 DSH 用户;与 DSH「一切皆插件」的生态思路一致,社区目录 SkillHub 为独立站点,并非 DeepSeek / 幻方官方应用商店。
需要留意:
- 摘要质量取决于当前默认模型;关掉
summarize则内容更接近原文摘抄。 - 不记录子代理刷屏会话,也不记录未完成轮次,不能替代完整的审计日志。
- 配置默认根目录示例为 Windows 路径
E:\DSH-WorkLogs,在 Linux 上应在界面或配置中改为本机路径。
结尾¶
dsh-work-log 把每轮协作压成一条条可读的 JSON 记录,按工作区与对话归档,方便后续 AI 直接引用「要求—动作—结果」链。若要安装或查看说明,可从 SkillHub 目录页 进入,完整行为与限制以 GitHub 仓库 README 为准。