dsh-junie-subagent
Verified@zumikua/dsh-junie-subagent · v0.1.2 · MIT · Web UI
JetBrains Junie CLI as a one-shot DeepSeek Harness subagent provider over the Agent Client Protocol, with a settings page for model and thinking depth.
Install
dsh plugin add @zumikua/dsh-junie-subagent Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
@zumikua/dsh-junie-subagent
English | 中文
把一次性任务通过 Agent Client Protocol 交给 JetBrains Junie CLI 执行,并把 Junie 的最终答复作为子智能体结果返回。
前置条件
- DSH
>= 0.2.1-rc.2; - 已安装并登录 JetBrains Junie CLI —— provider 会从
~/.local/share/junie/current解析junie.exe,启动失败时会明确报错。
安装
在 DSH Web UI 的插件页里安装 @zumikua/dsh-junie-subagent 即可:插件管理器会一步完成
"安装包 + 选中 bundle"。bundle 的 patch 会插入一个 provider 和一个名为 junie 的
dsh-tool-subagent 实例。
安装完成后需要重启一次 DSH:浏览器半边(client.js)是在启动时进入页面模块表的。
之后打开设置 → Junie,选择模型和思考深度。
一次运行的时序
spawn <junie.exe> --acp=true --skip-update-check
→ initialize
→ session/new { cwd, mcpServers: [] }
→ session/set_config_option(model / effort / brave_mode,按配置下发)
→ session/prompt { prompt: [{ type: "text", text }] }
← session/update … agent_message_chunk 文本 …
← result { stopReason }
→ dispose(session/cancel、stdin EOF、terminate、等待退出)
每次运行独占一个进程和一个会话:子智能体 seam 对外部子级没有续接接口,因此一次运行 不会接受后续消息。
隔离边界
子进程通过 ctx.subprocess 启动,不携带沙箱策略,因此它以当前登录用户的身份运行、
拥有该用户的完整文件权限 —— 这也是 Junie 能把会话写进 ~/.junie 的前提。约束来自
Junie 自己的权限模型:brave_mode、命令允许列表,以及
session/request_permission(由本 provider 按 permission 回答)。
配置
| 键 | 默认值 | 含义 |
|---|---|---|
providerName |
junie |
在 ctx.subagents 上的名字 |
command |
自动解析 | junie.exe 路径;省略时从 ~/.local/share/junie/current 解析 |
args |
["--acp=true"] |
额外参数;--acp=true 与 --skip-update-check 始终会补齐 |
model |
mix.normal |
设置页尚未保存任何值时的兜底模型 |
effort |
high |
设置页尚未保存任何值时的兜底思考深度 |
braveMode |
brave-auto |
brave-auto / on / off |
permission |
reject |
自动回答 session/request_permission:默认拒绝,或选第一个允许项 |
timeoutMs |
900000 |
单次运行的总时限 |
graceMs |
3000 |
子进程回收宽限 |
模型选择
bundle 只注册一个 provider(junie)和一个面向模型的工具(junie)。模型与思考
深度在设置页选择、由宿主保存;上面的 model / effort 只是"尚未保存过"时的兜底。
工具层面的 provider / model / reasoning_effort 参数不可用:
dsh-tool-subagent 会用宿主的 LLM 目录(llm.resolveCallConfig)校验它们,而 Junie
的模型 id 并不是 LLM 路由 —— 官方 Codex、Claude Code 与 ACP provider 之所以不声明
agentOptions 能力,也是同一个原因。
设置页与存储
- 设置页位于设置面板左侧的「Junie」分区,可以选择模型、思考深度,以及 Junie 的 brave mode(
auto/on/off); - 读写走宿主注册的同源路由
GET/PUT /junie-subagent/config,数据存放在~/.dsh/junie-settings.json; - 模型下拉列表来自 Junie 自己 ACP
session/new返回的configOptions(分组渲染,缓存 10 分钟,不消耗额度); - 思考深度的可选项取决于模型。保存时会用一个临时会话向 Junie 校验,不支持的组合
返回
400并提示该模型支持哪些档位,且不会改动界面上的选项列表; - 修改从下一次委派开始生效。插件不会弹窗,对权限请求一律自动拒绝:
brave-auto(自动)放行安全操作、其余拒绝,off(保守)全部拒绝,on(放开)全部执行。