前言¶
用 DeepSeek Harness(DSH)做單人長期項目時,狀態接續是個繞不開的問題:項目跨多個會話和 Turn,每輪開始前都要弄清「目標是什麼、當前做到哪個 Milestone、上一輪停在哪裏」。沒有持久錨點時,這些信息靠手工交接,Goal 容易漂移。
DSH 的理念是「一切皆插件」,這類連續性需求可以交給插件解決。下面介紹的就是這樣一個插件:dsh-project-anchor。
這是什麼¶
dsh-project-anchor 由 KKLL2025 維護,許可證爲 MIT,一句話定位:爲單人長期運行的 DeepSeek Harness 項目提供用戶批准的 Goal、單一活躍 Milestone 與持久 Turn 檢查點。項目層面的判斷不寫死在插件裏,而是留給按需加載的 Skills。
當前版本是 v0.1.0-preview.1,走 source-only 的 GitHub Preview 路線:未發佈到 npm,沒有移動分支安裝路線,只能安裝 release notes 中記錄的已審查完整 commit。已驗證宿主爲 DeepSeek Harness 0.1.0-rc.6(source revision 47f943859bef60e4160492346772ded9b24f765a);DSH 本身處於 developer preview,後續版本可能需要插件改動。
核心功能¶
1、項目錨定:把單人長期 DSH 項目錨定到用戶批准的 Goal、一個活躍 Milestone 和持久的 Turn 檢查點。
2、冷恢復與同意門控的 resume:冷恢復可以爲關聯的 DSH Goal 提供需用戶同意(consent-gated)的原生 resume。缺狀態、漂移、推遲、問題不可用或恢復失敗時,Anchor 與 Milestone 均保持不變。
3、三個字節級凍結的內置 Skills:align-project-requirements、drive-large-project、organize-ai-project-files。DSH 只在被選中時才加載 Skill 正文及引用資源。
4、三檔執行強度:drive-large-project 提供 fast、continuity、high-risk/release 三檔,按當前風險與驗收邊界選擇最輕量夠用的一檔。注意這是臨時 Skill 判斷而非原生插件狀態,模型無法通過 Anchor 字段持久化或提升它;公開發布等外部操作仍需單獨授權。
5、權限與邊界:插件記住 consent 與穩定的 Goal 關聯,僅在 Anchor 激活時暴露檢查點工具,並從 DSH 即時狀態推導 Goal、Milestone、Turn 身份。普通工具保持不受限制;缺失檢查點最多獲得一次同 Turn 內的短修復嘗試,避免強制循環。
6、啓用邏輯:無當前 DSH Goal 時,Skill 加載成功後會詢問是否啓用持久連續性層;已有合適 Goal 時,提供顯式的複用或恢復選擇。已完成的 Goal 不會被替換或複用;沒有 question provider 的 headless 激活會 fail closed。
安裝與啓用¶
前置要求:Node ^22.19.0 || >=24.11.0、pnpm 在 PATH 上、DeepSeek Harness 0.1.0-rc.6。先安裝宿主並確認版本:
npm install --global @deepseek-ai/dsh@0.1.0-rc.6
dsh --version
要求 dsh --version 輸出 0.1.0-rc.6。然後安裝插件:
dsh plugin --profile web add github:KKLL2025/dsh-project-anchor#<FULL_COMMIT_SHA>
<FULL_COMMIT_SHA> 需要從 v0.1.0-preview.1 的 release 頁複製完整的 40 位 commit,不能填包名或分支名。
第一次 add 預期會在運行 Git 包的 prepare 構建前停止:Git 源安裝會運行包的 prepare 腳本,需要 pnpm 的 allowBuilds 顯式批准,這屬於宿主代碼執行,批准前應先審查源碼。把 pnpm 打印的完整依賴鍵寫入所選 profile 的 pnpm-workspace.yaml:
allowBuilds:
'<EXACT_KEY_PRINTED_BY_PNPM>': true
鍵要完整複製,不要縮短成包名。然後重複同一條 add 命令,並用下面兩條命令驗證安裝結果:
dsh plugin --profile web list dsh-project-anchor --depth 0
dsh --profile web --dump-config
依賴列表應包含 dsh-project-anchor,配置轉儲應恰好含一個 # == dsh-project-anchor 層。如果 Web 已經在運行,安裝後需要重啓該 DSH 進程。
典型用法¶
啓動項目時,用點名 Skill 的普通項目請求:
Use `drive-large-project` for this multi-session project: <describe the project and desired result>. Recover the repository's real state, choose one independently verifiable Milestone, carry it through validation, and finish the Turn with the Project Anchor checkpoint.
沒有當前 DSH Goal 時,Skill 加載成功後插件會詢問是否啓用持久連續性層;已有合適 Goal 時,則提供顯式的複用或恢復選擇,不會靜默替換。
後續會話,用更短的請求即可:
Continue this project with `drive-large-project`. Recover the current Goal, Project Anchor state, handoff, and repository facts; work only on the next unblocked Milestone, then validate and checkpoint it before ending the Turn.
冷恢復後 DSH 會使 Goal 處於 disarmed 狀態。下一次 drive-large-project 加載會覈對當前 Goal 與活躍 Anchor 完全一致,並詢問是否恢復;只有明確回答 Resume this Goal 纔會調用 DSH 原生 resume。推遲、缺狀態、版本變化、問題不可用,都會讓 Goal、Anchor 與 Milestone 保持不變。
適用場景與注意¶
適合的場景:單人維護、跨多個會話與 Turn 的長期 DSH 項目,需要一個明確的「當前做到哪、下一步做什麼」的持久錨點,同時把項目方法論留給 Skill 按需加載。
使用前請注意:
- 插件以當前 dsh 進程的權限運行,安裝即意味着讓這段代碼在你的環境裏執行。Git 源安裝會觸發 prepare 腳本(宿主代碼執行),安裝前應審查源碼、固定完整 commit SHA、確認許可證(MIT),不要從移動分支安裝。
- 重啓恢復僅在獨立 Node.js 進程中用 JSONL 持久化測試過;OS 斷電、寫撕裂與跨機恢復不在當前證據範圍內。
- 公開發布等外部操作仍需單獨授權,執行強度也不會被模型持久化或提升,倉庫規則、用戶顯式決定和當前驗收聲明仍是權威。
結尾¶
dsh-project-anchor 用一個用戶批准的 Goal、單一活躍 Milestone 和持久 Turn 檢查點,把跨會話項目的連續性問題收斂到一個可驗證的錨點上,而項目判斷仍留給 Skill 和你本人。如果你在用 DSH 跑長期項目,值得一看。
- GitHub:https://github.com/KKLL2025/dsh-project-anchor
- 社區目錄頁:https://www.skillhub.cn/plugins/KKLL2025/dsh-project-anchor (社區獨立站點,與 DeepSeek / 幻方無官方從屬關係)