前言¶
在 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