dsh-prime-agent:DeepSeek Harness 的持久 TypeScript REPL 插件

前言

DSH 的插件模型中,普通會話通常繼續使用官方 one-shot 語義:一次工具調用處理一次任務,多次調用之間不容易保留頂層變量、函數和對象。dsh-prime-agent 爲選中 Prime preset 的會話提供另一個入口:只有一個模型可見工具 repl,唯一參數是 { code },執行一個持久 TypeScript REPL cell。上一個 cell 聲明的普通變量、函數和對象,在下一個 cell 中可以直接使用;DSH 的其他工具不進入模型 schema,而是作爲 toolsagentsjobs 綁定預加載進 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,而是作爲 toolsagentsjobs 綁定預加載進 cell。
  • 非 Prime 會話繼續使用官方 one-shot 語義。
  • 官方 code-runtime row 原樣保留,新增 dsh-prime-agent/runtime host row。

核心能力

持久 TypeScript REPL cell

Prime preset 會話中,模型只需要調用一個工具:

repl({ code: `...` })

每次調用都會執行一個持久 TypeScript REPL cell。上一 cell 聲明的普通變量、函數和對象,在下一 cell 中仍然可以繼續使用。

其他 DSH 工具進入 cell 預加載

DSH 的其他工具不直接進入模型 schema。插件把相關能力作爲 toolsagentsjobs 綁定預加載進 cell。

已覈實的能力包括:

  • agents.*spawnforklistsendinterrupt
  • jobs.*listoutputkill
  • 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 的:aborttimeoutOOM 會 hard-kill Worker 並丟失 namespace。跨重啓需要保留的狀態,應由程序顯式寫入持久任務文件。

refine

refine 用於穩定路由與行爲經驗,具備:

  • 證據化。
  • 樂觀併發。
  • 事務歷史。
  • 安全回滾。

多 TUI 進程共享

多個 TUI 進程可以共享 Prime 持久狀態,並同時運行不同 Session。

同一 Session 的 live Realm 同時只允許一個進程持有。owner 退出後,另一進程以空 namespace 接管。

安裝與啓用

插件以當前 dsh 進程權限運行。安裝前應檢查源碼與許可證。已覈實資料未給出具體許可證類型,package.jsonfiles 列表中包含 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-presets
  • prime-code-runtime
  • monitor-jobs
  • tool-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 建立 lookupreview,第二次 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.jsonfiles 列表包含 LICENSE

結尾

dsh-prime-agent 的價值在於把 DeepSeek Harness 的會話工具調用收攏到一個持久 TypeScript REPL cell 中:模型通過唯一的 repl 工具編寫連續程序,複用頂層狀態,調用預加載的 toolsagentsjobs,並把需要跨重啓保留的內容寫入持久任務文件。

目錄頁:https://www.skillhub.cn/plugins/yoke233/dsh-prime-agent

GitHub:https://github.com/yoke233/dsh-prime-agent

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜