前言¶
DeepSeek Harness(DSH)裏,主會話可以把子任務交給子智能體(subagent)執行,再收回最終結果。若你已經在本機安裝並登錄 JetBrains Junie CLI,又希望按 Agent Client Protocol(ACP)走一條獨立進程、單次收束的委託路徑,而不是自己拼 spawn 與 session 生命週期,就需要一個把 Junie 掛到 dsh-tool-subagent 上的插件。
下面介紹社區插件 @zumikua/dsh-junie-subagent:它通過 ACP 啓動 Junie CLI,把 Junie 的最終回答作爲子智能體結果返回,並在 DSH 設置裏提供模型與思考深度(thinking depth)的配置頁。維護者爲 ZumiKua,在插件目錄中歸類爲「工作流」。
這是什麼¶
插件 @zumikua/dsh-junie-subagent(當前 package 版本 0.1.4,MIT 許可證)在 bundle 中插入一個 provider 與一個名爲 junie 的 dsh-tool-subagent 實例。每次調用對應一次 Junie 進程與會話:子智能體接縫對外不提供進程外子任務的續聊 surface,因而不接受跟進消息。
依賴 DSH >= 0.2.1-rc.2,以及已安裝並完成登錄的 JetBrains Junie CLI。
環境與 Junie 可執行文件¶
Junie 路徑按以下順序解析:
- 配置項
command; - 環境變量
JUNIE_PATH; - 託管安裝指針
~/.local/share/junie/current(Windows 爲<version>/junie/junie.exe,其他系統爲<version>/bin/junie); PATH上的junie.exe/junie(跳過.batshim)。
若均無法解析,運行會失敗並列出嘗試過的路徑;設置頁也不會展示空的模型列表。
單次運行流程¶
一次委託的大致 ACP 步驟如下:
spawn <junie.exe> --acp=true --skip-update-check
→ initialize
→ session/new { cwd, mcpServers: [] }
→ session/set_config_option (model / effort / brave_mode, when configured)
→ session/prompt { prompt: [{ type: "text", text }] }
← session/update … agent_message_chunk text …
← result { stopReason }
→ dispose (session/cancel, stdin EOF, terminate, wait for exit)
每次運行獨佔進程與會話;--acp=true 與 --skip-update-check 始終會被保證加入參數(默認 args 含 ["--acp=true"],並可追加其它參數)。
核心功能¶
- ACP 子智能體 provider:註冊名爲
junie的 provider 與面向模型的工具junie,委託任務給 Junie CLI 並返回最終答案。 - 設置頁:DSH 設置面板中的 Junie 區塊,用於選擇模型、思考深度,以及 Junie 的 brave mode(
auto/on/off)。模型列表來自 Junie ACPsession/new的configOptions(按組展示,緩存 10 分鐘,不消耗 credits)。 - 持久化配置:通過 Host 註冊的同源路由
GET/PUT /junie-subagent/config讀寫,存儲於~/.dsh/junie-settings.json。思考深度與模型綁定;保存時用臨時 Junie 會話校驗組合,不支持的搭配返回400並給出該模型接受的取值,頁面選項列表不會被擅自改寫。 - 權限與 brave mode:provider 通過
permission自動應答session/request_permission(默認reject)。設置頁說明:brave-auto允許安全類操作並拒絕其餘需審批項;off拒絕一切需審批的操作;on則全部放行。provider 本身不會彈窗詢問用戶。 - 模型選擇方式:模型與思考深度在設置頁選擇並由 Host 存儲;bundle 配置裏的
model/effort僅在尚未寫入 Host 存儲時作爲回退。共享工具字段provider/model/reasoning_effort的按次選型不可用——dsh-tool-subagent會用 Host 的 LLM 目錄校驗,而 Junie 模型 id 不是 LLM 路由。
安裝與啓用¶
在 DSH Web UI 打開 Plugins 頁,從目錄安裝 @zumikua/dsh-junie-subagent;插件管理器會安裝包並一步選中其 bundle。
安裝後需重啓 DSH 一次:瀏覽器側 client.js 在啓動時進入頁面的 module 表。隨後打開 Settings → Junie,選擇模型與 thinking depth。
配置項(bundle / provider)¶
| Key | Default | Meaning |
|---|---|---|
providerName |
junie |
在 ctx.subagents 上的名稱 |
command |
auto-detected | 顯式啓動路徑;文件缺失時會報錯,不會靜默回退 |
args |
["--acp=true"] |
額外參數;--acp=true 與 --skip-update-check 始終保證 |
model |
mix.normal |
設置頁未存任何值時的回退模型 |
effort |
high |
設置頁未存任何值時的回退 effort |
braveMode |
brave-auto |
brave-auto / on / off |
permission |
reject |
對 session/request_permission 自動應答:默認 reject,或選第一個 allow 選項 |
timeoutMs |
900000 |
整次運行超時 |
graceMs |
3000 |
子進程 teardown 寬限 |
設置頁的變更從下一次委託起生效。
隔離與權限邊界¶
子進程通過 ctx.subprocess 啓動,未附加 sandbox 策略,因此以當前登錄用戶身份運行,具備該用戶完整的文件訪問能力(Junie 可在 ~/.junie 下持久化會話)。更細的約束來自 Junie 自身:brave_mode、動作 allowlist 與 session/request_permission,本 provider 按 permission 與設置頁 brave mode 策略應答。
適用場景與注意¶
適合已在 DSH >= 0.2.1-rc.2 環境中工作、本機已配置 Junie CLI,並希望在主 Harness 工作流裏把單次、不可續聊的任務交給 Junie 的開發者。
安裝與啓用前建議閱讀倉庫源碼與 MIT 許可證,確認子進程權限與 Junie 審批策略符合你的環境要求。社區插件目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
參考鏈接¶
- 插件目錄頁:https://www.skillhub.cn/plugins/ZumiKua/dsh-junie-subagent
- GitHub:https://github.com/ZumiKua/dsh-junie-subagent