前言¶
用 DeepSeek Harness(dsh)做稍長一點的開發,會話裏很快會堆出三類東西:隨口提的後續想法、中途拍板的技術選型,以及 agent 規劃時寫下的一串 todo。這些內容默認只活在當前對話裏。換一個會話再問「上次爲什麼選方案 A」「那個順手記下的念頭後來有沒有做」,往往只能靠翻歷史,或者乾脆重問一遍。
dsh 的設計是「一切皆插件」:模型、工具、會話、存儲、界面都可以掛載替換。社區目錄裏有一類工作流插件,專門補任務與協作層。dsh-track 做的是更靠裏的一層:不把任務同步到外部 Linear / Jira,而是在 harness 內部把念頭、決策、任務收成結構化數據,並給網頁界面加一塊可回跳來源對話的面板。
本文按社區目錄詳情頁、GitHub 倉庫 README、協議 skill 原文、npm 包信息和 DeepSeek Harness 官方倉庫覈對後整理:它是什麼、裝哪些命令、日常怎麼用。該插件由 fakechris 維護,收錄在獨立社區站點 DeepSeek Harness 插件庫,與 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。
這是什麼¶
dsh-track 在倉庫裏也叫 Track Bridge,是 DeepSeek Harness 的嵌入式任務管理引擎。目錄分類是「工作流與自動化」,主要語言 TypeScript,許可證 BSD-3-Clause(目錄頁、GitHub license 字段、倉庫 LICENSE 和 skill 元數據一致)。截至 2026-08-18,GitHub 倉庫 fakechris/dsh-track 顯示 6 星;npm 包名爲 @fakechris/dsh-track,當前版本 0.5.0。
它要解決的是:智能體執行時產生的念頭、不可逆決策和任務進度,如何在不接外部項目管理服務的前提下,變成可查詢、可摺疊、可回到原始 prompt 的數據。README 寫明數據全部落在 harness 內部——決策點 / todo 走 session 事件(可回放),Capture / Issue / Decision / Usage 走 ctx.storage KV(跨會話獨立),形狀按 Linear 兼容來建模,方便以後遷移,但運行時零外部依賴。
架構是 fat skill + thin harness:判斷「要不要上報決策點、要不要把念頭升級成任務」寫在 skills/dsh-track/SKILL.md;插件側只註冊工具、訂閱事件、接存儲和 HTTP API,自己不做這類判斷。package.json 裏客戶端注入聲明 platform 爲 web,面板掛在網頁會話右側欄。
核心功能¶
捕獲牆¶
入口工具是 capture_thought(content, tags?)。用戶提到與當前工作無關的想法、未來計劃或半成型念頭時,agent 按協議 skill 把它收進捕獲牆,不打斷手頭工作。規劃階段的 todo_write 也會被自動捕獲,並且每條帶上當時那條用戶請求作爲動機上下文,避免事後只剩一串看不出緣由的清單。
面板上可以手動輸入捕獲、分頁、兩步確認刪除,以及一鍵把捕獲轉成任務。v0.3.0 起 createCapture 做了統一閘門(按會話持久化標記 + 內容哈希兜底),重啓後不會把同一條再捕一遍。
決策賬本¶
遇到不可逆、風險、價值觀、範圍或驗收類決策時,agent 先調用 report_decision_point,給出選項、自己的傾向和理由,讓用戶做輕決策。用戶回答後必須再調 track_respond_decision(decision_id, choice, rationale?) 落盤;skill 原文寫得很硬:不落盤等於沒問。用戶說「先不定 / 跳過」時,choice 傳 dismissed。歷史可用 track_list_decisions 按待確認 / 已回答 / 已跳過查詢。
協議 skill 也劃了邊界:變量命名、函數拆分、用戶已經說過「你決定」、同類決策已被接受過,都不要重複上報。長任務默認最多 5 個決策點。
證據驅動的任務生命週期¶
任務用 Linear 兼容形狀存儲。典型鏈路是:
track_create_issue → track_attach_issue → 會話裏執行證據自動記到該任務 → track_update_issue_state / track_issue_evidence
track_attach_issue(issue_id) 聲明當前會話正在推進某條任務,之後 todo 完成、輪次結果、工具錯誤會記到證據賬本,狀態機據此推斷進度。關鍵約束:done 和 canceled 不會自動達成,必須用戶確認後帶 confirmed_by_user=true 再改狀態。面板在 v0.5.0 給任務卡加了「完成 / 取消」(兩步確認)和批量模式。
v0.4.0 還加了生命週期 sweep:長時間無進展的任務會浮到「待確認」區;近似重複捕獲可按可配置的 token 相似度歸併;canceled 提議超過寬限期可自動確認。這些是倉庫 changelog 記錄的行爲,配置入口在 Track 面板的 ⚙ 和 /api/track/config。
歷史同步與用量賬本¶
track_sync_history 把工作區過往會話摺疊成 epic / issue 候選。默認 dry_run=true,只看清單,確認後再寫回。skill 推薦 engine: 'v2'(segment + intent + synthesize),since 默認 7 天。
track 引擎自己發起的 LLM 調用單獨記賬,用 track_usage 查請求數、各類 token、耗時和估算成本,避免和業務對話的用量混在一起。
Web 面板¶
面板是純 DOM 注入,無前端框架依賴。右側欄同時放捕獲牆和任務牆(進行中優先);每條記錄可以點「↩ 對話」,切到左側來源會話、翻到對應歷史、滾動並高亮原始用戶 prompt。收起後右下角有 ◆ 懸浮按鈕,也可以走會話標籤欄的 Track 頁籤。面板約 20 秒輕量刷新,寬度可拖拽。
安裝與啓用¶
社區目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端運行即可:
dsh plugin add github:fakechris/dsh-track
如需可復現安裝,目錄頁建議固定 commit 哈希:
dsh plugin add github:fakechris/dsh-track#<commit>
插件聲明面向 web 客戶端。倉庫 README 推薦用發佈版 dsh、並顯式指定 web profile;npm 包已發佈時也可以這樣裝:
npx -p @deepseek-ai/dsh dsh plugin --profile web add @fakechris/dsh-track
協議 skill 不會只靠掛插件就自動進默認掃描目錄,README 要求再拷一份到本機:
mkdir -p ~/.dsh/skills && cp -r skills/dsh-track ~/.dsh/skills/
dsh web
驗證方法:瀏覽器打開面板(右下角 ◆,或會話標籤欄的 Track 頁籤),能看到「捕獲想法」和「任務」兩欄即安裝成功。
有一處文檔需要交叉看:README 和 cordis.patch.yml 註釋裏仍寫着 git 備選源 github:dsh-external/dsh-track。訪問該地址會重定向到當前公開倉庫 fakechris/dsh-track(同一倉庫 id)。目錄頁安裝命令以 github:fakechris/dsh-track 爲準,不要按舊 org 名自行拼接。
目錄頁同時提醒:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前應檢查源代碼倉庫和許可證。
典型用法¶
下面的流程來自倉庫 README 的「核心工作流」和 skills/dsh-track/SKILL.md,不是另編的案例。
1. 捕獲念頭。 用戶在改接口時隨口說「下次把文檔也補上」,agent 調 capture_thought,當前任務繼續。面板裏也可以自己往捕獲牆丟一條。明確要求落即時,再用 track_create_issue(或面板「轉任務」)補 title、描述、驗收標準和優先級;創建前先 track_list_issues,避免重複。
2. 上報決策點。 skill 給的正例包括:框架 A 還是 B、API key 能否存本地、順帶寫文檔算不算範圍內、做到什麼程度算 done、要不要動數據庫 schema。上報後看返回文本首行 Decision recorded: dec_xxx,用戶選定後再 track_respond_decision。
3. 推進任務。 開始做某條 issue 時(計劃階段或寫第一條 todo 時)調用 track_attach_issue。中途用 track_issue_evidence 看推斷狀態和證據。看起來做完了,先問用戶「要標完成嗎?」,同意後再 track_update_issue_state(..., confirmed_by_user=true)。證據裏出現 Pending confirmation 時,主動問,不要擅自落盤。
4. 整理歷史。 用戶說「最近的工作同步到 Track」時,先 track_sync_history(默認 dry-run)看候選,確認後再 dry_run=false 寫回。面板上任意捕獲或任務都可以跳回原始 prompt。
常用工具對照:
| 工具 | 作用 |
|---|---|
capture_thought |
把念頭收進捕獲牆 |
report_decision_point |
上報決策點 |
track_respond_decision |
把用戶選擇與理由落盤 |
track_create_issue |
創建 Linear 兼容任務 |
track_attach_issue |
聲明本會話正在推進該任務 |
track_update_issue_state |
提議或確認狀態變更 |
track_issue_evidence |
查看證據賬本與推斷狀態 |
track_sync_history |
把會話歷史摺疊成任務候選 |
track_usage |
查詢 track 引擎自己的 LLM 開銷 |
適用場景與注意事項¶
適合已經在用 dsh 網頁界面、會話多、需要把「說過的話」留成可查記錄的人:個人用 harness 做中長期改造、希望決策有賬本、不想爲此再開一套 Linear。它不是通用看板,也不替代團隊協作裏的認領 / 驗收流程;同分類下還有看板、多 Agent 編排等其他社區插件,定位不同。
使用前注意這幾條:
- 客戶端平臺是 web。
package.json的dsh.client.platform爲web,README 的驗證步驟也走瀏覽器面板。不要默認它在 headless 會話裏提供同一套 UI。 - 只裝插件不夠。決策紀律在 skill 裏,需要按 README 拷到
~/.dsh/skills/,agent 纔會按「什麼該問、什麼不該問」調用工具。 done/canceled必須人確認。系統可以提議,不會自動標完成。- 歷史同步默認 dry-run。沒確認前不會把候選寫成 issue。
- 業務數據不要寫進 session 自定義事件。README 寫明:2026-08-11 起 harness 對未知事件類型會拒讀整份日誌;觀察會話只走官方事件流,只讀不寫。
- 權限與來源。插件以當前 dsh 進程權限運行。目錄是社區站點,不是 DeepSeek 官方商店;安裝前核對 GitHub 倉庫、BSD-3-Clause 許可證和近期提交。需要可復現環境時,用目錄頁的
#commit寫法固定哈希。
小結¶
dsh-track 把 DeepSeek Harness 會話裏本來散落的念頭、決策和 todo,收成 harness 內部的捕獲牆、決策賬本和 Linear 形任務,並在網頁右側欄提供可跳回來源 prompt 的面板。數據不依賴外部項目管理服務;完成與取消仍由人確認。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-track/
GitHub:https://github.com/fakechris/dsh-track
npm:https://www.npmjs.com/package/@fakechris/dsh-track