前言¶
在 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 上加载。
环境与前置条件¶
- DeepSeek Harness:0.2.1-rc.2 或更新,且仍在 0.2.x;需使用带 base bundle 的 profile(提供
tools、systemPrompt、jobs与存储栈)。不满足engines.dsh时,Harness 启动时会拒绝加载并说明原因。 - Node:22 或更新。
- Jules 账号:至少通过 Jules GitHub App 连接一个仓库。
- 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。
认证配置¶
- 在 https://jules.google.com/settings 创建 API key。
- 通过配置项
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
下面是一个更贴近日常委派的顺序说明:
- 用
jules_sources确认目标仓库已连接。 - 用
jules_create提交任务;需要人工把关改动时设requirePlanApproval: true,需要 Jules 自动开 PR 时设autoCreatePr(参数以工具 schema 为准)。 - 调用
jules_watch拿到 job id 后结束回合,避免空转轮询。 - 收到完成通知后,用
job_output看摘要,用jules_status看计划;若计划待批,执行jules_approve_plan。 - 用
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。