前言¶
在 DSH 里做多轮任务时,产物往往散落在工作区各处,下一 session 要靠聊天记录或人工整理才能接上。常见做法是自建文件夹约定或手写 README,但路径不统一、机器可读与用户可读各写一套,跨会话协作仍要人当中转。dsh-tongwen(书同文·车同轨)把「一个盘」当成档案馆:只收纳、只登记、只报告,不改文件内容;同一类进固定类型目录,所有会话走同一套交接格式。下面介绍它是什么、怎么装、怎么用。
这是什么¶
dsh-tongwen 是维护者 wx-holmes 发布的 DSH 插件,社区目录分类为「记忆」。简介:书同文·车同轨 — 九档统一收纳、机器/用户双份交接与会话变更报告。当前 package 版本为 0.3.21,许可证 MIT。
- 书同文:同类进同一类型目录,物理名 ASCII 小写短横线,中文仅作显示名。
- 车同轨:机器版交接给 DSH 读,用户版给人读,路径与格式固定。
插件以当前 dsh 进程权限运行;安装前请自行查看 GitHub 源码 与许可证。
九档与五条硬规则¶
顶层只有九个白名单目录,常量不可增删;需要新分类时在档内建二级目录,不新增第十档。空档不删,用到才建目录。
| # | 目录 | 中文名 | 放什么 |
|---|---|---|---|
| 1 | handoff/ |
交接 | 交接文件、索引、方向谱系、未闭环项、项目白板、请求信箱 |
| 2 | created/ |
创造 | dsh 干活产出的东西 |
| 3 | downloads/ |
下载 | 联网拉回来的东西 |
| 4 | incoming/ |
外来 | 投喂或外部导入 |
| 5 | scratch/ |
临时 | 中间产物、可弃草稿 |
| 6 | archive/ |
归档 | 软删落点、版本备份、恢复 |
| 7 | logs/ |
日志 | 只追加的审计 |
| 8 | config/ |
配置 | 插件版本、快照、清单 |
| 9 | self/ |
自身 | AI 自己的文件;只收纳和报告,不解析内容 |
五条硬规则(摘要):
- 顶层只有 9 档,不新建。
- 写文件前路径不确定,先调
locate/inspect_handoff查证,不猜。 - 每次任务结束,机器版和用户版交接同时产出。
- 删除一律软删进
archive/trash/;scratch/真删要先问你。 - 本次方向与上次冲突时挂起问你,不自行选择。
核心功能:十五个工具¶
交接与任务¶
| 工具 | 干什么 |
|---|---|
locate |
按关键词找已有实例,返回候选(档、类型、实例名、交接路径) |
inspect_handoff |
读一份交接:结构化字段 + 原文,可读历史版本 |
list_handoffs |
列出实例,可按类型/状态/时间筛、分页 |
update_handoff |
整节替换机器版交接第 3~6 节,自动留旧版备份 |
begin_task |
登记任务:定档、定类型、定实例名,返回幂等键 |
end_task |
结束任务:校验产物、写双份交接、版本化、更新索引、写审计 |
heartbeat |
报一次心跳 |
restore |
从 archive/trash 或 archive/versions 恢复文件 |
archive_handoff |
交接实例整份软删进 archive/trash,并从索引摘掉 |
跨会话¶
| 工具 | 干什么 |
|---|---|
project_upsert |
建或更新项目白板(目标、参与会话、分工、决定、当前一棒、待办、优先级 P0–P3);status: "done" 时移入 projects/done/ |
project_read |
读一块白板(已归档的也能读) |
project_list |
列出所有白板(带优先级;已归档标 archived) |
inbox_send |
给某会话或 any 广播留一条请求 |
inbox_list |
看自己的信箱(默认未处理) |
inbox_close |
标记请求处理完 |
交接文件形态¶
每个实例两份,固定名,按日期分目录;旧版进 archive/versions/:
handoff/
├── machine/YYYY-MM-DD/<实例>.machine.md # 六节:身份 / 产物清单 / 目标与状态 / 方向锚点 / 事实 vs 假设 / 建议入口
└── user/YYYY-MM-DD/<实例>.user.md # 五段大白话,含「别当真」
用户版不出现字段名、哈希、ID 或路径。
跨会话协作¶
一个会话干活、另一个接着干,靠三样:
- 项目白板
handoff/projects/<项目id>.md—project_upsert/project_read;优先级 P0–P3,默认 P2;做完status: "done"自动进handoff/projects/done/。 - 请求信箱
handoff/inbox.jsonl— 只追加;inbox_send/inbox_list/inbox_close。 - 开场简报 — 每轮系统提示带交接根目录、总目录、当前一棒、项目数、待处理请求等。
begin_task 可加 project: "<项目id>";end_task 可加 next: [{to:"any", request:"..."}] 排下一棒。
handoff/README.md 为交接总目录,启动与归档后自动重写,按权重七段(文件 → 插件 → 工具 → A 盘 → 在办 → 清单 → 已归档);新会话先读这一页。
安装与启用¶
在本插件目录执行(资料原文命令):
dsh plugin --profile <profile> add <本目录绝对路径>
或用插件管理器:
plugin_manager { action: "install_bundle", target: "<本目录绝对路径>" }
装完重启 dsh 才会生效。换机器后第一件事是改根路径配置(见下节)。
配置¶
cordis.patch.yml 中 root 决定九档建在哪:
- insert:
- id: tongwen
name: dsh-tongwen
config:
# 改成你自己的目录。留空("")则落在 <用户主目录>/tongwen。
# 填的路径建不出来时也会自动回退到 <用户主目录>/tongwen,并在简报里说一句。
root: "A:\\tongwen"
不要直接填盘根(如 "A:\\"),Windows 上对盘根创建会报 EPERM。其余运行参数在 config/plugins/tongwen-tonggui/settings.json(插件只读),字段与默认值见仓库 lib/config.js。
selfScan.scope 可选 handoff(默认)或 self,决定会话变更笔记统计范围;切换时会重建基线并在笔记中注明。
典型用法¶
- 任务开始:路径不确定时先
locate或inspect_handoff;需要新实例则begin_task(可挂project)。 - 任务结束:
end_task产出 machine/user 双份交接,更新索引与审计;需要接力时用next或inbox_send。 - 多会话:
project_upsert维护白板与 P 级;对方 session 靠开场简报与inbox_list接棒。 - 误删:
restore从 trash 或 versions 找回;整份交接废弃用archive_handoff。
仓库提供四套冒烟脚本(均在临时目录跑,不碰真实盘根):
node scripts/smoke-core.mjs
node scripts/smoke-tools.mjs
node scripts/smoke-session.mjs
node scripts/smoke-cross-session.mjs
或 npm run smoke 一次跑齐。
适用场景与注意¶
适合:希望 DSH 任务产物有固定九档结构、每次任务有机器/用户双交接、多 session 用白板与信箱协作而不靠人转述的开发者。
注意:插件不评价、不解析 self/ 内容;软删与版本在 archive/;与上次任务方向冲突时会挂起询问。DeepSeek Harness 生态是「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-tongwen 用九档白名单和固定双份交接,把「收纳 + 登记 + 报告」做成可复现约定;十五个工具覆盖任务生命周期与跨会话白板、信箱。进一步了解:
- 目录页:https://www.skillhub.cn/plugins/wx-holmes/dsh-tongwen
- 源码与 README:https://github.com/wx-holmes/dsh-tongwen