mcpField
J
jules-dispatch

jules-dispatch

本地服务
github.com/YuuqqAI 与智能体56 天前更新

关于 jules-dispatch

jules-dispatch 是用于并行向 Google Jules 派发编码任务的命令行工具和 MCP 服务。它支持 YAML 批量任务、计划审批、会话监控和 PR 收集,适合开发者及编码 Agent。

主要功能

  1. 01最多并行创建 50 个会话
  2. 02使用 YAML 定义批量任务
  3. 03轮询会话并收集 PR 链接
  4. 04审批计划并发送后续消息
  5. 05监控、取消和查看会话
  6. 06可选的 LLM 任务规划

适用场景

  1. 01在多个模块并行补充测试
  2. 02将迁移拆分为并行任务
  3. 03在多个仓库应用同一变更
  4. 04为高风险工作设置计划审批

MCP 相关

将 Google Jules 会话创建、监控和交互作为工具提供给 Claude Code 或 Codex。配置 LLM 密钥后,还会注册可选的规划工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"yuuqq-jules-dispatch": {
"command": "npx",
"args": [
"-y",
"@yuuqq/jules-dispatch"
],
"env": {
"JULES_API_KEY": "<JULES_API_KEY>",
"JULES_DEFAULT_SOURCE": "<JULES_DEFAULT_SOURCE>",
"JULES_DEFAULT_BRANCH": "<JULES_DEFAULT_BRANCH>"
}
}
}
}
启动命令npx -y @yuuqq/jules-dispatch
需要配置的环境变量
JULES_API_KEY密钥Google Jules API key
JULES_DEFAULT_SOURCEDefault Jules source, e.g. sources/github/owner/repo (optional if every task sets source)
JULES_DEFAULT_BRANCHDefault git branch for sessions (defaults to main)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@yuuqq/jules-dispatch1.3.2

工具

15

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

jules-dispatch 🚀

并行批量向 Google Jules 分派任务 — 并在 Claude Code 或 OpenAI Codex CLI 中将其用作 MCP 工具。

npm version CI TypeScript MCP License: MIT

🌐 语言:English · 简体中文

jules-dispatch 横幅 — 一个编排 AI 将任务分派给多个并行运行的 Jules 工作进程,每个进程都会生成一个 PR

🌐 落地页和交互式文档
https://yuuqq.github.io/jules-dispatch/ — 完整的入门指南和 MCP 集成示例


这是什么?

jules-dispatch 是一个面向 Google Jules API 的 CLI 和 MCP 服务,可让你:

  • 分派任意数量的 Jules 任务,最多支持 50 个会话同时创建,还可选择控制创建节奏
  • 将任务定义为简单的 YAML 文件 — 包含标题、仓库、分支和提示词
  • 轮询任务完成状态并收集生成的 PR 链接
  • 批准计划、发送后续消息、取消失控的会话、实时查看活动
  • 将其作为 MCP 服务接入 Claude Code 或 Codex — 由 AI 助手调用 Jules 作为工具

它将 Jules 从“一次处理一个任务”的工具,变成一支大规模并行的编码团队,既可由用户通过命令行控制,也可由其他 AI 通过 MCP 控制。


🏗 工作原理

flowchart LR
    O["🧠 Orchestrator<br/>(Claude / Codex / you)"]
    O -->|writes| T["📄 tasks/*.yaml"]
    T --> D["⚡ jules-dispatch batch"]
    D -->|parallel| J1["🤖 Jules #1"]
    D -->|parallel| J2["🤖 Jules #2"]
    D -->|parallel| J3["🤖 Jules #3"]
    D -->|parallel| J4["🤖 Jules #N"]
    J1 --> P1["🔀 PR #1"]
    J2 --> P2["🔀 PR #2"]
    J3 --> P3["🔀 PR #3"]
    J4 --> P4["🔀 PR #N"]

    classDef orch fill:#7c3aed,stroke:#5b21b6,color:#fff
    classDef tool fill:#0891b2,stroke:#0e7490,color:#fff
    classDef worker fill:#f59e0b,stroke:#b45309,color:#fff
    classDef pr fill:#10b981,stroke:#047857,color:#fff
    class O orch
    class D tool
    class J1,J2,J3,J4 worker
    class P1,P2,P3,P4 pr

✨ 1.2 版新功能 — 可选的 AI 任务规划(自带 LLM)

完全可选。 所有核心命令都无需 LLM 密钥即可运行。如果你只需要直接分派任务,可跳过本节。

不必再手动编写任务 YAML。只需给 jules-dispatch 一句话,即可让 LLM 将其扩展为 N 个并行的 Jules 会话。

$ jules-dispatch auto "Migrate every Express route to Fastify and add request-validation tests"

Planning with gpt-4o-mini...

Planned 6 task(s):
  1. Migrate auth routes (/api/auth/*) to Fastify
  2. Migrate user routes (/api/users/*) to Fastify
  3. Migrate billing routes (/api/billing/*) to Fastify
  4. Replace Express middleware with Fastify hooks
  5. Update server bootstrap to use Fastify instance
  6. Add Vitest request-validation tests for all migrated routes

Dispatch all 6 task(s)? [y/N]

自带 LLM — 兼容任何 OpenAI 兼容的 /chat/completions 端点:

提供方LLM_BASE_URL示例 LLM_MODEL
OpenAI(默认)(省略 — 默认使用 https://api.openai.com/v1)gpt-4o-mini、gpt-4o、o3-mini
OpenRouterhttps://openrouter.ai/api/v1openrouter/auto、anthropic/claude-opus-4.7
Ollama(本地,免费)http://localhost:11434/v1llama3.1、qwen2.5-coder:32b
Groqhttps://api.groq.com/openai/v1llama-3.3-70b-versatile
Together / Fireworks / DeepInfra / vLLM / LiteLLM / Azure OpenAI(各自的端点)(各自的模型 ID)

可通过环境变量(LLM_API_KEY、LLM_BASE_URL、LLM_MODEL)或每次调用的标志(--llm-key、--llm-base-url、--llm-model)进行配置。也会将 OPENAI_API_KEY 和 OPENROUTER_API_KEY 识别为备用项。

命令 / 工具功能
jules-dispatch plan-tasks "<intent>"仅规划 — 打印任务或将其写入 YAML 文件
jules-dispatch auto "<intent>"一次完成规划和分派(需确认)
MCP jules_plan_tasks同样的规划功能,开放给 Claude Code / Codex 使用 (仅在配置了 LLM 密钥时注册)
MCP jules_auto一次完成规划和分派 (仅在配置了 LLM 密钥时注册)

✨ 1.1 版本新特性

  • 🧰 MCP 服务(jules-dispatch mcp)——8 个始终注册的工具;配置 LLM 密钥后,还会提供 2 个可选规划工具,以及 7 个可选启用的旧版别名
  • 🤖 --json 模式——每条命令都支持机器可读输出,适用于 AI Agent 和 Shell 管道
  • ✅ 计划审批工作流——plan、approve 命令,以及 requirePlanApproval: true 任务选项
  • 📡 实时跟踪——tail <id> 会实时流式输出活动事件
  • ❌ 取消会话——cancel <id> 可中止失控的运行
  • 🔍 直接查找——get <id>、status --ids 不再受限于最近一页结果
  • 🛡️ 真实故障检测——使用 session.state,快速失败,并返回不同的退出码
  • ⚡ 智能重试——采用带抖动的指数退避策略,并遵循 Retry-After
  • 📥 标准输入——dispatch - 从管道读取 YAML/JSON
  • 🔑 --api-key 标志——按次调用传递密钥,无需 .env

✨ 主要功能

功能详情
⚡ 有界、按节奏分发持续补充 1–50 个工作线程的池,并可使用 --pace-ms 控制启动间隔
📋 YAML 任务文件支持多文档 YAML(以 --- 分隔)
🔄 状态轮询自动检测 PR、计划审批和故障
💬 计划与消息控制审批计划、发送后续消息、取消会话
🤖 MCP 服务作为工具接入 Claude Code 或 Codex
📦 结构化输出使用 --json 模式,便于将输出通过管道传递给 Agent 和脚本
📝 分发日志记录每次分发运行的 JSON 审计轨迹

💡 五种常见用例

当一项变更可以拆分为彼此独立、适合提交 PR 的任务时,jules-dispatch 效果最佳。如果任务会编辑相同文件,或依赖前序输出,请分批分发,而不要并发运行。

1. 为多个模块补充测试覆盖

假设 auth、billing、users 和 audit 模块都需要测试。为每个模块在专用目录中创建一个独立的任务文件,然后将整个目录作为一批任务分发:

jules-dispatch batch tasks/add-tests --parallel 4

每个 Jules 会话负责一个模块。启用 AUTO_CREATE_PR 后,结果将是一组范围明确的 PR,可分别审查和合并。任务失败时,可以单独重试,无需重启其余任务。

**好处:**彼此独立的测试工作可以同时进行,避免最终变成一个庞大且难以审查的变更。

2. 将大型迁移拆分为可执行任务

对于将 Express API 迁移到 Fastify 这类目标,可使用可选的 LLM 规划器来识别彼此独立的路由、中间件、启动代码和测试工作:

jules-dispatch auto "Migrate the Express API to Fastify and add request-validation tests" \
  --max 8 --parallel 4

auto 会显示建议的任务,并在分发前请求确认。如果希望在将任何内容发送给 Jules 之前保存并编辑生成的 YAML,请改用 plan-tasks。

**好处:**规划器降低了拆解宽泛目标的成本,同时让任务边界清晰可见,便于审查。

3. 在多个代码仓库中推出相同的变更

若要在多个已连接 Jules 的代码仓库中添加共用的 CI 检查、安全基线或贡献政策,请为每项任务指定自己的 source:

title: "Add the security baseline to the API"
prompt: "Add the agreed security checks and open a focused PR."
source: "sources/github/acme/api"
branch: "main"
---
title: "Add the security baseline to the worker"
prompt: "Add the agreed security checks and open a focused PR."
source: "sources/github/acme/worker"
branch: "main"

将任务文件放在专用的批次目录中,并通过受控的并发数和启动间隔来分发:

jules-dispatch batch tasks/security-baseline --parallel 6 --pace-ms 250

**好处:**一条命令即可协调整个推广过程,同时为每个代码仓库保留独立的会话和 PR,并为该批次生成审计日志。

4. 为高风险变更保留人工审批关卡

身份验证、授权和数据库迁移通常需要在开始实施前进行审查。要求 Jules 在规划后暂停:

title: "Refactor authorization checks"
prompt: "Centralize API authorization checks without changing the public API."
requirePlanApproval: true

检查计划,必要时发送修正意见,批准后继续监控:

jules-dispatch plan abc123
jules-dispatch message abc123 "Do not change the public API"
jules-dispatch plan abc123       # inspect the revised plan
jules-dispatch approve abc123
jules-dispatch wait abc123

**好处:**既能掌控高影响决策,又不必放弃委派执行。

5. 让 Claude Code 或 Codex 协调整个运行过程

配置 MCP 服务后,描述你想要的结果,而不是亲自操作每个会话:

分析此代码库,将测试缺口拆分为相互独立的任务,并将它们分派给 Jules。请在批准计划或回复反馈请求前先询问我。所有会话完成后,汇总结果并列出每项任务对应的 PR URL。

编码助手可以调用 jules_dispatch、使用 jules_monitor 等待、检查需要采取操作的会话(使用 jules_interact),并返回最终的 PR 摘要。

好处: 你负责管理目标和重要决策,助手则处理分派、跟进和结果收集。


🤖 在 Claude Code 或 Codex 中使用(MCP)

MCP 服务会将 Jules 作为一组工具提供出来,供你的编码 AI 直接调用。

sequenceDiagram
    autonumber
    actor U as 👤 You
    participant CC as 💬 Claude Code / Codex
    participant MCP as ⚡ jules-dispatch (MCP)
    participant J as ☁️ Google Jules

    U->>CC: "Add tests to 5 modules"
    CC->>MCP: jules_dispatch(tasks)
    MCP->>J: POST /sessions × 5
    J-->>MCP: 5 session IDs
    MCP-->>CC: {dispatched: 5}

    CC->>MCP: jules_monitor(ids, wait=true)
    loop until terminal or action required
        MCP->>J: GET /sessions/{id}
    end
    MCP-->>CC: {sessions, wait: {completed, actionRequired, ...}}

    opt a session requires action
        CC->>MCP: jules_interact(id)
        MCP-->>CC: state + plan + activities
        CC->>MCP: jules_approve_plan(id) or jules_send_message(id, text)
        CC->>MCP: jules_monitor(ids, wait=true)
    end

    CC->>MCP: jules_interact(id)
    MCP-->>CC: terminal status + PR output
    CC-->>U: "Done. PRs: #42, #43, #44, #45, #46"
为 Claude Code 安装
npm install -g @yuuqq/jules-dispatch

完整设置指南(包括 GSD 集成):docs/MCP-INTEGRATION.md

添加到 ~/.config/claude-code/mcp.json(或使用 claude mcp add):

{
  "mcpServers": {
    "jules-dispatch": {
      "command": "jules-dispatch",
      "args": ["--project", "/path/to/your/project", "mcp"],
      "env": {
        "JULES_API_KEY": "your-api-key-here",
        "JULES_DEFAULT_SOURCE": "sources/github/owner/repo",
        "JULES_DEFAULT_BRANCH": "main"
      }
    }
  }
}

然后在 Claude Code 中输入:"分派 5 项 Jules 任务,为 auth、payments、users、sessions 和 audit 模块添加测试。" Claude 会调用 jules_dispatch,使用 jules_monitor 监控任务,并在需要完整上下文或 PR 输出时使用 jules_interact。

为 OpenAI Codex CLI 安装

添加到 ~/.codex/config.toml:

[mcp_servers.jules-dispatch]
command = "jules-dispatch"
args = ["--project", "/path/to/your/project", "mcp"]
env = { JULES_API_KEY = "your-api-key-here", JULES_DEFAULT_SOURCE = "sources/github/owner/repo" }
作为 Agent Skill 安装

此代码库还附带一个轻量级 Skill 封装,位于 skills/jules-dispatch/。此 Skill 会教会 Claude Code、Codex 或任何兼容 Agent Skills 的宿主何时以及如何使用 jules-dispatch MCP 工具。

对于 Codex,将文件夹复制或安装为 Codex 技能目录中的 jules-dispatch,然后重启 Codex:

cp -R skills/jules-dispatch "${CODEX_HOME:-$HOME/.codex}/skills/jules-dispatch"

对于使用共享技能目录的兼容 Agent Skills 的宿主,将同一文件夹复制到该宿主的技能目录中。此 Skill 仅提供指令层;你仍需使用 jules-dispatch mcp 配置 MCP 服务,并设置有效的 JULES_API_KEY。

MCP 工具
整合工具(推荐)

该服务默认注册 8 个工具:3 个推荐的整合工具和 5 个实用工具。配置 LLM 密钥后,还会注册另外 2 个规划工具。另有 7 个已弃用的别名,可通过 --legacy-tools / JULES_MCP_LEGACY_TOOLS=1 启用,但默认不会注册,因此除非你需要,否则不会占用上下文。

jules_dispatch — 创建一个或多个会话

接受单个任务对象、任务数组或 YAML/JSON 字符串。

参数:

参数类型必填默认值说明
tasksobject | object[] | string是—任务定义。对象需要包含 title + prompt。字符串会按 YAML/JSON 解析。
format"yaml" | "json"否"yaml"tasks 为字符串时使用的格式
parallelnumber否10最大并发分派数(1–50)
paceMsnumber否0会话创建开始之间的全局最小延迟(0–60000 ms)
{
  "tasks": [
    { "title": "Fix auth bug", "prompt": "Fix the null check in login()" },
    { "title": "Add tests", "prompt": "Add unit tests for auth.ts" }
  ],
  "parallel": 5,
  "paceMs": 250
}

分派使用持续补充的工作池,而不是固定批次:每当一个任务完成会话创建,下一个排队任务就可以启动。paceMs 在所有工作进程间全局生效,因此连续启动的创建操作至少间隔该时长,同时结果顺序仍与任务顺序一致。

jules_monitor — 检查状态或等待下一个解决节点

参数:

参数类型必填默认值说明
sessionIdsstring[]是—要监控的会话 ID
waitboolean否false如果为 true,则轮询,直到所有会话均已结束、任一会话需要操作或超时
intervalMsnumber否10000轮询间隔,单位为 ms(最小值为 1000)
timeoutMsnumber否600000最长等待时间,单位为 ms(最小值为 1000)
failFastboolean否false首次失败时立即退出
{
  "sessionIds": ["abc123", "def456"],
  "wait": true,
  "timeoutMs": 300000
}

需要操作的状态包括 AWAITING_PLAN_APPROVAL、AWAITING_USER_FEEDBACK 和 PAUSED。当结果包含 actionRequired 时,使用 jules_interact 检查这些会话,酌情批准计划或发送反馈,然后再次调用 jules_monitor,监控尚未解决的 ID。

jules_interact — 在完整上下文中检查会话

一次调用即可返回会话详情、推导出的状态、全局最新计划、活动时间线和 PR 输出。服务会扫描完整的活动动态(按时间从早到晚排列),然后按时间顺序返回最新的 activityCount 条记录,并提供完整动态的 activityTotal。

参数:

参数类型必填默认值说明
sessionIdstring是—要检查的会话 ID
activityCountnumber否10最近活动的数量(1–100)
{ "sessionId": "abc123", "activityCount": 20 }
实用工具
工具参数说明
jules_list_sources(无)列出所有已连接 Jules 的 GitHub 仓库
jules_list_sessionspageSize?, pageToken?分页列出最近的会话
jules_approve_plansessionId批准需要计划审批的会话
jules_send_messagesessionId, text发送后续消息
jules_cancel_sessionsessionId取消正在运行的会话
可选的 LLM 驱动工具(需要 LLM 密钥)
工具参数说明
jules_plan_tasksdescription, maxTasks?, source?, branch?, context?根据高层级描述规划任务
jules_autodescription, maxTasks?, source?, branch?, parallel?, paceMs?一次性完成规划和分派
响应格式

所有工具均返回:

{ "success": true, "data": { ... } }

错误返回:

{
  "success": false,
  "error": {
    "message": "Authentication failed",
    "status": 401,
    "name": "Error",
    "recovery_hint": "Check your API key"
  }
}
旧版工具(已弃用的别名,选择启用)

jules_dispatch_task、jules_dispatch_batch、jules_get_session、jules_list_activities、jules_get_plan、jules_status 和 jules_wait_for_completion 为保持兼容仍可使用,但默认不注册。通过以下任一方式启用:

jules-dispatch mcp --legacy-tools
JULES_MCP_LEGACY_TOOLS=1 jules-dispatch mcp

新的集成应使用整合后的工具。


🚀 快速开始(纯 CLI)

前提条件
  • Node.js 20+
  • Google Jules 账号和 API 密钥(Google Jules)
  • 已连接 Jules 的 GitHub 仓库
1. 安装
npm install -g @yuuqq/jules-dispatch
2. 设置(交互式向导)
jules-dispatch init

向导会提示你输入 API 密钥、默认源和分支,并写入 .env 文件。

用于 CI/脚本(非交互式):

jules-dispatch init --api-key sk-xxx --source sources/github/owner/repo
3. 验证设置
jules-dispatch doctor
4. 编写任务
# tasks/add-dark-mode.yaml
title: "Add Dark Mode Support"
prompt: |
  Add a dark mode toggle to the React app:
  1. Add a ThemeContext with light/dark state
  2. Wrap App with ThemeProvider
  3. Add a toggle button in the Header
  4. Persist preference in localStorage
  5. Open a PR
5. 分派任务
jules-dispatch dispatch tasks/add-dark-mode.yaml
# ✓ Add Dark Mode Support
#   Session: https://jules.google.com/session/abc123
#   ID:      abc123
6. 批量分派整个目录中的任务
jules-dispatch batch tasks/ --parallel 10

就这么简单——从安装到创建首个 PR,只需 6 个步骤。


📖 CLI 参考

全局标志
标志默认值说明
-p, --project <dir>.包含 .env 文件的目录
--api-key <key>Jules API 密钥(覆盖 JULES_API_KEY)
--jsonoff机器可读输出。流式命令使用 NDJSON。
命令
命令功能
init交互式首次运行向导(API key、来源、分支)
dispatch <taskFile>分发单个任务。使用 - 从标准输入读取。
batch [taskDir]分发目录中的所有 .yaml/.yml/.json 文件
auto <description>一次性完成大模型规划和分发(需确认)
plan-tasks <description>使用大模型将意图扩展为 N 个任务草案(不分发)
status最近会话的摘要(或指定 --ids)
get <sessionId>查看单个会话的完整详情
wait <ids...>轮询,直到会话进入终止状态、需要操作或超时
tail <sessionId>实时流式显示会话的活动事件
plan <sessionId>显示最近生成的计划
approve <sessionId>批准待处理的计划
message <sessionId> <text>发送后续消息
cancel <sessionId>取消正在运行的会话
sources列出已连接的 GitHub 仓库(自动翻页)
doctor验证环境、API key、连接状态和任务文件
mcp通过标准输入/输出作为 MCP 服务运行
退出代码(适用于 Shell 脚本和 Agent)
代码含义
0成功
1通用错误
2身份验证错误(缺少或被拒绝的 API key)
3验证或配置错误(任务文件、参数或 Jules 设置有误)
4部分失败(部分 batch 任务失败)
5超时(wait 等待时间耗尽)
监控错误行为

status 会明确报告会话或活动查询失败,显示为 status: "error",并以非零状态码退出,而不会捏造 Jules 故障或信任可能过时的状态。轮询命令只会重试网络错误、速率限制错误和服务器错误;无效请求、身份验证失败和会话不存在时会立即失败,并在错误上下文中注明受影响的会话 ID。

dispatch 示例
# Override repo/branch
jules-dispatch dispatch tasks/my-task.yaml \
  --source sources/github/org/other-repo --branch develop

# Read from stdin
echo 'title: Quick fix\nprompt: Fix typo in README' | jules-dispatch dispatch -

# JSON output (great for piping)
jules-dispatch dispatch tasks/my-task.yaml --json | jq -r '.sessionId'
batch 示例
jules-dispatch batch tasks/                       # default tasks/ dir
jules-dispatch batch tasks/ --parallel 20         # 20 concurrent
jules-dispatch batch tasks/ --parallel 10 --pace-ms 250  # globally space starts by 250 ms
jules-dispatch batch tasks/ --no-log              # don't write dispatch log
jules-dispatch batch tasks/ --json                # one JSON summary at the end

batch 和 auto 均使用相同的持续补充工作池。--parallel 限制同时进行的会话创建数量,--pace-ms 设置创建启动之间的全局最小间隔;它不会在每个工作线程内部额外添加延迟。

wait 示例
# Chain dispatch → wait via JSON output:
ID=$(jules-dispatch dispatch tasks/x.yaml --json | jq -r '.sessionId')
jules-dispatch wait "$ID" --interval 10000 --timeout 1800000
tail 示例
jules-dispatch tail abc123                        # human-readable stream
jules-dispatch tail abc123 --json                 # NDJSON event stream

🔄 会话生命周期

jules-dispatch 会跟踪每个 Jules 会话的完整生命周期,并通过 CLI / MCP 显示各项状态:

stateDiagram-v2
    [*] --> QUEUED
    QUEUED --> PLANNING
    PLANNING --> IN_PROGRESS
    PLANNING --> AWAITING_PLAN_APPROVAL: approval required
    AWAITING_PLAN_APPROVAL --> IN_PROGRESS: approve plan
    IN_PROGRESS --> AWAITING_USER_FEEDBACK: input required
    AWAITING_USER_FEEDBACK --> IN_PROGRESS: send feedback
    IN_PROGRESS --> PAUSED: execution paused
    PAUSED --> IN_PROGRESS: execution resumes
    IN_PROGRESS --> COMPLETED: success
    IN_PROGRESS --> FAILED: error
    COMPLETED --> [*]
    FAILED --> [*]
官方状态含义建议操作
STATE_UNSPECIFIED未提供特定状态使用 jules_monitor 重新检查,或使用 jules_interact 查看
QUEUED / PLANNING / IN_PROGRESSJules 正在积极处理继续监控;使用 tail 查看实时活动
AWAITING_PLAN_APPROVAL生成的计划需要批准使用 jules_interact 查看,然后使用 approve / jules_approve_plan
AWAITING_USER_FEEDBACKJules 需要澄清或输入查看上下文,然后使用 message / jules_send_message
PAUSED执行已暂停,需要关注查看上下文,酌情提供指导,然后再次监控
COMPLETED成功终止查看会话并收集 PR 输出
FAILED失败终止查看最新的失败活动,并决定重试还是替换任务

为保持兼容性,jules-dispatch 也会规范化旧版 API 状态:PENDING、RUNNING、AWAITING_USER_INPUT、CANCELLED 和 CANCELED。取消操作通过 Jules 的 DELETE /sessions/{id} 操作发送。


📄 任务文件格式

字段参考
字段类型必填默认值说明
titlestring是—在 CLI 状态和会话列表中显示的易读任务名称
promptstring是—为 Jules Agent 提供的详细说明。越具体,输出越好。
sourcestring否.env 中的 JULES_DEFAULT_SOURCEJules 源标识符,例如 sources/github/owner/repo。可针对每个任务单独覆盖。
branchstring否.env 中的 JULES_DEFAULT_BRANCH(或 main)Jules 会话开始时使用的 Git 分支
autoModestring否AUTO_CREATE_PR自动化模式。取值:AUTO_CREATE_PR(Jules 自动创建 PR)、NONE
requirePlanApprovalboolean否false为 true 时,Jules 生成计划后会暂停,并等待执行 jules-dispatch approve <id>
YAML 示例
title: "Add unit tests for auth module"
prompt: |
  Add comprehensive unit tests for src/auth.ts:
  1. Test login with valid credentials
  2. Test login with invalid credentials
  3. Test token refresh flow
  4. Test session expiry handling
  5. Open a PR with the test file
source: "sources/github/myorg/myrepo"
branch: "develop"
autoMode: "AUTO_CREATE_PR"
requirePlanApproval: false
在一个文件中定义多个任务(YAML --- 分隔符)
title: "Fix lint errors in src/auth"
prompt: "Fix all ESLint errors in src/auth.ts"
---
title: "Fix lint errors in src/api"
prompt: "Fix all ESLint errors in src/api.ts"
---
title: "Fix lint errors in src/utils"
prompt: "Fix all ESLint errors in src/utils.ts"
JSON 格式
{
  "title": "Fix the thing",
  "prompt": "Find the bug in src/auth.ts and fix it.",
  "source": "sources/github/owner/repo",
  "branch": "main"
}

JSON 数组(用于通过 MCP 批量分发):

[
  { "title": "Task 1", "prompt": "Do thing A" },
  { "title": "Task 2", "prompt": "Do thing B" }
]

🤖 AI 编排的并行开发

最具价值的用例:将 jules-dispatch 与 Claude Code 或 Codex 结合使用。

“我有一个 Node.js 后端,需要从 Express 迁移到 Fastify。请分析代码库,将工作拆分为相互独立的迁移单元,并使用 jules-dispatch MCP 工具将它们全部并行分发给 Jules。然后轮询任务完成状态,并报告 PR URL。”

安装 MCP 服务后,你的助手将:

  1. 分析代码库
  2. 提交并推送目标分支,因为 Jules 使用远程源分支,而非尚未推送的本地更改
  3. 使用 N 个任务定义调用 jules_dispatch
  4. 使用 wait: true 调用 jules_monitor;如果需要采取操作,则使用 jules_interact 检查、批准或发送反馈,然后再次监控
  5. 使用 jules_interact 收集终端上下文和 PR URL

你将获得由一个策略型 Agent协调的 N 个并行编码 Agent,全程无需动手。


📁 项目结构

jules-dispatch/
├── src/
│   ├── cli.ts          CLI entry point (Commander)
│   ├── client.ts       Jules REST client (retries, pagination)
│   ├── config.ts       .env + task file loading
│   ├── dispatcher.ts   Task dispatch logic
│   ├── collector.ts    Status polling & wait
│   ├── errors.ts       Structured error translation (Problem/Cause/Fix)
│   ├── output.ts       Text vs JSON output mode, color detection
│   ├── init.ts         Interactive init wizard
│   ├── doctor.ts       Environment validation (doctor command)
│   ├── mcp.ts          MCP server (8 tools + 2 optional planner tools + 7 opt-in aliases)
│   ├── mcp-helpers.ts  MCP response helpers (ok/fail/recovery hints)
│   ├── polling.ts      Shared poll-with-callback engine
│   ├── tail.ts         Bounded, cursor-aware activity tailing
│   ├── planner.ts      Optional LLM task planner
│   ├── log.ts          Verbose logging
│   └── types.ts        TypeScript types
├── tasks/              Your task YAMLs live here
├── .env                Generated by jules-dispatch init
└── .dispatch-logs/     JSON audit trail

🛠 开发

npm install
npm run build     # compile TypeScript → dist/
npm run dev       # run CLI directly with tsx
npm run lint
npm run test

📜 许可证

MIT — 参见 LICENSE


旨在让 Google Jules 真正实现规模化。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。