[{"data":1,"prerenderedAt":791},["ShallowReactive",2],{"header-counts":3,"playbook-onboarding\u002Fclaude-code-getting-started":6,"footer-counts":790},{"tools":4,"reviews":5},65,7,{"id":7,"title":8,"body":9,"category":773,"cover":774,"description":775,"extension":776,"meta":777,"navigation":221,"path":778,"published":779,"relatedTools":780,"seo":784,"stem":785,"tags":786,"updated":779,"__hash__":789},"playbook\u002Fplaybook\u002Fonboarding\u002Fclaude-code-getting-started.md","Claude Code 从零上手：CLI AI 编程实战指南",{"type":10,"value":11,"toc":750},"minimark",[12,16,32,36,167,175,179,238,242,290,293,314,318,321,338,341,349,352,367,371,374,380,383,387,390,396,399,416,422,426,429,435,438,444,448,451,460,626,629,632,636,643,684,687,691,698,702,705,711,714,718,721,725,732,736,739,743,746],[13,14,15],"h2",{"id":15},"适用场景",[17,18,19,23,26,29],"ul",{},[20,21,22],"li",{},"想用 CLI 方式做 AI 编程（不依赖 IDE）",[20,24,25],{},"已有 Cursor \u002F Copilot，想试试 Claude 原生体验",[20,27,28],{},"需要在服务器 \u002F SSH 环境用 AI 编程",[20,30,31],{},"想用 Claude Sonnet 4 \u002F Opus 4 的完整能力",[13,33,35],{"id":34},"claude-code-vs-cursor-vs-copilot","Claude Code vs Cursor vs Copilot",[37,38,39,58],"table",{},[40,41,42],"thead",{},[43,44,45,49,52,55],"tr",{},[46,47,48],"th",{},"维度",[46,50,51],{},"Claude Code",[46,53,54],{},"Cursor",[46,56,57],{},"GitHub Copilot",[59,60,61,76,90,104,117,131,142,153],"tbody",{},[43,62,63,67,70,73],{},[64,65,66],"td",{},"形态",[64,68,69],{},"CLI",[64,71,72],{},"IDE",[64,74,75],{},"IDE 插件",[43,77,78,81,84,87],{},[64,79,80],{},"模型",[64,82,83],{},"Claude 全系",[64,85,86],{},"多模型",[64,88,89],{},"GPT\u002FClaude",[43,91,92,95,98,101],{},[64,93,94],{},"多文件修改",[64,96,97],{},"✅ 原生",[64,99,100],{},"✅",[64,102,103],{},"❌ 单文件",[43,105,106,109,112,114],{},[64,107,108],{},"项目理解",[64,110,111],{},"✅ 自动索引",[64,113,100],{},[64,115,116],{},"部分",[43,118,119,122,125,128],{},[64,120,121],{},"终端操作",[64,123,124],{},"✅ 直接执行",[64,126,127],{},"需切换",[64,129,130],{},"❌",[43,132,133,136,138,140],{},[64,134,135],{},"Git 集成",[64,137,97],{},[64,139,116],{},[64,141,116],{},[43,143,144,147,149,151],{},[64,145,146],{},"SSH\u002F服务器",[64,148,100],{},[64,150,130],{},[64,152,130],{},[43,154,155,158,161,164],{},[64,156,157],{},"价格",[64,159,160],{},"$20\u002F月（Max）",[64,162,163],{},"$20\u002F月",[64,165,166],{},"$10\u002F月",[168,169,170,174],"p",{},[171,172,173],"strong",{},"Claude Code 的独特优势","：CLI 原生 + 终端操作 + SSH 可用。",[13,176,178],{"id":177},"第一步安装","第一步：安装",[180,181,186],"pre",{"className":182,"code":183,"language":184,"meta":185,"style":185},"language-bash shiki shiki-themes github-light github-dark","# 需要 Node.js 18+\nnpm install -g @anthropic-ai\u002Fclaude-code\n\n# 验证\nclaude --version\n","bash","",[187,188,189,198,216,223,229],"code",{"__ignoreMap":185},[190,191,194],"span",{"class":192,"line":193},"line",1,[190,195,197],{"class":196},"sJ8bj","# 需要 Node.js 18+\n",[190,199,201,205,209,213],{"class":192,"line":200},2,[190,202,204],{"class":203},"sScJk","npm",[190,206,208],{"class":207},"sZZnC"," install",[190,210,212],{"class":211},"sj4cs"," -g",[190,214,215],{"class":207}," @anthropic-ai\u002Fclaude-code\n",[190,217,219],{"class":192,"line":218},3,[190,220,222],{"emptyLinePlaceholder":221},true,"\n",[190,224,226],{"class":192,"line":225},4,[190,227,228],{"class":196},"# 验证\n",[190,230,232,235],{"class":192,"line":231},5,[190,233,234],{"class":203},"claude",[190,236,237],{"class":211}," --version\n",[239,240,241],"h3",{"id":241},"认证",[180,243,245],{"className":182,"code":244,"language":184,"meta":185,"style":185},"# 方式 1：用 Anthropic 账号（推荐，含 Max 订阅）\nclaude login\n\n# 方式 2：用 API Key（按量付费）\nexport ANTHROPIC_API_KEY=\"sk-ant-xxx\"\nclaude\n",[187,246,247,252,259,263,268,284],{"__ignoreMap":185},[190,248,249],{"class":192,"line":193},[190,250,251],{"class":196},"# 方式 1：用 Anthropic 账号（推荐，含 Max 订阅）\n",[190,253,254,256],{"class":192,"line":200},[190,255,234],{"class":203},[190,257,258],{"class":207}," login\n",[190,260,261],{"class":192,"line":218},[190,262,222],{"emptyLinePlaceholder":221},[190,264,265],{"class":192,"line":225},[190,266,267],{"class":196},"# 方式 2：用 API Key（按量付费）\n",[190,269,270,274,278,281],{"class":192,"line":231},[190,271,273],{"class":272},"szBVR","export",[190,275,277],{"class":276},"sVt8B"," ANTHROPIC_API_KEY",[190,279,280],{"class":272},"=",[190,282,283],{"class":207},"\"sk-ant-xxx\"\n",[190,285,287],{"class":192,"line":286},6,[190,288,289],{"class":203},"claude\n",[168,291,292],{},"国内用户如果直连慢，可以配代理：",[180,294,296],{"className":182,"code":295,"language":184,"meta":185,"style":185},"export HTTPS_PROXY=\"http:\u002F\u002F127.0.0.1:7890\"\nclaude\n",[187,297,298,310],{"__ignoreMap":185},[190,299,300,302,305,307],{"class":192,"line":193},[190,301,273],{"class":272},[190,303,304],{"class":276}," HTTPS_PROXY",[190,306,280],{"class":272},[190,308,309],{"class":207},"\"http:\u002F\u002F127.0.0.1:7890\"\n",[190,311,312],{"class":192,"line":200},[190,313,289],{"class":203},[13,315,317],{"id":316},"第二步第一次使用","第二步：第一次使用",[168,319,320],{},"进入项目目录，启动 Claude Code：",[180,322,324],{"className":182,"code":323,"language":184,"meta":185,"style":185},"cd my-project\nclaude\n",[187,325,326,334],{"__ignoreMap":185},[190,327,328,331],{"class":192,"line":193},[190,329,330],{"class":211},"cd",[190,332,333],{"class":207}," my-project\n",[190,335,336],{"class":192,"line":200},[190,337,289],{"class":203},[168,339,340],{},"进入交互式 REPL。几个基本操作：",[180,342,347],{"className":343,"code":345,"language":346,"meta":185},[344],"language-text","> 帮我理解这个项目的结构          # 项目理解\n> 找到处理用户登录的代码          # 代码定位\n> 把这个函数改成支持异步          # 代码修改\n> 跑一下测试看看有没有 break      # 执行命令\n","text",[187,348,345],{"__ignoreMap":185},[168,350,351],{},"Claude Code 会自动：",[353,354,355,358,361,364],"ol",{},[20,356,357],{},"扫描项目文件结构",[20,359,360],{},"读 package.json \u002F README 理解技术栈",[20,362,363],{},"找到相关文件",[20,365,366],{},"提出修改方案（需你确认后执行）",[13,368,370],{"id":369},"第三步项目理解工作流","第三步：项目理解工作流",[168,372,373],{},"新接手一个项目时的标准操作：",[180,375,378],{"className":376,"code":377,"language":346,"meta":185},[344],"> 先读 README 和 package.json，告诉我这个项目是做什么的、用了什么技术栈\n\n> 画出项目的目录结构，标注每个目录的职责\n\n> 找到项目的入口文件，解释启动流程\n\n> 这个项目的数据流是怎样的？从 API 请求到数据库的完整路径\n\n> 找到所有 TODO 和 FIXME，按优先级排序\n",[187,379,377],{"__ignoreMap":185},[168,381,382],{},"Claude Code 会实际读取文件并分析，不是瞎猜。",[13,384,386],{"id":385},"第四步多文件修改","第四步：多文件修改",[168,388,389],{},"这是 Claude Code 最强的能力。举个例子：",[180,391,394],{"className":392,"code":393,"language":346,"meta":185},[344],"> 我需要加一个\"用户头像上传\"功能。需要：\n> 1. 后端 API（上传到 S3）\n> 2. 前端组件（拖拽上传 + 预览）\n> 3. 数据库加 avatar_url 字段\n> 4. 用户 profile 页面显示头像\n> 先看一下现有代码结构，告诉我你的计划，我确认后再动手\n",[187,395,393],{"__ignoreMap":185},[168,397,398],{},"Claude Code 会：",[353,400,401,404,407,410,413],{},[20,402,403],{},"扫描相关文件（后端路由、前端组件、数据库 schema）",[20,405,406],{},"给出修改计划（改哪些文件、每个文件改什么）",[20,408,409],{},"等你确认",[20,411,412],{},"一次性修改多个文件",[20,414,415],{},"跑测试验证",[168,417,418,421],{},[171,419,420],{},"关键","：先说\"告诉我计划\"，确认后再让它动手。避免改出一堆你不想要的东西。",[13,423,425],{"id":424},"第五步git-工作流","第五步：Git 工作流",[168,427,428],{},"Claude Code 原生支持 git 操作：",[180,430,433],{"className":431,"code":432,"language":346,"meta":185},[344],"> 看一下当前的 git diff，帮我写 commit message\n\n> 帮我把这个改动拆成 3 个独立的 commit（按逻辑分组）\n\n> 创建一个分支 feature\u002Favatar-upload，把改动提交上去\n",[187,434,432],{"__ignoreMap":185},[168,436,437],{},"推荐工作流：",[180,439,442],{"className":440,"code":441,"language":346,"meta":185},[344],"1. claude  # 启动\n2. \"在 feature 分支上实现 XXX 功能\"  # 让它创建分支 + 改代码\n3. \"跑测试\"  # 验证\n4. \"看一下 diff，写 commit message\"  # 提交\n5. 退出后自己 git push + 开 PR\n",[187,443,441],{"__ignoreMap":185},[13,445,447],{"id":446},"第六步mcp-集成","第六步：MCP 集成",[168,449,450],{},"Claude Code 支持连接 MCP Server，扩展能力：",[180,452,454],{"className":182,"code":453,"language":184,"meta":185,"style":185},"# 配置文件位置：~\u002F.claude\u002Fmcp_servers.json\n",[187,455,456],{"__ignoreMap":185},[190,457,458],{"class":192,"line":193},[190,459,453],{"class":196},[180,461,465],{"className":462,"code":463,"language":464,"meta":185,"style":185},"language-json shiki shiki-themes github-light github-dark","{\n  \"mcpServers\": {\n    \"postgres\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-postgres\"],\n      \"env\": {\n        \"DATABASE_URL\": \"postgresql:\u002F\u002F...\"\n      }\n    },\n    \"github\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-github\"],\n      \"env\": {\n        \"GITHUB_TOKEN\": \"ghp_xxx\"\n      }\n    }\n  }\n}\n","json",[187,466,467,472,480,487,501,521,528,538,544,550,558,569,585,592,603,608,614,620],{"__ignoreMap":185},[190,468,469],{"class":192,"line":193},[190,470,471],{"class":276},"{\n",[190,473,474,477],{"class":192,"line":200},[190,475,476],{"class":211},"  \"mcpServers\"",[190,478,479],{"class":276},": {\n",[190,481,482,485],{"class":192,"line":218},[190,483,484],{"class":211},"    \"postgres\"",[190,486,479],{"class":276},[190,488,489,492,495,498],{"class":192,"line":225},[190,490,491],{"class":211},"      \"command\"",[190,493,494],{"class":276},": ",[190,496,497],{"class":207},"\"npx\"",[190,499,500],{"class":276},",\n",[190,502,503,506,509,512,515,518],{"class":192,"line":231},[190,504,505],{"class":211},"      \"args\"",[190,507,508],{"class":276},": [",[190,510,511],{"class":207},"\"-y\"",[190,513,514],{"class":276},", ",[190,516,517],{"class":207},"\"@modelcontextprotocol\u002Fserver-postgres\"",[190,519,520],{"class":276},"],\n",[190,522,523,526],{"class":192,"line":286},[190,524,525],{"class":211},"      \"env\"",[190,527,479],{"class":276},[190,529,530,533,535],{"class":192,"line":5},[190,531,532],{"class":211},"        \"DATABASE_URL\"",[190,534,494],{"class":276},[190,536,537],{"class":207},"\"postgresql:\u002F\u002F...\"\n",[190,539,541],{"class":192,"line":540},8,[190,542,543],{"class":276},"      }\n",[190,545,547],{"class":192,"line":546},9,[190,548,549],{"class":276},"    },\n",[190,551,553,556],{"class":192,"line":552},10,[190,554,555],{"class":211},"    \"github\"",[190,557,479],{"class":276},[190,559,561,563,565,567],{"class":192,"line":560},11,[190,562,491],{"class":211},[190,564,494],{"class":276},[190,566,497],{"class":207},[190,568,500],{"class":276},[190,570,572,574,576,578,580,583],{"class":192,"line":571},12,[190,573,505],{"class":211},[190,575,508],{"class":276},[190,577,511],{"class":207},[190,579,514],{"class":276},[190,581,582],{"class":207},"\"@modelcontextprotocol\u002Fserver-github\"",[190,584,520],{"class":276},[190,586,588,590],{"class":192,"line":587},13,[190,589,525],{"class":211},[190,591,479],{"class":276},[190,593,595,598,600],{"class":192,"line":594},14,[190,596,597],{"class":211},"        \"GITHUB_TOKEN\"",[190,599,494],{"class":276},[190,601,602],{"class":207},"\"ghp_xxx\"\n",[190,604,606],{"class":192,"line":605},15,[190,607,543],{"class":276},[190,609,611],{"class":192,"line":610},16,[190,612,613],{"class":276},"    }\n",[190,615,617],{"class":192,"line":616},17,[190,618,619],{"class":276},"  }\n",[190,621,623],{"class":192,"line":622},18,[190,624,625],{"class":276},"}\n",[168,627,628],{},"配置后，Claude Code 可以直接查数据库、操作 GitHub。",[13,630,631],{"id":631},"常用技巧",[239,633,635],{"id":634},"_1-用-claudemd-固化项目约定","1. 用 CLAUDE.md 固化项目约定",[168,637,638,639,642],{},"在项目根目录创建 ",[187,640,641],{},"CLAUDE.md","：",[180,644,648],{"className":645,"code":646,"language":647,"meta":185,"style":185},"language-markdown shiki shiki-themes github-light github-dark","# 项目约定\n\n- 用 pnpm 不用 npm\n- 测试用 vitest，跑 `pnpm test`\n- 提交前跑 `pnpm lint`\n- Vue 组件用 \u003Cscript setup>\n- 不要用 any，所有变量都要有类型\n","markdown",[187,649,650,655,659,664,669,674,679],{"__ignoreMap":185},[190,651,652],{"class":192,"line":193},[190,653,654],{},"# 项目约定\n",[190,656,657],{"class":192,"line":200},[190,658,222],{"emptyLinePlaceholder":221},[190,660,661],{"class":192,"line":218},[190,662,663],{},"- 用 pnpm 不用 npm\n",[190,665,666],{"class":192,"line":225},[190,667,668],{},"- 测试用 vitest，跑 `pnpm test`\n",[190,670,671],{"class":192,"line":231},[190,672,673],{},"- 提交前跑 `pnpm lint`\n",[190,675,676],{"class":192,"line":286},[190,677,678],{},"- Vue 组件用 \u003Cscript setup>\n",[190,680,681],{"class":192,"line":5},[190,682,683],{},"- 不要用 any，所有变量都要有类型\n",[168,685,686],{},"Claude Code 每次启动会自动读取，不用每次重复说。",[239,688,690],{"id":689},"_2-用-compact-压缩上下文","2. 用 \u002Fcompact 压缩上下文",[168,692,693,694,697],{},"聊了很久后上下文会满，用 ",[187,695,696],{},"\u002Fcompact"," 压缩历史对话，保留关键信息。",[239,699,701],{"id":700},"_3-子-agent-并发","3. 子 Agent 并发",[168,703,704],{},"复杂任务可以让 Claude Code 开子 Agent 并行处理：",[180,706,709],{"className":707,"code":708,"language":346,"meta":185},[344],"> 用 3 个并行子任务：\n> 1. 修复 auth 模块的 bug\n> 2. 给 API 模块加测试\n> 3. 重构 utils 模块\n> 分别完成后汇总给我\n",[187,710,708],{"__ignoreMap":185},[13,712,713],{"id":713},"踩坑记录",[239,715,717],{"id":716},"坑-1大项目首次索引慢","坑 1：大项目首次索引慢",[168,719,720],{},"10 万行以上的项目，首次启动会花 1-2 分钟扫描。后续有缓存会快。",[239,722,724],{"id":723},"坑-2会主动改你不想改的文件","坑 2：会主动改你不想改的文件",[168,726,727,728,731],{},"Claude Code 有时会\"顺手\"改一些你没要求的文件（比如格式化）。用 ",[187,729,730],{},"--allowedTools"," 限制它只能用特定工具。",[239,733,735],{"id":734},"坑-3国内网络","坑 3：国内网络",[168,737,738],{},"Anthropic API 在国内不稳定。必须配代理，否则会频繁超时。",[239,740,742],{"id":741},"坑-4token-消耗快","坑 4：Token 消耗快",[168,744,745],{},"Sonnet 4 做大型重构时，一次任务可能消耗 50 万+ token。用 Max 订阅（$200\u002F月）比 API 按量付费划算。",[747,748,749],"style",{},"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 .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 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":185,"searchDepth":218,"depth":218,"links":751},[752,753,754,757,758,759,760,761,762,767],{"id":15,"depth":200,"text":15},{"id":34,"depth":200,"text":35},{"id":177,"depth":200,"text":178,"children":755},[756],{"id":241,"depth":218,"text":241},{"id":316,"depth":200,"text":317},{"id":369,"depth":200,"text":370},{"id":385,"depth":200,"text":386},{"id":424,"depth":200,"text":425},{"id":446,"depth":200,"text":447},{"id":631,"depth":200,"text":631,"children":763},[764,765,766],{"id":634,"depth":218,"text":635},{"id":689,"depth":218,"text":690},{"id":700,"depth":218,"text":701},{"id":713,"depth":200,"text":713,"children":768},[769,770,771,772],{"id":716,"depth":218,"text":717},{"id":723,"depth":218,"text":724},{"id":734,"depth":218,"text":735},{"id":741,"depth":218,"text":742},"onboarding","\u002Fog\u002Fplaybook\u002Fclaude-code-getting-started.png","Anthropic 官方 CLI 工具 Claude Code 30 分钟上手——安装配置、项目理解、多文件修改、git 工作流、MCP 集成、子 Agent 并发，含真实项目踩坑记录。","md",{},"\u002Fplaybook\u002Fonboarding\u002Fclaude-code-getting-started","2026-06-21",[781,782,783],"coding\u002Fcli\u002Fclaude-code","coding\u002Fide\u002Fcursor","coding\u002Fcli\u002Faider",{"title":8,"description":775},"playbook\u002Fonboarding\u002Fclaude-code-getting-started",[51,69,787,788],"AI 编程","Anthropic","iY5IsM7_Dx24z0nrqr2srrkmMB01rtDVKpKWe9B0Fz0",{"tools":4,"reviews":5,"playbooks":552,"news":540},1782316489335]