dsh-plugin-jules:在 DeepSeek Harness 里把编码任务交给 Google Jules

前言

在 Harness 里跑模型时,一轮对话能做的事往往受上下文和工具调用次数限制。真正改仓库、跑命令、开 PR 这类工作,如果全堆在同一轮里,要么拖长回合,要么中途断掉就没人接着干。

Google Jules 是运行在云端仓库克隆上的远程编码智能体:你给出任务和仓库,它在 Google 侧异步规划、改文件、执行命令,并可创建 Pull Request。DeepSeek Harness 社区插件 dsh-plugin-jules(维护者 rbviz,分类:工作流)把 Jules 的 v1alpha REST API 封装成十个 jules_* 工具,让 Harness 模型可以委派长任务、后台跟进、审批计划,并把 unified diff 取回本地使用。插件本身无运行时依赖,直接与文档化的 Jules API 通信。

这是什么

dsh-plugin-jules 是面向 DeepSeek Harness 的 profile bundle:安装后向 Harness 注入 Jules 能力层(loader id 为 jules)。npm 包名 dsh-plugin-jules,当前资料中版本为 0.2.0,许可证 MIT。

它解决的是「远程 agent 与 Harness 回合模型」之间的衔接:创建会话后立即拿到 session id,工作可在云端继续;通过 jules_watch 注册后台监视并由 Harness jobs 在完成时通知,模型不必轮询状态;requirePlanApproval 与 jules_approve_plan 可在改文件前审计划;jules_patch 返回可 git apply 的分页 diff。

若你仍在 Harness 0.1.x,应继续使用 dsh-plugin-jules@0.1.x;0.2.x 插件行依赖 0.2.x jobs API,无法在旧 runtime 上加载。

环境与前置条件

  1. DeepSeek Harness:0.2.1-rc.2 或更新,且仍在 0.2.x;需使用带 base bundle 的 profile(提供 tools、systemPrompt、jobs 与存储栈)。不满足 engines.dsh 时,Harness 启动时会拒绝加载并说明原因。
  2. Node:22 或更新。
  3. Jules 账号:至少通过 Jules GitHub App 连接一个仓库。
  4. Jules API Key:在 https://jules.google.com/settings 创建;每个账号最多三个 key,且每个 key 只显示一次。

核心能力

委派与生命周期

  • jules_create:传入 prompt,可选 source、branch、title、requirePlanApproval、autoCreatePr;立即返回 session id,云端任务不依赖当前回合是否仍在监听。省略 source 可创建无仓库会话。
  • jules_sources:列出 Jules 已连接的仓库;jules_create 的目标仓库须先出现在此列表中。
  • jules_list / jules_status / jules_activities:列举近期会话、查看单会话详情(状态、计划、审批、PR、生成文件、最近命令与消息)、或读事件日志。

计划审批与对话

  • 开启 requirePlanApproval 时,agent 在计划获批前不会改文件;读完计划后调用 jules_approve_plan 放行。
  • jules_send_message:回答问题、修正计划或追加后续工作。

等待结果与取回 diff

  • jules_watch:后台监视,返回 job id;资料建议注册后结束当前回合,待完成通知再处理。
  • jules_wait:在同一回合内阻塞等待(无其他可并行步骤时使用)。
  • jules_patch:返回最新 unified diff,列出所有 touched 文件,大 diff 支持 offset / nextOffset 分页。

会话 id 类参数可写 123、sessions/123 或 Jules 控制台 URL 等形式(README 对 URL 形式有说明,截断处未展开完整格式)。

安装与启用

插件声明了 dsh.bundle,通过 profile 下的 dsh plugin(转发给 pnpm)安装。若 profile 尚不存在,首次命令会创建它。

从 npm 安装(推荐)

registry 安装自带预编译的 lib/,本机无需编译,也无需 allowBuilds:

dsh plugin --profile <your-profile> add dsh-plugin-jules

重启 Harness 后新 bundle 才会生效;运行中的进程仍使用启动时的 bundle 集合。可用下面命令确认层是否 compose 成功:

dsh --profile <your-profile> --dump-config | grep -A 3 'id: jules'

升级与移除同样通过 plugin 子命令,每次变更后需重启:

dsh plugin --profile <your-profile> update dsh-plugin-jules
dsh plugin --profile <your-profile> remove dsh-plugin-jules

从 GitHub 安装

若从 GitHub 拉源码安装,pnpm 10+ 可能因 prepare 脚本首次失败,并提示在 profile 的 pnpm-workspace.yaml 中加入:

allowBuilds:
  dsh-plugin-jules: true

资料说明:allowBuilds 表示允许在安装阶段在本机执行该包代码(在 agent 沙箱之外);只应对可信来源放行,并可用 github:rbviz/dsh-plugin-jules#<sha> 固定提交。官方给出的命令为:

dsh plugin --profile <your-profile> add github:rbviz/dsh-plugin-jules

Git 安装会运行 prepare 链接 peer 依赖并编译 src/ 到 lib/;npm 安装则跳过 prepare。

认证配置

  1. 在 https://jules.google.com/settings 创建 API key。
  2. 通过配置项 apiKeyEnv(默认 JULES_API_KEY)引用密钥名,不要直接把密钥写进配置文件。可在启动 Harness 前导出环境变量,或使用 Harness credential store。
export JULES_API_KEY=...

解析顺序为:字面量 apiKey → ctx.credentials → 启动环境;轮换 key 后下一次请求即生效,无需重载。未配置 key 时,工具会返回可操作的错误信息而非裸 401。

若已通过 bundle 安装,不要同时在 cordis.patch.yml 里用绝对路径再 insert 同 id jules,否则会因 duplicate loader entry 在启动时失败;要改行为应通过 override 同 id 的行 覆盖整段 config。

典型用法

README 给出的快速路径如下(中间省略号表示等待后台通知):

jules_sources                     # 查看 Jules 可操作的仓库
jules_create                      # prompt + source + requirePlanApproval + autoCreatePr
jules_watch                       # 返回 job id;然后结束当前回合
  ... 完成通知到达 ...
job_output                        # 阅读报告
jules_status                      # 阅读计划,再 jules_approve_plan
jules_patch                       # 审阅或落地 diff

下面是一个更贴近日常委派的顺序说明:

  1. 用 jules_sources 确认目标仓库已连接。
  2. 用 jules_create 提交任务;需要人工把关改动时设 requirePlanApproval: true,需要 Jules 自动开 PR 时设 autoCreatePr(参数以工具 schema 为准)。
  3. 调用 jules_watch 拿到 job id 后结束回合,避免空转轮询。
  4. 收到完成通知后,用 job_output 看摘要,用 jules_status 看计划;若计划待批,执行 jules_approve_plan。
  5. 用 jules_patch 拉取 diff,在本地审阅后 git apply 或按你的工作流合并。

适用场景与注意

适合谁:已在 DeepSeek Harness 0.2.x 上开发 agent、希望把「跨文件改动 + 命令 + PR」交给 Google 云端 Jules、又要在 Harness 里保留计划审批与 diff 回收能力的团队或个人。

权限与安全:插件以当前 Harness 进程及其配置的凭证权限访问 Jules API;从 GitHub 安装并开启 allowBuilds 时,安装阶段会在本机执行该包的构建脚本。安装前应阅读仓库源码与 MIT 许可证,仅对可信来源放行 build。

生态说明:DeepSeek Harness 社区插件目录(如 SkillHub 上的条目页)是独立站点,与 DeepSeek / 幻方无官方从属关系;本文事实以插件 GitHub README 与 package 元数据为准。

链接

  • 目录页:https://www.skillhub.cn/plugins/rbviz/dsh-plugin-jules
  • GitHub:https://github.com/rbviz/dsh-plugin-jules
  • Jules:https://jules.google.com
  • API Key 设置:https://jules.google.com/settings

dsh-plugin-jules 把 Jules 的长周期云端编码流程收束为 Harness 可编排的工具链:委派、监视、批计划、取 diff,适合作为工作流类插件接入现有 0.2.x profile。

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

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

小夜