前言¶
用 DSH(DeepSeek Harness)做開發時,有兩類任務很常見。一類是工具編排:用 Code Mode SDK 寫一個 run_code 程序,把多個工具調用組合在一次執行裏。另一類是圍繞運行時的創造型工作:檢查活運行時、定義並試驗動態插件包、乃至創作新的 agent preset。
這兩類能力目前分屬 DSH 的兩個內置 preset:內置 PTC preset(id 爲 code,dsh 0.1.2 起改名爲 ptc)提供 Code Mode 編排;內置創造 preset(cordis)提供自引用 Cordis 工具與 preset 創作指導。兩者各管一邊,想在同一個會話裏同時使用,此前沒有現成的選擇。
dsh-ptc-cordis-preset 補的就是這一格。它由 KannaKuron 維護,倉庫代碼 MIT 許可,當前版本 0.8.1。下面介紹它的定位、工作方式與使用方法。
這是什麼¶
一句話定位:在 PTC 模式基礎上的創造模式——把 Code Mode 工具編排、自引用 Cordis 工具與 preset 創作指導合成一個 ptc-cordis 用戶 preset。DSH 的理念是「一切皆插件」,這個插件交付的不是工具補丁,而是一個完整的 agent preset。
工作流程是:DSH 進程啓動時,插件把合成 preset 物化到第一個 user 信任根,默認路徑爲 ~/.dsh/.agent-presets/ptc-cordis/;之後新建會話,在模式選擇器裏選「PTC 創造模式」即可使用。物化後的目錄結構大致如下:
~/.dsh/.agent-presets/ptc-cordis/
├── agent.cordis.yml # 合成組合:內置 code/ptc preset 全量 + 創造 preset 增量
├── skills/ # 兩個創作技能,從本機已裝的內置 cordis preset 現場拷貝
└── .plugin-managed.json # 插件管理標記:各文件 sha256、組合 era 等
其中 agent.cordis.yml 是合成的關鍵:內置 code/ptc preset 的組合文本原樣保留,再疊加 cordis preset 的增量(persona、Cordis 工具、技能目錄)。
版本要求:node >= 18、dsh >= 0.1.0(package.json 的 engines 字段);下文的 workflow 開關需要 dsh >= 0.1.2。
核心能力¶
自引用 Cordis 工具¶
preset 在 PTC 全量能力之上疊加五個 Cordis 工具:
cordis_inspect:讀運行時;cordis_define/cordis_run/cordis_stop:定義、運行、停止動態插件包;cordis_undefine:刪除動態插件包。
在 Code Mode 下,這些工具和其他工具一樣位於 SDK 中:可以當作 SDK 函數寫進 run_code 程序裏調用。也就是說,同一段程序既能編排普通工具,也能檢查運行時、試驗動態插件——這正是「PTC × 創造」組合的意義所在。
創作指導與隨行技能¶
合成 persona 包含雙平面創作指導:主機組合與 Agent preset 之間的取捨規則,以及 Code Mode 下的組合方式(把 cordis 工具當 SDK 函數寫進 run_code 程序)。
兩個創作技能隨 preset 走:editing-cordis-compositions 與 cordis-plugin-development。技能內容不是打包在插件裏,而是從本機已安裝的內置 cordis preset 現場拷貝。會話中讓它創作 preset 或試驗動態插件時,會自動加載這兩個技能。
工作機制¶
用戶優先保護¶
插件在物化時把每個文件的 sha256 記入 .plugin-managed.json,由此得到三條規則:
- 未改動的文件:插件升級時原位刷新;
- 你改過的文件:插件從此不再碰——啓動不覆蓋、卸載不刪除;
- 沒有標記文件的自建
ptc-cordis目錄:插件完全不接管。
第二條值得注意:自己改過 preset 之後,插件升級或卸載都不會動這些文件,處理權完全在你。
安靜啓動¶
自 v0.2.1 起,目錄無變化、插件版本未變時,啓動不重寫任何文件,也不打印日誌。
dsh 版本雙適配¶
dsh 0.1.2 把內置 code preset 改名爲 ptc,兩個 era 的組合文本並不相同。插件自 v0.7.0 起同時攜帶 code(dsh <= 0.1.1)與 ptc(dsh >= 0.1.2)兩個 era 的完整組合文本,啓動時探測本機 dsh 自動選擇,並把結果記入 .plugin-managed.json 的 base 字段。dsh 升級後,下次啓動會按探測結果自動重物化,無需手動處理。
workflow 開關¶
自 v0.8.0 起,設置頁提供 workflow 開關卡片,決定合成 preset 是否提供 workflow 工具。默認開啓,即繼承創造模式的能力;切換後 preset 即時重物化,新會話即刻生效。該開關需要 dsh >= 0.1.2。
共存與聯動¶
- 與內置創造模式同進程共存:自 v0.4.0 起通過兼容 shim 實現,v0.6.3 修復了 shim 的安裝時機問題。
- 與 dsh-gitbash-shell(v0.2.0+)聯動:物化時檢測其 gitBash 宿主能力,Windows 下兩插件合用則改用
agent.cordis.gitbash.yml(tool-bash 啓用、tool-pwsh 禁用),否則使用默認的agent.cordis.yml。
安裝與啓用¶
安裝命令如下,來自 npm 公開包:
dsh plugin --profile web add dsh-ptc-cordis-preset
插件是純 JS、零構建、零依賴,安裝不會觸發 pnpm 構建腳本,也不需要在 allowBuilds 裏放行。
裝完後重啓 DSH(host 半變更),新建會話,在模式選擇器裏選擇「PTC 創造模式」,啓用就完成了。
日常使用¶
會話內怎麼用¶
- 新建會話,在模式選擇器選「PTC 創造模式」;
- 正常使用 Code Mode:用
run_code組合多步操作,cordis_inspect等工具就在 SDK 裏,和其他工具一樣調用; - 需要創作 preset 或試驗動態插件時,直接提出,它會自動加載隨行的
editing-cordis-compositions與cordis-plugin-development兩個技能。
更新¶
兩種方式:市場頁點「更新」按鈕,或重跑上面的安裝命令。之後重啓 DSH,未改動的 preset 會原位刷新爲新版本。
更新檢測由 dshmarket 按註冊表版本進行,有 30 分鐘 TTL 緩存;市場頁遲遲不顯示更新時,可訪問 /dsh-market/updates?force=1 強制刷新緩存。
卸載注意事項¶
命令行卸載(dsh plugin --profile web remove dsh-ptc-cordis-preset)在獨立進程中執行,disposer 不會運行,ptc-cordis preset 會殘留。此時需要在設置頁刪除它,或手動清理:
rm -rf ~/.dsh/.agent-presets/ptc-cordis
從源碼構建與測試¶
git clone https://github.com/KannaKuron/dsh-ptc-cordis-preset.git
cd dsh-ptc-cordis-preset
npm test
npm test 走 node --test,共 11 項冒煙測試,不需要網絡,也沒有構建步驟。
適用場景與注意¶
適合的場景:想在同一個會話裏用 Code Mode 編排多步工具操作,同時檢查運行時、試驗動態插件,或在此基礎上創作、修改 agent preset 的開發者。如果只需要其中一種能力,用內置 PTC 模式或內置創造模式即可。
信任邊界與內置創造模式一致:cordis_define / cordis_run 會在活運行時上執行模型寫的 JavaScript,請把 PTC 創造模式的會話當作 shell 訪問對待。
插件以當前 dsh 進程的權限運行,並會寫入 ~/.dsh/ 下的文件。安裝前建議先審查源碼與許可:倉庫代碼爲 MIT;合成組合與技能內容派生自 @deepseek-ai/dsh 內置 preset(同爲 MIT),運行時從本機安裝拷貝並遵循其許可。
結尾¶
回顧一下:dsh-ptc-cordis-preset 把 DSH 內置的 PTC 與創造兩個 preset 合成一個 ptc-cordis preset,啓動時物化、新會話即選即用;哈希標記保護用戶改動,兩個 dsh era 自動適配,命令行卸載的殘留也有明確的清理路徑。對需要「Code Mode 編排 + 創造能力」並存的開發者來說,它把一件原本要手工拼接的事變成了一個現成選項。
項目鏈接:
- GitHub 倉庫(源碼與 Release):https://github.com/KannaKuron/dsh-ptc-cordis-preset
- 社區目錄頁:https://www.skillhub.cn/plugins/KannaKuron/dsh-ptc-cordis-preset (社區站點,與 DeepSeek / 幻方無官方從屬;該 URL 來自插件線索,未進一步覈實)