[{"data":1,"prerenderedAt":3919},["ShallowReactive",2],{"header-counts":3,"playbook-onboarding\u002Fgit-worktrees-parallel-agents":6,"footer-counts":957,"playbook-tools-onboarding\u002Fgit-worktrees-parallel-agents":960},{"tools":4,"reviews":5},70,12,{"id":7,"title":8,"body":9,"category":938,"cover":939,"description":940,"extension":941,"meta":942,"navigation":184,"path":943,"published":944,"relatedTools":945,"seo":949,"stem":950,"tags":951,"updated":944,"__hash__":956},"playbook\u002Fplaybook\u002Fonboarding\u002Fgit-worktrees-parallel-agents.md","用 Git Worktrees 跑并行 AI Agent：多个 Agent 同时改代码互不打架",{"type":10,"value":11,"toc":925},"minimark",[12,16,33,36,67,71,132,143,147,150,270,273,281,284,303,307,310,375,382,386,403,412,443,451,472,476,479,536,547,551,612,615,669,673,868,871,877,880,883,921],[13,14,15],"h2",{"id":15},"适用场景",[17,18,19,20,24,25,29,30],"p",{},"当你想",[21,22,23],"strong",{},"同时","让多个 AI agent 干活——一个修 bug、一个写新功能、一个重构——它们如果都在同一个工作目录里，会互相覆盖文件、抢着切分支、把对方改了一半的代码当成最新状态。",[26,27,28],"code",{},"git worktree"," 是这个问题的标准解法：",[21,31,32],{},"一个仓库、多个工作区、各自独立的分支和文件系统状态。",[17,34,35],{},"适合：",[37,38,39,43,46,60],"ul",{},[40,41,42],"li",{},"想跑「双 agent 交叉检查」或「N 个 agent 并行攻不同模块」的人",[40,44,45],{},"长任务重构期间还想并行修紧急 bug，不想 stash 来回折腾",[40,47,48,49,54,55,59],{},"用 ",[50,51,53],"a",{"href":52},"\u002Fcoding\u002Fcli\u002Fclaude-code.html","Claude Code"," \u002F ",[50,56,58],{"href":57},"\u002Fcoding\u002Fcli\u002Fcodex.html","Codex"," 等终端 agent、习惯一个 agent 占一个终端的人",[40,61,62,63,66],{},"受够了 ",[26,64,65],{},"git stash"," \u002F 频繁切分支导致 agent 上下文错乱的开发者",[13,68,70],{"id":69},"为什么是-worktree不是-clone-或-stash","为什么是 worktree，不是 clone 或 stash",[72,73,74,87],"table",{},[75,76,77],"thead",{},[78,79,80,84],"tr",{},[81,82,83],"th",{},"方案",[81,85,86],{},"问题",[88,89,90,99,108,119],"tbody",{},[78,91,92,96],{},[93,94,95],"td",{},"同一目录切分支",[93,97,98],{},"agent 跑到一半你切分支，它的文件状态全乱；两个 agent 抢分支",[78,100,101,105],{},[93,102,103],{},[26,104,65],{},[93,106,107],{},"临时切走再切回，agent 看到的代码状态不连续，容易误判",[78,109,110,116],{},[93,111,112,113],{},"多次 ",[26,114,115],{},"git clone",[93,117,118],{},"每个 clone 是独立仓库，分支\u002F对象不共享，磁盘翻倍，push\u002Fpull 各管各",[78,120,121,127],{},[93,122,123],{},[21,124,125],{},[26,126,28],{},[93,128,129],{},[21,130,131],{},"一个仓库共享 .git 对象，多个工作区各占一个目录、各在一个分支，互不干扰",[17,133,134,135,138,139,142],{},"worktree 共享同一份 ",[26,136,137],{},".git","（对象、refs、配置），所以磁盘开销小、分支全局可见，但每个工作区的",[21,140,141],{},"文件系统状态和当前分支是独立的","——正好是并行 agent 需要的隔离。",[13,144,146],{"id":145},"第一步建工作区布局","第一步：建工作区布局",[17,148,149],{},"推荐把主仓库和各 worktree 放在同级目录，命名带上任务语义：",[151,152,157],"pre",{"className":153,"code":154,"language":155,"meta":156,"style":156},"language-bash shiki shiki-themes github-light github-dark","# 假设主仓库在 ~\u002Fcode\u002Fmyapp（在 main 分支）\ncd ~\u002Fcode\u002Fmyapp\n\n# 为每个并行任务建一个 worktree + 新分支\ngit worktree add ..\u002Fmyapp-feature-auth   -b feature\u002Fauth\ngit worktree add ..\u002Fmyapp-bugfix-payment -b bugfix\u002Fpayment\ngit worktree add ..\u002Fmyapp-refactor-api   -b refactor\u002Fapi-client\n\n# 查看所有 worktree\ngit worktree list\n","bash","",[26,158,159,168,179,186,192,214,232,249,254,260],{"__ignoreMap":156},[160,161,164],"span",{"class":162,"line":163},"line",1,[160,165,167],{"class":166},"sJ8bj","# 假设主仓库在 ~\u002Fcode\u002Fmyapp（在 main 分支）\n",[160,169,171,175],{"class":162,"line":170},2,[160,172,174],{"class":173},"sj4cs","cd",[160,176,178],{"class":177},"sZZnC"," ~\u002Fcode\u002Fmyapp\n",[160,180,182],{"class":162,"line":181},3,[160,183,185],{"emptyLinePlaceholder":184},true,"\n",[160,187,189],{"class":162,"line":188},4,[160,190,191],{"class":166},"# 为每个并行任务建一个 worktree + 新分支\n",[160,193,195,199,202,205,208,211],{"class":162,"line":194},5,[160,196,198],{"class":197},"sScJk","git",[160,200,201],{"class":177}," worktree",[160,203,204],{"class":177}," add",[160,206,207],{"class":177}," ..\u002Fmyapp-feature-auth",[160,209,210],{"class":173},"   -b",[160,212,213],{"class":177}," feature\u002Fauth\n",[160,215,217,219,221,223,226,229],{"class":162,"line":216},6,[160,218,198],{"class":197},[160,220,201],{"class":177},[160,222,204],{"class":177},[160,224,225],{"class":177}," ..\u002Fmyapp-bugfix-payment",[160,227,228],{"class":173}," -b",[160,230,231],{"class":177}," bugfix\u002Fpayment\n",[160,233,235,237,239,241,244,246],{"class":162,"line":234},7,[160,236,198],{"class":197},[160,238,201],{"class":177},[160,240,204],{"class":177},[160,242,243],{"class":177}," ..\u002Fmyapp-refactor-api",[160,245,210],{"class":173},[160,247,248],{"class":177}," refactor\u002Fapi-client\n",[160,250,252],{"class":162,"line":251},8,[160,253,185],{"emptyLinePlaceholder":184},[160,255,257],{"class":162,"line":256},9,[160,258,259],{"class":166},"# 查看所有 worktree\n",[160,261,263,265,267],{"class":162,"line":262},10,[160,264,198],{"class":197},[160,266,201],{"class":177},[160,268,269],{"class":177}," list\n",[17,271,272],{},"得到的目录结构：",[151,274,279],{"className":275,"code":277,"language":278,"meta":156},[276],"language-text","~\u002Fcode\u002F\n├── myapp\u002F                 # 主仓库，留在 main 做 review\u002F合并\n├── myapp-feature-auth\u002F    # Agent A 在这里跑，feature\u002Fauth 分支\n├── myapp-bugfix-payment\u002F  # Agent B 在这里跑，bugfix\u002Fpayment 分支\n└── myapp-refactor-api\u002F    # Agent C 在这里跑，refactor\u002Fapi-client 分支\n","text",[26,280,277],{"__ignoreMap":156},[17,282,283],{},"基于已有分支建 worktree（不新建分支）：",[151,285,287],{"className":153,"code":286,"language":155,"meta":156,"style":156},"git worktree add ..\u002Fmyapp-hotfix existing-branch\n",[26,288,289],{"__ignoreMap":156},[160,290,291,293,295,297,300],{"class":162,"line":163},[160,292,198],{"class":197},[160,294,201],{"class":177},[160,296,204],{"class":177},[160,298,299],{"class":177}," ..\u002Fmyapp-hotfix",[160,301,302],{"class":177}," existing-branch\n",[13,304,306],{"id":305},"第二步每个工作区开一个-agent","第二步：每个工作区开一个 agent",[17,308,309],{},"每个 worktree 是完整的工作目录，进去直接开 agent：",[151,311,313],{"className":153,"code":312,"language":155,"meta":156,"style":156},"# 终端 1\ncd ~\u002Fcode\u002Fmyapp-feature-auth && claude\n\n# 终端 2\ncd ~\u002Fcode\u002Fmyapp-bugfix-payment && claude\n\n# 终端 3\ncd ~\u002Fcode\u002Fmyapp-refactor-api && codex\n",[26,314,315,320,334,338,343,354,358,363],{"__ignoreMap":156},[160,316,317],{"class":162,"line":163},[160,318,319],{"class":166},"# 终端 1\n",[160,321,322,324,327,331],{"class":162,"line":170},[160,323,174],{"class":173},[160,325,326],{"class":177}," ~\u002Fcode\u002Fmyapp-feature-auth",[160,328,330],{"class":329},"sVt8B"," && ",[160,332,333],{"class":197},"claude\n",[160,335,336],{"class":162,"line":181},[160,337,185],{"emptyLinePlaceholder":184},[160,339,340],{"class":162,"line":188},[160,341,342],{"class":166},"# 终端 2\n",[160,344,345,347,350,352],{"class":162,"line":194},[160,346,174],{"class":173},[160,348,349],{"class":177}," ~\u002Fcode\u002Fmyapp-bugfix-payment",[160,351,330],{"class":329},[160,353,333],{"class":197},[160,355,356],{"class":162,"line":216},[160,357,185],{"emptyLinePlaceholder":184},[160,359,360],{"class":162,"line":234},[160,361,362],{"class":166},"# 终端 3\n",[160,364,365,367,370,372],{"class":162,"line":251},[160,366,174],{"class":173},[160,368,369],{"class":177}," ~\u002Fcode\u002Fmyapp-refactor-api",[160,371,330],{"class":329},[160,373,374],{"class":197},"codex\n",[17,376,377,378,381],{},"每个 agent 看到的是自己分支的干净状态，改文件、跑测试、commit 全在自己的工作区，",[21,379,380],{},"不会碰到别的 agent 的改动","。",[13,383,385],{"id":384},"第三步依赖与构建产物隔离关键坑","第三步：依赖与构建产物隔离（关键坑）",[17,387,388,389,391,392,402],{},"worktree 共享 ",[26,390,137],{},"，但",[21,393,394,395,54,398,401],{},"不共享 ",[26,396,397],{},"node_modules",[26,399,400],{},".venv"," \u002F 构建缓存","——这些是工作区本地的。两个注意点：",[404,405,406],"ol",{},[40,407,408,411],{},[21,409,410],{},"每个 worktree 要各自装依赖","：",[151,413,415],{"className":153,"code":414,"language":155,"meta":156,"style":156},"cd ~\u002Fcode\u002Fmyapp-feature-auth && pnpm install\ncd ~\u002Fcode\u002Fmyapp-bugfix-payment && pnpm install\n",[26,416,417,431],{"__ignoreMap":156},[160,418,419,421,423,425,428],{"class":162,"line":163},[160,420,174],{"class":173},[160,422,326],{"class":177},[160,424,330],{"class":329},[160,426,427],{"class":197},"pnpm",[160,429,430],{"class":177}," install\n",[160,432,433,435,437,439,441],{"class":162,"line":170},[160,434,174],{"class":173},[160,436,349],{"class":177},[160,438,330],{"class":329},[160,440,427],{"class":197},[160,442,430],{"class":177},[404,444,445],{"start":170},[40,446,447,450],{},[21,448,449],{},"端口 \u002F 数据库 \u002F 缓存别撞车","：如果多个 agent 各自起 dev server，端口要错开（如 3000 \u002F 3001 \u002F 3002）；用本地数据库或 SQLite 的项目，确认各 worktree 不写同一个库文件。",[452,453,454],"blockquote",{},[17,455,456,457,460,461,464,465,54,468,471],{},"本站经验（aiho.net）：",[26,458,459],{},"@nuxt\u002Fcontent"," 的 SQLite 内容库是 build 时生成的本地文件，两个 worktree 同时 build 会互相覆盖导致 ",[26,462,463],{},"no such table","。并行时要么错开 build，要么确认各自有独立的 ",[26,466,467],{},".data",[26,469,470],{},".nuxt"," 目录（worktree 天然隔离这些，因为它们不在 git 跟踪里）。",[13,473,475],{"id":474},"第四步合并回主干","第四步：合并回主干",[17,477,478],{},"agent 在各自分支 commit 后，回主仓库走正常 review\u002Fmerge：",[151,480,482],{"className":153,"code":481,"language":155,"meta":156,"style":156},"cd ~\u002Fcode\u002Fmyapp           # 主仓库，main 分支\ngit fetch                  # 如果 worktree 已 push 到远端\n\n# 本地合并（worktree 的 commit 在共享 .git 里，本地直接可见）\ngit merge feature\u002Fauth\n# 或更推荐：走 PR，让另一个 agent 或人 review\n\n# 解决潜在冲突——并行改动重叠时这里会暴露\n",[26,483,484,494,504,508,513,522,527,531],{"__ignoreMap":156},[160,485,486,488,491],{"class":162,"line":163},[160,487,174],{"class":173},[160,489,490],{"class":177}," ~\u002Fcode\u002Fmyapp",[160,492,493],{"class":166},"           # 主仓库，main 分支\n",[160,495,496,498,501],{"class":162,"line":170},[160,497,198],{"class":197},[160,499,500],{"class":177}," fetch",[160,502,503],{"class":166},"                  # 如果 worktree 已 push 到远端\n",[160,505,506],{"class":162,"line":181},[160,507,185],{"emptyLinePlaceholder":184},[160,509,510],{"class":162,"line":188},[160,511,512],{"class":166},"# 本地合并（worktree 的 commit 在共享 .git 里，本地直接可见）\n",[160,514,515,517,520],{"class":162,"line":194},[160,516,198],{"class":197},[160,518,519],{"class":177}," merge",[160,521,213],{"class":177},[160,523,524],{"class":162,"line":216},[160,525,526],{"class":166},"# 或更推荐：走 PR，让另一个 agent 或人 review\n",[160,528,529],{"class":162,"line":234},[160,530,185],{"emptyLinePlaceholder":184},[160,532,533],{"class":162,"line":251},[160,534,535],{"class":166},"# 解决潜在冲突——并行改动重叠时这里会暴露\n",[17,537,538,541,542,546],{},[21,539,540],{},"推荐","：每个 worktree 的分支单独开 PR，用「一个 agent 写、另一个 agent 审 diff」的模式（见 ",[50,543,545],{"href":544},"\u002Fplaybook\u002Fonboarding\u002Fterminal-agent-stack-2026","终端 agent 工作流","），人做最终 merge。",[13,548,550],{"id":549},"第五步用完清理","第五步：用完清理",[151,552,554],{"className":153,"code":553,"language":155,"meta":156,"style":156},"# 删除某个 worktree（先确认改动已合并\u002Fpush）\ngit worktree remove ..\u002Fmyapp-feature-auth\n\n# 如果目录已手动删了，清理悬挂记录\ngit worktree prune\n\n# 删掉已合并的分支\ngit branch -d feature\u002Fauth\n",[26,555,556,561,573,577,582,591,595,600],{"__ignoreMap":156},[160,557,558],{"class":162,"line":163},[160,559,560],{"class":166},"# 删除某个 worktree（先确认改动已合并\u002Fpush）\n",[160,562,563,565,567,570],{"class":162,"line":170},[160,564,198],{"class":197},[160,566,201],{"class":177},[160,568,569],{"class":177}," remove",[160,571,572],{"class":177}," ..\u002Fmyapp-feature-auth\n",[160,574,575],{"class":162,"line":181},[160,576,185],{"emptyLinePlaceholder":184},[160,578,579],{"class":162,"line":188},[160,580,581],{"class":166},"# 如果目录已手动删了，清理悬挂记录\n",[160,583,584,586,588],{"class":162,"line":194},[160,585,198],{"class":197},[160,587,201],{"class":177},[160,589,590],{"class":177}," prune\n",[160,592,593],{"class":162,"line":216},[160,594,185],{"emptyLinePlaceholder":184},[160,596,597],{"class":162,"line":234},[160,598,599],{"class":166},"# 删掉已合并的分支\n",[160,601,602,604,607,610],{"class":162,"line":251},[160,603,198],{"class":197},[160,605,606],{"class":177}," branch",[160,608,609],{"class":173}," -d",[160,611,213],{"class":177},[13,613,614],{"id":614},"常见踩坑",[404,616,617,623,632,638,648,654,660],{},[40,618,619,622],{},[21,620,621],{},"同一分支不能在两个 worktree 同时 checkout","：git 会拒绝。每个 worktree 必须在不同分支——这正是隔离的保证。",[40,624,625,628,629,631],{},[21,626,627],{},"忘了各装依赖","：新 worktree 没有 ",[26,630,397],{},"，agent 一跑就报 module not found。建 worktree 后第一件事是装依赖。",[40,633,634,637],{},[21,635,636],{},"dev server 端口\u002F数据库撞车","：并行起服务要错开端口，共享本地库要小心写冲突（见第三步本站经验）。",[40,639,640,647],{},[21,641,642,643,646],{},"改了 ",[26,644,645],{},".git\u002Fconfig"," 全局生效","：worktree 共享配置，改 user.email、remote 等是全局的，别以为是本工作区私有。",[40,649,650,653],{},[21,651,652],{},"路径写死","：有些工具\u002F脚本把绝对路径写死在配置里，换到 worktree 目录会失效，用相对路径或环境变量。",[40,655,656,659],{},[21,657,658],{},"agent 跨工作区找文件","：给每个 agent 的项目记忆（CLAUDE.md 等）里写清「你只在当前目录工作，不要去别的路径」，避免它顺着文件系统乱翻。",[40,661,662,411,665,668],{},[21,663,664],{},"删 worktree 前没合并",[26,666,667],{},"git worktree remove"," 会丢掉未提交的改动，删之前确认 commit 已 push 或合并。",[13,670,672],{"id":671},"进阶脚本化批量开-worktree","进阶：脚本化批量开 worktree",[151,674,676],{"className":153,"code":675,"language":155,"meta":156,"style":156},"#!\u002Fusr\u002Fbin\u002Fenv bash\n# spawn-agents.sh —— 一键为多个任务开 worktree + 装依赖\nset -euo pipefail\ntasks=(\"feature\u002Fauth\" \"bugfix\u002Fpayment\" \"refactor\u002Fapi-client\")\nfor t in \"${tasks[@]}\"; do\n  dir=\"..\u002Fmyapp-${t\u002F\u002F\\\u002F\u002F-}\"   # 把 \u002F 换成 -\n  git worktree add \"$dir\" -b \"$t\"\n  ( cd \"$dir\" && pnpm install )\n  echo \"ready: $dir ($t)\"\ndone\ngit worktree list\n",[26,677,678,683,688,699,723,754,785,813,836,854,859],{"__ignoreMap":156},[160,679,680],{"class":162,"line":163},[160,681,682],{"class":166},"#!\u002Fusr\u002Fbin\u002Fenv bash\n",[160,684,685],{"class":162,"line":170},[160,686,687],{"class":166},"# spawn-agents.sh —— 一键为多个任务开 worktree + 装依赖\n",[160,689,690,693,696],{"class":162,"line":181},[160,691,692],{"class":173},"set",[160,694,695],{"class":173}," -euo",[160,697,698],{"class":177}," pipefail\n",[160,700,701,704,708,711,714,717,720],{"class":162,"line":188},[160,702,703],{"class":329},"tasks",[160,705,707],{"class":706},"szBVR","=",[160,709,710],{"class":329},"(",[160,712,713],{"class":177},"\"feature\u002Fauth\"",[160,715,716],{"class":177}," \"bugfix\u002Fpayment\"",[160,718,719],{"class":177}," \"refactor\u002Fapi-client\"",[160,721,722],{"class":329},")\n",[160,724,725,728,731,734,737,739,742,745,748,751],{"class":162,"line":194},[160,726,727],{"class":706},"for",[160,729,730],{"class":329}," t ",[160,732,733],{"class":706},"in",[160,735,736],{"class":177}," \"${",[160,738,703],{"class":329},[160,740,741],{"class":177},"[",[160,743,744],{"class":706},"@",[160,746,747],{"class":177},"]}\"",[160,749,750],{"class":329},"; ",[160,752,753],{"class":706},"do\n",[160,755,756,759,761,764,767,770,773,776,779,782],{"class":162,"line":216},[160,757,758],{"class":329},"  dir",[160,760,707],{"class":706},[160,762,763],{"class":177},"\"..\u002Fmyapp-${",[160,765,766],{"class":329},"t",[160,768,769],{"class":706},"\u002F\u002F",[160,771,772],{"class":173},"\\\u002F",[160,774,775],{"class":706},"\u002F",[160,777,778],{"class":329},"-",[160,780,781],{"class":177},"}\"",[160,783,784],{"class":166},"   # 把 \u002F 换成 -\n",[160,786,787,790,792,794,797,800,803,805,807,810],{"class":162,"line":234},[160,788,789],{"class":197},"  git",[160,791,201],{"class":177},[160,793,204],{"class":177},[160,795,796],{"class":177}," \"",[160,798,799],{"class":329},"$dir",[160,801,802],{"class":177},"\"",[160,804,228],{"class":173},[160,806,796],{"class":177},[160,808,809],{"class":329},"$t",[160,811,812],{"class":177},"\"\n",[160,814,815,818,820,822,824,826,828,830,833],{"class":162,"line":251},[160,816,817],{"class":329},"  ( ",[160,819,174],{"class":173},[160,821,796],{"class":177},[160,823,799],{"class":329},[160,825,802],{"class":177},[160,827,330],{"class":329},[160,829,427],{"class":197},[160,831,832],{"class":177}," install",[160,834,835],{"class":329}," )\n",[160,837,838,841,844,846,849,851],{"class":162,"line":256},[160,839,840],{"class":173},"  echo",[160,842,843],{"class":177}," \"ready: ",[160,845,799],{"class":329},[160,847,848],{"class":177}," (",[160,850,809],{"class":329},[160,852,853],{"class":177},")\"\n",[160,855,856],{"class":162,"line":262},[160,857,858],{"class":706},"done\n",[160,860,862,864,866],{"class":162,"line":861},11,[160,863,198],{"class":197},[160,865,201],{"class":177},[160,867,269],{"class":177},[13,869,870],{"id":870},"一句话总结",[151,872,875],{"className":873,"code":874,"language":278,"meta":156},[276],"一仓库 → 多 worktree（各占一分支一目录）→ 每区一个 agent 并行干\n       → 各装依赖、错开端口 → 分支开 PR → 人工 review + merge → 清理\n",[26,876,874],{"__ignoreMap":156},[17,878,879],{},"worktree 把「并行 agent 互相打架」变成「并行 agent 互不可见」，这是多 agent 工作流最便宜也最可靠的隔离手段。",[13,881,882],{"id":882},"延伸阅读",[37,884,885,899,910],{},[40,886,887,888,54,891,54,895],{},"工作流：",[50,889,890],{"href":544},"2026 终端 AI Agent 怎么选",[50,892,894],{"href":893},"\u002Fplaybook\u002Fonboarding\u002Fspec-driven-development","Spec-Driven Development 实战",[50,896,898],{"href":897},"\u002Fplaybook\u002Fonboarding\u002Fclaude-code-subagents","Subagents 多 Agent 编排",[40,900,901,902,54,906],{},"概念：",[50,903,905],{"href":904},"\u002Fwiki\u002Fai-agent.html","AI Agent",[50,907,909],{"href":908},"\u002Fwiki\u002Fcontext-rot.html","Context Rot",[40,911,912,913,54,915,54,917],{},"工具：",[50,914,53],{"href":52},[50,916,58],{"href":57},[50,918,920],{"href":919},"\u002Fcoding\u002Fcli\u002Faider.html","Aider",[922,923,924],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":156,"searchDepth":181,"depth":181,"links":926},[927,928,929,930,931,932,933,934,935,936,937],{"id":15,"depth":170,"text":15},{"id":69,"depth":170,"text":70},{"id":145,"depth":170,"text":146},{"id":305,"depth":170,"text":306},{"id":384,"depth":170,"text":385},{"id":474,"depth":170,"text":475},{"id":549,"depth":170,"text":550},{"id":614,"depth":170,"text":614},{"id":671,"depth":170,"text":672},{"id":870,"depth":170,"text":870},{"id":882,"depth":170,"text":882},"onboarding","\u002Fog\u002Fplaybook\u002Fgit-worktrees-parallel-agents.png","一套用 git worktree 让多个 AI coding agent 并行工作的实操指南：每个 agent 在独立工作区 + 独立分支干活，避免文件互相覆盖、分支来回切换、依赖冲突。含 worktree 命令、目录布局、依赖隔离、合并回主干的流程与踩坑。","md",{},"\u002Fplaybook\u002Fonboarding\u002Fgit-worktrees-parallel-agents","2026-06-28",[946,947,948],"coding\u002Fcli\u002Fclaude-code","coding\u002Fcli\u002Fcodex","coding\u002Fcli\u002Faider",{"title":8,"description":940},"playbook\u002Fonboarding\u002Fgit-worktrees-parallel-agents",[952,953,53,954,955],"Git Worktree","并行 Agent","多 Agent","AI 工作流","jM1tyEq9s5SDdNGzMm94P50PyN9xYRO1129Tc2cmlE4",{"tools":4,"reviews":5,"playbooks":958,"news":959},15,13,[961,1986,3187],{"id":962,"title":920,"alternatives":963,"api_compatible":965,"body":966,"category":1934,"chinese_friendly":181,"cover":1935,"description":1936,"domestic":1937,"extension":941,"faq":965,"free":1937,"github":1411,"languages":1938,"meta":1941,"models":965,"navigation":184,"notSuitable":965,"opensource":184,"path":1942,"pillar":1943,"platforms":1944,"priceTable":1948,"pricing":1959,"published":1960,"relatedPlaybooks":965,"relatedReviews":965,"score":1961,"self_host":184,"seo":1962,"seoTitle":965,"slug":948,"sources":1963,"stem":1976,"suitable":965,"tagline":1977,"tags":1978,"updated":1983,"verdict":1984,"website":1866,"__hash__":1985},"tools\u002Ftools\u002Fcoding\u002Fcli\u002Faider.md",[946,947,964],"coding\u002Fcli\u002Fcline",null,{"type":10,"value":967,"toc":1917},[968,972,999,1004,1007,1012,1015,1052,1056,1065,1085,1088,1131,1136,1139,1147,1223,1226,1230,1233,1237,1398,1401,1446,1458,1461,1499,1502,1638,1643,1665,1668,1766,1770,1773,1799,1802,1816,1819,1856,1859,1907,1914],[13,969,971],{"id":970},"tldr","TL;DR",[973,974,979,989],"div",{"className":975},[976,977,978],"card","p-5","my-4",[17,980,981,984,985,988],{},[21,982,983],{},"一句话："," Aider 把 \"AI 编辑代码\" 这件事拆成了 git 操作——每次对话结束自动 commit，回滚一行 ",[26,986,987],{},"git reset --hard HEAD~1"," 就行。没有 GUI、没有 IDE 插件、没有 Composer 那种漂亮 diff 面板，但你能拿到对开源项目最友好的工作流：bring your own key、bring your own model、bring your own editor。",[17,990,991,992,995,996,998],{},"代价是",[21,993,994],{},"学习曲线最陡","。第一次跑起来要花 10 分钟读文档，但跑顺了之后 ",[50,997,53],{"href":52}," 用户都觉得\"为啥不直接 aider\"。",[452,1000,1001],{},[17,1002,1003],{},"来源说明：本文事实点基于 aider.chat 官方文档（modes.html \u002F llms.html \u002F HISTORY.html）和 GitHub 仓库归纳，命令、参数、模型列表以官方为准。",[13,1005,1006],{"id":1006},"核心特性",[1008,1009,1011],"h3",{"id":1010},"git-原生每次改动-一次-commit","Git 原生：每次改动 = 一次 commit",[17,1013,1014],{},"这是 Aider 与所有竞品的最大区别。其他 AI 编程工具改完文件丢给你看 diff，让你手动 stage \u002F commit；Aider 把 git 集成到工作流里：",[37,1016,1017,1028,1038,1049],{},[40,1018,1019,1020,1023,1024,1027],{},"每次对话改完代码，自动 ",[26,1021,1022],{},"git add"," + ",[26,1025,1026],{},"git commit","，commit message 由 weak-model 生成",[40,1029,1030,1031,1034,1035],{},"想撤回上一步：",[26,1032,1033],{},"\u002Fundo"," 或者直接 ",[26,1036,1037],{},"git reset",[40,1039,1040,1041,1044,1045,1048],{},"改坏了想从分叉点重来：",[26,1042,1043],{},"git checkout \u003Chash>"," 后继续 ",[26,1046,1047],{},"aider","，对话上下文还在",[40,1050,1051],{},"这也是为什么官方推荐 Aider 用在 git 仓库里——非 git 目录功能受限",[1008,1053,1055],{"id":1054},"architect-模式两个模型分工","Architect 模式：两个模型分工",[17,1057,1058,1059,411],{},"Architect 模式把\"想方案\"和\"写代码\"拆给两个模型——根据 ",[50,1060,1064],{"href":1061,"rel":1062},"https:\u002F\u002Faider.chat\u002Fdocs\u002Fusage\u002Fmodes.html",[1063],"nofollow","官方 modes 文档",[37,1066,1067,1073,1079],{},[40,1068,1069,1072],{},[26,1070,1071],{},"--model","（architect）：负责高层方案推理。适合 o1 \u002F o3 \u002F DeepSeek R1 \u002F Claude Opus 这类强推理模型",[40,1074,1075,1078],{},[26,1076,1077],{},"--editor-model","：负责把方案落地成具体文件 diff。适合 GPT-4o \u002F Claude Sonnet 这类编辑能力强但推理一般的模型",[40,1080,1081,1084],{},[26,1082,1083],{},"--weak-model","（可选）：用来生成 commit message \u002F 简单重构。可以指定便宜模型省钱",[17,1086,1087],{},"启动示例：",[151,1089,1091],{"className":153,"code":1090,"language":155,"meta":156,"style":156},"aider --architect \\\n  --model deepseek\u002Fdeepseek-reasoner \\\n  --editor-model claude-3-5-sonnet-20241022 \\\n  --weak-model gpt-4o-mini\n",[26,1092,1093,1103,1113,1123],{"__ignoreMap":156},[160,1094,1095,1097,1100],{"class":162,"line":163},[160,1096,1047],{"class":197},[160,1098,1099],{"class":173}," --architect",[160,1101,1102],{"class":173}," \\\n",[160,1104,1105,1108,1111],{"class":162,"line":170},[160,1106,1107],{"class":173},"  --model",[160,1109,1110],{"class":177}," deepseek\u002Fdeepseek-reasoner",[160,1112,1102],{"class":173},[160,1114,1115,1118,1121],{"class":162,"line":181},[160,1116,1117],{"class":173},"  --editor-model",[160,1119,1120],{"class":177}," claude-3-5-sonnet-20241022",[160,1122,1102],{"class":173},[160,1124,1125,1128],{"class":162,"line":188},[160,1126,1127],{"class":173},"  --weak-model",[160,1129,1130],{"class":177}," gpt-4o-mini\n",[452,1132,1133],{},[17,1134,1135],{},"据 Aider 官方 benchmark，DeepSeek R1（架构师）+ Claude 3.5 Sonnet（编辑器）的 Architect 组合，比任一模型单跑高约 10%。本数据来自 aider.chat\u002FHISTORY.html 与 pixelsham.com 的 2025-07 评测笔记。",[1008,1137,1138],{"id":1138},"几乎能接所有模型",[17,1140,1141,1146],{},[50,1142,1145],{"href":1143,"rel":1144},"https:\u002F\u002Faider.chat\u002Fdocs\u002Fllms.html",[1063],"Aider 官方推荐"," 的\"最佳模型清单\"：",[72,1148,1149,1162],{},[75,1150,1151],{},[78,1152,1153,1156,1159],{},[81,1154,1155],{},"厂商",[81,1157,1158],{},"推荐模型",[81,1160,1161],{},"备注",[88,1163,1164,1175,1186,1197,1212],{},[78,1165,1166,1169,1172],{},[93,1167,1168],{},"Anthropic",[93,1170,1171],{},"Claude Sonnet 4 \u002F 3.7 Sonnet",[93,1173,1174],{},"编辑能力最稳",[78,1176,1177,1180,1183],{},[93,1178,1179],{},"Google",[93,1181,1182],{},"Gemini 2.5 Pro",[93,1184,1185],{},"超长上下文",[78,1187,1188,1191,1194],{},[93,1189,1190],{},"DeepSeek",[93,1192,1193],{},"R1 + V3",[93,1195,1196],{},"性价比之王",[78,1198,1199,1202,1209],{},[93,1200,1201],{},"OpenAI",[93,1203,1204,1205],{},"o3 \u002F o4-mini \u002F GPT-4.1 \u002F ",[50,1206,1208],{"href":1207},"\u002Fmodels\u002Fgpt-5.html","GPT-5",[93,1210,1211],{},"reasoning 路径",[78,1213,1214,1217,1220],{},[93,1215,1216],{},"本地",[93,1218,1219],{},"Ollama \u002F LM Studio 兼容 OpenAI API",[93,1221,1222],{},"完全离线",[17,1224,1225],{},"接入方式靠 LiteLLM 适配层，OpenRouter \u002F Bedrock \u002F Vertex \u002F xAI \u002F Groq \u002F Cohere \u002F Azure \u002F 私有 OpenAI 兼容端点 都支持——你能想到的 base_url，基本都行。",[1008,1227,1229],{"id":1228},"repo-map上下文召回的核心机制","Repo map：上下文召回的核心机制",[17,1231,1232],{},"Aider 用 tree-sitter 解析整个 git 仓库，生成一份压缩版的 \"repo map\"——把符号定义、函数签名、类层级提取出来塞进 prompt。模型不需要看到所有源代码就能理解项目结构。这是 Aider 在 polyglot benchmark 上能打过很多带 Composer 的工具的关键原因。",[13,1234,1236],{"id":1235},"上手-5-分钟","上手 5 分钟",[151,1238,1240],{"className":153,"code":1239,"language":155,"meta":156,"style":156},"# 1. 安装（要 Python 3.9+）\npython -m pip install -U --upgrade-strategy only-if-needed aider-chat\n\n# 2. 进入 git 仓库\ncd your-project\n\n# 3. 设置 API key（任选其一）\nexport ANTHROPIC_API_KEY=sk-ant-...\nexport DEEPSEEK_API_KEY=sk-...\nexport OPENAI_API_KEY=sk-...\n\n# 4. 启动（默认会用环境变量里第一个能识别的 key）\naider\n\n# 或指定模型\naider --model deepseek\u002Fdeepseek-chat\naider --model claude-3-5-sonnet-20241022\n\n# 5. 在 aider 里直接用自然语言下指令\n> 把 server\u002Fapi\u002Fuser.ts 里的 getUserById 改成支持批量查询\n",[26,1241,1242,1247,1272,1276,1281,1288,1292,1297,1310,1322,1333,1337,1342,1347,1352,1357,1368,1378,1383,1389],{"__ignoreMap":156},[160,1243,1244],{"class":162,"line":163},[160,1245,1246],{"class":166},"# 1. 安装（要 Python 3.9+）\n",[160,1248,1249,1252,1255,1258,1260,1263,1266,1269],{"class":162,"line":170},[160,1250,1251],{"class":197},"python",[160,1253,1254],{"class":173}," -m",[160,1256,1257],{"class":177}," pip",[160,1259,832],{"class":177},[160,1261,1262],{"class":173}," -U",[160,1264,1265],{"class":173}," --upgrade-strategy",[160,1267,1268],{"class":177}," only-if-needed",[160,1270,1271],{"class":177}," aider-chat\n",[160,1273,1274],{"class":162,"line":181},[160,1275,185],{"emptyLinePlaceholder":184},[160,1277,1278],{"class":162,"line":188},[160,1279,1280],{"class":166},"# 2. 进入 git 仓库\n",[160,1282,1283,1285],{"class":162,"line":194},[160,1284,174],{"class":173},[160,1286,1287],{"class":177}," your-project\n",[160,1289,1290],{"class":162,"line":216},[160,1291,185],{"emptyLinePlaceholder":184},[160,1293,1294],{"class":162,"line":234},[160,1295,1296],{"class":166},"# 3. 设置 API key（任选其一）\n",[160,1298,1299,1302,1305,1307],{"class":162,"line":251},[160,1300,1301],{"class":706},"export",[160,1303,1304],{"class":329}," ANTHROPIC_API_KEY",[160,1306,707],{"class":706},[160,1308,1309],{"class":329},"sk-ant-...\n",[160,1311,1312,1314,1317,1319],{"class":162,"line":256},[160,1313,1301],{"class":706},[160,1315,1316],{"class":329}," DEEPSEEK_API_KEY",[160,1318,707],{"class":706},[160,1320,1321],{"class":329},"sk-...\n",[160,1323,1324,1326,1329,1331],{"class":162,"line":262},[160,1325,1301],{"class":706},[160,1327,1328],{"class":329}," OPENAI_API_KEY",[160,1330,707],{"class":706},[160,1332,1321],{"class":329},[160,1334,1335],{"class":162,"line":861},[160,1336,185],{"emptyLinePlaceholder":184},[160,1338,1339],{"class":162,"line":5},[160,1340,1341],{"class":166},"# 4. 启动（默认会用环境变量里第一个能识别的 key）\n",[160,1343,1344],{"class":162,"line":959},[160,1345,1346],{"class":197},"aider\n",[160,1348,1350],{"class":162,"line":1349},14,[160,1351,185],{"emptyLinePlaceholder":184},[160,1353,1354],{"class":162,"line":958},[160,1355,1356],{"class":166},"# 或指定模型\n",[160,1358,1360,1362,1365],{"class":162,"line":1359},16,[160,1361,1047],{"class":197},[160,1363,1364],{"class":173}," --model",[160,1366,1367],{"class":177}," deepseek\u002Fdeepseek-chat\n",[160,1369,1371,1373,1375],{"class":162,"line":1370},17,[160,1372,1047],{"class":197},[160,1374,1364],{"class":173},[160,1376,1377],{"class":177}," claude-3-5-sonnet-20241022\n",[160,1379,1381],{"class":162,"line":1380},18,[160,1382,185],{"emptyLinePlaceholder":184},[160,1384,1386],{"class":162,"line":1385},19,[160,1387,1388],{"class":166},"# 5. 在 aider 里直接用自然语言下指令\n",[160,1390,1392,1395],{"class":162,"line":1391},20,[160,1393,1394],{"class":706},">",[160,1396,1397],{"class":329}," 把 server\u002Fapi\u002Fuser.ts 里的 getUserById 改成支持批量查询\n",[13,1399,1400],{"id":1400},"价格与运行成本",[37,1402,1403,1415,1430],{},[40,1404,1405,1408,1409,1414],{},[21,1406,1407],{},"Aider 本体","：开源免费（",[50,1410,1413],{"href":1411,"rel":1412},"https:\u002F\u002Fgithub.com\u002FAider-AI\u002Faider",[1063],"Apache 2.0 协议","，根据官方 GitHub 仓库 LICENSE）",[40,1416,1417,1420,1421,54,1425,1429],{},[21,1418,1419],{},"真正的成本是模型 API key","：100% 自带——这是 Aider 与 ",[50,1422,1424],{"href":1423},"\u002Fcoding\u002Fide\u002Fcursor.html","Cursor",[50,1426,1428],{"href":1427},"\u002Fcoding\u002Fide\u002Fwindsurf.html","Windsurf"," 最大的商业模式差异",[40,1431,1432,1433],{},"单次会话典型消耗：\n",[37,1434,1435,1438,1441],{},[40,1436,1437],{},"用 Sonnet 4 改 1 个中型 PR（10-15 文件）：约 $0.5-2 美元",[40,1439,1440],{},"用 DeepSeek-V3 同等任务：约 $0.05-0.2 美元",[40,1442,48,1443,1445],{},[50,1444,1208],{"href":1207}," reasoning：根据推理深度，可能到 $3-8",[17,1447,1448,1449,1023,1453,1457],{},"走 ",[50,1450,1452],{"href":1451},"\u002Fmodels\u002Fdeepseek-v3.html","DeepSeek-V3",[50,1454,1456],{"href":1061,"rel":1455},[1063],"Architect 模式"," 是当前性价比最高的组合，国内付款也直接。",[13,1459,1460],{"id":1460},"国内使用注意事项",[404,1462,1463,1472,1478,1493],{},[40,1464,1465,1468,1469],{},[21,1466,1467],{},"直连 OpenAI \u002F Anthropic 需要代理","——Aider 没有内置代理设置，靠环境变量 ",[26,1470,1471],{},"HTTPS_PROXY",[40,1473,1474,1477],{},[21,1475,1476],{},"DeepSeek \u002F Qwen \u002F GLM 直连无障碍","——国内付款，国内带宽，体验最好",[40,1479,1480,1483,1484,1487,1488,1492],{},[21,1481,1482],{},"支持自定义 base_url","：通过 ",[26,1485,1486],{},"OPENAI_API_BASE"," 环境变量接 ",[50,1489,1491],{"href":1490},"\u002Fcoding\u002Fapi\u002Fone-api.html","国内中转 \u002F 硅基流动 \u002F OneAPI"," 都行",[40,1494,1495,1498],{},[21,1496,1497],{},"Ollama 本地模型零网络依赖","——隐私场景首选，模型质量取决于本机",[13,1500,1501],{"id":1501},"与同类怎么选",[72,1503,1504,1528],{},[75,1505,1506],{},[78,1507,1508,1511,1513,1517,1522],{},[81,1509,1510],{},"维度",[81,1512,920],{},[81,1514,1515],{},[50,1516,53],{"href":52},[81,1518,1519],{},[50,1520,1521],{"href":57},"Codex CLI",[81,1523,1524],{},[50,1525,1527],{"href":1526},"\u002Fcoding\u002Fcli\u002Fcline.html","Cline",[88,1529,1530,1545,1561,1577,1593,1607,1621],{},[78,1531,1532,1535,1538,1541,1543],{},[93,1533,1534],{},"开源",[93,1536,1537],{},"✅",[93,1539,1540],{},"❌",[93,1542,1540],{},[93,1544,1537],{},[78,1546,1547,1550,1553,1556,1559],{},[93,1548,1549],{},"模型选择",[93,1551,1552],{},"任意",[93,1554,1555],{},"仅 Anthropic",[93,1557,1558],{},"仅 OpenAI",[93,1560,1552],{},[78,1562,1563,1566,1569,1572,1575],{},[93,1564,1565],{},"自带 API key",[93,1567,1568],{},"✅ 必须",[93,1570,1571],{},"可选（订阅替代）",[93,1573,1574],{},"可选",[93,1576,1568],{},[78,1578,1579,1582,1585,1588,1591],{},[93,1580,1581],{},"Git 集成",[93,1583,1584],{},"★★★★★",[93,1586,1587],{},"★★★☆☆",[93,1589,1590],{},"★★☆☆☆",[93,1592,1587],{},[78,1594,1595,1598,1601,1603,1605],{},[93,1596,1597],{},"学习曲线",[93,1599,1600],{},"★★★★☆ 陡",[93,1602,1590],{},[93,1604,1590],{},[93,1606,1587],{},[78,1608,1609,1612,1615,1617,1619],{},[93,1610,1611],{},"Architect 双模型",[93,1613,1614],{},"✅ 原生",[93,1616,1540],{},[93,1618,1540],{},[93,1620,1540],{},[78,1622,1623,1626,1629,1632,1635],{},[93,1624,1625],{},"VS Code 集成",[93,1627,1628],{},"通过第三方插件",[93,1630,1631],{},"通过 Cursor 等",[93,1633,1634],{},"仅 CLI",[93,1636,1637],{},"★★★★★ 原生",[17,1639,1640,411],{},[21,1641,1642],{},"怎么选",[37,1644,1645,1648,1653,1658],{},[40,1646,1647],{},"不想被锁在某家厂商，要随时切换 DeepSeek \u002F Claude \u002F GPT → Aider",[40,1649,1650,1651],{},"已经买 Claude Pro \u002F Max 订阅 → ",[50,1652,53],{"href":52},[40,1654,1655,1656],{},"已经买 ChatGPT Plus \u002F Pro → ",[50,1657,1521],{"href":57},[40,1659,1660,1661,54,1663],{},"习惯 VS Code 不想离开 GUI → ",[50,1662,1527],{"href":1526},[50,1664,1424],{"href":1423},[13,1666,1667],{"id":1667},"避坑清单",[37,1669,1670,1683,1700,1719,1728,1744,1752],{},[40,1671,1672,1675,1676,1679,1680,1682],{},[21,1673,1674],{},"没在 git 仓库里跑会被警告","：Aider 强烈建议你 ",[26,1677,1678],{},"git init"," 后再用，否则 ",[26,1681,1033],{}," 不能用，自动 commit 也无意义。",[40,1684,1685,1691,1692,1695,1696,1699],{},[21,1686,1687,1690],{},[26,1688,1689],{},"\u002Fadd"," 之前的文件不会被 Aider 看见","：和 Cursor ",[26,1693,1694],{},"@codebase"," 不同，Aider 默认只看 repo map，需要修改的文件要 ",[26,1697,1698],{},"\u002Fadd path\u002Fto\u002Ffile"," 显式加入对话。这是新手最容易卡住的地方。",[40,1701,1702,1705,1706,1711,1712,1715,1716,1718],{},[21,1703,1704],{},"Architect 模式有 prompt injection 风险","：根据 GitHub issue ",[50,1707,1710],{"href":1708,"rel":1709},"https:\u002F\u002Fgithub.com\u002FAider-AI\u002Faider\u002Fissues\u002F5058",[1063],"#5058","（2026 年 4 月报告），如果让 architect 读取 untrusted 仓库（如 README 被人塞了攻击指令），可能被诱导让 editor 生成后门代码。建议：在 ",[26,1713,1714],{},"--yes"," 自动接受前确认 architect 输出；不要在不可信项目上开 architect mode + ",[26,1717,1714],{}," 组合。",[40,1720,1721,1727],{},[21,1722,1723,1726],{},[26,1724,1725],{},"--yes-always"," 太激进","：会跳过所有确认，包括\"是否要把这个文件加入 chat\"——容易让 Aider 偷偷读你不想给模型看的文件。生产环境慎用。",[40,1729,1730,1733,1734,1737,1738,1743],{},[21,1731,1732],{},"token 限制错误的判断不可靠","：Ollama 本地模型超 context 不会报错而是静默截断，会让你以为\"模型忘了我加的文件\"。明确配置 ",[26,1735,1736],{},"num_ctx","（见 ",[50,1739,1742],{"href":1740,"rel":1741},"https:\u002F\u002Faider.chat\u002F2025\u002F01\u002F28\u002Fdeepseek-down.html",[1063],"DeepSeek alternative providers 一文","）。",[40,1745,1746,1751],{},[21,1747,1748,1750],{},[26,1749,1077],{}," 比想象重要","：架构师推理再强，editor 写不出合法 diff 一样白搭。优先选 Claude Sonnet 系列做 editor，不要让推理模型自己做 editor。",[40,1753,1754,1757,1758,1761,1762,1765],{},[21,1755,1756],{},"中文 commit message 默认不开","：可以 ",[26,1759,1760],{},"aider --commit-prompt \"...中文....\""," 或 ",[26,1763,1764],{},".aider.conf.yml"," 配置中改。",[13,1767,1769],{"id":1768},"适合-不适合","适合 \u002F 不适合",[17,1771,1772],{},"✅ 适合：",[37,1774,1775,1778,1781,1784,1787,1790],{},[40,1776,1777],{},"命令行重度用户、tmux \u002F Neovim 工作流",[40,1779,1780],{},"多模型试用 \u002F 比价场景（一行命令切换）",[40,1782,1783],{},"开源项目维护者（git 工作流原生融入）",[40,1785,1786],{},"想要完全离线（Ollama + 本地模型）",[40,1788,1789],{},"对 token 成本敏感（DeepSeek + Aider 组合极便宜）",[40,1791,1792,1793,1798],{},"跨语言项目（",[50,1794,1797],{"href":1795,"rel":1796},"https:\u002F\u002Faider.chat\u002Fdocs\u002Flanguages.html",[1063],"官方支持 100+ 语言","）",[17,1800,1801],{},"❌ 不适合：",[37,1803,1804,1807,1810,1813],{},[40,1805,1806],{},"习惯 GUI \u002F 不愿读命令行文档的人",[40,1808,1809],{},"想\"一键智能\"、不愿配置环境变量",[40,1811,1812],{},"团队协作场景（没有共享 sessions \u002F 协作 UI）",[40,1814,1815],{},"Windows 纯小白（虽然能跑，但 Python 环境 + git CLI 双依赖门槛高）",[13,1817,1818],{"id":1818},"相关阅读",[37,1820,1821,1830,1839,1850],{},[40,1822,1823,1824,54,1826,54,1828],{},"同类对比：",[50,1825,53],{"href":52},[50,1827,1521],{"href":57},[50,1829,1527],{"href":1526},[40,1831,1832,1833,54,1837],{},"推理模型选择：",[50,1834,1836],{"href":1835},"\u002Fmodels\u002Fdeepseek-r1.html","DeepSeek R1",[50,1838,1208],{"href":1207},[40,1840,1841,1842,54,1846],{},"协议生态：",[50,1843,1845],{"href":1844},"\u002Fwiki\u002Fmcp.html","MCP",[50,1847,1849],{"href":1848},"\u002Fwiki\u002Ffunction-calling.html","Function Calling",[40,1851,887,1852],{},[50,1853,1855],{"href":1854},"\u002Fwiki\u002Fcontext-engineering.html","Context Engineering",[13,1857,1858],{"id":1858},"来源",[37,1860,1861,1868,1875,1881,1887,1893,1900],{},[40,1862,1863,1864],{},"官网：",[50,1865,1866],{"href":1866,"rel":1867},"https:\u002F\u002Faider.chat",[1063],[40,1869,1870,1871],{},"官方文档：",[50,1872,1873],{"href":1873,"rel":1874},"https:\u002F\u002Faider.chat\u002Fdocs\u002F",[1063],[40,1876,1877,1878],{},"Chat Modes 文档：",[50,1879,1061],{"href":1061,"rel":1880},[1063],[40,1882,1883,1884],{},"LLM 兼容列表：",[50,1885,1143],{"href":1143,"rel":1886},[1063],[40,1888,1889,1890],{},"GitHub：",[50,1891,1411],{"href":1411,"rel":1892},[1063],[40,1894,1895,1896],{},"发布历史：",[50,1897,1898],{"href":1898,"rel":1899},"https:\u002F\u002Faider.chat\u002FHISTORY.html",[1063],[40,1901,1902,1903],{},"PyPI：",[50,1904,1905],{"href":1905,"rel":1906},"https:\u002F\u002Fpypi.org\u002Fproject\u002Faider-chat",[1063],[17,1908,1909,1910,1913],{},"本卡片由 AIHO 编辑部根据官方公开资料整理。如有更新请通过 ",[50,1911,1912],{"href":1912},"\u002Fsubmit"," 反馈。",[922,1915,1916],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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":156,"searchDepth":181,"depth":181,"links":1918},[1919,1920,1926,1927,1928,1929,1930,1931,1932,1933],{"id":970,"depth":170,"text":971},{"id":1006,"depth":170,"text":1006,"children":1921},[1922,1923,1924,1925],{"id":1010,"depth":181,"text":1011},{"id":1054,"depth":181,"text":1055},{"id":1138,"depth":181,"text":1138},{"id":1228,"depth":181,"text":1229},{"id":1235,"depth":170,"text":1236},{"id":1400,"depth":170,"text":1400},{"id":1460,"depth":170,"text":1460},{"id":1501,"depth":170,"text":1501},{"id":1667,"depth":170,"text":1667},{"id":1768,"depth":170,"text":1769},{"id":1818,"depth":170,"text":1818},{"id":1858,"depth":170,"text":1858},"cli","\u002Fimg\u002Ftools\u002Faider.webp","Aider 真实评测：Git 原生 AI 编程 CLI，每次改动自动 commit、回滚成本极低。AIHO 编辑部基于官方文档与社区资料整理，含 Architect 双模型模式、支持模型清单、安装与配置实操。",false,[1939,1940],"zh","en",{},"\u002Ftools\u002Fcoding\u002Fcli\u002Faider","coding",[1945,1946,1947],"windows","macos","linux",[1949,1954],{"plan":1950,"price":1951,"features":1952,"notes":1953},"开源版（pip 安装）","$0","全部功能 + Architect 双模型 + 任意 LLM（OpenAI \u002F Anthropic \u002F Gemini \u002F DeepSeek \u002F 本地）+ Git 自动 commit","Apache 2.0 \u002F 自带 API key",{"plan":1955,"price":1956,"features":1957,"notes":1958},"模型 API 调用费","按量","实际花销 = 你接的模型计费（DeepSeek 极便宜 \u002F Claude Sonnet 中等 \u002F GPT-4o 较贵）","Aider 本身不收费，只产生模型 token 费","开源免费 \u002F 自带 API key","2026-06-18",{"power":188,"ux":181,"price":194,"cn_support":181,"stability":194},{"title":920,"description":1936},[1964,1966,1968,1970,1972,1974],{"title":1965,"url":1873},"Aider 官方文档",{"title":1967,"url":1061},"Aider Chat Modes 文档",{"title":1969,"url":1143},"Aider 支持的 LLM 列表",{"title":1971,"url":1411},"Aider GitHub 仓库",{"title":1973,"url":1898},"Aider Release History",{"title":1975,"url":1905},"PyPI: aider-chat","tools\u002Fcoding\u002Fcli\u002Faider","Git 原生 AI 编程 CLI，commit 即动作",[1934,1979,1980,1981,1982],"agent","opensource","git-native","architect-mode","2026-06-24","极客派最爱。每次改动自动 commit、回滚成本极低。学习曲线最陡。","jAgxToyf7qWuYC4qyKzgS3aGzJUFqBney-ELpLyWsuw",{"id":1987,"title":53,"alternatives":1988,"api_compatible":1989,"body":1991,"category":1934,"chinese_friendly":181,"cover":3125,"description":3126,"domestic":1937,"extension":941,"faq":965,"free":1937,"github":3082,"languages":3127,"meta":3128,"models":3129,"navigation":184,"notSuitable":3133,"opensource":1937,"path":3137,"pillar":1943,"platforms":3138,"priceTable":3139,"pricing":3159,"published":1960,"relatedPlaybooks":965,"relatedReviews":965,"score":3160,"self_host":1937,"seo":3161,"seoTitle":965,"slug":946,"sources":3162,"stem":3173,"suitable":3174,"tagline":3180,"tags":3181,"updated":1983,"verdict":3185,"website":3070,"__hash__":3186},"tools\u002Ftools\u002Fcoding\u002Fcli\u002Fclaude-code.md",[947,948,964],[1990],"anthropic",{"type":10,"value":1992,"toc":3108},[1993,1995,2018,2023,2025,2029,2039,2064,2067,2071,2078,2107,2116,2120,2123,2278,2296,2300,2309,2385,2388,2392,2406,2408,2423,2504,2507,2518,2526,2528,2675,2677,2715,2717,2868,2873,2887,2892,2912,2914,3010,3012,3062,3064,3100,3105],[13,1994,971],{"id":970},[973,1996,1998,2007],{"className":1997},[976,977,978],[17,1999,2000,2002,2003,2006],{},[21,2001,983],{}," Anthropic 官方 CLI Agent，终端原生，长任务执行能力是目前体感最稳的一档。装好后在任何项目根目录跑 ",[26,2004,2005],{},"claude","，用自然语言让它读代码、改文件、跑测试、提交 commit——全自动。",[17,2008,2009,2010,2013,2014,2017],{},"最大价值是 ",[21,2011,2012],{},"不绑死 IDE","——VS Code、JetBrains、Vim、Emacs、Neovim 全能用，远程 SSH 也行。代价是 ",[21,2015,2016],{},"国内三大门槛","：账号要海外手机、支付要海外卡、网络要稳定代理。",[452,2019,2020],{},[17,2021,2022],{},"来源说明：本文基于 code.claude.com 官方文档、Anthropic 定价页面、第三方独立评测（laozhang.ai \u002F explainx.ai \u002F computingforgeeks.com）综合整理。Anthropic 模型版本迭代快，命令和价格请以最新官方文档为准。",[13,2024,1006],{"id":1006},[1008,2026,2028],{"id":2027},"终端原生的-agent-体验","终端原生的 Agent 体验",[17,2030,2031,2032,2035,2036,2038],{},"不像 Cursor \u002F Windsurf 那种\"AI IDE\"，Claude Code 是个 ",[21,2033,2034],{},"CLI 工具","——在任何编辑器旁边开个终端，跑 ",[26,2037,2005],{},"，就进入了一个能读你整个 codebase 的对话环境。",[151,2040,2042],{"className":153,"code":2041,"language":155,"meta":156,"style":156},"cd your-project\nclaude                          # 进入交互模式\n> 帮我把这个 Express 项目迁移到 Fastify，写完之后跑测试确认通过\n",[26,2043,2044,2050,2057],{"__ignoreMap":156},[160,2045,2046,2048],{"class":162,"line":163},[160,2047,174],{"class":173},[160,2049,1287],{"class":177},[160,2051,2052,2054],{"class":162,"line":170},[160,2053,2005],{"class":197},[160,2055,2056],{"class":166},"                          # 进入交互模式\n",[160,2058,2059,2061],{"class":162,"line":181},[160,2060,1394],{"class":706},[160,2062,2063],{"class":329}," 帮我把这个 Express 项目迁移到 Fastify，写完之后跑测试确认通过\n",[17,2065,2066],{},"它会自动：列出相关文件 → 给出计划 → 等你按回车确认 → 一次改多个文件 → 跑测试 → 报告结果。整个过程你可以在另一个窗口干别的，Claude Code 不抢编辑器焦点。",[1008,2068,2070],{"id":2069},"子代理sub-agents-并行任务","子代理（Sub-agents）+ 并行任务",[17,2072,2073,2074,2077],{},"Claude Code 2.x 引入了 ",[50,2075,2076],{"href":904},"子代理"," 机制：主对话可以派发独立的子任务到隔离 context 中跑，结果摘要返回主线。典型场景：",[151,2079,2081],{"className":153,"code":2080,"language":155,"meta":156,"style":156},"\u002Fagents              # 管理子代理\n\u002Fbatch              # 把大改动拆成独立单元，每个跑在自己的 git worktree\n\u002Ftasks              # 列出后台运行的子代理\n",[26,2082,2083,2091,2099],{"__ignoreMap":156},[160,2084,2085,2088],{"class":162,"line":163},[160,2086,2087],{"class":197},"\u002Fagents",[160,2089,2090],{"class":166},"              # 管理子代理\n",[160,2092,2093,2096],{"class":162,"line":170},[160,2094,2095],{"class":197},"\u002Fbatch",[160,2097,2098],{"class":166},"              # 把大改动拆成独立单元，每个跑在自己的 git worktree\n",[160,2100,2101,2104],{"class":162,"line":181},[160,2102,2103],{"class":197},"\u002Ftasks",[160,2105,2106],{"class":166},"              # 列出后台运行的子代理\n",[17,2108,2109,2110,2115],{},"据 ",[50,2111,2114],{"href":2112,"rel":2113},"https:\u002F\u002Fcomputingforgeeks.com\u002Fclaude-code-cheat-sheet",[1063],"computingforgeeks.com 2026 cheat sheet"," 整理，子代理让\"一边改前端，一边改后端\"这种并行操作不会污染主对话上下文。",[1008,2117,2119],{"id":2118},"slash-命令生产力关键","Slash 命令（生产力关键）",[17,2121,2122],{},"Claude Code 内置了一套 slash 命令，是日常使用的核心：",[72,2124,2125,2135],{},[75,2126,2127],{},[78,2128,2129,2132],{},[81,2130,2131],{},"命令",[81,2133,2134],{},"用途",[88,2136,2137,2151,2161,2174,2184,2194,2204,2214,2224,2234,2244,2254,2264],{},[78,2138,2139,2144],{},[93,2140,2141],{},[26,2142,2143],{},"\u002Finit",[93,2145,2146,2147,2150],{},"第一次进入仓库时跑，生成 ",[26,2148,2149],{},"CLAUDE.md","（项目记忆）",[78,2152,2153,2158],{},[93,2154,2155],{},[26,2156,2157],{},"\u002Fmemory",[93,2159,2160],{},"编辑长期记忆",[78,2162,2163,2168],{},[93,2164,2165],{},[26,2166,2167],{},"\u002Fclear",[93,2169,2170,2171,1798],{},"清空当前对话，重新开始（",[21,2172,2173],{},"最被低估的命令",[78,2175,2176,2181],{},[93,2177,2178],{},[26,2179,2180],{},"\u002Fcompact",[93,2182,2183],{},"长对话压缩，挽救快爆炸的 context window",[78,2185,2186,2191],{},[93,2187,2188],{},[26,2189,2190],{},"\u002Fcontext",[93,2192,2193],{},"显示当前 context 用量",[78,2195,2196,2201],{},[93,2197,2198],{},[26,2199,2200],{},"\u002Fplan",[93,2202,2203],{},"切到 plan 模式（只规划不执行）",[78,2205,2206,2211],{},[93,2207,2208],{},[26,2209,2210],{},"\u002Fmodel",[93,2212,2213],{},"切换模型（Opus \u002F Sonnet \u002F Haiku）",[78,2215,2216,2221],{},[93,2217,2218],{},[26,2219,2220],{},"\u002Fdiff",[93,2222,2223],{},"看本轮所有改动",[78,2225,2226,2231],{},[93,2227,2228],{},[26,2229,2230],{},"\u002Fcode-review",[93,2232,2233],{},"对 diff 跑代码审查",[78,2235,2236,2241],{},[93,2237,2238],{},[26,2239,2240],{},"\u002Frewind",[93,2242,2243],{},"回滚到任意 checkpoint（代码 + 对话）",[78,2245,2246,2251],{},[93,2247,2248],{},[26,2249,2250],{},"\u002Fmcp",[93,2252,2253],{},"管理 MCP 服务器",[78,2255,2256,2261],{},[93,2257,2258],{},[26,2259,2260],{},"\u002Fdoctor",[93,2262,2263],{},"排查环境问题",[78,2265,2266,2275],{},[93,2267,2268,2271,2272],{},[26,2269,2270],{},"\u002Fresume"," ",[26,2273,2274],{},"\u002Fbranch",[93,2276,2277],{},"回到 \u002F fork 历史对话",[17,2279,2280,2285,2286,2288,2289,2291,2292,2295],{},[50,2281,2284],{"href":2282,"rel":2283},"https:\u002F\u002Flearn-prompting.fr\u002Fblog\u002Fclaude-code-slash-commands-reference",[1063],"learn-prompting.fr 2026-04 总结","：成熟团队最常用的三个是 ",[26,2287,2180],{},"（每 20-30 分钟一次防止 context drift）、",[26,2290,2167],{},"（新任务开新会话）、自定义命令（写在 ",[26,2293,2294],{},".claude\u002Fcommands\u002F"," 提交进 git）。",[1008,2297,2299],{"id":2298},"mcp-集成一等公民","MCP 集成（一等公民）",[17,2301,2302,2304,2305,2308],{},[50,2303,1845],{"href":1844}," 是 Anthropic 自家协议，Claude Code 是 MCP 支持最完整的客户端。配置一次 ",[26,2306,2307],{},".mcp.json","，Claude Code 就能在对话里调任意 MCP server 暴露的 tool：",[151,2310,2314],{"className":2311,"code":2312,"language":2313,"meta":156,"style":156},"language-json shiki shiki-themes github-light github-dark","{\n  \"mcpServers\": {\n    \"postgres\": {\n      \"command\": \"npx\",\n      \"args\": [\"@modelcontextprotocol\u002Fserver-postgres\", \"postgresql:\u002F\u002F...\"]\n    }\n  }\n}\n","json",[26,2315,2316,2321,2329,2336,2350,2370,2375,2380],{"__ignoreMap":156},[160,2317,2318],{"class":162,"line":163},[160,2319,2320],{"class":329},"{\n",[160,2322,2323,2326],{"class":162,"line":170},[160,2324,2325],{"class":173},"  \"mcpServers\"",[160,2327,2328],{"class":329},": {\n",[160,2330,2331,2334],{"class":162,"line":181},[160,2332,2333],{"class":173},"    \"postgres\"",[160,2335,2328],{"class":329},[160,2337,2338,2341,2344,2347],{"class":162,"line":188},[160,2339,2340],{"class":173},"      \"command\"",[160,2342,2343],{"class":329},": ",[160,2345,2346],{"class":177},"\"npx\"",[160,2348,2349],{"class":329},",\n",[160,2351,2352,2355,2358,2361,2364,2367],{"class":162,"line":194},[160,2353,2354],{"class":173},"      \"args\"",[160,2356,2357],{"class":329},": [",[160,2359,2360],{"class":177},"\"@modelcontextprotocol\u002Fserver-postgres\"",[160,2362,2363],{"class":329},", ",[160,2365,2366],{"class":177},"\"postgresql:\u002F\u002F...\"",[160,2368,2369],{"class":329},"]\n",[160,2371,2372],{"class":162,"line":216},[160,2373,2374],{"class":329},"    }\n",[160,2376,2377],{"class":162,"line":234},[160,2378,2379],{"class":329},"  }\n",[160,2381,2382],{"class":162,"line":251},[160,2383,2384],{"class":329},"}\n",[17,2386,2387],{},"之后你就能直接说\"查一下 users 表里最近 7 天注册的人数\"——Claude Code 自动通过 MCP 跑 SQL，结果返回对话里继续讨论。",[1008,2389,2391],{"id":2390},"后台-远程模式","后台 \u002F 远程模式",[17,2393,2394,2397,2398,2401,2402,2405],{},[26,2395,2396],{},"\u002Fbackground"," 让当前会话脱离终端，作为后台 agent 继续跑；",[26,2399,2400],{},"\u002Fteleport"," 把网页端会话拉到本地终端继续；",[26,2403,2404],{},"\u002Fremote-control"," 从手机或另一台机器接管这台机器的 Claude Code 会话。这套体系是面向\"agent 长时间跑\"设计的，区别于 Cursor 的\"实时交互\"。",[13,2407,1400],{"id":1400},[17,2409,2410,2411,2416,2417,2422],{},"根据 ",[50,2412,2415],{"href":2413,"rel":2414},"https:\u002F\u002Fwww.explainx.ai\u002Fblog\u002Fclaude-code-pricing-guide-2026",[1063],"explainx.ai 2026-06 评测"," 和 ",[50,2418,2421],{"href":2419,"rel":2420},"https:\u002F\u002Fclaude.com\u002Fpricing",[1063],"Anthropic 官方定价"," 整理：",[72,2424,2425,2437],{},[75,2426,2427],{},[78,2428,2429,2432,2435],{},[81,2430,2431],{},"路径",[81,2433,2434],{},"价格",[81,2436,15],{},[88,2438,2439,2452,2465,2478,2491],{},[78,2440,2441,2446,2449],{},[93,2442,2443],{},[21,2444,2445],{},"BYOK（自带 API key）",[93,2447,2448],{},"按 token 计费",[93,2450,2451],{},"全自由，但单月烧到 $500+ 也常见",[78,2453,2454,2459,2462],{},[93,2455,2456],{},[21,2457,2458],{},"Pro",[93,2460,2461],{},"$20\u002F月（年付 ~$17）",[93,2463,2464],{},"个人开发者，每天 1-4 小时",[78,2466,2467,2472,2475],{},[93,2468,2469],{},[21,2470,2471],{},"Max 5x",[93,2473,2474],{},"$100\u002F月",[93,2476,2477],{},"重度用户 + Opus 模型访问",[78,2479,2480,2485,2488],{},[93,2481,2482],{},[21,2483,2484],{},"Max 20x",[93,2486,2487],{},"$200\u002F月",[93,2489,2490],{},"8h+ agentic 工作流 \u002F 团队共享",[78,2492,2493,2498,2501],{},[93,2494,2495],{},[21,2496,2497],{},"Team Premium",[93,2499,2500],{},"$100\u002Fseat 年付 \u002F $125 月付",[93,2502,2503],{},"团队，含管理",[17,2505,2506],{},"API token 价格（2026 Q2 公开数据）：",[37,2508,2509,2512,2515],{},[40,2510,2511],{},"Sonnet 4.x：input $3 \u002F output $15 per 1M token",[40,2513,2514],{},"Opus 4.x：input $15 \u002F output $75 per 1M token",[40,2516,2517],{},"Haiku 4.x：input $1 \u002F output $5 per 1M token",[17,2519,2520,2525],{},[50,2521,2524],{"href":2522,"rel":2523},"https:\u002F\u002Fwww.ksred.com\u002Fclaude-code-pricing-guide-which-plan-actually-saves-you-money",[1063],"ksred 博客真实使用日志","：作者 8 个月用 ~100 亿 token，API 价折合 $15,000+，订阅实际只花 $800——订阅模式对重度用户极度划算，但前提是能搞定支付。",[13,2527,1236],{"id":1235},[151,2529,2531],{"className":153,"code":2530,"language":155,"meta":156,"style":156},"# macOS \u002F Linux \u002F Windows (WSL)\ncurl -fsSL https:\u002F\u002Fclaude.ai\u002Finstall.sh | bash\n\n# macOS 用 Homebrew\nbrew install --cask claude-code\n\n# Windows PowerShell\nirm https:\u002F\u002Fclaude.ai\u002Finstall.ps1 | iex\n\n# 验证 + 登录\nclaude --version\nclaude auth login          # 走浏览器 OAuth，绑定 Pro \u002F Max 订阅\n# 或用 API key\nexport ANTHROPIC_API_KEY=sk-ant-...\n\n# 进项目，启动\ncd your-project\nclaude \u002Finit               # 生成 CLAUDE.md\nclaude                     # 进入交互模式\n",[26,2532,2533,2538,2555,2559,2564,2577,2581,2586,2599,2603,2608,2615,2628,2633,2643,2647,2652,2658,2668],{"__ignoreMap":156},[160,2534,2535],{"class":162,"line":163},[160,2536,2537],{"class":166},"# macOS \u002F Linux \u002F Windows (WSL)\n",[160,2539,2540,2543,2546,2549,2552],{"class":162,"line":170},[160,2541,2542],{"class":197},"curl",[160,2544,2545],{"class":173}," -fsSL",[160,2547,2548],{"class":177}," https:\u002F\u002Fclaude.ai\u002Finstall.sh",[160,2550,2551],{"class":706}," |",[160,2553,2554],{"class":197}," bash\n",[160,2556,2557],{"class":162,"line":181},[160,2558,185],{"emptyLinePlaceholder":184},[160,2560,2561],{"class":162,"line":188},[160,2562,2563],{"class":166},"# macOS 用 Homebrew\n",[160,2565,2566,2569,2571,2574],{"class":162,"line":194},[160,2567,2568],{"class":197},"brew",[160,2570,832],{"class":177},[160,2572,2573],{"class":173}," --cask",[160,2575,2576],{"class":177}," claude-code\n",[160,2578,2579],{"class":162,"line":216},[160,2580,185],{"emptyLinePlaceholder":184},[160,2582,2583],{"class":162,"line":234},[160,2584,2585],{"class":166},"# Windows PowerShell\n",[160,2587,2588,2591,2594,2596],{"class":162,"line":251},[160,2589,2590],{"class":197},"irm",[160,2592,2593],{"class":177}," https:\u002F\u002Fclaude.ai\u002Finstall.ps1",[160,2595,2551],{"class":706},[160,2597,2598],{"class":197}," iex\n",[160,2600,2601],{"class":162,"line":256},[160,2602,185],{"emptyLinePlaceholder":184},[160,2604,2605],{"class":162,"line":262},[160,2606,2607],{"class":166},"# 验证 + 登录\n",[160,2609,2610,2612],{"class":162,"line":861},[160,2611,2005],{"class":197},[160,2613,2614],{"class":173}," --version\n",[160,2616,2617,2619,2622,2625],{"class":162,"line":5},[160,2618,2005],{"class":197},[160,2620,2621],{"class":177}," auth",[160,2623,2624],{"class":177}," login",[160,2626,2627],{"class":166},"          # 走浏览器 OAuth，绑定 Pro \u002F Max 订阅\n",[160,2629,2630],{"class":162,"line":959},[160,2631,2632],{"class":166},"# 或用 API key\n",[160,2634,2635,2637,2639,2641],{"class":162,"line":1349},[160,2636,1301],{"class":706},[160,2638,1304],{"class":329},[160,2640,707],{"class":706},[160,2642,1309],{"class":329},[160,2644,2645],{"class":162,"line":958},[160,2646,185],{"emptyLinePlaceholder":184},[160,2648,2649],{"class":162,"line":1359},[160,2650,2651],{"class":166},"# 进项目，启动\n",[160,2653,2654,2656],{"class":162,"line":1370},[160,2655,174],{"class":173},[160,2657,1287],{"class":177},[160,2659,2660,2662,2665],{"class":162,"line":1380},[160,2661,2005],{"class":197},[160,2663,2664],{"class":177}," \u002Finit",[160,2666,2667],{"class":166},"               # 生成 CLAUDE.md\n",[160,2669,2670,2672],{"class":162,"line":1385},[160,2671,2005],{"class":197},[160,2673,2674],{"class":166},"                     # 进入交互模式\n",[13,2676,1460],{"id":1460},[404,2678,2679,2685,2691,2697],{},[40,2680,2681,2684],{},[21,2682,2683],{},"账号","：注册 claude.ai 需要海外手机号（Google Voice \u002F Twilio 可，国内号被封死）",[40,2686,2687,2690],{},[21,2688,2689],{},"支付","：Pro \u002F Max 订阅只收海外信用卡（MasterCard \u002F Visa）+ 海外账单地址。第三方平台（如老张 \u002F DMXAPI）可用支付宝走 API 代理，但是 BYOK 模式",[40,2692,2693,2696],{},[21,2694,2695],{},"网络","：终端 OAuth 流程对代理稳定性要求高，掉线会反复弹浏览器",[40,2698,2699,2702,2703,1761,2705,2707,2708,54,2710,2714],{},[21,2700,2701],{},"替代路径","：用 ",[50,2704,920],{"href":919},[50,2706,1527],{"href":1526}," 接 ",[50,2709,1452],{"href":1451},[50,2711,2713],{"href":2712},"\u002Fmodels\u002Fglm-5.2.html","GLM-5.2"," 是国内最经济的\"Claude Code 平替\"思路",[13,2716,1501],{"id":1501},[72,2718,2719,2739],{},[75,2720,2721],{},[78,2722,2723,2725,2727,2731,2735],{},[81,2724,1510],{},[81,2726,53],{},[81,2728,2729],{},[50,2730,1424],{"href":1423},[81,2732,2733],{},[50,2734,1521],{"href":57},[81,2736,2737],{},[50,2738,920],{"href":919},[88,2740,2741,2757,2771,2789,2809,2823,2836,2853],{},[78,2742,2743,2746,2749,2752,2755],{},[93,2744,2745],{},"形态",[93,2747,2748],{},"CLI（IDE 无关）",[93,2750,2751],{},"AI-first IDE",[93,2753,2754],{},"CLI",[93,2756,2754],{},[78,2758,2759,2762,2764,2767,2769],{},[93,2760,2761],{},"长任务能力",[93,2763,1584],{},[93,2765,2766],{},"★★★★☆",[93,2768,2766],{},[93,2770,1587],{},[78,2772,2773,2776,2783,2785,2787],{},[93,2774,2775],{},"上下文管理",[93,2777,2778,2779,2271,2781],{},"★★★★★ ",[26,2780,2180],{},[26,2782,2167],{},[93,2784,2766],{},[93,2786,2766],{},[93,2788,1587],{},[78,2790,2791,2794,2801,2804,2807],{},[93,2792,2793],{},"子代理 \u002F 并行",[93,2795,2796,2797,2271,2799,1798],{},"✅（",[26,2798,2087],{},[26,2800,2095],{},[93,2802,2803],{},"部分（Bug bot）",[93,2805,2806],{},"⚠️ 有限",[93,2808,1540],{},[78,2810,2811,2814,2817,2819,2821],{},[93,2812,2813],{},"MCP 支持",[93,2815,2816],{},"★★★★★ 一等公民",[93,2818,2766],{},[93,2820,1587],{},[93,2822,1540],{},[78,2824,2825,2827,2829,2831,2833],{},[93,2826,1581],{},[93,2828,2766],{},[93,2830,1587],{},[93,2832,1587],{},[93,2834,2835],{},"★★★★★ 每改即 commit",[78,2837,2838,2841,2844,2847,2850],{},[93,2839,2840],{},"国内门槛",[93,2842,2843],{},"高（账号+支付+网络）",[93,2845,2846],{},"高（账号+支付）",[93,2848,2849],{},"高",[93,2851,2852],{},"低（BYOK 国产模型）",[78,2854,2855,2857,2860,2863,2865],{},[93,2856,2434],{},[93,2858,2859],{},"$20-$200\u002F月",[93,2861,2862],{},"$20\u002F月",[93,2864,2859],{},[93,2866,2867],{},"仅 API 成本",[17,2869,2870,411],{},[21,2871,2872],{},"选 Claude Code 如果你",[37,2874,2875,2878,2881,2884],{},[40,2876,2877],{},"重视长任务自主性 + 上下文管理",[40,2879,2880],{},"JetBrains \u002F Vim 用户，不想换 IDE",[40,2882,2883],{},"团队需要 SSH 远程 \u002F 后台 agent 模式",[40,2885,2886],{},"已经在用 Claude Pro\u002FMax，加 Code 是边际成本",[17,2888,2889,411],{},[21,2890,2891],{},"别选 Claude Code 如果你",[37,2893,2894,2900,2905],{},[40,2895,2896,2897,2899],{},"国内、个人、预算紧（去 ",[50,2898,920],{"href":919}," + DeepSeek）",[40,2901,2902,2903,1798],{},"想要纯 IDE 内 inline 体验（",[50,2904,1424],{"href":1423},[40,2906,2907,2908,1798],{},"主要写补全而非 agent 任务（",[50,2909,2911],{"href":2910},"\u002Fcoding\u002Fcopilot\u002Fgithub-copilot.html","GitHub Copilot",[13,2913,1667],{"id":1667},[37,2915,2916,2929,2944,2958,2966,2984,2998,3004],{},[40,2917,2918,2924,2925,2928],{},[21,2919,2920,2923],{},[26,2921,2922],{},"ANTHROPIC_API_KEY"," 优先级最高","：你以为在用 Pro 订阅，但 env 里有 key 时实际走 API 计费——卡崩之前先 ",[26,2926,2927],{},"env | grep ANTHROPIC"," 检查",[40,2930,2931,2937,2938,2940,2941,2943],{},[21,2932,2933,2934,2936],{},"长会话不 ",[26,2935,2180],{}," 会越来越笨","：context 接近上限时，模型会开始忘记前面约定。社区共识：每 20-30 分钟 ",[26,2939,2180],{}," 一次或 ",[26,2942,2167],{}," 开新会话",[40,2945,2946,2951,2952,2957],{},[21,2947,2948,2950],{},[26,2949,2210],{}," 切换是个坑","：跨模型切会丢部分 context ",[50,2953,2956],{"href":2954,"rel":2955},"https:\u002F\u002Fwww.reddit.com\u002Fr\u002FClaudeAI\u002F",[1063],"据 r\u002FClaudeAI 反馈","；建议起新会话指定模型",[40,2959,2960,2965],{},[21,2961,2962,2964],{},[26,2963,2143],{}," 生成的 CLAUDE.md 要 review","：自动生成的会有冗余\u002F错误，第一次进项目花 5 分钟整理",[40,2967,2968,2973,2974,2271,2977,2271,2980,2983],{},[21,2969,2970,2972],{},[26,2971,2294],{}," 自定义命令是放大器","：把团队最常用的工作流写成 ",[26,2975,2976],{},"\u002Fdeploy",[26,2978,2979],{},"\u002Fmigrate",[26,2981,2982],{},"\u002Freview-pr","，提交进 git",[40,2985,2986,2989,2990,2993,2994,2997],{},[21,2987,2988],{},"后台 agent + 重写大量文件 = 危险组合","：长任务跑通常加 ",[26,2991,2992],{},"--permission-mode plan"," 或开 ",[26,2995,2996],{},"acceptEdits"," 但配合 git worktree",[40,2999,3000,3003],{},[21,3001,3002],{},"Windows 原生支持有限","：官方推荐 WSL，PowerShell 安装路径有时跑不通",[40,3005,3006,3009],{},[21,3007,3008],{},"API token 烧钱速度","：BYOK 模式下，复杂 refactor 单次任务可能消耗几百万 token",[13,3011,1818],{"id":1818},[37,3013,3014,3026,3036,3051],{},[40,3015,1823,3016,54,3018,54,3020,54,3022,54,3024],{},[50,3017,1424],{"href":1423},[50,3019,1428],{"href":1427},[50,3021,1521],{"href":57},[50,3023,920],{"href":919},[50,3025,1527],{"href":1526},[40,3027,901,3028,54,3030,54,3032,54,3034],{},[50,3029,905],{"href":904},[50,3031,1849],{"href":1848},[50,3033,1845],{"href":1844},[50,3035,1855],{"href":1854},[40,3037,3038,3039,54,3043,54,3047],{},"模型：",[50,3040,3042],{"href":3041},"\u002Fmodels\u002Fclaude-opus-4.html","Claude Opus 4",[50,3044,3046],{"href":3045},"\u002Fmodels\u002Fclaude-sonnet-4.html","Claude Sonnet 4",[50,3048,3050],{"href":3049},"\u002Fmodels\u002Fclaude-haiku-4.html","Claude Haiku 4",[40,3052,3053,3054,54,3058],{},"进阶：",[50,3055,3057],{"href":3056},"\u002Fwiki\u002Fvibe-coding.html","Vibe Coding",[50,3059,3061],{"href":3060},"\u002Fwiki\u002Fprompt-engineering.html","Prompt Engineering",[13,3063,1858],{"id":1858},[37,3065,3066,3072,3078,3084,3091,3097],{},[40,3067,1863,3068],{},[50,3069,3070],{"href":3070,"rel":3071},"https:\u002F\u002Fclaude.com\u002Fclaude-code",[1063],[40,3073,1870,3074],{},[50,3075,3076],{"href":3076,"rel":3077},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Foverview",[1063],[40,3079,1889,3080],{},[50,3081,3082],{"href":3082,"rel":3083},"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-code",[1063],[40,3085,3086,3087],{},"CLI Reference：",[50,3088,3089],{"href":3089,"rel":3090},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fcli-reference",[1063],[40,3092,3093,3094],{},"官方定价：",[50,3095,2419],{"href":2419,"rel":3096},[1063],[40,3098,3099],{},"第三方评测：laozhang.ai \u002F explainx.ai \u002F computingforgeeks.com \u002F ksred.com \u002F learn-prompting.fr",[17,3101,3102,3103,1913],{},"本卡片由 AIHO 编辑部根据官方公开资料与第三方评测整理。所有事实点均标注来源；如发现价格 \u002F 命令 \u002F 功能与最新官方信息不一致，请通过 ",[50,3104,1912],{"href":1912},[922,3106,3107],{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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}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);}",{"title":156,"searchDepth":181,"depth":181,"links":3109},[3110,3111,3118,3119,3120,3121,3122,3123,3124],{"id":970,"depth":170,"text":971},{"id":1006,"depth":170,"text":1006,"children":3112},[3113,3114,3115,3116,3117],{"id":2027,"depth":181,"text":2028},{"id":2069,"depth":181,"text":2070},{"id":2118,"depth":181,"text":2119},{"id":2298,"depth":181,"text":2299},{"id":2390,"depth":181,"text":2391},{"id":1400,"depth":170,"text":1400},{"id":1235,"depth":170,"text":1236},{"id":1460,"depth":170,"text":1460},{"id":1501,"depth":170,"text":1501},{"id":1667,"depth":170,"text":1667},{"id":1818,"depth":170,"text":1818},{"id":1858,"depth":170,"text":1858},"\u002Fimg\u002Ftools\u002Fclaude-code.webp","Claude Code 真实评测：Anthropic 官方 CLI Agent，跑在终端，跨 IDE，长任务规划与多步骤执行能力强。AIHO 编辑部基于官方文档与社区资料整理，含子代理、slash 命令、MCP、避坑指南。",[1940],{},[3130,3131,3132],"claude-opus-4","claude-sonnet-4-5","claude-haiku-4",[3134,3135,3136],"国内裸跑（账号 \u002F 支付 \u002F 网络三关）","预算 ¥100\u002F月以内的个人开发者","只想做基础代码补全（用 GitHub Copilot 更经济）","\u002Ftools\u002Fcoding\u002Fcli\u002Fclaude-code",[1946,1947,1945],[3140,3146,3151,3155],{"plan":3141,"price":3142,"limit":3143,"cn_pay":3144,"note":3145},"Pay-as-go","按 API token 计费","Sonnet $3\u002F$15 per Mtok，Opus $15\u002F$75","✅ 第三方中转支持支付宝","BYOK 模式",{"plan":3147,"price":2862,"limit":3148,"cn_pay":3149,"note":3150},"Claude Pro","约 1-4 小时\u002F天活跃编码","⚠️ 需海外卡","网页 + Code 共享额度",{"plan":3152,"price":2474,"limit":3153,"cn_pay":3149,"note":3154},"Claude Max 5x","Pro 的 5 倍 + Opus 接入","重度用户",{"plan":3156,"price":2487,"limit":3157,"cn_pay":3149,"note":3158},"Claude Max 20x","Pro 的 20 倍 + 优先队列","8h+\u002F天 agentic 工作流","API 按 token 计费 \u002F Pro $20 \u002F Max $100-$200 \u002F Team Premium $100-$125 seat",{"power":194,"ux":188,"price":181,"cn_support":170,"stability":188},{"title":53,"description":3126},[3163,3165,3166,3168,3171],{"title":3164,"url":3076},"Claude Code 官方文档",{"title":2421,"url":2419},{"title":3167,"url":3089},"Claude Code CLI Reference",{"title":3169,"url":3170},"Claude Code Pricing Guide 2026","https:\u002F\u002Fblog.laozhang.ai\u002Fen\u002Fposts\u002Fclaude-code-pricing-guide",{"title":3172,"url":2112},"Claude Code Cheat Sheet 2026","tools\u002Fcoding\u002Fcli\u002Fclaude-code",[3175,3176,3177,3178,3179],"JetBrains \u002F Vim \u002F Emacs 用户（不想换编辑器）","需要长任务自主规划（>30min 单次任务）","服务器开发、运维脚本、CI\u002FCD 场景","需要在 SSH 远程主机上跑 AI 编程","重视稳定性 + 长上下文连贯性","Anthropic 官方终端 AI Coding Agent，长任务能力业界第一梯队",[1934,1979,3182,1990,3183,3184],"terminal","long-task","mcp","Cursor 的强力补充。终端原生、IDE 无关、长任务跑得比 Cursor 稳。但 API 计费贵且国内更难用。","CvXKldr1bGdEgCT3_gjFqdgSu6rn9Jc1z0xQhUVSUoc",{"id":3188,"title":1521,"alternatives":3189,"api_compatible":3190,"body":3192,"category":1934,"chinese_friendly":181,"cover":3845,"description":3846,"domestic":1937,"extension":941,"faq":3847,"free":1937,"github":3218,"languages":3863,"meta":3864,"models":3865,"navigation":184,"notSuitable":3869,"opensource":184,"path":3873,"pillar":1943,"platforms":3874,"priceTable":3875,"pricing":3891,"published":1960,"relatedPlaybooks":3892,"relatedReviews":965,"score":3895,"self_host":1937,"seo":3896,"seoTitle":965,"slug":947,"sources":3897,"stem":3906,"suitable":3907,"tagline":3912,"tags":3913,"updated":1983,"verdict":3917,"website":3797,"__hash__":3918},"tools\u002Ftools\u002Fcoding\u002Fcli\u002Fcodex.md",[946,948,964],[3191],"openai",{"type":10,"value":3193,"toc":3829},[3194,3196,3211,3214,3226,3229,3249,3252,3282,3284,3342,3347,3351,3356,3360,3382,3385,3389,3412,3416,3436,3439,3441,3542,3552,3555,3691,3696,3698,3752,3754,3761,3763,3789,3791,3818,3826],[13,3195,971],{"id":970},[973,3197,3199,3208],{"className":3198},[976,977,978],[17,3200,3201,3203,3204,3207],{},[21,3202,983],{}," Codex CLI 是 OpenAI 官方做的终端 Coding Agent，对标 Claude Code。",[21,3205,3206],{},"Rust 实现 + Windows 原生沙箱 + 子代理 + MCP + Hooks","，2026 默认模型 gpt-5-codex \u002F gpt-5-codex-mini，ChatGPT Plus\u002FPro\u002FTeam\u002FEdu 已含使用额度。",[17,3209,3210],{},"形态和 Claude Code 几乎一样，差异主要在模型选择。喜欢 GPT 的人选它，喜欢 Claude 的留 Claude Code。",[13,3212,3213],{"id":3213},"它到底是个什么",[17,3215,3216,3221,3222,3225],{},[50,3217,3220],{"href":3218,"rel":3219},"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fcodex",[1063],"GitHub: openai\u002Fcodex","，",[21,3223,3224],{},"Apache-2.0 开源","，Rust 写的二进制，428+ 贡献者。在终端里跑一个能读 \u002F 改 \u002F 执行代码的 Agent，类似 Claude Code 但绑定 OpenAI 模型。",[17,3227,3228],{},"2026 的三个主线：",[404,3230,3231,3237,3243],{},[40,3232,3233,3236],{},[21,3234,3235],{},"速度 & 实时","：gpt-5.3-codex-spark 推理速度 1000+ token\u002Fs；WebSocket 远程控制延迟优化。",[40,3238,3239,3242],{},[21,3240,3241],{},"Agent 自主性","：Subagents GA、Smart Approvals、PostToolUse hooks、worktree 自动化。",[40,3244,3245,3248],{},[21,3246,3247],{},"企业就绪","：自定义 CA 证书、userpromptsubmit hooks、托管配置、插件策略强制。",[17,3250,3251],{},"最有用的 4 个能力：",[37,3253,3254,3260,3266,3272],{},[40,3255,3256,3259],{},[21,3257,3258],{},"沙箱执行","：默认在受限沙箱跑命令（macOS Sandbox \u002F Linux Landlock \u002F Windows AppContainer），不会污染主机。",[40,3261,3262,3265],{},[21,3263,3264],{},"MCP 工具调用","：连 GitHub \u002F 数据库 \u002F Slack \u002F 自建 server，支持并行 tool call。",[40,3267,3268,3271],{},[21,3269,3270],{},"Subagents","：把大任务拆给多个并行 sub-agent，token 用得多但效率高。",[40,3273,3274,3277,3278,3281],{},[21,3275,3276],{},"Image inputs","：终端里 ",[26,3279,3280],{},"codex -i screenshot.png \"解释这个错误\""," 直接读图。",[13,3283,2434],{"id":2434},[72,3285,3286,3298],{},[75,3287,3288],{},[78,3289,3290,3293,3295],{},[81,3291,3292],{},"档位",[81,3294,2434],{},[81,3296,3297],{},"说明",[88,3299,3300,3310,3320,3331],{},[78,3301,3302,3305,3307],{},[93,3303,3304],{},"ChatGPT Plus",[93,3306,2862],{},[93,3308,3309],{},"含 Codex CLI 用量（2026-03 起 mini 模型额度 +4×）",[78,3311,3312,3315,3317],{},[93,3313,3314],{},"ChatGPT Pro",[93,3316,2487],{},[93,3318,3319],{},"更高额度 + 优先处理 + Spark 研究预览",[78,3321,3322,3325,3328],{},[93,3323,3324],{},"Business \u002F Edu \u002F Team",[93,3326,3327],{},"$25-30\u002F用户\u002F月起",[93,3329,3330],{},"企业管理 + SSO + Codex 含在内",[78,3332,3333,3336,3339],{},[93,3334,3335],{},"纯 API",[93,3337,3338],{},"按 token",[93,3340,3341],{},"gpt-5.5 ≈ $1.25 \u002F $10 per 1M token",[452,3343,3344],{},[17,3345,3346],{},"已经付 ChatGPT Plus 的人，等于白嫖一个 Codex CLI 用量，几乎不必另开 API 账号。",[13,3348,3350],{"id":3349},"真实任务实测基于官方文档归纳","真实任务实测（基于官方文档归纳）",[452,3352,3353],{},[17,3354,3355],{},"来源说明：以下基于 Codex CLI 官方 features 文档与公开评测整合。",[1008,3357,3359],{"id":3358},"任务-1在-50k-行-rust-项目里加新-feature","任务 1：在 50k 行 Rust 项目里加新 feature",[151,3361,3363],{"className":153,"code":3362,"language":155,"meta":156,"style":156},"codex -m gpt-5-codex\n> 在 src\u002Fauth 模块下加 OAuth2 callback handler，参考已有的 token refresh 实现\n",[26,3364,3365,3375],{"__ignoreMap":156},[160,3366,3367,3370,3372],{"class":162,"line":163},[160,3368,3369],{"class":197},"codex",[160,3371,1254],{"class":173},[160,3373,3374],{"class":177}," gpt-5-codex\n",[160,3376,3377,3379],{"class":162,"line":170},[160,3378,1394],{"class":706},[160,3380,3381],{"class":329}," 在 src\u002Fauth 模块下加 OAuth2 callback handler，参考已有的 token refresh 实现\n",[17,3383,3384],{},"Agent 会 plan → 读相关文件 → 跑 cargo check → 跑测试 → 提 diff。子代理可以同时跑 lint 和 test 两条线。",[1008,3386,3388],{"id":3387},"任务-2ci-失败自动-debug","任务 2：CI 失败自动 debug",[151,3390,3392],{"className":153,"code":3391,"language":155,"meta":156,"style":156},"codex --features enable post_tool_use_hook\n# 然后跑 cargo test，CI 失败时 Hook 自动触发 Agent 分析失败 + 写 fix\n",[26,3393,3394,3407],{"__ignoreMap":156},[160,3395,3396,3398,3401,3404],{"class":162,"line":163},[160,3397,3369],{"class":197},[160,3399,3400],{"class":173}," --features",[160,3402,3403],{"class":177}," enable",[160,3405,3406],{"class":177}," post_tool_use_hook\n",[160,3408,3409],{"class":162,"line":170},[160,3410,3411],{"class":166},"# 然后跑 cargo test，CI 失败时 Hook 自动触发 Agent 分析失败 + 写 fix\n",[1008,3413,3415],{"id":3414},"任务-3跨仓库脚手架生成","任务 3：跨仓库脚手架生成",[151,3417,3419],{"className":153,"code":3418,"language":155,"meta":156,"style":156},"codex -m gpt-5-codex\n> 用 mono-repo 模式建 3 个 package：core \u002F cli \u002F web，统一走 pnpm workspace\n",[26,3420,3421,3429],{"__ignoreMap":156},[160,3422,3423,3425,3427],{"class":162,"line":163},[160,3424,3369],{"class":197},[160,3426,1254],{"class":173},[160,3428,3374],{"class":177},[160,3430,3431,3433],{"class":162,"line":170},[160,3432,1394],{"class":706},[160,3434,3435],{"class":329}," 用 mono-repo 模式建 3 个 package：core \u002F cli \u002F web，统一走 pnpm workspace\n",[17,3437,3438],{},"子代理并行起 3 个目录的初始化，单次任务跑完 ~3 分钟，token 用约 80k。",[13,3440,1236],{"id":1235},[151,3442,3444],{"className":153,"code":3443,"language":155,"meta":156,"style":156},"# macOS \u002F Linux\ncurl -fsSL https:\u002F\u002Fchatgpt.com\u002Fcodex\u002Finstall.sh | sh\n\n# Windows（原生 PowerShell）\n# 见官方 Windows setup guide，或用 npm i -g @openai\u002Fcodex\n\ncodex                          # 启动 TUI\ncodex -m gpt-5-codex .         # 在当前目录起 Agent\ncodex --remote wss:\u002F\u002F...       # 远程模式（SSH \u002F 容器）\ncodex features list            # 看可用 feature flag\ncodex features enable unified_exec\n",[26,3445,3446,3451,3465,3469,3474,3479,3483,3490,3505,3518,3531],{"__ignoreMap":156},[160,3447,3448],{"class":162,"line":163},[160,3449,3450],{"class":166},"# macOS \u002F Linux\n",[160,3452,3453,3455,3457,3460,3462],{"class":162,"line":170},[160,3454,2542],{"class":197},[160,3456,2545],{"class":173},[160,3458,3459],{"class":177}," https:\u002F\u002Fchatgpt.com\u002Fcodex\u002Finstall.sh",[160,3461,2551],{"class":706},[160,3463,3464],{"class":197}," sh\n",[160,3466,3467],{"class":162,"line":181},[160,3468,185],{"emptyLinePlaceholder":184},[160,3470,3471],{"class":162,"line":188},[160,3472,3473],{"class":166},"# Windows（原生 PowerShell）\n",[160,3475,3476],{"class":162,"line":194},[160,3477,3478],{"class":166},"# 见官方 Windows setup guide，或用 npm i -g @openai\u002Fcodex\n",[160,3480,3481],{"class":162,"line":216},[160,3482,185],{"emptyLinePlaceholder":184},[160,3484,3485,3487],{"class":162,"line":234},[160,3486,3369],{"class":197},[160,3488,3489],{"class":166},"                          # 启动 TUI\n",[160,3491,3492,3494,3496,3499,3502],{"class":162,"line":251},[160,3493,3369],{"class":197},[160,3495,1254],{"class":173},[160,3497,3498],{"class":177}," gpt-5-codex",[160,3500,3501],{"class":177}," .",[160,3503,3504],{"class":166},"         # 在当前目录起 Agent\n",[160,3506,3507,3509,3512,3515],{"class":162,"line":256},[160,3508,3369],{"class":197},[160,3510,3511],{"class":173}," --remote",[160,3513,3514],{"class":177}," wss:\u002F\u002F...",[160,3516,3517],{"class":166},"       # 远程模式（SSH \u002F 容器）\n",[160,3519,3520,3522,3525,3528],{"class":162,"line":262},[160,3521,3369],{"class":197},[160,3523,3524],{"class":177}," features",[160,3526,3527],{"class":177}," list",[160,3529,3530],{"class":166},"            # 看可用 feature flag\n",[160,3532,3533,3535,3537,3539],{"class":162,"line":861},[160,3534,3369],{"class":197},[160,3536,3524],{"class":177},[160,3538,3403],{"class":177},[160,3540,3541],{"class":177}," unified_exec\n",[17,3543,3544,3545,3548,3549,1743],{},"配置文件：",[26,3546,3547],{},"$CODEX_HOME\u002Fconfig.toml","（默认 ",[26,3550,3551],{},"~\u002F.codex\u002Fconfig.toml",[13,3553,3554],{"id":3554},"同类对比",[72,3556,3557,3571],{},[75,3558,3559],{},[78,3560,3561,3563,3565,3567,3569],{},[81,3562,1510],{},[81,3564,1521],{},[81,3566,53],{},[81,3568,920],{},[81,3570,1527],{},[88,3572,3573,3588,3604,3620,3637,3650,3664,3678],{},[78,3574,3575,3577,3580,3582,3585],{},[93,3576,2745],{},[93,3578,3579],{},"终端 TUI",[93,3581,3579],{},[93,3583,3584],{},"终端 REPL",[93,3586,3587],{},"VS Code 插件",[78,3589,3590,3593,3596,3599,3602],{},[93,3591,3592],{},"默认模型",[93,3594,3595],{},"gpt-5-codex",[93,3597,3598],{},"Claude Sonnet\u002FOpus",[93,3600,3601],{},"BYOK 任意",[93,3603,3601],{},[78,3605,3606,3609,3612,3615,3618],{},[93,3607,3608],{},"含在订阅",[93,3610,3611],{},"ChatGPT Plus\u002FPro",[93,3613,3614],{},"Claude.ai $20\u002F月",[93,3616,3617],{},"❌（仅 API）",[93,3619,3617],{},[78,3621,3622,3625,3628,3631,3634],{},[93,3623,3624],{},"沙箱",[93,3626,3627],{},"macOS Sandbox \u002F Landlock \u002F AppContainer",[93,3629,3630],{},"类似",[93,3632,3633],{},"无",[93,3635,3636],{},"VS Code 环境",[78,3638,3639,3641,3643,3645,3648],{},[93,3640,1845],{},[93,3642,1537],{},[93,3644,1537],{},[93,3646,3647],{},"部分",[93,3649,1537],{},[78,3651,3652,3654,3657,3660,3662],{},[93,3653,3270],{},[93,3655,3656],{},"✅ GA",[93,3658,3659],{},"✅ Task tool",[93,3661,1540],{},[93,3663,1540],{},[78,3665,3666,3668,3671,3674,3676],{},[93,3667,1534],{},[93,3669,3670],{},"Apache-2.0",[93,3672,3673],{},"闭源",[93,3675,3670],{},[93,3677,3670],{},[78,3679,3680,3683,3685,3687,3689],{},[93,3681,3682],{},"原生 Windows",[93,3684,1537],{},[93,3686,3647],{},[93,3688,1537],{},[93,3690,1537],{},[452,3692,3693],{},[17,3694,3695],{},"一句话区分：Codex CLI = OpenAI 官方版的 Claude Code；Claude Code = Anthropic 官方版的 Codex；Aider = 任意 OpenAI 兼容 API 都能跑；Cline = VS Code 里的 GUI 终端 Agent。",[13,3697,1667],{"id":1667},[404,3699,3700,3706,3716,3726,3732,3738],{},[40,3701,3702,3705],{},[21,3703,3704],{},"国内访问别频繁切 IP","，OpenAI 风控严，账号被封基本无法找回。",[40,3707,3708,3711,3712,3715],{},[21,3709,3710],{},"沙箱默认会限制网络","，跑 ",[26,3713,3714],{},"npm install"," 等需要联网的命令前先看 approval 弹窗。",[40,3717,3718,3721,3722,3725],{},[21,3719,3720],{},"Subagents 吃 token 多","，预算敏感时关闭 ",[26,3723,3724],{},"[agents]"," 配置或换 mini 模型。",[40,3727,3728,3731],{},[21,3729,3730],{},"WebSocket 远程模式只接受 wss:\u002F\u002F 或 localhost ws:\u002F\u002F","，远程公网必须 TLS。",[40,3733,3734,3737],{},[21,3735,3736],{},"gpt-5-codex 比 gpt-5.5 便宜但能力对齐","，2026-03 之后默认推荐用 codex 系列而非 5.5。",[40,3739,3740,3747,3748,3751],{},[21,3741,3742,3743,3746],{},"不要用过期的 ",[26,3744,3745],{},"--approval-mode"," 旧参数","，新版用 ",[26,3749,3750],{},"codex features"," 子命令管理。",[13,3753,1769],{"id":1768},[17,3755,3756,3757,3760],{},"✅ 终端 \u002F TMUX \u002F Vim 重度用户；已订阅 ChatGPT Plus \u002F Pro 的人；Windows 原生开发者；headless \u002F SSH \u002F 容器场景。",[3758,3759],"br",{},"\n❌ GUI 党；纯内网开发；偏好 Claude 长上下文风格的人。",[13,3762,1818],{"id":1818},[37,3764,3765,3772,3779],{},[40,3766,3767,3768],{},"配套 playbook：",[50,3769,3771],{"href":3770},"\u002Fplaybook\u002Fcodex-cli-vs-claude-code.html","Codex CLI vs Claude Code 怎么选",[40,3773,3774,3775],{},"同分类：",[50,3776,3778],{"href":3777},"\u002Fcoding\u002Fcli\u002F","AI CLI 全分类",[40,3780,3781,3782,3784,3785,3784,3787],{},"替代品：",[50,3783,53],{"href":52}," · ",[50,3786,920],{"href":919},[50,3788,1527],{"href":1526},[13,3790,1858],{"id":1858},[37,3792,3793,3799,3806,3811],{},[40,3794,1870,3795],{},[50,3796,3797],{"href":3797,"rel":3798},"https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcli",[1063],[40,3800,3801,3802],{},"Features 页：",[50,3803,3804],{"href":3804,"rel":3805},"https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcli\u002Ffeatures",[1063],[40,3807,1889,3808],{},[50,3809,3218],{"href":3218,"rel":3810},[1063],[40,3812,3813,3814],{},"2026 更新综述：",[50,3815,3816],{"href":3816,"rel":3817},"https:\u002F\u002Fcodex.danielvaughan.com\u002F2026\u002F03\u002F27\u002Fcodex-cli-in-2026-whats-new",[1063],[452,3819,3820],{},[17,3821,3822,3823,3825],{},"本卡片由 AIHO 编辑部根据以上公开资料整理，非厂商付费内容；定价与功能以官网为准，欢迎在 ",[50,3824,1912],{"href":1912}," 反馈更新。",[922,3827,3828],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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}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}",{"title":156,"searchDepth":181,"depth":181,"links":3830},[3831,3832,3833,3834,3839,3840,3841,3842,3843,3844],{"id":970,"depth":170,"text":971},{"id":3213,"depth":170,"text":3213},{"id":2434,"depth":170,"text":2434},{"id":3349,"depth":170,"text":3350,"children":3835},[3836,3837,3838],{"id":3358,"depth":181,"text":3359},{"id":3387,"depth":181,"text":3388},{"id":3414,"depth":181,"text":3415},{"id":1235,"depth":170,"text":1236},{"id":3554,"depth":170,"text":3554},{"id":1667,"depth":170,"text":1667},{"id":1768,"depth":170,"text":1769},{"id":1818,"depth":170,"text":1818},{"id":1858,"depth":170,"text":1858},"\u002Fimg\u002Ftools\u002Fcodex.webp","Codex CLI 真实评测：OpenAI 官方开源（Apache-2.0）终端 Coding Agent，Rust 实现，原生 Windows 沙箱 + 子代理 + MCP + 钩子 + 远程控制；2026 默认模型升级到 gpt-5-codex \u002F gpt-5-codex-mini，Plus\u002FPro\u002FTeam\u002FEdu 计划已含。",[3848,3851,3854,3857,3860],{"q":3849,"a":3850},"Codex CLI 和 Claude Code 有什么区别？","形态几乎一致：都是终端 Agent + 沙箱执行 + MCP + 子代理。差异主要在模型——Codex CLI 走 OpenAI 的 gpt-5-codex 系列，Claude Code 走 Anthropic Sonnet\u002FOpus。OpenAI 在原生 Windows 沙箱（不需要 WSL）和 Rust 实现速度上略胜，Claude 在长任务上下文连续性上略胜。",{"q":3852,"a":3853},"在 Windows 上怎么用？","原生 PowerShell 沙箱模式（推荐），也支持 WSL2。安装命令：curl -fsSL https:\u002F\u002Fchatgpt.com\u002Fcodex\u002Finstall.sh | sh（macOS\u002FLinux），Windows 直接通过 npm 或 PowerShell installer。",{"q":3855,"a":3856},"国内能用吗？","需要 OpenAI 账号 + 稳定代理。Plus \u002F Pro 订阅可走支付宝。直接 `codex` 即可启动。",{"q":3858,"a":3859},"Codex CLI 支持本地模型吗？","原生只走 OpenAI API。如果要本地模型，建议用 Aider（OpenAI 兼容 endpoint，可指向 Ollama \u002F vLLM）。",{"q":3861,"a":3862},"Subagents \u002F Hooks \u002F MCP 是什么？","Subagents：把大任务拆给多个并行子代理；Hooks（PostToolUse \u002F userpromptsubmit）：在工具调用前后插入企业策略；MCP：连外部工具（GitHub \u002F 数据库 \u002F Slack）。Codex 2026 把这三块都做到了 GA。",[1939,1940],{},[3866,3595,3867,3868],"gpt-5.5","gpt-5-codex-mini","gpt-5.3-codex-spark",[3870,3871,3872],"重度 GUI 党（终端排斥者请用 Cursor）","国内纯内网（OpenAI API 需稳定代理）","需要 Claude 上下文风格的人","\u002Ftools\u002Fcoding\u002Fcli\u002Fcodex",[1945,1946,1947],[3876,3880,3883,3887],{"plan":3304,"price":2862,"limit":3877,"cn_pay":3878,"note":3879},"含 Codex CLI 使用额度，默认 gpt-5-codex-mini（2026-03 起额度 +4×）","支付宝","个人入门",{"plan":3314,"price":2487,"limit":3881,"cn_pay":3878,"note":3882},"更高额度 + 优先处理 + GPT-5.3-Codex-Spark 研究预览","Agent 重度用户",{"plan":3324,"price":3327,"limit":3884,"cn_pay":3885,"note":3886},"团队管理 + SSO + Codex 含在内","—","团队档",{"plan":3888,"price":3338,"limit":3889,"cn_pay":3885,"note":3890},"纯 API 调用","gpt-5.5 ≈ $1.25\u002F$10 per 1M tokens（input\u002Foutput）","BYOK 自由模式","ChatGPT Plus\u002FPro\u002FBusiness\u002FEdu\u002FEnterprise 包含 \u002F 或按 OpenAI API 计费",[3893,3894],"ai-coding\u002Fcodex-cli-vs-claude-code","ai-coding\u002Fterminal-agent-workflow",{"power":194,"ux":188,"price":188,"cn_support":181,"stability":188},{"title":1521,"description":3846},[3898,3900,3902,3904],{"title":3899,"url":3797},"Codex CLI 官方文档",{"title":3901,"url":3804},"Codex CLI Features 官方",{"title":3903,"url":3218},"Codex CLI GitHub",{"title":3905,"url":3816},"Codex CLI 2026 更新综述","tools\u002Fcoding\u002Fcli\u002Fcodex",[3908,3909,3910,3911],"终端 \u002F TMUX \u002F Vim 重度用户","已经订阅 ChatGPT Plus \u002F Pro 的人（白嫖 Codex 用量）","Windows 原生开发者（Codex CLI 有 PowerShell 沙箱，不必走 WSL）","需要远程 SSH \u002F 容器中跑 Agent 的人（headless 友好）","OpenAI 官方终端 Coding Agent，GPT-5.5 \u002F gpt-5-codex 驱动",[1934,1979,3182,3191,3914,3915,3184,1980,3916],"gpt-5","subagents","rust","Claude Code 的 OpenAI 版镜像。Plus \u002F Pro 已含、Windows 原生沙箱、Rust 速度快，喜欢 GPT 派的人首选；Claude Sonnet 4.5 在长任务上仍略胜，喜欢 Claude 的留 Claude Code。","yuhhpEbqR7kWVQ0pUFXQrPNj-3Uuhg7Xc0IXjaxW2_0",1782663746809]