前言¶
在 DSH 里跑 agent 会话时,模型的 reasoning 会逐轮写入会话日志,但当前上下文往往只保留「表面」一部分:压缩(compaction)会把较早的步骤从模型可见范围里拿掉,界面里也不方便把整段思维链交给另一个会话或 subagent 做监督审查。手工复制粘贴既丢步骤,也难保留 fork 继承、被 superseded 的步骤等元信息。
下面介绍社区插件 dsh-cot-export(维护者 Aliarrrrr):它从同一条只读流水线出发,把会话里模型输出的每一个 reasoning 块导出为工作区内的 Markdown、JSON、JSONL、纯文本或 HTML,并可选生成带 rubric 与委派提示词的复盘包,供其他 agent 或同事按文件窗口阅读。
这是什么¶
dsh-cot-export 是 DeepSeek Harness(DSH)的 Cordis bundle 插件(Host + Client),在 package.json 中声明兼容 DSH 0.2.1-rc.3 及以上,当前包版本为 1.3.0,许可证 MIT。三个入口共用同一套导出逻辑:会话头部的 CoT 按钮、Composer 里的 /cot 斜杠命令,以及全局工具 cot_export / cot_review。
导出结果是工作区里的普通文件,默认目录为 <workspace>/cot-exports/,各入口会返回产物的绝对路径。
核心功能¶
导出范围与内容¶
- scope
all(默认):完整日志,包含被 compaction 隐藏但仍存在于持久化记录中的 reasoning,并在 Markdown 中标注superseded;从 fork 父会话继承的步骤标注inherited。 - scope
surface:仅当前模型上下文里可见的部分。
思维链为逐字导出;插件通过 ctx.sessionQuery 只读会话,不追加事件、不改已有日志,只写导出文件。
输出格式¶
| format | 说明 |
|---|---|
markdown(默认) |
YAML frontmatter(会话、工作区、preset、模型、范围、计数、exporter: dsh-cot-export@<version>)+ ## Index 行号索引 + 分轮分节 |
json |
单对象:{schema, session, exported_at, scope, stats, turns[]} |
jsonl |
每个 step 一行,便于 grep、jq 或管道 |
text |
最小纯文本 |
html |
自包含时间轴;唯一同时携带工具结果(成功/失败、参数、每条最多 4000 字符并标注截断)的格式,适合事后在浏览器回放整段会话 |
一键导出与结果面板¶
点头部的 CoT 按钮即可导出。面板提供格式分段切换(切换后立即重导)、轮次/步数/推理字符与 token 统计、路径复制、保存目录选择(可记住,默认 回到配置项)、下载与可选 另存为、以及 复盘包(CoT + REVIEW.md,并将委派提示词写入剪贴板)。失败时会给出可操作的说明(例如无推理记录、路由不可用等),而不是裸报错。
斜杠命令¶
命令输出只在人可见界面显示,不会进入模型消息:
/cot 用配置的格式导出当前会话
/cot json 指定格式(md|markdown|json|jsonl|txt|text)
/cot surface 只导出当前模型上下文可见部分
/cot latest 同工作区里除自己外最新的会话
/cot <id-or-prefix> 任意可读会话
/cot review [focus] 导出并在旁边写 REVIEW.md
Agent 工具与复盘 skill¶
cot_export:导出指定会话(自身、latest、完整 id 或唯一前缀),返回path、字节数与计数;可包含下游 subagent 会话树及INDEX.md。cot_review:写出 CoT 与旁的REVIEW.md(rubric、带行号的窗口计划、delegation_prompt);不启动 reviewer,且不覆盖已有同名导出(重名加-2后缀)。
插件还注册 model-invocable skill cot-review,审查方可用 skill 工具加载同一套 rubric。
典型委派用法(来自 README):
cot_review { "session_id": "latest", "focus": "wasted effort" }
→ 将返回的 delegation_prompt 交给 subagent、teammate 或另一个会话
安装与启用¶
环境要求:DSH 0.2.1-rc.3(已在 package.json 的 dsh.compatibility.dshReleases 中声明并实测)、Node.js 22.19+ 或 24+。
通过 GitHub 通道安装(无需 npm 账号):
dsh plugin --profile <profile> add github:Aliarrrrr/dsh-cot-export
将 <profile> 换成你的 profile 名(如 web、desktop、headless)。安装后 profile 经 HMR 重组,打开会话即可看到 CoT 按钮、/cot 与上述工具。
升级或移除:
dsh plugin --profile <profile> update dsh-cot-export
dsh plugin --profile <profile> remove dsh-cot-export
离线安装可使用 GitHub Release 附带的 dsh-cot-export-<version>.tgz:
dsh plugin --profile <profile> add ./dsh-cot-export-1.0.0.tgz
配置(可选)¶
在 profile 的 cordis.patch.yml 里该插件对应行下的 config 中设置,字段均可省略:
| 字段 | 默认 | 含义 |
|---|---|---|
enabled |
true |
总开关 |
outputDir |
'cot-exports' |
绝对路径,或相对目标会话工作区 |
defaultFormat |
'markdown' |
markdown | json | jsonl | text |
defaultScope |
'all' |
all 或 surface |
includeContext |
true |
是否包含用户输入、回答与工具调用名 |
includeFailedAttempts |
false |
是否从流式记录重建失败/中断尝试 |
crossSession |
'workspace' |
workspace 仅导出 cwd 相同的其他会话;any 不检查 |
enableRoute |
true |
是否注册 GET /api/cot.export(供头部按钮) |
enableSkill |
true |
是否注册 cot-review skill |
示例:
- id: cot-export
name: 'dsh-cot-export'
config:
outputDir: 'D:/cot-exports'
defaultScope: 'surface'
典型用法¶
- 本机快速留档:打开会话 → 点 CoT → 选 Markdown 或 HTML → 在工作区
cot-exports/下得到带索引的文件,用内置read按 Index 行号分段查看。 - 命令行导出其他会话:在同工作区 Composer 执行
/cot latest json,得到 JSON 便于脚本处理。 - 监督闭环:在当前会话调用
cot_review,把返回的delegation_prompt交给 subagent 或另一会话;审查方按REVIEW.md中的窗口计划读导出文件,必要时加载cot-reviewskill。
适用场景与注意¶
适合谁:需要 agent 可观测性、要把思维链交给他人或其他会话审查、或要把 reasoning 纳入离线分析流水线的 DSH 用户。
隐私:思维链逐字导出,可能包含源码片段、路径、密钥等;产物为工作区明文文件。README 说明插件不发网络请求、不上传内容。
权限与信任:插件以当前 DSH 进程权限运行,能读取你有权访问的会话日志并写入工作区。安装前建议在 GitHub 查看源码与 MIT 许可证,确认与团队策略一致。
行为边界:live 会话优先从内存读;仅持久化、未激活的会话读取时不会恢复它;导出瞬间仍在流式中的 step 尚未提交,不会出现在导出物里。写盘采用同目录临时文件再 rename,重名自动 -2,不覆盖。
DSH 生态主张「一切皆插件」;社区目录 SkillHub 插件页 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系。
结尾¶
经过上面的步骤,你可以把 DSH 里分散在上下文与日志中的完整思维链,落成工作区文件,并通过 /cot、头部按钮或 cot_export / cot_review 接入人工或 agent 审查流程。