[{"data":1,"prerenderedAt":474},["ShallowReactive",2],{"header-counts":3,"footer-counts":6,"news-2026-jules-tools-cli":9},{"tools":4,"reviews":5},67,7,{"tools":4,"reviews":5,"playbooks":7,"news":8},12,10,{"id":10,"title":11,"body":12,"cover":464,"description":465,"extension":466,"meta":467,"navigation":235,"path":468,"published":469,"seo":470,"sourceName":471,"sourceUrl":441,"stem":472,"__hash__":473},"news\u002Fnews\u002F2026\u002Fjules-tools-cli.md","Google Jules Tools 发布：异步 Coding Agent 正式进入命令行工作流",{"type":13,"value":14,"toc":455},"minimark",[15,19,48,51,55,145,148,151,154,356,359,362,365,380,383,386,406,409,413,416,419,422,430,433,451],[16,17,18],"h2",{"id":18},"要点",[20,21,22,30,36,42],"ul",{},[23,24,25,29],"li",{},[26,27,28],"strong",{},"Jules Tools 是 @google\u002Fjules CLI","：可在终端创建、查看、拉取 Jules 远程任务",[23,31,32,35],{},[26,33,34],{},"Jules 运行在 Cloud VM","：clone 仓库、改代码、跑测试、返回 diff \u002F PR",[23,37,38,41],{},[26,39,40],{},"支持脚本化委派","：TODO 文件、GitHub issue、Gemini CLI 输出都可以 pipe 给 Jules",[23,43,44,47],{},[26,45,46],{},"异步 Agent 进入混合工作流","：本地手写 + 云端委派并行推进",[16,49,50],{"id":50},"它解决什么问题",[52,53,54],"p",{},"Jules 原本更像 Web UI 里的「把任务交给云端 Agent」。Jules Tools 把这件事搬进终端，让它能进入开发者日常流水线：",[56,57,62],"pre",{"className":58,"code":59,"language":60,"meta":61,"style":61},"language-bash shiki shiki-themes github-light github-dark","npm install -g @google\u002Fjules\njules login\njules remote new --repo . --session \"write unit tests for auth module\"\njules remote list --session\njules remote pull --session 123456\n","bash","",[63,64,65,85,94,117,130],"code",{"__ignoreMap":61},[66,67,70,74,78,82],"span",{"class":68,"line":69},"line",1,[66,71,73],{"class":72},"sScJk","npm",[66,75,77],{"class":76},"sZZnC"," install",[66,79,81],{"class":80},"sj4cs"," -g",[66,83,84],{"class":76}," @google\u002Fjules\n",[66,86,88,91],{"class":68,"line":87},2,[66,89,90],{"class":72},"jules",[66,92,93],{"class":76}," login\n",[66,95,97,99,102,105,108,111,114],{"class":68,"line":96},3,[66,98,90],{"class":72},[66,100,101],{"class":76}," remote",[66,103,104],{"class":76}," new",[66,106,107],{"class":80}," --repo",[66,109,110],{"class":76}," .",[66,112,113],{"class":80}," --session",[66,115,116],{"class":76}," \"write unit tests for auth module\"\n",[66,118,120,122,124,127],{"class":68,"line":119},4,[66,121,90],{"class":72},[66,123,101],{"class":76},[66,125,126],{"class":76}," list",[66,128,129],{"class":80}," --session\n",[66,131,133,135,137,140,142],{"class":68,"line":132},5,[66,134,90],{"class":72},[66,136,101],{"class":76},[66,138,139],{"class":76}," pull",[66,141,113],{"class":80},[66,143,144],{"class":80}," 123456\n",[52,146,147],{},"对重度终端用户来说，这比打开网页、选 repo、复制 prompt 更自然；对团队来说，则意味着可以把 async coding agent 接入脚本和 issue triage。",[16,149,150],{"id":150},"典型组合方式",[52,152,153],{},"Google 官方博客给出的方向很明确：Jules Tools 不是孤立 CLI，而是可以和 GitHub CLI、jq、Gemini CLI 串起来。",[56,155,157],{"className":58,"code":156,"language":60,"meta":61,"style":61},"# 把 TODO.md 每行派给 Jules\ncat TODO.md | while IFS= read -r line; do\n  jules remote new --repo . --session \"$line\"\ndone\n\n# 把一个 GitHub issue 标题派给 Jules\ngh issue list --assignee @me --limit 1 --json title \\\n  | jq -r '.[0].title' \\\n  | jules remote new --repo .\n\n# 先让 Gemini CLI 找出最琐碎 issue，再交给 Jules\ngemini -p \"find the most tedious issue, print it verbatim\\n$(gh issue list --assignee @me)\" \\\n  | jules remote new --repo .\n",[63,158,159,165,202,226,231,237,243,274,290,307,311,317,341],{"__ignoreMap":61},[66,160,161],{"class":68,"line":69},[66,162,164],{"class":163},"sJ8bj","# 把 TODO.md 每行派给 Jules\n",[66,166,167,170,173,177,180,184,187,190,193,196,199],{"class":68,"line":87},[66,168,169],{"class":72},"cat",[66,171,172],{"class":76}," TODO.md",[66,174,176],{"class":175},"szBVR"," |",[66,178,179],{"class":175}," while",[66,181,183],{"class":182},"sVt8B"," IFS",[66,185,186],{"class":175},"=",[66,188,189],{"class":80}," read",[66,191,192],{"class":80}," -r",[66,194,195],{"class":76}," line",[66,197,198],{"class":182},"; ",[66,200,201],{"class":175},"do\n",[66,203,204,207,209,211,213,215,217,220,223],{"class":68,"line":96},[66,205,206],{"class":72},"  jules",[66,208,101],{"class":76},[66,210,104],{"class":76},[66,212,107],{"class":80},[66,214,110],{"class":76},[66,216,113],{"class":80},[66,218,219],{"class":76}," \"",[66,221,222],{"class":182},"$line",[66,224,225],{"class":76},"\"\n",[66,227,228],{"class":68,"line":119},[66,229,230],{"class":175},"done\n",[66,232,233],{"class":68,"line":132},[66,234,236],{"emptyLinePlaceholder":235},true,"\n",[66,238,240],{"class":68,"line":239},6,[66,241,242],{"class":163},"# 把一个 GitHub issue 标题派给 Jules\n",[66,244,245,248,251,253,256,259,262,265,268,271],{"class":68,"line":5},[66,246,247],{"class":72},"gh",[66,249,250],{"class":76}," issue",[66,252,126],{"class":76},[66,254,255],{"class":80}," --assignee",[66,257,258],{"class":76}," @me",[66,260,261],{"class":80}," --limit",[66,263,264],{"class":80}," 1",[66,266,267],{"class":80}," --json",[66,269,270],{"class":76}," title",[66,272,273],{"class":80}," \\\n",[66,275,277,280,283,285,288],{"class":68,"line":276},8,[66,278,279],{"class":175},"  |",[66,281,282],{"class":72}," jq",[66,284,192],{"class":80},[66,286,287],{"class":76}," '.[0].title'",[66,289,273],{"class":80},[66,291,293,295,298,300,302,304],{"class":68,"line":292},9,[66,294,279],{"class":175},[66,296,297],{"class":72}," jules",[66,299,101],{"class":76},[66,301,104],{"class":76},[66,303,107],{"class":80},[66,305,306],{"class":76}," .\n",[66,308,309],{"class":68,"line":8},[66,310,236],{"emptyLinePlaceholder":235},[66,312,314],{"class":68,"line":313},11,[66,315,316],{"class":163},"# 先让 Gemini CLI 找出最琐碎 issue，再交给 Jules\n",[66,318,319,322,325,328,330,333,336,339],{"class":68,"line":7},[66,320,321],{"class":72},"gemini",[66,323,324],{"class":80}," -p",[66,326,327],{"class":76}," \"find the most tedious issue, print it verbatim\\n$(",[66,329,247],{"class":72},[66,331,332],{"class":76}," issue list ",[66,334,335],{"class":80},"--assignee",[66,337,338],{"class":76}," @me)\"",[66,340,273],{"class":80},[66,342,344,346,348,350,352,354],{"class":68,"line":343},13,[66,345,279],{"class":175},[66,347,297],{"class":72},[66,349,101],{"class":76},[66,351,104],{"class":76},[66,353,107],{"class":80},[66,355,306],{"class":76},[52,357,358],{},"这个模式很像「本地 Agent 负责分析和分拣，云端 Agent 负责执行」。",[16,360,361],{"id":361},"为什么重要",[52,363,364],{},"2026 年 Coding Agent 正在分化成两类：",[366,367,368,374],"ol",{},[23,369,370,373],{},[26,371,372],{},"实时结对型","：Claude Code、Codex CLI、Cursor、Gemini CLI",[23,375,376,379],{},[26,377,378],{},"异步委派型","：Jules、Devin、Copilot Coding Agent",[52,381,382],{},"Jules Tools 的价值是把第二类工具接回命令行，让 async agent 可以被脚本、cron、issue bot、GitHub Actions 等传统自动化系统调用。",[16,384,385],{"id":385},"适合哪些任务",[20,387,388,391,394,397,400,403],{},[23,389,390],{},"依赖升级",[23,392,393],{},"补单元测试",[23,395,396],{},"简单 bug fix",[23,398,399],{},"文档更新",[23,401,402],{},"机械迁移",[23,404,405],{},"多个低风险 issue 并发处理",[52,407,408],{},"不建议一开始就交给 Jules 的任务：架构大改、需求不明确的新功能、需要生产 secret 的任务、紧急线上事故。",[16,410,412],{"id":411},"aiho-建议","AIHO 建议",[52,414,415],{},"如果你已经在用 Jules：尽快试 Jules Tools，因为 CLI 能显著降低任务创建和查看成本。",[52,417,418],{},"如果你还没用过 Jules：从 3 个低风险 issue 开始，不要一口气把 backlog 全派出去。每个 issue 必须写清 Goal \u002F Scope \u002F Verification，并要求 Agent 跑测试。",[52,420,421],{},"最佳实践：",[56,423,428],{"className":424,"code":426,"language":427,"meta":61},[425],"language-text","Gemini CLI 分拣 issue → Jules 并发处理低风险任务 → Copilot \u002F CodeRabbit \u002F 人工 review PR\n","text",[63,429,426],{"__ignoreMap":61},[16,431,432],{"id":432},"来源",[20,434,435,444],{},[23,436,437,438],{},"Google Developers Blog：",[439,440,441],"a",{"href":441,"rel":442},"https:\u002F\u002Fdevelopers.googleblog.com\u002Fen\u002Fmeet-jules-tools-a-command-line-companion-for-googles-async-coding-agent\u002F",[443],"nofollow",[23,445,446,447],{},"Jules CLI Reference：",[439,448,449],{"href":449,"rel":450},"https:\u002F\u002Fjules.google\u002Fdocs\u002Fcli\u002Freference",[443],[452,453,454],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":61,"searchDepth":96,"depth":96,"links":456},[457,458,459,460,461,462,463],{"id":18,"depth":87,"text":18},{"id":50,"depth":87,"text":50},{"id":150,"depth":87,"text":150},{"id":361,"depth":87,"text":361},{"id":385,"depth":87,"text":385},{"id":411,"depth":87,"text":412},{"id":432,"depth":87,"text":432},null,"Google 发布 Jules Tools（@google\u002Fjules），让开发者可以在终端中创建、查看、拉取 Jules 云端 coding session，把异步 Coding Agent 接入脚本、GitHub issue 和现有开发流水线。","md",{},"\u002Fnews\u002F2026\u002Fjules-tools-cli","2026-06-25",{"title":11,"description":465},"Google Developers Blog","news\u002F2026\u002Fjules-tools-cli","1kyxy10LD9ImC1gL3FGG4ndZ9lE9b_6yxXCmWIu-EMc",1782480894083]