@zumikua/dsh-junie-subagent:在 DSH 里把 JetBrains Junie CLI 当作一次性子智能体

前言

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 路径按以下顺序解析:

  1. 配置项 command;
  2. 环境变量 JUNIE_PATH;
  3. 托管安装指针 ~/.local/share/junie/current(Windows 为 <version>/junie/junie.exe,其他系统为 <version>/bin/junie);
  4. PATH 上的 junie.exe / junie(跳过 .bat shim)。

若均无法解析,运行会失败并列出尝试过的路径;设置页也不会展示空的模型列表。

单次运行流程

一次委托的大致 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 ACP session/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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye