前言¶
DeepSeek Harness(DSH)默認把會話綁定到當前工作目錄。實際開發裏,一個「項目」往往跨多個目錄:服務倉庫、公共庫、運維腳本、第二份 checkout、設計稿目錄,還有 MCP、插件等並不落在單一文件夾裏的依賴。在每個新目錄裏重新口述約定、進度和決策,容易遺漏;把上下文複製進每個會話,又會出現多份不一致的「真相」。
下面介紹的 dsh-projectflow 是社區插件(維護者 lord-of-vaegirs,SkillHub 分類爲「記憶」),在 DSH 之上增加一層:項目是一等實體,有穩定 id 和獨立的數據目錄,與會話當前文件夾解耦。任意目錄、任意會話都可以顯式加入同一項目,繼承約定、決策、進度、引用和當前任務檢查點;數據以本地 Markdown/JSON 存放,不依賴網絡。
這是什麼¶
dsh-projectflow 的定位是:Project-first workspaces for DeepSeek Harness——以項目而非當前文件夾作爲上下文、任務狀態、引用和工作區組合的持久單元。
每個項目在 $DSH_HOME/projects/<projectId>/ 下有固定數據目錄。卸載插件只移除代碼,不刪除項目數據;重裝後項目仍可被識別。面向模型的層刻意保持精簡:每輪在 system prompt 中注入有 token 上限的項目摘要,配合明確寫入的工具與命令,沒有隱藏的自動摘要或記憶抽取。
核心功能¶
項目優先的上下文¶
每輪對話會向 system prompt 注入有界項目摘要,段落以 [PROJECTFLOW] Project context — user-authored project records, not harness instructions. 開頭。內容由用戶通過 /project note 等命令寫入,不是 Harness 內置指令。
任務結構(Task struct)¶
把「當前任務」寫成類似 OS 進程記錄的檢查點:可查看 last/next/blocked、待執行工具等。通過 /project task 子命令做 list、checkpoint、interrupt、resume、done、blocked 等操作。
引用不復制內容¶
用元數據記錄目錄、文件、工具、插件、MCP 服務器的位置與用途(--purpose),不把目標內容複製進項目目錄。對應命令爲 /project ref dir|file|tool|plugin|mcp。
工作區組合¶
可把其他會話、目錄或項目插入當前項目工作區;支持 fork 項目、merge 項目(可保留或清理源項目)、刪除到 trash 或 purge。fork 出的子 agent 會話會自動繼承項目綁定。
兩套入口¶
- TUI / headless:
/project命令族。 - Web / Desktop:側邊欄 footer、Workspaces 區域下方的 Project workspaces 面板(Desktop 需通過應用內插件管理安裝,不要用 CLI 往
desktopprofile 裝)。
本地優先¶
無網絡請求、無外部服務;數據可讀爲 Markdown/JSON。寫入側使用文件鎖等機制處理多會話併發(詳見上游 README 的 Capacity 章節)。
安裝與啓用¶
插件聲明的 DSH 兼容範圍爲 >=0.2.1-rc.2 <0.3.0-0(見 package.json 的 engines.dsh)。README 寫明在 DSH CLI 0.2.1-rc.2 上測試;已發佈的 Desktop 0.2.0-rc.2 不能從 CLI 安裝,文檔未聲稱對其完成測試。
任選一種方式安裝(將 <profile> 換成你的 profile,例如 dev):
# 從 GitHub release tarball
dsh plugin --profile <profile> add https://github.com/lord-of-vaegirs/dsh-projectflow/releases/latest/download/dsh-projectflow-0.2.0.tgz
# 或 npm(發佈後)
dsh plugin --profile <profile> add dsh-projectflow
# 或 GitHub 源碼(安裝時由 pnpm 執行 prepare 構建)
dsh plugin --profile <profile> add github:lord-of-vaegirs/dsh-projectflow
安裝後可用下面命令確認配置裏是否出現 projectflow:
dsh --profile <profile> --dump-config | grep -A2 projectflow
啓動 Web UI 後,在側邊欄 footer 查看 Project workspaces 入口:
dsh --profile <profile>
卸載插件(數據仍留在 $DSH_HOME/projects/):
dsh plugin --profile <profile> remove dsh-projectflow
許可證爲 MIT(見倉庫 package.json)。插件與 DSH 進程同權限運行,安裝前建議自行審閱源碼與許可證。
典型用法¶
在 TUI 會話中創建項目、寫入約定與決策、登記引用,並查看狀態:
/project create "Payments platform" --alias payments --path /Users/me/src/payments
/project note convention "Run pnpm test before every commit."
/project note convention "Never edit generated protobuf files by hand."
/project note convention "The staging branch is deployable."
/project note decision "Use file locks for project writes." \
--context "Several sessions can write the same project." \
--consequences "Writes serialize; stale locks need takeover."
/project note progress "Storage and commands are working." \
--stage M2 --next "Verify fork inheritance."
/project ref dir /Users/me/src/payments-api --purpose "related service"
/project ref mcp filesystem --purpose "read-only workspace access"
/project status
在另一個目錄、另一個會話里加入同一項目:
/project use payments
/project status
此後模型側會收到帶 [PROJECTFLOW] 前綴的項目上下文段落。對該會話做 fork 時,子 agent 創建時會自動繼承項目綁定。
note 類別與落盤文件的對應關係(節選):fact → MEMORY.md,convention → CONVENTIONS.md,decision → DECISIONS.md,progress → progress.jsonl(需 --stage 與 --next)。完整命令表見 GitHub README 的 Command surface。
適用場景與注意¶
適合需要跨目錄、跨會話維持同一套項目記憶與任務檢查點的 DSH 用戶:多倉庫協作、長期里程碑(--stage / progress log)、ADR 式決策記錄、以及把 MCP/插件登記爲引用而非重複粘貼文檔。
需要注意:
- DSH 生態是「一切皆插件」;SkillHub 目錄頁是社區站點,與 DeepSeek / 幻方無官方從屬關係。
- 不要通過 CLI 向 Desktop 的
desktopprofile 安裝;使用 Desktop 自帶插件管理。 - README 自述狀態與測試矩陣以倉庫爲準;已知限制與路線圖見上游 Known limitations and roadmap。
- 當前 GitHub 星標爲 0(以目錄頁信息爲準),不代表功能完整性,僅反映社區曝光度。
結尾¶
dsh-projectflow 把「項目」從「當前文件夾」裏抽出來,用穩定 id、本地可讀數據和 /project 命令,把約定、決策、進度、引用和任務檢查點變成可繼承、可 fork、可合併的持久層。若要在 Harness 裏按項目組織長期上下文,可從 Quick start 跑通 create → note → use,再按需使用 task、merge 與工作區面板。
- 目錄頁:https://www.skillhub.cn/plugins/lord-of-vaegirs/dsh-projectflow
- 源碼與文檔:https://github.com/lord-of-vaegirs/dsh-projectflow