前言¶
DSH 的插件模型中,普通會話通常繼續使用官方 one-shot 語義:一次工具調用處理一次任務,多次調用之間不容易保留頂層變量、函數和對象。dsh-prime-agent 爲選中 Prime preset 的會話提供另一個入口:只有一個模型可見工具 repl,唯一參數是 { code },執行一個持久 TypeScript REPL cell。上一個 cell 聲明的普通變量、函數和對象,在下一個 cell 中可以直接使用;DSH 的其他工具不進入模型 schema,而是作爲 tools、agents、jobs 綁定預加載進 cell。
這個插件由 yoke233 維護,GitHub 地址爲 https://github.com/yoke233/dsh-prime-agent,目錄頁地址爲 https://www.skillhub.cn/plugins/yoke233/dsh-prime-agent。
這是什麼¶
dsh-prime-agent 是面向 DeepSeek Harness 的 RLM-first 控制面。它面向 DSH 的插件和會話模型,爲選中 Prime preset 的會話提供一個持久的 TypeScript REPL 工具。
核心變化是:
- 模型可見工具收斂爲
repl。 repl的唯一參數是{ code }。- 每次調用執行一個持久 TypeScript REPL cell。
- 上一 cell 聲明的普通變量、函數和對象,下一 cell 可以直接使用。
- DSH 的其他工具不進入模型 schema,而是作爲
tools、agents、jobs綁定預加載進 cell。 - 非 Prime 會話繼續使用官方 one-shot 語義。
- 官方
code-runtimerow 原樣保留,新增dsh-prime-agent/runtimehost row。
核心能力¶
持久 TypeScript REPL cell¶
Prime preset 會話中,模型只需要調用一個工具:
repl({ code: `...` })
每次調用都會執行一個持久 TypeScript REPL cell。上一 cell 聲明的普通變量、函數和對象,在下一 cell 中仍然可以繼續使用。
其他 DSH 工具進入 cell 預加載¶
DSH 的其他工具不直接進入模型 schema。插件把相關能力作爲 tools、agents、jobs 綁定預加載進 cell。
已覈實的能力包括:
agents.*:spawn、fork、list、send、interrupt。jobs.*:list、output、kill。- Profile 顯式安裝的 DSH Host MCP client 會把 server tools 註冊進統一 catalog,repl 單元自動獲得對應
tools.*綁定。
直接調用其他工具會被 guard 拒絕。這些能力應以 cell 內預加載綁定的形式出現。
本地組合能力¶
插件註冊本地組合能力:
tools.apply_patch({ patch })
它用於處理相關的多 hunk、多文件變更。
官方持久 Terminal¶
Prime preset 掛載 DSH 官方持久 Terminal:
- POSIX 使用
Bash。 - Windows 使用
PowerShell。
工具結果呈現¶
工具結果配置 12KB best-effort spill 閾值。模型看到的是無類型外殼的 notebook 文本。
成功的非 undefined completion 會自動保留在 generation-local 單槽中,並可通過 $_ 訪問。
持久任務文件¶
持久任務文件用於承載:
- 大型輸入。
- 重要結果。
- 跨重啓檢查點。
Realm 是 live-only 的:abort、timeout、OOM 會 hard-kill Worker 並丟失 namespace。跨重啓需要保留的狀態,應由程序顯式寫入持久任務文件。
refine¶
refine 用於穩定路由與行爲經驗,具備:
- 證據化。
- 樂觀併發。
- 事務歷史。
- 安全回滾。
多 TUI 進程共享¶
多個 TUI 進程可以共享 Prime 持久狀態,並同時運行不同 Session。
同一 Session 的 live Realm 同時只允許一個進程持有。owner 退出後,另一進程以空 namespace 接管。
安裝與啓用¶
插件以當前 dsh 進程權限運行。安裝前應檢查源碼與許可證。已覈實資料未給出具體許可證類型,package.json 的 files 列表中包含 LICENSE。
Web profile 安裝¶
先做依賴安裝和檢查,再添加插件:
npm install
npm run check:all
dsh plugin --profile web add ./dsh-prime-agent https://github.com/yoke233/dsh-tool-monitor/archive/9b6aac3701560309ac4e3befcf646a1eca920e77.tar.gz
這一步會完成依賴安裝、運行 check:all,並在 web profile 中添加本地 dsh-prime-agent 以及指定的 dsh-tool-monitor 歸檔。
TUI profile 安裝¶
TUI 場景下,先執行 npm pack,再把生成的 $primePackage 傳給 dsh plugin --profile tui add:
npm pack
dsh plugin --profile tui add $primePackage https://github.com/yoke233/dsh-tool-monitor/archive/9b6aac3701560309ac4e3befcf646a1eca920e77.tar.gz
安裝後用配置轉儲覈驗組合結果:
dsh --profile tui --dump-config
確認組合結果中存在:
agent-presetsprime-code-runtimemonitor-jobstool-monitor- 官方
tool-subagent-report tui
然後運行:
dsh --profile tui
Headless 運行¶
當前 DSH headless bundle 不會掛載 agent preset。因此 headless 場景需要同時安裝倉庫內的 prime-headless-shim,並在 headless profile 中啓用 Prime preset。
已覈實資料中後續完整命令不完整,這裏不展開完整安裝步驟。若需要 headless 運行,應使用隔離的 DSH_HOME,避免影響日常 profile。
典型用法¶
下面的示例展示同一個會話中的兩次 repl 調用。第一次 cell 建立 lookup 和 review,第二次 cell 複用它們。
repl({ code: `
const lookup = new Map(records.map(item => [item.id, item]))
const review = async (id) => tools.review_item({ item: lookup.get(id) })
lookup.size
` })
下一次調用繼續複用同一個持久 cell 狀態:
repl({ code: `await review('a') // Map 和函數都還活着` })
使用 repl 時注意:
- 工具參數使用 TypeScript 對象字面量。
- 完整 cell 會在執行前解析。
- 語法失敗不會執行其中任何代碼或 tool call。
- 語法失敗後應修正並重試。
- 不要對
tools.*返回值盲目再次JSON.parse。
狀態與生命週期¶
| 狀態層 | 用途 | 保留邊界 |
|---|---|---|
| Realm live namespace | 普通頂層變量、函數、對象、Map 和索引 |
同一 Worker 內的 cell 間保留;hard kill 後丟失 |
| Latest completion | 最新非 undefined cell 結果,經 $_ 訪問 |
下一個非 undefined completion 會替換;hard kill 或 generation 換代後丟失 |
| 持久任務文件 | 大型輸入、重要結果與跨重啓檢查點 | 由文件系統承載,進程重啓後仍可恢復 |
refine |
穩定路由與行爲經驗 | 證據化、樂觀併發、事務歷史和安全回滾 |
運行邊界與注意¶
- Prime preset 會話只有一個模型可見工具
repl。 - 非 Prime 會話繼續使用官方 one-shot 語義。
- 路由依賴可信
exec.agent.id。插件從共享realm-identity存儲解析穩定的不透明 Realm id,並交給 host 側ctx.primeRealmRuntime.run(...)。 - 缺少可信執行上下文或無法解析 Realm id 時明確失敗,絕不降級。
- 直接調用其他工具會被 guard 拒絕。
- Prime preset 不掛載 DSH Plan Mode。
- Compaction 保持 DSH 默認策略。
- Host runtime 會監控啓動它的直接父進程。Windows 父 shell 被強制終止,或 macOS/POSIX 子進程被重新託管時,插件會釋放整個 Cordis tree、Realm Worker 與該進程持有的 Realm leases,隨後退出。
- 它面向前臺
dsh生命週期,不支持把宿主有意脫離父進程作爲 daemon 運行。 - 已覈實資料未提供星標數量和分類字段;具體許可證類型資料不足,只能確認
package.json的files列表包含LICENSE。
結尾¶
dsh-prime-agent 的價值在於把 DeepSeek Harness 的會話工具調用收攏到一個持久 TypeScript REPL cell 中:模型通過唯一的 repl 工具編寫連續程序,複用頂層狀態,調用預加載的 tools、agents 和 jobs,並把需要跨重啓保留的內容寫入持久任務文件。
目錄頁:https://www.skillhub.cn/plugins/yoke233/dsh-prime-agent
GitHub:https://github.com/yoke233/dsh-prime-agent