[{"data":1,"prerenderedAt":6569},["ShallowReactive",2],{"navigation":3,"\u002Fappendix\u002Fa.command-cheatsheet":189,"\u002Fappendix\u002Fa.command-cheatsheet-surround":6565},[4,35,57,75,101,123,149,171],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":34},"第 1 章：认识 Claude Code","i-lucide-rocket","\u002Fintro","1.intro",[10,14,18,22,26,30],{"title":11,"path":12,"stem":13},"什么是 Claude Code","\u002Fintro\u002Fwhat-is-claude-code","1.intro\u002F1.what-is-claude-code",{"title":15,"path":16,"stem":17},"Claude Code 与 Copilot、Cursor、Windsurf 的本质区别","\u002Fintro\u002Fvs-competitors","1.intro\u002F2.vs-competitors",{"title":19,"path":20,"stem":21},"AI 编程助手生态全景与选型指南","\u002Fintro\u002Fecosystem-guide","1.intro\u002F3.ecosystem-guide",{"title":23,"path":24,"stem":25},"LLM 的概率本质","\u002Fintro\u002Fllm-probability","1.intro\u002F4.llm-probability",{"title":27,"path":28,"stem":29},"从聊天机器人到 Agent","\u002Fintro\u002Ffrom-chatbot-to-agent","1.intro\u002F5.from-chatbot-to-agent",{"title":31,"path":32,"stem":33},"Claude Code 的 Agentic Loop 全拆解","\u002Fintro\u002Fagentic-loop","1.intro\u002F6.agentic-loop",false,{"title":36,"icon":37,"path":38,"stem":39,"children":40,"page":34},"第 2 章：安装与配置","i-lucide-settings","\u002Fsetup","2.setup",[41,45,49,53],{"title":42,"path":43,"stem":44},"系统要求与安装方式","\u002Fsetup\u002Fsystem-requirements","2.setup\u002F1.system-requirements",{"title":46,"path":47,"stem":48},"认证、登录与多账户管理","\u002Fsetup\u002Fauthentication","2.setup\u002F2.authentication",{"title":50,"path":51,"stem":52},"选择你的界面","\u002Fsetup\u002Fchoose-interface","2.setup\u002F3.choose-interface",{"title":54,"path":55,"stem":56},"Coding Plan","\u002Fsetup\u002Fcoding-plan","2.setup\u002F4.coding-plan",{"title":58,"icon":59,"path":60,"stem":61,"children":62,"page":34},"第 3 章：快速上手","i-lucide-hand","\u002Fquickstart","3.quickstart",[63,67,71],{"title":64,"path":65,"stem":66},"启动、交互模式与基本命令","\u002Fquickstart\u002Fstartup","3.quickstart\u002F1.startup",{"title":68,"path":69,"stem":70},"让 Claude 理解你的项目","\u002Fquickstart\u002Fcodebase-understanding","3.quickstart\u002F2.codebase-understanding",{"title":72,"path":73,"stem":74},"第一次代码变更","\u002Fquickstart\u002Ffirst-change","3.quickstart\u002F3.first-change",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":34},"第 4 章：核心功能","i-lucide-laptop","\u002Fcore-features","4.core-features",[81,85,89,93,97],{"title":82,"path":83,"stem":84},"代码库全景扫描与模块关系分析","\u002Fcore-features\u002Fcodebase-scan","4.core-features\u002F1.codebase-scan",{"title":86,"path":87,"stem":88},"代码编辑与生成","\u002Fcore-features\u002Fedit-generate","4.core-features\u002F2.edit-generate",{"title":90,"path":91,"stem":92},"测试与调试","\u002Fcore-features\u002Ftest-debug","4.core-features\u002F3.test-debug",{"title":94,"path":95,"stem":96},"Git 工作流","\u002Fcore-features\u002Fgit-workflow","4.core-features\u002F4.git-workflow",{"title":98,"path":99,"stem":100},"工具链执行","\u002Fcore-features\u002Ftoolchain","4.core-features\u002F5.toolchain",{"title":102,"icon":103,"path":104,"stem":105,"children":106,"page":34},"第 5 章：进阶配置","i-lucide-wrench","\u002Fadvanced","5.advanced",[107,111,115,119],{"title":108,"path":109,"stem":110},"CLAUDE.md","\u002Fadvanced\u002Fclaude-md","5.advanced\u002F1.claude-md",{"title":112,"path":113,"stem":114},"Skills","\u002Fadvanced\u002Fskills","5.advanced\u002F2.skills",{"title":116,"path":117,"stem":118},"MCP","\u002Fadvanced\u002Fmcp","5.advanced\u002F3.mcp",{"title":120,"path":121,"stem":122},"Hooks 与 Plan 模式","\u002Fadvanced\u002Fhooks-plan","5.advanced\u002F4.hooks-plan",{"title":124,"icon":125,"path":126,"stem":127,"children":128,"page":34},"第 6 章：实战开发","i-lucide-hammer","\u002Fpractice","6.practice",[129,133,137,141,145],{"title":130,"path":131,"stem":132},"需求分析与架构设计","\u002Fpractice\u002Frequirements-architecture","6.practice\u002F1.requirements-architecture",{"title":134,"path":135,"stem":136},"项目脚手架搭建与技术选型","\u002Fpractice\u002Fscaffolding","6.practice\u002F2.scaffolding",{"title":138,"path":139,"stem":140},"核心功能实现","\u002Fpractice\u002Fcore-features","6.practice\u002F3.core-features",{"title":142,"path":143,"stem":144},"测试覆盖、代码审查与质量调优","\u002Fpractice\u002Ftesting-quality","6.practice\u002F4.testing-quality",{"title":146,"path":147,"stem":148},"部署上线与成果分享","\u002Fpractice\u002Fdeployment","6.practice\u002F5.deployment",{"title":150,"icon":151,"path":152,"stem":153,"children":154,"page":34},"第 7 章：心法层","i-lucide-brain","\u002Fmindset","7.mindset",[155,159,163,167],{"title":156,"path":157,"stem":158},"提示词设计原则","\u002Fmindset\u002Fprompt-design","7.mindset\u002F1.prompt-design",{"title":160,"path":161,"stem":162},"上下文管理策略","\u002Fmindset\u002Fcontext-management","7.mindset\u002F2.context-management",{"title":164,"path":165,"stem":166},"安全与权限控制","\u002Fmindset\u002Fsecurity","7.mindset\u002F3.security",{"title":168,"path":169,"stem":170},"Boris Cherny 的 9 条实战心法与团队推广经验","\u002Fmindset\u002Fboris-cherny-tips","7.mindset\u002F4.boris-cherny-tips",{"title":172,"icon":173,"path":174,"stem":175,"children":176,"page":34},"附录","i-lucide-paperclip","\u002Fappendix","8.appendix",[177,181,185],{"title":178,"path":179,"stem":180},"常用命令速查表","\u002Fappendix\u002Fa.command-cheatsheet","8.appendix\u002Fa.command-cheatsheet",{"title":182,"path":183,"stem":184},"AI 核心术语汇编","\u002Fappendix\u002Fb.ai-terminology","8.appendix\u002Fb.ai-terminology",{"title":186,"path":187,"stem":188},"资源链接与延伸阅读","\u002Fappendix\u002Fc.resources","8.appendix\u002Fc.resources",{"id":190,"title":178,"body":191,"description":1024,"extension":6559,"links":6560,"meta":6561,"navigation":1079,"path":179,"seo":6563,"stem":180,"__hash__":6564},"docs\u002F8.appendix\u002Fa.command-cheatsheet.md",{"type":192,"value":193,"toc":6473},"minimark",[194,261,264,269,276,281,407,411,414,492,502,506,589,593,642,650,652,656,667,671,810,814,857,861,946,950,1001,1014,1018,1125,1132,1134,1138,1270,1278,1280,1284,1290,1334,1338,1520,1524,1874,1878,1983,1985,1989,1996,2000,2135,2139,2592,2596,2640,2647,2651,2687,2689,2693,2702,2706,2999,3003,3070,3074,3100,3102,3106,3109,3113,3121,3125,3311,3315,3340,3342,3346,3349,3353,3387,3391,3698,3702,3727,3731,3793,3795,3799,3802,3806,3812,3816,3822,3826,3832,3836,3842,3846,3852,3856,3862,3866,3872,3874,3878,3882,4121,4125,4244,4248,4287,4289,4293,4389,4397,4399,4403,4535,4537,4541,4547,4551,4711,4715,5034,5038,5191,5195,5365,5367,5371,5378,5382,5427,5431,5672,5686,5690,5822,5827,5829,5833,5840,5844,5850,5854,6023,6027,6033,6039,6043,6086,6088,6092,6099,6103,6109,6113,6119,6123,6129,6133,6139,6143,6149,6151,6155,6287,6289,6293,6376,6378,6381,6469],[195,196,197,211,239,245,255],"blockquote",{},[198,199,200,201,205,206,210],"p",{},"本附录是 ",[202,203,204],"strong",{},"Claude Code 日常操作的速查表","，覆盖 CLI 启动参数、会话内 Slash 命令、键盘快捷键、",[207,208,209],"code",{},"settings.json"," 关键配置、Hooks 事件、CLAUDE.md \u002F Skills \u002F MCP 标准结构、对话模式与故障排查。",[198,212,213,216,217,220,221,224,225,228,229,228,232,228,235,238],{},[202,214,215],{},"使用方式","：本文档不需要从头读到尾。建议按 ",[207,218,219],{},"Cmd + F"," \u002F ",[207,222,223],{},"Ctrl + F"," 关键字检索（例如搜 ",[207,226,227],{},"compact","、",[207,230,231],{},"hooks",[207,233,234],{},"PreToolUse",[207,236,237],{},"bypassPermissions"," 等）快速定位。每个章节都尽量做到「一眼可查、复制即用」。",[198,240,241,244],{},[202,242,243],{},"受众","：",[246,247,248,252],"ul",{},[249,250,251],"li",{},"产品经理 \u002F 非技术读者：可重点看「一、二、三、九、十」节，掌握日常会话操作。",[249,253,254],{},"工程师 \u002F 进阶用户：可重点看「四、五、六、七、八、十」节，掌握配置、自动化与排错。",[198,256,257,260],{},[202,258,259],{},"注意事项","：Claude Code 的 CLI 选项与 Slash 命令在持续演进，部分参数在不同版本中可能有别名或行为差异。本速查表以 2026 年 Q1 起的稳定版为基准，对于不能 100% 确认的部分，使用「通常」「一般」等保守措辞，并在「延伸阅读」中给出可追溯到官方文档的入口。",[262,263],"hr",{},[265,266,268],"h2",{"id":267},"一cli-启动与会话管理","一、CLI 启动与会话管理",[198,270,271,272,275],{},"启动 Claude Code 通常通过 ",[207,273,274],{},"claude"," 命令进入交互式会话。也可以通过命令行参数实现「无头执行」「指定权限模式」「恢复会话」等功能。",[277,278,280],"h3",{"id":279},"_11-基础启动命令","1.1 基础启动命令",[282,283,284,300],"table",{},[285,286,287],"thead",{},[288,289,290,294,297],"tr",{},[291,292,293],"th",{},"命令",[291,295,296],{},"作用",[291,298,299],{},"备注",[301,302,303,318,331,344,365,378,391],"tbody",{},[288,304,305,310,313],{},[306,307,308],"td",{},[207,309,274],{},[306,311,312],{},"启动交互式会话（默认 default 权限模式）",[306,314,315,316],{},"在项目根目录执行，自动加载 ",[207,317,108],{},[288,319,320,325,328],{},[306,321,322],{},[207,323,324],{},"claude --version",[306,326,327],{},"查看当前 CLI 版本",[306,329,330],{},"排查 bug 时优先确认版本",[288,332,333,338,341],{},[306,334,335],{},[207,336,337],{},"claude --help",[306,339,340],{},"查看帮助文档",[306,342,343],{},"列出所有顶级参数",[288,345,346,355,358],{},[306,347,348,351,352],{},[207,349,350],{},"claude update"," 或 ",[207,353,354],{},"claude --update",[306,356,357],{},"更新 CLI 到最新版本",[306,359,360,361,364],{},"部分平台通过 ",[207,362,363],{},"npm i -g"," 升级",[288,366,367,372,375],{},[306,368,369],{},[207,370,371],{},"claude doctor",[306,373,374],{},"运行环境自检",[306,376,377],{},"检查 Node 版本、网络、登录状态等",[288,379,380,385,388],{},[306,381,382],{},[207,383,384],{},"claude logout",[306,386,387],{},"登出当前账号",[306,389,390],{},"切换账号或排查鉴权问题",[288,392,393,398,401],{},[306,394,395],{},[207,396,397],{},"claude config",[306,399,400],{},"打开本地配置（账号、模型等）",[306,402,403,404],{},"也可使用会话内 ",[207,405,406],{},"\u002Fconfig",[277,408,410],{"id":409},"_12-权限模式相关启动参数","1.2 权限模式相关启动参数",[198,412,413],{},"权限模式（permission mode）控制 Claude 在执行工具调用前是否需要人工确认。",[282,415,416,429],{},[285,417,418],{},[288,419,420,423,426],{},[291,421,422],{},"启动方式",[291,424,425],{},"权限模式",[291,427,428],{},"适用场景",[301,430,431,445,460,475],{},[288,432,433,437,442],{},[306,434,435],{},[207,436,274],{},[306,438,439],{},[207,440,441],{},"default",[306,443,444],{},"默认行为，写操作需确认",[288,446,447,452,457],{},[306,448,449],{},[207,450,451],{},"claude --permission-mode plan",[306,453,454],{},[207,455,456],{},"plan",[306,458,459],{},"仅规划，不直接修改文件",[288,461,462,467,472],{},[306,463,464],{},[207,465,466],{},"claude --permission-mode acceptEdits",[306,468,469],{},[207,470,471],{},"acceptEdits",[306,473,474],{},"自动接受编辑，仍会询问 Bash 等高风险动作",[288,476,477,482,486],{},[306,478,479],{},[207,480,481],{},"claude --permission-mode bypassPermissions",[306,483,484],{},[207,485,237],{},[306,487,488,491],{},[202,489,490],{},"跳过所有确认","，⚠️ 仅在沙盒 \u002F 容器中使用",[195,493,494],{},[198,495,496,244,499,501],{},[202,497,498],{},"铁律",[207,500,237],{}," 不应在你的主开发机直接使用。建议配合 Devcontainer \u002F Docker \u002F 一次性虚拟机 \u002F 临时云沙盒。",[277,503,505],{"id":504},"_13-会话恢复与导出","1.3 会话恢复与导出",[282,507,508,518],{},[285,509,510],{},[288,511,512,514,516],{},[291,513,293],{},[291,515,296],{},[291,517,299],{},[301,519,520,533,550,563,576],{},[288,521,522,527,530],{},[306,523,524],{},[207,525,526],{},"claude --resume",[306,528,529],{},"列出最近会话并恢复",[306,531,532],{},"选择历史会话继续",[288,534,535,540,543],{},[306,536,537],{},[207,538,539],{},"claude --resume \u003Csession-id>",[306,541,542],{},"恢复指定会话",[306,544,545,546,549],{},"session-id 可在 ",[207,547,548],{},"~\u002F.claude\u002F"," 中找到",[288,551,552,557,560],{},[306,553,554],{},[207,555,556],{},"claude --continue",[306,558,559],{},"直接继续上一次会话",[306,561,562],{},"等同于挑选最近一条",[288,564,565,570,573],{},[306,566,567],{},[207,568,569],{},"claude -p \"\u003Cprompt>\"",[306,571,572],{},"一次性执行（headless）",[306,574,575],{},"适合脚本 \u002F CI 调用，不进入交互模式",[288,577,578,583,586],{},[306,579,580],{},[207,581,582],{},"claude -p \"\u003Cprompt>\" --output-format json",[306,584,585],{},"输出结构化 JSON",[306,587,588],{},"便于其他程序消费",[277,590,592],{"id":591},"_14-模型与上下文","1.4 模型与上下文",[282,594,595,603],{},[285,596,597],{},[288,598,599,601],{},[291,600,293],{},[291,602,296],{},[301,604,605,622,632],{},[288,606,607,612],{},[306,608,609],{},[207,610,611],{},"claude --model \u003Cmodel-id>",[306,613,614,615,228,618,621],{},"指定模型（如 ",[207,616,617],{},"claude-opus-4-7",[207,619,620],{},"claude-sonnet-4-5"," 等）",[288,623,624,629],{},[306,625,626],{},[207,627,628],{},"claude --append-system-prompt \"\u003Ctext>\"",[306,630,631],{},"在系统提示后追加一段自定义内容",[288,633,634,639],{},[306,635,636],{},[207,637,638],{},"claude --add-dir \u003Cpath>",[306,640,641],{},"启动时额外纳入一个工作目录到允许范围",[195,643,644],{},[198,645,646,647,649],{},"实际可用模型 ID 以 ",[207,648,337],{}," 或官方文档为准。",[262,651],{},[265,653,655],{"id":654},"二会话内-slash-命令","二、会话内 Slash 命令",[198,657,658,659,662,663,666],{},"进入交互式会话后，输入以 ",[207,660,661],{},"\u002F"," 开头的命令可以触发内置功能。下表列出最常用的内置命令（不同版本略有出入，输入 ",[207,664,665],{},"\u002Fhelp"," 可查看当前会话支持的全部命令）。",[277,668,670],{"id":669},"_21-上下文与会话管理","2.1 上下文与会话管理",[282,672,673,684],{},[285,674,675],{},[288,676,677,679,681],{},[291,678,293],{},[291,680,296],{},[291,682,683],{},"典型场景",[301,685,686,699,712,727,740,756,769,782,794],{},[288,687,688,693,696],{},[306,689,690],{},[207,691,692],{},"\u002Fclear",[306,694,695],{},"清空当前会话上下文",[306,697,698],{},"切换到无关任务前",[288,700,701,706,709],{},[306,702,703],{},[207,704,705],{},"\u002Fcompact",[306,707,708],{},"压缩当前上下文，保留要点",[306,710,711],{},"长对话上下文逼近上限",[288,713,714,719,722],{},[306,715,716],{},[207,717,718],{},"\u002Fcompact \u003Cfocus>",[306,720,721],{},"带焦点压缩",[306,723,724],{},[207,725,726],{},"\u002Fcompact 仅保留与登录态相关的内容",[288,728,729,734,737],{},[306,730,731],{},[207,732,733],{},"\u002Fresume",[306,735,736],{},"列出会话以恢复",[306,738,739],{},"误关终端后找回",[288,741,742,750,753],{},[306,743,744,351,747],{},[207,745,746],{},"\u002Fexit",[207,748,749],{},"Ctrl + D",[306,751,752],{},"退出会话",[306,754,755],{},"正常结束",[288,757,758,763,766],{},[306,759,760],{},[207,761,762],{},"\u002Fcost",[306,764,765],{},"查看当前会话 Token \u002F 价格估算",[306,767,768],{},"月底盘点成本",[288,770,771,776,779],{},[306,772,773],{},[207,774,775],{},"\u002Fstatus",[306,777,778],{},"查看模型、目录、版本等运行状态",[306,780,781],{},"排查异常",[288,783,784,788,791],{},[306,785,786],{},[207,787,406],{},[306,789,790],{},"打开配置面板",[306,792,793],{},"切换主题、模型默认值",[288,795,796,804,807],{},[306,797,798,220,801],{},[207,799,800],{},"\u002Flogin",[207,802,803],{},"\u002Flogout",[306,805,806],{},"登录 \u002F 登出",[306,808,809],{},"切换账号",[277,811,813],{"id":812},"_22-模式与权限","2.2 模式与权限",[282,815,816,824],{},[285,817,818],{},[288,819,820,822],{},[291,821,293],{},[291,823,296],{},[301,825,826,836,846],{},[288,827,828,833],{},[306,829,830],{},[207,831,832],{},"\u002Fmodel",[306,834,835],{},"切换当前会话所用模型",[288,837,838,843],{},[306,839,840],{},[207,841,842],{},"\u002Fpermissions",[306,844,845],{},"查看与编辑当前权限 allow \u002F deny 列表",[288,847,848,854],{},[306,849,850,853],{},[207,851,852],{},"Shift + Tab","（快捷键，非 Slash）",[306,855,856],{},"在 default → acceptEdits → plan 之间循环切换",[277,858,860],{"id":859},"_23-项目级元信息","2.3 项目级元信息",[282,862,863,871],{},[285,864,865],{},[288,866,867,869],{},[291,868,293],{},[291,870,296],{},[301,872,873,886,896,906,916,926,936],{},[288,874,875,880],{},[306,876,877],{},[207,878,879],{},"\u002Finit",[306,881,882,883,885],{},"在当前目录初始化 ",[207,884,108],{},"（如不存在）",[288,887,888,893],{},[306,889,890],{},[207,891,892],{},"\u002Fmemory",[306,894,895],{},"查看 \u002F 编辑被加载的记忆文件（CLAUDE.md 等）",[288,897,898,903],{},[306,899,900],{},[207,901,902],{},"\u002Fagents",[306,904,905],{},"查看 \u002F 配置子智能体",[288,907,908,913],{},[306,909,910],{},[207,911,912],{},"\u002Fhooks",[306,914,915],{},"查看 \u002F 编辑 Hooks 配置",[288,917,918,923],{},[306,919,920],{},[207,921,922],{},"\u002Fmcp",[306,924,925],{},"查看 \u002F 管理 MCP Server 连接",[288,927,928,933],{},[306,929,930],{},[207,931,932],{},"\u002Fskills",[306,934,935],{},"查看 \u002F 启用本地 Skills（部分版本）",[288,937,938,943],{},[306,939,940],{},[207,941,942],{},"\u002Fplugins",[306,944,945],{},"管理 Claude Code 插件",[277,947,949],{"id":948},"_24-实用工具","2.4 实用工具",[282,951,952,960],{},[285,953,954],{},[288,955,956,958],{},[291,957,293],{},[291,959,296],{},[301,961,962,972,982,992],{},[288,963,964,969],{},[306,965,966],{},[207,967,968],{},"\u002Freview",[306,970,971],{},"触发对当前 diff 的代码评审（如已安装相应 skill）",[288,973,974,979],{},[306,975,976],{},[207,977,978],{},"\u002Fsecurity-review",[306,980,981],{},"触发安全评审（如已安装）",[288,983,984,989],{},[306,985,986],{},[207,987,988],{},"\u002Fbug",[306,990,991],{},"提交一条 bug 反馈给 Anthropic",[288,993,994,998],{},[306,995,996],{},[207,997,665],{},[306,999,1000],{},"列出当前会话所有可用 Slash 命令",[195,1002,1003],{},[198,1004,1005,1006,1009,1010,1013],{},"所有内置 Slash 命令都可以通过自定义命令（项目根 ",[207,1007,1008],{},".claude\u002Fcommands\u002F\u003Cname>.md","，或 ",[207,1011,1012],{},"~\u002F.claude\u002Fcommands\u002F\u003Cname>.md","）扩展。",[277,1015,1017],{"id":1016},"_25-自定义-slash-命令模板","2.5 自定义 Slash 命令模板",[1019,1020,1025],"pre",{"className":1021,"code":1022,"language":1023,"meta":1024,"style":1024},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C!-- 文件路径：.claude\u002Fcommands\u002Frecap.md -->\n---\ndescription: 给出当前任务的中文进度摘要\nargument-hint: \"[关注点]\"\n---\n\n请用中文输出当前任务的：\n1. 已完成事项（要点 list）\n2. 阻塞 \u002F 风险\n3. 下一步建议\n\n如果传入了关注点 $ARGUMENTS，请围绕该关注点展开。\n","markdown","",[207,1026,1027,1036,1043,1049,1069,1074,1081,1087,1096,1105,1114,1119],{"__ignoreMap":1024},[1028,1029,1032],"span",{"class":1030,"line":1031},"line",1,[1028,1033,1035],{"class":1034},"sHwdD","\u003C!-- 文件路径：.claude\u002Fcommands\u002Frecap.md -->\n",[1028,1037,1039],{"class":1030,"line":1038},2,[1028,1040,1042],{"class":1041},"sTEyZ","---\n",[1028,1044,1046],{"class":1030,"line":1045},3,[1028,1047,1048],{"class":1041},"description: 给出当前任务的中文进度摘要\n",[1028,1050,1052,1055,1059,1063,1066],{"class":1030,"line":1051},4,[1028,1053,1054],{"class":1041},"argument-hint: \"",[1028,1056,1058],{"class":1057},"sMK4o","[",[1028,1060,1062],{"class":1061},"sfazB","关注点",[1028,1064,1065],{"class":1057},"]",[1028,1067,1068],{"class":1041},"\"\n",[1028,1070,1072],{"class":1030,"line":1071},5,[1028,1073,1042],{"class":1057},[1028,1075,1077],{"class":1030,"line":1076},6,[1028,1078,1080],{"emptyLinePlaceholder":1079},true,"\n",[1028,1082,1084],{"class":1030,"line":1083},7,[1028,1085,1086],{"class":1041},"请用中文输出当前任务的：\n",[1028,1088,1090,1093],{"class":1030,"line":1089},8,[1028,1091,1092],{"class":1057},"1.",[1028,1094,1095],{"class":1041}," 已完成事项（要点 list）\n",[1028,1097,1099,1102],{"class":1030,"line":1098},9,[1028,1100,1101],{"class":1057},"2.",[1028,1103,1104],{"class":1041}," 阻塞 \u002F 风险\n",[1028,1106,1108,1111],{"class":1030,"line":1107},10,[1028,1109,1110],{"class":1057},"3.",[1028,1112,1113],{"class":1041}," 下一步建议\n",[1028,1115,1117],{"class":1030,"line":1116},11,[1028,1118,1080],{"emptyLinePlaceholder":1079},[1028,1120,1122],{"class":1030,"line":1121},12,[1028,1123,1124],{"class":1041},"如果传入了关注点 $ARGUMENTS，请围绕该关注点展开。\n",[198,1126,1127,1128,1131],{},"使用：在会话内输入 ",[207,1129,1130],{},"\u002Frecap 登录流程","，即可触发。",[262,1133],{},[265,1135,1137],{"id":1136},"三键盘快捷键","三、键盘快捷键",[282,1139,1140,1149],{},[285,1141,1142],{},[288,1143,1144,1147],{},[291,1145,1146],{},"快捷键",[291,1148,296],{},[301,1150,1151,1161,1172,1182,1191,1204,1214,1223,1233,1246,1259],{},[288,1152,1153,1158],{},[306,1154,1155],{},[207,1156,1157],{},"Esc",[306,1159,1160],{},"中断当前请求 \u002F 工具执行",[288,1162,1163,1169],{},[306,1164,1165,1168],{},[207,1166,1167],{},"Esc Esc","（连按两次）",[306,1170,1171],{},"跳到上一条用户消息进行编辑",[288,1173,1174,1179],{},[306,1175,1176],{},[207,1177,1178],{},"Ctrl + C",[306,1180,1181],{},"取消当前输入 \u002F 退出会话（连按两次）",[288,1183,1184,1188],{},[306,1185,1186],{},[207,1187,749],{},[306,1189,1190],{},"退出会话（输入框为空时）",[288,1192,1193,1201],{},[306,1194,1195,220,1198],{},[207,1196,1197],{},"↑",[207,1199,1200],{},"↓",[306,1202,1203],{},"在历史输入间切换",[288,1205,1206,1211],{},[306,1207,1208],{},[207,1209,1210],{},"Tab",[306,1212,1213],{},"文件路径 \u002F 命令自动补全",[288,1215,1216,1220],{},[306,1217,1218],{},[207,1219,852],{},[306,1221,1222],{},"在权限模式间循环（default \u002F acceptEdits \u002F plan）",[288,1224,1225,1230],{},[306,1226,1227],{},[207,1228,1229],{},"Ctrl + R",[306,1231,1232],{},"切换 verbose 输出 \u002F 详细模式",[288,1234,1235,1240],{},[306,1236,1237],{},[207,1238,1239],{},"Ctrl + L",[306,1241,1242,1243,1245],{},"清屏（不清空上下文，区别于 ",[207,1244,692],{},"）",[288,1247,1248,1256],{},[306,1249,1250,351,1253],{},[207,1251,1252],{},"\\ + Enter",[207,1254,1255],{},"Option + Enter",[306,1257,1258],{},"多行输入换行",[288,1260,1261,1267],{},[306,1262,1263,1266],{},[207,1264,1265],{},"#"," 开头",[306,1268,1269],{},"直接添加一条 memory（记忆条目）",[195,1271,1272],{},[198,1273,1274,1275,1277],{},"不同终端 \u002F 操作系统下，部分快捷键可能由终端拦截（例如 iTerm2 的 ",[207,1276,1229],{}," 用作历史搜索）。如冲突，可在终端配置中调整或使用 Slash 命令替代。",[262,1279],{},[265,1281,1283],{"id":1282},"四settingsjson-配置项速查","四、settings.json 配置项速查",[198,1285,1286,1287,1289],{},"Claude Code 通过分层 ",[207,1288,209],{}," 控制行为，优先级（高 → 低）：",[1291,1292,1293,1305,1310,1318,1326],"ol",{},[249,1294,1295,1298,1299,351,1302,1245],{},[202,1296,1297],{},"企业策略","（",[207,1300,1301],{},"\u002FLibrary\u002FApplication Support\u002FClaudeCode\u002Fmanaged-settings.json",[207,1303,1304],{},"\u002Fetc\u002Fclaude-code\u002Fmanaged-settings.json",[249,1306,1307],{},[202,1308,1309],{},"命令行参数",[249,1311,1312,244,1315],{},[202,1313,1314],{},"项目本地（不入版本控制）",[207,1316,1317],{},"\u003Cproject>\u002F.claude\u002Fsettings.local.json",[249,1319,1320,244,1323],{},[202,1321,1322],{},"项目共享（入版本控制）",[207,1324,1325],{},"\u003Cproject>\u002F.claude\u002Fsettings.json",[249,1327,1328,244,1331],{},[202,1329,1330],{},"用户全局",[207,1332,1333],{},"~\u002F.claude\u002Fsettings.json",[277,1335,1337],{"id":1336},"_41-关键字段","4.1 关键字段",[282,1339,1340,1352],{},[285,1341,1342],{},[288,1343,1344,1347,1349],{},[291,1345,1346],{},"字段",[291,1348,296],{},[291,1350,1351],{},"示例",[301,1353,1354,1369,1384,1399,1414,1429,1444,1459,1474,1486,1501],{},[288,1355,1356,1361,1364],{},[306,1357,1358],{},[207,1359,1360],{},"permissions.allow",[306,1362,1363],{},"不询问直接允许的工具调用",[306,1365,1366],{},[207,1367,1368],{},"\"Bash(pnpm test:*)\"",[288,1370,1371,1376,1379],{},[306,1372,1373],{},[207,1374,1375],{},"permissions.deny",[306,1377,1378],{},"始终拒绝的工具调用",[306,1380,1381],{},[207,1382,1383],{},"\"Bash(rm -rf *)\"",[288,1385,1386,1391,1394],{},[306,1387,1388],{},[207,1389,1390],{},"permissions.ask",[306,1392,1393],{},"始终询问的工具调用",[306,1395,1396],{},[207,1397,1398],{},"\"Bash(git push:*)\"",[288,1400,1401,1406,1409],{},[306,1402,1403],{},[207,1404,1405],{},"permissions.defaultMode",[306,1407,1408],{},"启动默认权限模式",[306,1410,1411],{},[207,1412,1413],{},"\"acceptEdits\"",[288,1415,1416,1421,1424],{},[306,1417,1418],{},[207,1419,1420],{},"permissions.additionalDirectories",[306,1422,1423],{},"额外允许访问的目录",[306,1425,1426],{},[207,1427,1428],{},"[\"\u002Ftmp\u002Fwork\"]",[288,1430,1431,1436,1439],{},[306,1432,1433],{},[207,1434,1435],{},"env",[306,1437,1438],{},"环境变量",[306,1440,1441],{},[207,1442,1443],{},"{ \"FOO\": \"bar\" }",[288,1445,1446,1451,1454],{},[306,1447,1448],{},[207,1449,1450],{},"model",[306,1452,1453],{},"默认模型",[306,1455,1456],{},[207,1457,1458],{},"\"claude-opus-4-7\"",[288,1460,1461,1466,1469],{},[306,1462,1463],{},[207,1464,1465],{},"apiKeyHelper",[306,1467,1468],{},"自定义 token 获取脚本",[306,1470,1471],{},[207,1472,1473],{},"\"~\u002F.claude\u002Fget-token.sh\"",[288,1475,1476,1480,1483],{},[306,1477,1478],{},[207,1479,231],{},[306,1481,1482],{},"Hooks 配置",[306,1484,1485],{},"详见第五节",[288,1487,1488,1493,1496],{},[306,1489,1490],{},[207,1491,1492],{},"enableAllProjectMcpServers",[306,1494,1495],{},"自动信任项目级 MCP",[306,1497,1498],{},[207,1499,1500],{},"true",[288,1502,1503,1508,1515],{},[306,1504,1505],{},[207,1506,1507],{},"enabledMcpjsonServers",[306,1509,1510,1511,1514],{},"显式允许的 ",[207,1512,1513],{},".mcp.json"," server 列表",[306,1516,1517],{},[207,1518,1519],{},"[\"postgres\"]",[277,1521,1523],{"id":1522},"_42-推荐的项目级最小配置","4.2 推荐的项目级最小配置",[1019,1525,1529],{"className":1526,"code":1527,"language":1528,"meta":1024,"style":1024},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"$schema\": \"https:\u002F\u002Fjson.schemastore.org\u002Fclaude-code-settings.json\",\n  \"permissions\": {\n    \"defaultMode\": \"acceptEdits\",\n    \"allow\": [\n      \"Bash(pnpm install)\",\n      \"Bash(pnpm dev:*)\",\n      \"Bash(pnpm test:*)\",\n      \"Bash(pnpm lint:*)\",\n      \"Bash(git status)\",\n      \"Bash(git diff:*)\",\n      \"Bash(git log:*)\",\n      \"Read(.\u002F**)\",\n      \"WebFetch(domain:docs.anthropic.com)\"\n    ],\n    \"deny\": [\n      \"Bash(rm -rf *)\",\n      \"Bash(git push --force*)\",\n      \"Read(.\u002F.env*)\",\n      \"Read(.\u002Fsecrets\u002F**)\"\n    ],\n    \"ask\": [\n      \"Bash(git push:*)\",\n      \"Bash(pnpm publish:*)\"\n    ]\n  },\n  \"env\": {\n    \"NODE_ENV\": \"development\"\n  }\n}\n","json",[207,1530,1531,1536,1562,1576,1597,1611,1623,1634,1645,1656,1667,1678,1689,1701,1711,1717,1731,1743,1755,1767,1777,1782,1796,1808,1818,1824,1830,1843,1862,1868],{"__ignoreMap":1024},[1028,1532,1533],{"class":1030,"line":1031},[1028,1534,1535],{"class":1057},"{\n",[1028,1537,1538,1541,1545,1548,1551,1554,1557,1559],{"class":1030,"line":1038},[1028,1539,1540],{"class":1057},"  \"",[1028,1542,1544],{"class":1543},"spNyl","$schema",[1028,1546,1547],{"class":1057},"\"",[1028,1549,1550],{"class":1057},":",[1028,1552,1553],{"class":1057}," \"",[1028,1555,1556],{"class":1061},"https:\u002F\u002Fjson.schemastore.org\u002Fclaude-code-settings.json",[1028,1558,1547],{"class":1057},[1028,1560,1561],{"class":1057},",\n",[1028,1563,1564,1566,1569,1571,1573],{"class":1030,"line":1045},[1028,1565,1540],{"class":1057},[1028,1567,1568],{"class":1543},"permissions",[1028,1570,1547],{"class":1057},[1028,1572,1550],{"class":1057},[1028,1574,1575],{"class":1057}," {\n",[1028,1577,1578,1581,1585,1587,1589,1591,1593,1595],{"class":1030,"line":1051},[1028,1579,1580],{"class":1057},"    \"",[1028,1582,1584],{"class":1583},"sBMFI","defaultMode",[1028,1586,1547],{"class":1057},[1028,1588,1550],{"class":1057},[1028,1590,1553],{"class":1057},[1028,1592,471],{"class":1061},[1028,1594,1547],{"class":1057},[1028,1596,1561],{"class":1057},[1028,1598,1599,1601,1604,1606,1608],{"class":1030,"line":1071},[1028,1600,1580],{"class":1057},[1028,1602,1603],{"class":1583},"allow",[1028,1605,1547],{"class":1057},[1028,1607,1550],{"class":1057},[1028,1609,1610],{"class":1057}," [\n",[1028,1612,1613,1616,1619,1621],{"class":1030,"line":1076},[1028,1614,1615],{"class":1057},"      \"",[1028,1617,1618],{"class":1061},"Bash(pnpm install)",[1028,1620,1547],{"class":1057},[1028,1622,1561],{"class":1057},[1028,1624,1625,1627,1630,1632],{"class":1030,"line":1083},[1028,1626,1615],{"class":1057},[1028,1628,1629],{"class":1061},"Bash(pnpm dev:*)",[1028,1631,1547],{"class":1057},[1028,1633,1561],{"class":1057},[1028,1635,1636,1638,1641,1643],{"class":1030,"line":1089},[1028,1637,1615],{"class":1057},[1028,1639,1640],{"class":1061},"Bash(pnpm test:*)",[1028,1642,1547],{"class":1057},[1028,1644,1561],{"class":1057},[1028,1646,1647,1649,1652,1654],{"class":1030,"line":1098},[1028,1648,1615],{"class":1057},[1028,1650,1651],{"class":1061},"Bash(pnpm lint:*)",[1028,1653,1547],{"class":1057},[1028,1655,1561],{"class":1057},[1028,1657,1658,1660,1663,1665],{"class":1030,"line":1107},[1028,1659,1615],{"class":1057},[1028,1661,1662],{"class":1061},"Bash(git status)",[1028,1664,1547],{"class":1057},[1028,1666,1561],{"class":1057},[1028,1668,1669,1671,1674,1676],{"class":1030,"line":1116},[1028,1670,1615],{"class":1057},[1028,1672,1673],{"class":1061},"Bash(git diff:*)",[1028,1675,1547],{"class":1057},[1028,1677,1561],{"class":1057},[1028,1679,1680,1682,1685,1687],{"class":1030,"line":1121},[1028,1681,1615],{"class":1057},[1028,1683,1684],{"class":1061},"Bash(git log:*)",[1028,1686,1547],{"class":1057},[1028,1688,1561],{"class":1057},[1028,1690,1692,1694,1697,1699],{"class":1030,"line":1691},13,[1028,1693,1615],{"class":1057},[1028,1695,1696],{"class":1061},"Read(.\u002F**)",[1028,1698,1547],{"class":1057},[1028,1700,1561],{"class":1057},[1028,1702,1704,1706,1709],{"class":1030,"line":1703},14,[1028,1705,1615],{"class":1057},[1028,1707,1708],{"class":1061},"WebFetch(domain:docs.anthropic.com)",[1028,1710,1068],{"class":1057},[1028,1712,1714],{"class":1030,"line":1713},15,[1028,1715,1716],{"class":1057},"    ],\n",[1028,1718,1720,1722,1725,1727,1729],{"class":1030,"line":1719},16,[1028,1721,1580],{"class":1057},[1028,1723,1724],{"class":1583},"deny",[1028,1726,1547],{"class":1057},[1028,1728,1550],{"class":1057},[1028,1730,1610],{"class":1057},[1028,1732,1734,1736,1739,1741],{"class":1030,"line":1733},17,[1028,1735,1615],{"class":1057},[1028,1737,1738],{"class":1061},"Bash(rm -rf *)",[1028,1740,1547],{"class":1057},[1028,1742,1561],{"class":1057},[1028,1744,1746,1748,1751,1753],{"class":1030,"line":1745},18,[1028,1747,1615],{"class":1057},[1028,1749,1750],{"class":1061},"Bash(git push --force*)",[1028,1752,1547],{"class":1057},[1028,1754,1561],{"class":1057},[1028,1756,1758,1760,1763,1765],{"class":1030,"line":1757},19,[1028,1759,1615],{"class":1057},[1028,1761,1762],{"class":1061},"Read(.\u002F.env*)",[1028,1764,1547],{"class":1057},[1028,1766,1561],{"class":1057},[1028,1768,1770,1772,1775],{"class":1030,"line":1769},20,[1028,1771,1615],{"class":1057},[1028,1773,1774],{"class":1061},"Read(.\u002Fsecrets\u002F**)",[1028,1776,1068],{"class":1057},[1028,1778,1780],{"class":1030,"line":1779},21,[1028,1781,1716],{"class":1057},[1028,1783,1785,1787,1790,1792,1794],{"class":1030,"line":1784},22,[1028,1786,1580],{"class":1057},[1028,1788,1789],{"class":1583},"ask",[1028,1791,1547],{"class":1057},[1028,1793,1550],{"class":1057},[1028,1795,1610],{"class":1057},[1028,1797,1799,1801,1804,1806],{"class":1030,"line":1798},23,[1028,1800,1615],{"class":1057},[1028,1802,1803],{"class":1061},"Bash(git push:*)",[1028,1805,1547],{"class":1057},[1028,1807,1561],{"class":1057},[1028,1809,1811,1813,1816],{"class":1030,"line":1810},24,[1028,1812,1615],{"class":1057},[1028,1814,1815],{"class":1061},"Bash(pnpm publish:*)",[1028,1817,1068],{"class":1057},[1028,1819,1821],{"class":1030,"line":1820},25,[1028,1822,1823],{"class":1057},"    ]\n",[1028,1825,1827],{"class":1030,"line":1826},26,[1028,1828,1829],{"class":1057},"  },\n",[1028,1831,1833,1835,1837,1839,1841],{"class":1030,"line":1832},27,[1028,1834,1540],{"class":1057},[1028,1836,1435],{"class":1543},[1028,1838,1547],{"class":1057},[1028,1840,1550],{"class":1057},[1028,1842,1575],{"class":1057},[1028,1844,1846,1848,1851,1853,1855,1857,1860],{"class":1030,"line":1845},28,[1028,1847,1580],{"class":1057},[1028,1849,1850],{"class":1583},"NODE_ENV",[1028,1852,1547],{"class":1057},[1028,1854,1550],{"class":1057},[1028,1856,1553],{"class":1057},[1028,1858,1859],{"class":1061},"development",[1028,1861,1068],{"class":1057},[1028,1863,1865],{"class":1030,"line":1864},29,[1028,1866,1867],{"class":1057},"  }\n",[1028,1869,1871],{"class":1030,"line":1870},30,[1028,1872,1873],{"class":1057},"}\n",[277,1875,1877],{"id":1876},"_43-权限规则语法速查","4.3 权限规则语法速查",[282,1879,1880,1890],{},[285,1881,1882],{},[288,1883,1884,1887],{},[291,1885,1886],{},"写法",[291,1888,1889],{},"含义",[301,1891,1892,1902,1912,1925,1939,1953,1963,1973],{},[288,1893,1894,1899],{},[306,1895,1896],{},[207,1897,1898],{},"\"Read\"",[306,1900,1901],{},"允许 \u002F 拒绝整个 Read 工具",[288,1903,1904,1909],{},[306,1905,1906],{},[207,1907,1908],{},"\"Bash(pnpm test)\"",[306,1910,1911],{},"仅允许这一条精确命令",[288,1913,1914,1918],{},[306,1915,1916],{},[207,1917,1368],{},[306,1919,1920,1921,1924],{},"允许 ",[207,1922,1923],{},"pnpm test"," 后接任意参数",[288,1926,1927,1932],{},[306,1928,1929],{},[207,1930,1931],{},"\"Bash(pnpm:*)\"",[306,1933,1934,1935,1938],{},"允许所有 ",[207,1936,1937],{},"pnpm"," 子命令",[288,1940,1941,1946],{},[306,1942,1943],{},[207,1944,1945],{},"\"Read(.\u002Fsrc\u002F**)\"",[306,1947,1948,1949,1952],{},"仅允许读 ",[207,1950,1951],{},".\u002Fsrc"," 下文件",[288,1954,1955,1960],{},[306,1956,1957],{},[207,1958,1959],{},"\"WebFetch(domain:example.com)\"",[306,1961,1962],{},"仅允许抓取指定域名",[288,1964,1965,1970],{},[306,1966,1967],{},[207,1968,1969],{},"\"mcp__github\"",[306,1971,1972],{},"允许某 MCP server 的所有工具",[288,1974,1975,1980],{},[306,1976,1977],{},[207,1978,1979],{},"\"mcp__github__create_issue\"",[306,1981,1982],{},"允许某 MCP server 的具体工具",[262,1984],{},[265,1986,1988],{"id":1987},"五hooks-事件类型","五、Hooks 事件类型",[198,1990,1991,1992,1995],{},"Hooks 是「在特定生命周期事件触发时由 Claude Code 主进程执行的本地命令」。它由 ",[202,1993,1994],{},"harness（外部进程）执行","，不是由 Claude 自己执行 —— 因此可用于强制约束模型行为（例如拦截危险命令、统一格式化、播放提示音）。",[277,1997,1999],{"id":1998},"_51-事件列表","5.1 事件列表",[282,2001,2002,2015],{},[285,2003,2004],{},[288,2005,2006,2009,2012],{},[291,2007,2008],{},"事件",[291,2010,2011],{},"触发时机",[291,2013,2014],{},"常见用途",[301,2016,2017,2029,2042,2055,2068,2081,2094,2107,2120],{},[288,2018,2019,2023,2026],{},[306,2020,2021],{},[207,2022,234],{},[306,2024,2025],{},"工具调用前",[306,2027,2028],{},"拦截危险命令、注入 context",[288,2030,2031,2036,2039],{},[306,2032,2033],{},[207,2034,2035],{},"PostToolUse",[306,2037,2038],{},"工具调用后",[306,2040,2041],{},"自动 lint \u002F format、写日志",[288,2043,2044,2049,2052],{},[306,2045,2046],{},[207,2047,2048],{},"UserPromptSubmit",[306,2050,2051],{},"用户提交一条消息后、模型处理前",[306,2053,2054],{},"注入项目状态、过滤敏感词",[288,2056,2057,2062,2065],{},[306,2058,2059],{},[207,2060,2061],{},"SessionStart",[306,2063,2064],{},"会话开始时",[306,2066,2067],{},"加载额外 context、播放欢迎语",[288,2069,2070,2075,2078],{},[306,2071,2072],{},[207,2073,2074],{},"SessionEnd",[306,2076,2077],{},"会话结束时",[306,2079,2080],{},"备份记忆、统计 token",[288,2082,2083,2088,2091],{},[306,2084,2085],{},[207,2086,2087],{},"Stop",[306,2089,2090],{},"主 Agent 停止响应时",[306,2092,2093],{},"通知 \u002F 提醒",[288,2095,2096,2101,2104],{},[306,2097,2098],{},[207,2099,2100],{},"SubagentStop",[306,2102,2103],{},"子 Agent 停止时",[306,2105,2106],{},"子任务追踪",[288,2108,2109,2114,2117],{},[306,2110,2111],{},[207,2112,2113],{},"Notification",[306,2115,2116],{},"系统通知（如等待输入超时）",[306,2118,2119],{},"桌面提醒",[288,2121,2122,2127,2132],{},[306,2123,2124],{},[207,2125,2126],{},"PreCompact",[306,2128,2129,2131],{},[207,2130,705],{}," 触发前",[306,2133,2134],{},"自定义压缩策略、保留关键信息",[277,2136,2138],{"id":2137},"_52-hook-配置示例","5.2 Hook 配置示例",[1019,2140,2142],{"className":1526,"code":2141,"language":1528,"meta":1024,"style":1024},"{\n  \"hooks\": {\n    \"PreToolUse\": [\n      {\n        \"matcher\": \"Bash\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"node ~\u002F.claude\u002Fhooks\u002Fguard-rm.js\",\n            \"timeout\": 5000\n          }\n        ]\n      }\n    ],\n    \"PostToolUse\": [\n      {\n        \"matcher\": \"Edit|Write\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"pnpm exec prettier --write \\\"$CLAUDE_FILE_PATHS\\\"\"\n          }\n        ]\n      }\n    ],\n    \"UserPromptSubmit\": [\n      {\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"echo \\\"[$(date +%H:%M)] $(git rev-parse --short HEAD)\\\"\"\n          }\n        ]\n      }\n    ],\n    \"Stop\": [\n      {\n        \"hooks\": [\n          { \"type\": \"command\", \"command\": \"afplay \u002FSystem\u002FLibrary\u002FSounds\u002FGlass.aiff\" }\n        ]\n      }\n    ]\n  }\n}\n",[207,2143,2144,2148,2160,2172,2177,2199,2211,2216,2238,2257,2271,2276,2281,2286,2290,2302,2306,2325,2337,2341,2359,2384,2388,2392,2396,2400,2412,2416,2428,2432,2450,2475,2480,2485,2490,2495,2508,2513,2526,2567,2572,2577,2582,2587],{"__ignoreMap":1024},[1028,2145,2146],{"class":1030,"line":1031},[1028,2147,1535],{"class":1057},[1028,2149,2150,2152,2154,2156,2158],{"class":1030,"line":1038},[1028,2151,1540],{"class":1057},[1028,2153,231],{"class":1543},[1028,2155,1547],{"class":1057},[1028,2157,1550],{"class":1057},[1028,2159,1575],{"class":1057},[1028,2161,2162,2164,2166,2168,2170],{"class":1030,"line":1045},[1028,2163,1580],{"class":1057},[1028,2165,234],{"class":1583},[1028,2167,1547],{"class":1057},[1028,2169,1550],{"class":1057},[1028,2171,1610],{"class":1057},[1028,2173,2174],{"class":1030,"line":1051},[1028,2175,2176],{"class":1057},"      {\n",[1028,2178,2179,2182,2186,2188,2190,2192,2195,2197],{"class":1030,"line":1071},[1028,2180,2181],{"class":1057},"        \"",[1028,2183,2185],{"class":2184},"sbssI","matcher",[1028,2187,1547],{"class":1057},[1028,2189,1550],{"class":1057},[1028,2191,1553],{"class":1057},[1028,2193,2194],{"class":1061},"Bash",[1028,2196,1547],{"class":1057},[1028,2198,1561],{"class":1057},[1028,2200,2201,2203,2205,2207,2209],{"class":1030,"line":1076},[1028,2202,2181],{"class":1057},[1028,2204,231],{"class":2184},[1028,2206,1547],{"class":1057},[1028,2208,1550],{"class":1057},[1028,2210,1610],{"class":1057},[1028,2212,2213],{"class":1030,"line":1083},[1028,2214,2215],{"class":1057},"          {\n",[1028,2217,2218,2221,2225,2227,2229,2231,2234,2236],{"class":1030,"line":1089},[1028,2219,2220],{"class":1057},"            \"",[1028,2222,2224],{"class":2223},"swJcz","type",[1028,2226,1547],{"class":1057},[1028,2228,1550],{"class":1057},[1028,2230,1553],{"class":1057},[1028,2232,2233],{"class":1061},"command",[1028,2235,1547],{"class":1057},[1028,2237,1561],{"class":1057},[1028,2239,2240,2242,2244,2246,2248,2250,2253,2255],{"class":1030,"line":1098},[1028,2241,2220],{"class":1057},[1028,2243,2233],{"class":2223},[1028,2245,1547],{"class":1057},[1028,2247,1550],{"class":1057},[1028,2249,1553],{"class":1057},[1028,2251,2252],{"class":1061},"node ~\u002F.claude\u002Fhooks\u002Fguard-rm.js",[1028,2254,1547],{"class":1057},[1028,2256,1561],{"class":1057},[1028,2258,2259,2261,2264,2266,2268],{"class":1030,"line":1107},[1028,2260,2220],{"class":1057},[1028,2262,2263],{"class":2223},"timeout",[1028,2265,1547],{"class":1057},[1028,2267,1550],{"class":1057},[1028,2269,2270],{"class":2184}," 5000\n",[1028,2272,2273],{"class":1030,"line":1116},[1028,2274,2275],{"class":1057},"          }\n",[1028,2277,2278],{"class":1030,"line":1121},[1028,2279,2280],{"class":1057},"        ]\n",[1028,2282,2283],{"class":1030,"line":1691},[1028,2284,2285],{"class":1057},"      }\n",[1028,2287,2288],{"class":1030,"line":1703},[1028,2289,1716],{"class":1057},[1028,2291,2292,2294,2296,2298,2300],{"class":1030,"line":1713},[1028,2293,1580],{"class":1057},[1028,2295,2035],{"class":1583},[1028,2297,1547],{"class":1057},[1028,2299,1550],{"class":1057},[1028,2301,1610],{"class":1057},[1028,2303,2304],{"class":1030,"line":1719},[1028,2305,2176],{"class":1057},[1028,2307,2308,2310,2312,2314,2316,2318,2321,2323],{"class":1030,"line":1733},[1028,2309,2181],{"class":1057},[1028,2311,2185],{"class":2184},[1028,2313,1547],{"class":1057},[1028,2315,1550],{"class":1057},[1028,2317,1553],{"class":1057},[1028,2319,2320],{"class":1061},"Edit|Write",[1028,2322,1547],{"class":1057},[1028,2324,1561],{"class":1057},[1028,2326,2327,2329,2331,2333,2335],{"class":1030,"line":1745},[1028,2328,2181],{"class":1057},[1028,2330,231],{"class":2184},[1028,2332,1547],{"class":1057},[1028,2334,1550],{"class":1057},[1028,2336,1610],{"class":1057},[1028,2338,2339],{"class":1030,"line":1757},[1028,2340,2215],{"class":1057},[1028,2342,2343,2345,2347,2349,2351,2353,2355,2357],{"class":1030,"line":1769},[1028,2344,2220],{"class":1057},[1028,2346,2224],{"class":2223},[1028,2348,1547],{"class":1057},[1028,2350,1550],{"class":1057},[1028,2352,1553],{"class":1057},[1028,2354,2233],{"class":1061},[1028,2356,1547],{"class":1057},[1028,2358,1561],{"class":1057},[1028,2360,2361,2363,2365,2367,2369,2371,2374,2377,2380,2382],{"class":1030,"line":1779},[1028,2362,2220],{"class":1057},[1028,2364,2233],{"class":2223},[1028,2366,1547],{"class":1057},[1028,2368,1550],{"class":1057},[1028,2370,1553],{"class":1057},[1028,2372,2373],{"class":1061},"pnpm exec prettier --write ",[1028,2375,2376],{"class":1041},"\\\"",[1028,2378,2379],{"class":1061},"$CLAUDE_FILE_PATHS",[1028,2381,2376],{"class":1041},[1028,2383,1068],{"class":1057},[1028,2385,2386],{"class":1030,"line":1784},[1028,2387,2275],{"class":1057},[1028,2389,2390],{"class":1030,"line":1798},[1028,2391,2280],{"class":1057},[1028,2393,2394],{"class":1030,"line":1810},[1028,2395,2285],{"class":1057},[1028,2397,2398],{"class":1030,"line":1820},[1028,2399,1716],{"class":1057},[1028,2401,2402,2404,2406,2408,2410],{"class":1030,"line":1826},[1028,2403,1580],{"class":1057},[1028,2405,2048],{"class":1583},[1028,2407,1547],{"class":1057},[1028,2409,1550],{"class":1057},[1028,2411,1610],{"class":1057},[1028,2413,2414],{"class":1030,"line":1832},[1028,2415,2176],{"class":1057},[1028,2417,2418,2420,2422,2424,2426],{"class":1030,"line":1845},[1028,2419,2181],{"class":1057},[1028,2421,231],{"class":2184},[1028,2423,1547],{"class":1057},[1028,2425,1550],{"class":1057},[1028,2427,1610],{"class":1057},[1028,2429,2430],{"class":1030,"line":1864},[1028,2431,2215],{"class":1057},[1028,2433,2434,2436,2438,2440,2442,2444,2446,2448],{"class":1030,"line":1870},[1028,2435,2220],{"class":1057},[1028,2437,2224],{"class":2223},[1028,2439,1547],{"class":1057},[1028,2441,1550],{"class":1057},[1028,2443,1553],{"class":1057},[1028,2445,2233],{"class":1061},[1028,2447,1547],{"class":1057},[1028,2449,1561],{"class":1057},[1028,2451,2453,2455,2457,2459,2461,2463,2466,2468,2471,2473],{"class":1030,"line":2452},31,[1028,2454,2220],{"class":1057},[1028,2456,2233],{"class":2223},[1028,2458,1547],{"class":1057},[1028,2460,1550],{"class":1057},[1028,2462,1553],{"class":1057},[1028,2464,2465],{"class":1061},"echo ",[1028,2467,2376],{"class":1041},[1028,2469,2470],{"class":1061},"[$(date +%H:%M)] $(git rev-parse --short HEAD)",[1028,2472,2376],{"class":1041},[1028,2474,1068],{"class":1057},[1028,2476,2478],{"class":1030,"line":2477},32,[1028,2479,2275],{"class":1057},[1028,2481,2483],{"class":1030,"line":2482},33,[1028,2484,2280],{"class":1057},[1028,2486,2488],{"class":1030,"line":2487},34,[1028,2489,2285],{"class":1057},[1028,2491,2493],{"class":1030,"line":2492},35,[1028,2494,1716],{"class":1057},[1028,2496,2498,2500,2502,2504,2506],{"class":1030,"line":2497},36,[1028,2499,1580],{"class":1057},[1028,2501,2087],{"class":1583},[1028,2503,1547],{"class":1057},[1028,2505,1550],{"class":1057},[1028,2507,1610],{"class":1057},[1028,2509,2511],{"class":1030,"line":2510},37,[1028,2512,2176],{"class":1057},[1028,2514,2516,2518,2520,2522,2524],{"class":1030,"line":2515},38,[1028,2517,2181],{"class":1057},[1028,2519,231],{"class":2184},[1028,2521,1547],{"class":1057},[1028,2523,1550],{"class":1057},[1028,2525,1610],{"class":1057},[1028,2527,2529,2532,2534,2536,2538,2540,2542,2544,2546,2549,2551,2553,2555,2557,2559,2562,2564],{"class":1030,"line":2528},39,[1028,2530,2531],{"class":1057},"          {",[1028,2533,1553],{"class":1057},[1028,2535,2224],{"class":2223},[1028,2537,1547],{"class":1057},[1028,2539,1550],{"class":1057},[1028,2541,1553],{"class":1057},[1028,2543,2233],{"class":1061},[1028,2545,1547],{"class":1057},[1028,2547,2548],{"class":1057},",",[1028,2550,1553],{"class":1057},[1028,2552,2233],{"class":2223},[1028,2554,1547],{"class":1057},[1028,2556,1550],{"class":1057},[1028,2558,1553],{"class":1057},[1028,2560,2561],{"class":1061},"afplay \u002FSystem\u002FLibrary\u002FSounds\u002FGlass.aiff",[1028,2563,1547],{"class":1057},[1028,2565,2566],{"class":1057}," }\n",[1028,2568,2570],{"class":1030,"line":2569},40,[1028,2571,2280],{"class":1057},[1028,2573,2575],{"class":1030,"line":2574},41,[1028,2576,2285],{"class":1057},[1028,2578,2580],{"class":1030,"line":2579},42,[1028,2581,1823],{"class":1057},[1028,2583,2585],{"class":1030,"line":2584},43,[1028,2586,1867],{"class":1057},[1028,2588,2590],{"class":1030,"line":2589},44,[1028,2591,1873],{"class":1057},[277,2593,2595],{"id":2594},"_53-hook-退出码语义","5.3 Hook 退出码语义",[282,2597,2598,2607],{},[285,2599,2600],{},[288,2601,2602,2605],{},[291,2603,2604],{},"退出码",[291,2606,1889],{},[301,2608,2609,2619,2632],{},[288,2610,2611,2616],{},[306,2612,2613],{},[207,2614,2615],{},"0",[306,2617,2618],{},"通过 \u002F 成功；stdout 内容会作为 context 注入（部分事件）",[288,2620,2621,2626],{},[306,2622,2623],{},[207,2624,2625],{},"2",[306,2627,2628,2631],{},[202,2629,2630],{},"阻塞","该工具调用；stderr 作为反馈给模型",[288,2633,2634,2637],{},[306,2635,2636],{},"其他非 0",[306,2638,2639],{},"错误，记录但不阻塞（具体取决于事件类型）",[198,2641,2642,2643,2646],{},"也可以通过 stdout 输出 JSON 实现更细粒度的控制（如 ",[207,2644,2645],{},"{\"decision\": \"block\", \"reason\": \"...\"}","）。",[277,2648,2650],{"id":2649},"_54-hook-中常用环境变量-输入","5.4 Hook 中常用环境变量 \u002F 输入",[246,2652,2653,2659,2665,2674],{},[249,2654,2655,2658],{},[207,2656,2657],{},"CLAUDE_PROJECT_DIR","：项目根目录",[249,2660,2661,2664],{},[207,2662,2663],{},"CLAUDE_FILE_PATHS","：当前操作涉及的文件路径",[249,2666,2667,220,2670,2673],{},[207,2668,2669],{},"CLAUDE_TOOL_NAME",[207,2671,2672],{},"CLAUDE_TOOL_INPUT","：工具元信息",[249,2675,2676,2677,228,2680,228,2683,2686],{},"stdin：完整的 JSON payload，包含 ",[207,2678,2679],{},"tool_name",[207,2681,2682],{},"tool_input",[207,2684,2685],{},"session_id"," 等",[262,2688],{},[265,2690,2692],{"id":2691},"六claudemd-推荐结构","六、CLAUDE.md 推荐结构",[198,2694,2695,2697,2698,2701],{},[207,2696,108],{}," 是「Claude 进入项目时第一份必读的文档」。建议放在项目根，并保持精简（控制在 200 行内，复杂内容拆到子文档并通过 ",[207,2699,2700],{},"@path\u002Fto\u002Ffile.md"," 引入）。",[277,2703,2705],{"id":2704},"_61-标准模板","6.1 标准模板",[1019,2707,2709],{"className":1021,"code":2708,"language":1023,"meta":1024,"style":1024},"# 项目名\n\n## 项目简介\n1-2 段说明项目目标、技术栈、核心业务名词。\n\n## 技术栈\n- 语言：TypeScript 5.x\n- 框架：Nuxt 4 \u002F Vue 3\n- 数据库：PostgreSQL + Drizzle ORM\n- 包管理：pnpm（**禁止使用 npm\u002Fyarn**）\n\n## 目录约定\n- `apps\u002Fweb` —— 前端应用\n- `packages\u002Fui` —— 共享 UI 组件\n- `packages\u002Ftypes` —— 跨端 TS 类型\n\n## 命令\n- `pnpm dev:web` —— 启动 Web 开发服务器\n- `pnpm test` —— 运行所有测试\n- `pnpm lint` —— Lint + typecheck\n\n## 编码规范\n- 严格 TS：禁止 `any`、禁止 `\u002F\u002F @ts-ignore`\n- 命名：组件 PascalCase，文件 kebab-case\n- 测试：每个 service 必须有单元测试\n\n## 工作流\n- 分支风格：trunk-based\n- Commit message：中文，祈使语气\n- PR：先 self-review，再请求他人\n\n## 上下文外部链接\n@docs\u002Farchitecture.md\n@docs\u002Fglossary.md\n",[207,2710,2711,2719,2723,2731,2736,2740,2747,2755,2762,2769,2789,2793,2800,2816,2830,2844,2848,2855,2869,2882,2896,2900,2907,2932,2939,2946,2950,2957,2964,2971,2978,2982,2989,2994],{"__ignoreMap":1024},[1028,2712,2713,2716],{"class":1030,"line":1031},[1028,2714,2715],{"class":1057},"# ",[1028,2717,2718],{"class":1583},"项目名\n",[1028,2720,2721],{"class":1030,"line":1038},[1028,2722,1080],{"emptyLinePlaceholder":1079},[1028,2724,2725,2728],{"class":1030,"line":1045},[1028,2726,2727],{"class":1057},"## ",[1028,2729,2730],{"class":1583},"项目简介\n",[1028,2732,2733],{"class":1030,"line":1051},[1028,2734,2735],{"class":1041},"1-2 段说明项目目标、技术栈、核心业务名词。\n",[1028,2737,2738],{"class":1030,"line":1071},[1028,2739,1080],{"emptyLinePlaceholder":1079},[1028,2741,2742,2744],{"class":1030,"line":1076},[1028,2743,2727],{"class":1057},[1028,2745,2746],{"class":1583},"技术栈\n",[1028,2748,2749,2752],{"class":1030,"line":1083},[1028,2750,2751],{"class":1057},"-",[1028,2753,2754],{"class":1041}," 语言：TypeScript 5.x\n",[1028,2756,2757,2759],{"class":1030,"line":1089},[1028,2758,2751],{"class":1057},[1028,2760,2761],{"class":1041}," 框架：Nuxt 4 \u002F Vue 3\n",[1028,2763,2764,2766],{"class":1030,"line":1098},[1028,2765,2751],{"class":1057},[1028,2767,2768],{"class":1041}," 数据库：PostgreSQL + Drizzle ORM\n",[1028,2770,2771,2773,2776,2780,2784,2786],{"class":1030,"line":1107},[1028,2772,2751],{"class":1057},[1028,2774,2775],{"class":1041}," 包管理：pnpm（",[1028,2777,2779],{"class":2778},"sHepR","**",[1028,2781,2783],{"class":2782},"so75L","禁止使用 npm\u002Fyarn",[1028,2785,2779],{"class":2778},[1028,2787,2788],{"class":1041},"）\n",[1028,2790,2791],{"class":1030,"line":1116},[1028,2792,1080],{"emptyLinePlaceholder":1079},[1028,2794,2795,2797],{"class":1030,"line":1121},[1028,2796,2727],{"class":1057},[1028,2798,2799],{"class":1583},"目录约定\n",[1028,2801,2802,2804,2807,2810,2813],{"class":1030,"line":1691},[1028,2803,2751],{"class":1057},[1028,2805,2806],{"class":1057}," `",[1028,2808,2809],{"class":1061},"apps\u002Fweb",[1028,2811,2812],{"class":1057},"`",[1028,2814,2815],{"class":1041}," —— 前端应用\n",[1028,2817,2818,2820,2822,2825,2827],{"class":1030,"line":1703},[1028,2819,2751],{"class":1057},[1028,2821,2806],{"class":1057},[1028,2823,2824],{"class":1061},"packages\u002Fui",[1028,2826,2812],{"class":1057},[1028,2828,2829],{"class":1041}," —— 共享 UI 组件\n",[1028,2831,2832,2834,2836,2839,2841],{"class":1030,"line":1713},[1028,2833,2751],{"class":1057},[1028,2835,2806],{"class":1057},[1028,2837,2838],{"class":1061},"packages\u002Ftypes",[1028,2840,2812],{"class":1057},[1028,2842,2843],{"class":1041}," —— 跨端 TS 类型\n",[1028,2845,2846],{"class":1030,"line":1719},[1028,2847,1080],{"emptyLinePlaceholder":1079},[1028,2849,2850,2852],{"class":1030,"line":1733},[1028,2851,2727],{"class":1057},[1028,2853,2854],{"class":1583},"命令\n",[1028,2856,2857,2859,2861,2864,2866],{"class":1030,"line":1745},[1028,2858,2751],{"class":1057},[1028,2860,2806],{"class":1057},[1028,2862,2863],{"class":1061},"pnpm dev:web",[1028,2865,2812],{"class":1057},[1028,2867,2868],{"class":1041}," —— 启动 Web 开发服务器\n",[1028,2870,2871,2873,2875,2877,2879],{"class":1030,"line":1757},[1028,2872,2751],{"class":1057},[1028,2874,2806],{"class":1057},[1028,2876,1923],{"class":1061},[1028,2878,2812],{"class":1057},[1028,2880,2881],{"class":1041}," —— 运行所有测试\n",[1028,2883,2884,2886,2888,2891,2893],{"class":1030,"line":1769},[1028,2885,2751],{"class":1057},[1028,2887,2806],{"class":1057},[1028,2889,2890],{"class":1061},"pnpm lint",[1028,2892,2812],{"class":1057},[1028,2894,2895],{"class":1041}," —— Lint + typecheck\n",[1028,2897,2898],{"class":1030,"line":1779},[1028,2899,1080],{"emptyLinePlaceholder":1079},[1028,2901,2902,2904],{"class":1030,"line":1784},[1028,2903,2727],{"class":1057},[1028,2905,2906],{"class":1583},"编码规范\n",[1028,2908,2909,2911,2914,2916,2919,2921,2924,2926,2929],{"class":1030,"line":1798},[1028,2910,2751],{"class":1057},[1028,2912,2913],{"class":1041}," 严格 TS：禁止 ",[1028,2915,2812],{"class":1057},[1028,2917,2918],{"class":1061},"any",[1028,2920,2812],{"class":1057},[1028,2922,2923],{"class":1041},"、禁止 ",[1028,2925,2812],{"class":1057},[1028,2927,2928],{"class":1061},"\u002F\u002F @ts-ignore",[1028,2930,2931],{"class":1057},"`\n",[1028,2933,2934,2936],{"class":1030,"line":1810},[1028,2935,2751],{"class":1057},[1028,2937,2938],{"class":1041}," 命名：组件 PascalCase，文件 kebab-case\n",[1028,2940,2941,2943],{"class":1030,"line":1820},[1028,2942,2751],{"class":1057},[1028,2944,2945],{"class":1041}," 测试：每个 service 必须有单元测试\n",[1028,2947,2948],{"class":1030,"line":1826},[1028,2949,1080],{"emptyLinePlaceholder":1079},[1028,2951,2952,2954],{"class":1030,"line":1832},[1028,2953,2727],{"class":1057},[1028,2955,2956],{"class":1583},"工作流\n",[1028,2958,2959,2961],{"class":1030,"line":1845},[1028,2960,2751],{"class":1057},[1028,2962,2963],{"class":1041}," 分支风格：trunk-based\n",[1028,2965,2966,2968],{"class":1030,"line":1864},[1028,2967,2751],{"class":1057},[1028,2969,2970],{"class":1041}," Commit message：中文，祈使语气\n",[1028,2972,2973,2975],{"class":1030,"line":1870},[1028,2974,2751],{"class":1057},[1028,2976,2977],{"class":1041}," PR：先 self-review，再请求他人\n",[1028,2979,2980],{"class":1030,"line":2452},[1028,2981,1080],{"emptyLinePlaceholder":1079},[1028,2983,2984,2986],{"class":1030,"line":2477},[1028,2985,2727],{"class":1057},[1028,2987,2988],{"class":1583},"上下文外部链接\n",[1028,2990,2991],{"class":1030,"line":2482},[1028,2992,2993],{"class":1041},"@docs\u002Farchitecture.md\n",[1028,2995,2996],{"class":1030,"line":2487},[1028,2997,2998],{"class":1041},"@docs\u002Fglossary.md\n",[277,3000,3002],{"id":3001},"_62-字段建议","6.2 字段建议",[282,3004,3005,3017],{},[285,3006,3007],{},[288,3008,3009,3011,3014],{},[291,3010,1346],{},[291,3012,3013],{},"是否必须",[291,3015,3016],{},"说明",[301,3018,3019,3030,3039,3050,3060],{},[288,3020,3021,3024,3027],{},[306,3022,3023],{},"技术栈",[306,3025,3026],{},"强烈建议",[306,3028,3029],{},"让 Claude 默认输出符合栈的代码",[288,3031,3032,3034,3036],{},[306,3033,293],{},[306,3035,3026],{},[306,3037,3038],{},"自测 \u002F 启动 \u002F 部署的命令",[288,3040,3041,3044,3047],{},[306,3042,3043],{},"编码规范",[306,3045,3046],{},"推荐",[306,3048,3049],{},"命名、注释、错误处理偏好",[288,3051,3052,3055,3057],{},[306,3053,3054],{},"工作流",[306,3056,3046],{},[306,3058,3059],{},"分支、提交、评审约定",[288,3061,3062,3065,3067],{},[306,3063,3064],{},"黑名单",[306,3066,3046],{},[306,3068,3069],{},"「禁止做的事」比「鼓励做的事」更有效",[277,3071,3073],{"id":3072},"_63-记忆分层","6.3 记忆分层",[246,3075,3076,3082,3088,3094],{},[249,3077,3078,3079],{},"项目共享：",[207,3080,3081],{},"\u003Cproject>\u002FCLAUDE.md",[249,3083,3084,3085],{},"项目本地（不入库）：",[207,3086,3087],{},"\u003Cproject>\u002FCLAUDE.local.md",[249,3089,3090,3091],{},"用户全局：",[207,3092,3093],{},"~\u002F.claude\u002FCLAUDE.md",[249,3095,3096,3097,3099],{},"会话临时：用 ",[207,3098,1265],{}," 开头实时追加",[262,3101],{},[265,3103,3105],{"id":3104},"七skills-目录结构","七、Skills 目录结构",[198,3107,3108],{},"Skills 是「带元数据的可复用过程性知识 + 资源」。Claude 在需要时按需加载，不污染常驻上下文。",[277,3110,3112],{"id":3111},"_71-标准目录","7.1 标准目录",[1019,3114,3119],{"className":3115,"code":3117,"language":3118},[3116],"language-text",".claude\u002Fskills\u002F\u003Cskill-name>\u002F\n├── SKILL.md           # 必须，含 frontmatter 元数据\n├── references\u002F        # 可选，详细参考资料\n│   └── api.md\n├── scripts\u002F           # 可选，可执行脚本\n│   └── run.sh\n└── assets\u002F            # 可选，模板 \u002F 静态资源\n    └── template.html\n","text",[207,3120,3117],{"__ignoreMap":1024},[277,3122,3124],{"id":3123},"_72-skillmd-模板","7.2 SKILL.md 模板",[1019,3126,3128],{"className":1021,"code":3127,"language":1023,"meta":1024,"style":1024},"---\nname: changelog-writer\ndescription: 当用户要求\"写 changelog\"\"更新 CHANGELOG\"或在合并 PR 后整理变更日志时使用。基于 git log 与 PR 描述生成符合 Keep a Changelog 规范的中文条目。\n---\n\n# Changelog Writer\n\n## 何时触发\n- 用户说\"写 changelog\"\"更新版本说明\"\"整理 release notes\"\n- 合并 PR 后，用户希望沉淀对外版本说明\n\n## 步骤\n1. 询问目标版本号（语义化版本）\n2. 从 `git log \u003Clast-tag>..HEAD` 提取提交\n3. 按 Added \u002F Changed \u002F Fixed \u002F Removed 分类\n4. 写入 `CHANGELOG.md` 顶部，保留既有内容\n\n## 规范\n- 中文为主，技术名词保留英文\n- 每条 ≤ 1 行，必要时附 PR 链接\n- 用户视角而非实现视角\n\n## 反例\n- 「重构 user service」← 实现视角，禁止\n- 「登录失败时显示更明确的错误信息」← 用户视角，✅\n",[207,3129,3130,3134,3144,3154,3158,3162,3169,3173,3180,3187,3194,3198,3205,3212,3229,3236,3254,3258,3265,3272,3279,3286,3290,3297,3304],{"__ignoreMap":1024},[1028,3131,3132],{"class":1030,"line":1031},[1028,3133,1042],{"class":1057},[1028,3135,3136,3139,3141],{"class":1030,"line":1038},[1028,3137,3138],{"class":2223},"name",[1028,3140,1550],{"class":1057},[1028,3142,3143],{"class":1061}," changelog-writer\n",[1028,3145,3146,3149,3151],{"class":1030,"line":1045},[1028,3147,3148],{"class":2223},"description",[1028,3150,1550],{"class":1057},[1028,3152,3153],{"class":1061}," 当用户要求\"写 changelog\"\"更新 CHANGELOG\"或在合并 PR 后整理变更日志时使用。基于 git log 与 PR 描述生成符合 Keep a Changelog 规范的中文条目。\n",[1028,3155,3156],{"class":1030,"line":1051},[1028,3157,1042],{"class":1057},[1028,3159,3160],{"class":1030,"line":1071},[1028,3161,1080],{"emptyLinePlaceholder":1079},[1028,3163,3164,3166],{"class":1030,"line":1076},[1028,3165,2715],{"class":1057},[1028,3167,3168],{"class":1583},"Changelog Writer\n",[1028,3170,3171],{"class":1030,"line":1083},[1028,3172,1080],{"emptyLinePlaceholder":1079},[1028,3174,3175,3177],{"class":1030,"line":1089},[1028,3176,2727],{"class":1057},[1028,3178,3179],{"class":1583},"何时触发\n",[1028,3181,3182,3184],{"class":1030,"line":1098},[1028,3183,2751],{"class":1057},[1028,3185,3186],{"class":1041}," 用户说\"写 changelog\"\"更新版本说明\"\"整理 release notes\"\n",[1028,3188,3189,3191],{"class":1030,"line":1107},[1028,3190,2751],{"class":1057},[1028,3192,3193],{"class":1041}," 合并 PR 后，用户希望沉淀对外版本说明\n",[1028,3195,3196],{"class":1030,"line":1116},[1028,3197,1080],{"emptyLinePlaceholder":1079},[1028,3199,3200,3202],{"class":1030,"line":1121},[1028,3201,2727],{"class":1057},[1028,3203,3204],{"class":1583},"步骤\n",[1028,3206,3207,3209],{"class":1030,"line":1691},[1028,3208,1092],{"class":1057},[1028,3210,3211],{"class":1041}," 询问目标版本号（语义化版本）\n",[1028,3213,3214,3216,3219,3221,3224,3226],{"class":1030,"line":1703},[1028,3215,1101],{"class":1057},[1028,3217,3218],{"class":1041}," 从 ",[1028,3220,2812],{"class":1057},[1028,3222,3223],{"class":1061},"git log \u003Clast-tag>..HEAD",[1028,3225,2812],{"class":1057},[1028,3227,3228],{"class":1041}," 提取提交\n",[1028,3230,3231,3233],{"class":1030,"line":1713},[1028,3232,1110],{"class":1057},[1028,3234,3235],{"class":1041}," 按 Added \u002F Changed \u002F Fixed \u002F Removed 分类\n",[1028,3237,3238,3241,3244,3246,3249,3251],{"class":1030,"line":1719},[1028,3239,3240],{"class":1057},"4.",[1028,3242,3243],{"class":1041}," 写入 ",[1028,3245,2812],{"class":1057},[1028,3247,3248],{"class":1061},"CHANGELOG.md",[1028,3250,2812],{"class":1057},[1028,3252,3253],{"class":1041}," 顶部，保留既有内容\n",[1028,3255,3256],{"class":1030,"line":1733},[1028,3257,1080],{"emptyLinePlaceholder":1079},[1028,3259,3260,3262],{"class":1030,"line":1745},[1028,3261,2727],{"class":1057},[1028,3263,3264],{"class":1583},"规范\n",[1028,3266,3267,3269],{"class":1030,"line":1757},[1028,3268,2751],{"class":1057},[1028,3270,3271],{"class":1041}," 中文为主，技术名词保留英文\n",[1028,3273,3274,3276],{"class":1030,"line":1769},[1028,3275,2751],{"class":1057},[1028,3277,3278],{"class":1041}," 每条 ≤ 1 行，必要时附 PR 链接\n",[1028,3280,3281,3283],{"class":1030,"line":1779},[1028,3282,2751],{"class":1057},[1028,3284,3285],{"class":1041}," 用户视角而非实现视角\n",[1028,3287,3288],{"class":1030,"line":1784},[1028,3289,1080],{"emptyLinePlaceholder":1079},[1028,3291,3292,3294],{"class":1030,"line":1798},[1028,3293,2727],{"class":1057},[1028,3295,3296],{"class":1583},"反例\n",[1028,3298,3299,3301],{"class":1030,"line":1810},[1028,3300,2751],{"class":1057},[1028,3302,3303],{"class":1041}," 「重构 user service」← 实现视角，禁止\n",[1028,3305,3306,3308],{"class":1030,"line":1820},[1028,3307,2751],{"class":1057},[1028,3309,3310],{"class":1041}," 「登录失败时显示更明确的错误信息」← 用户视角，✅\n",[277,3312,3314],{"id":3313},"_73-触发要点","7.3 触发要点",[246,3316,3317,3326,3329],{},[249,3318,3319,3321,3322,3325],{},[207,3320,3148],{}," 必须",[202,3323,3324],{},"写明触发条件","（动词 + 场景），Claude 通过它决定是否激活。",[249,3327,3328],{},"Skill 的「正文」只在被激活后才注入上下文，因此可以写得详细。",[249,3330,3331,3332,3335,3336,3339],{},"项目级 Skill：",[207,3333,3334],{},"\u003Cproject>\u002F.claude\u002Fskills\u002F","；用户级：",[207,3337,3338],{},"~\u002F.claude\u002Fskills\u002F","。",[262,3341],{},[265,3343,3345],{"id":3344},"八mcp-配置速查","八、MCP 配置速查",[198,3347,3348],{},"MCP（Model Context Protocol）是 Claude Code 接入「外部工具 \u002F 数据源」的统一协议。常见 MCP server 包括：文件系统、Git、数据库、浏览器自动化、搜索、第三方 SaaS 等。",[277,3350,3352],{"id":3351},"_81-配置位置","8.1 配置位置",[282,3354,3355,3365],{},[285,3356,3357],{},[288,3358,3359,3362],{},[291,3360,3361],{},"路径",[291,3363,3364],{},"作用域",[301,3366,3367,3377],{},[288,3368,3369,3374],{},[306,3370,3371],{},[207,3372,3373],{},"\u003Cproject>\u002F.mcp.json",[306,3375,3376],{},"项目共享，应入库",[288,3378,3379,3385],{},[306,3380,3381,3384],{},[207,3382,3383],{},"~\u002F.claude\u002Fmcp.json","（或在 settings.json 内）",[306,3386,1330],{},[277,3388,3390],{"id":3389},"_82-mcpjson-示例","8.2 .mcp.json 示例",[1019,3392,3394],{"className":1526,"code":3393,"language":1528,"meta":1024,"style":1024},"{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-filesystem\", \"\u002FUsers\u002Fme\u002Fprojects\"]\n    },\n    \"github\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-github\"],\n      \"env\": {\n        \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${GITHUB_TOKEN}\"\n      }\n    },\n    \"postgres\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-postgres\"],\n      \"env\": {\n        \"DATABASE_URL\": \"${DATABASE_URL}\"\n      }\n    }\n  }\n}\n",[207,3395,3396,3400,3413,3426,3445,3487,3492,3505,3523,3553,3565,3583,3587,3591,3604,3622,3651,3663,3681,3685,3690,3694],{"__ignoreMap":1024},[1028,3397,3398],{"class":1030,"line":1031},[1028,3399,1535],{"class":1057},[1028,3401,3402,3404,3407,3409,3411],{"class":1030,"line":1038},[1028,3403,1540],{"class":1057},[1028,3405,3406],{"class":1543},"mcpServers",[1028,3408,1547],{"class":1057},[1028,3410,1550],{"class":1057},[1028,3412,1575],{"class":1057},[1028,3414,3415,3417,3420,3422,3424],{"class":1030,"line":1045},[1028,3416,1580],{"class":1057},[1028,3418,3419],{"class":1583},"filesystem",[1028,3421,1547],{"class":1057},[1028,3423,1550],{"class":1057},[1028,3425,1575],{"class":1057},[1028,3427,3428,3430,3432,3434,3436,3438,3441,3443],{"class":1030,"line":1051},[1028,3429,1615],{"class":1057},[1028,3431,2233],{"class":2184},[1028,3433,1547],{"class":1057},[1028,3435,1550],{"class":1057},[1028,3437,1553],{"class":1057},[1028,3439,3440],{"class":1061},"npx",[1028,3442,1547],{"class":1057},[1028,3444,1561],{"class":1057},[1028,3446,3447,3449,3452,3454,3456,3459,3461,3464,3466,3468,3470,3473,3475,3477,3479,3482,3484],{"class":1030,"line":1071},[1028,3448,1615],{"class":1057},[1028,3450,3451],{"class":2184},"args",[1028,3453,1547],{"class":1057},[1028,3455,1550],{"class":1057},[1028,3457,3458],{"class":1057}," [",[1028,3460,1547],{"class":1057},[1028,3462,3463],{"class":1061},"-y",[1028,3465,1547],{"class":1057},[1028,3467,2548],{"class":1057},[1028,3469,1553],{"class":1057},[1028,3471,3472],{"class":1061},"@modelcontextprotocol\u002Fserver-filesystem",[1028,3474,1547],{"class":1057},[1028,3476,2548],{"class":1057},[1028,3478,1553],{"class":1057},[1028,3480,3481],{"class":1061},"\u002FUsers\u002Fme\u002Fprojects",[1028,3483,1547],{"class":1057},[1028,3485,3486],{"class":1057},"]\n",[1028,3488,3489],{"class":1030,"line":1076},[1028,3490,3491],{"class":1057},"    },\n",[1028,3493,3494,3496,3499,3501,3503],{"class":1030,"line":1083},[1028,3495,1580],{"class":1057},[1028,3497,3498],{"class":1583},"github",[1028,3500,1547],{"class":1057},[1028,3502,1550],{"class":1057},[1028,3504,1575],{"class":1057},[1028,3506,3507,3509,3511,3513,3515,3517,3519,3521],{"class":1030,"line":1089},[1028,3508,1615],{"class":1057},[1028,3510,2233],{"class":2184},[1028,3512,1547],{"class":1057},[1028,3514,1550],{"class":1057},[1028,3516,1553],{"class":1057},[1028,3518,3440],{"class":1061},[1028,3520,1547],{"class":1057},[1028,3522,1561],{"class":1057},[1028,3524,3525,3527,3529,3531,3533,3535,3537,3539,3541,3543,3545,3548,3550],{"class":1030,"line":1098},[1028,3526,1615],{"class":1057},[1028,3528,3451],{"class":2184},[1028,3530,1547],{"class":1057},[1028,3532,1550],{"class":1057},[1028,3534,3458],{"class":1057},[1028,3536,1547],{"class":1057},[1028,3538,3463],{"class":1061},[1028,3540,1547],{"class":1057},[1028,3542,2548],{"class":1057},[1028,3544,1553],{"class":1057},[1028,3546,3547],{"class":1061},"@modelcontextprotocol\u002Fserver-github",[1028,3549,1547],{"class":1057},[1028,3551,3552],{"class":1057},"],\n",[1028,3554,3555,3557,3559,3561,3563],{"class":1030,"line":1107},[1028,3556,1615],{"class":1057},[1028,3558,1435],{"class":2184},[1028,3560,1547],{"class":1057},[1028,3562,1550],{"class":1057},[1028,3564,1575],{"class":1057},[1028,3566,3567,3569,3572,3574,3576,3578,3581],{"class":1030,"line":1116},[1028,3568,2181],{"class":1057},[1028,3570,3571],{"class":2223},"GITHUB_PERSONAL_ACCESS_TOKEN",[1028,3573,1547],{"class":1057},[1028,3575,1550],{"class":1057},[1028,3577,1553],{"class":1057},[1028,3579,3580],{"class":1061},"${GITHUB_TOKEN}",[1028,3582,1068],{"class":1057},[1028,3584,3585],{"class":1030,"line":1121},[1028,3586,2285],{"class":1057},[1028,3588,3589],{"class":1030,"line":1691},[1028,3590,3491],{"class":1057},[1028,3592,3593,3595,3598,3600,3602],{"class":1030,"line":1703},[1028,3594,1580],{"class":1057},[1028,3596,3597],{"class":1583},"postgres",[1028,3599,1547],{"class":1057},[1028,3601,1550],{"class":1057},[1028,3603,1575],{"class":1057},[1028,3605,3606,3608,3610,3612,3614,3616,3618,3620],{"class":1030,"line":1713},[1028,3607,1615],{"class":1057},[1028,3609,2233],{"class":2184},[1028,3611,1547],{"class":1057},[1028,3613,1550],{"class":1057},[1028,3615,1553],{"class":1057},[1028,3617,3440],{"class":1061},[1028,3619,1547],{"class":1057},[1028,3621,1561],{"class":1057},[1028,3623,3624,3626,3628,3630,3632,3634,3636,3638,3640,3642,3644,3647,3649],{"class":1030,"line":1719},[1028,3625,1615],{"class":1057},[1028,3627,3451],{"class":2184},[1028,3629,1547],{"class":1057},[1028,3631,1550],{"class":1057},[1028,3633,3458],{"class":1057},[1028,3635,1547],{"class":1057},[1028,3637,3463],{"class":1061},[1028,3639,1547],{"class":1057},[1028,3641,2548],{"class":1057},[1028,3643,1553],{"class":1057},[1028,3645,3646],{"class":1061},"@modelcontextprotocol\u002Fserver-postgres",[1028,3648,1547],{"class":1057},[1028,3650,3552],{"class":1057},[1028,3652,3653,3655,3657,3659,3661],{"class":1030,"line":1733},[1028,3654,1615],{"class":1057},[1028,3656,1435],{"class":2184},[1028,3658,1547],{"class":1057},[1028,3660,1550],{"class":1057},[1028,3662,1575],{"class":1057},[1028,3664,3665,3667,3670,3672,3674,3676,3679],{"class":1030,"line":1745},[1028,3666,2181],{"class":1057},[1028,3668,3669],{"class":2223},"DATABASE_URL",[1028,3671,1547],{"class":1057},[1028,3673,1550],{"class":1057},[1028,3675,1553],{"class":1057},[1028,3677,3678],{"class":1061},"${DATABASE_URL}",[1028,3680,1068],{"class":1057},[1028,3682,3683],{"class":1030,"line":1757},[1028,3684,2285],{"class":1057},[1028,3686,3687],{"class":1030,"line":1769},[1028,3688,3689],{"class":1057},"    }\n",[1028,3691,3692],{"class":1030,"line":1779},[1028,3693,1867],{"class":1057},[1028,3695,3696],{"class":1030,"line":1784},[1028,3697,1873],{"class":1057},[277,3699,3701],{"id":3700},"_83-调用方式","8.3 调用方式",[246,3703,3704,3710,3720],{},[249,3705,3706,3707,3709],{},"启动后输入 ",[207,3708,922],{}," 查看已连接 server 与可用工具",[249,3711,3712,3713,3716,3717,3719],{},"工具名形式：",[207,3714,3715],{},"mcp__\u003Cserver>__\u003Ctool>","，可在 ",[207,3718,1360],{}," 中按此匹配",[249,3721,3722,3723,3726],{},"信任策略：项目级 MCP 默认会在首次启动时询问；可设置 ",[207,3724,3725],{},"enableAllProjectMcpServers: true"," 自动信任",[277,3728,3730],{"id":3729},"_84-调试技巧","8.4 调试技巧",[282,3732,3733,3743],{},[285,3734,3735],{},[288,3736,3737,3740],{},[291,3738,3739],{},"问题",[291,3741,3742],{},"排查",[301,3744,3745,3757,3770,3781],{},[288,3746,3747,3750],{},[306,3748,3749],{},"MCP 启动失败",[306,3751,3752,3753,3756],{},"单独跑 ",[207,3754,3755],{},"command + args","，看 stderr",[288,3758,3759,3762],{},[306,3760,3761],{},"工具不出现",[306,3763,3764,3766,3767,3769],{},[207,3765,922],{}," 看连接状态、",[207,3768,371],{}," 看版本",[288,3771,3772,3775],{},[306,3773,3774],{},"权限被拒",[306,3776,3777,3778,3780],{},"检查 ",[207,3779,1375],{}," 是否覆盖",[288,3782,3783,3786],{},[306,3784,3785],{},"凭证泄漏",[306,3787,3788,3789,3792],{},"MCP 的 env 来自 shell；用 ",[207,3790,3791],{},"${VAR}"," 占位避免 commit",[262,3794],{},[265,3796,3798],{"id":3797},"九常用对话模式速查","九、常用对话模式速查",[198,3800,3801],{},"「问对问题」往往比「写对 prompt」更重要。下表汇总几种被反复验证有效的对话模式。",[277,3803,3805],{"id":3804},"_91-plan-请求模式先想清楚再动手","9.1 Plan 请求模式（先想清楚再动手）",[1019,3807,3810],{"className":3808,"code":3809,"language":3118},[3116],"进入 plan 模式（\u002Fplan 或 Shift+Tab 切换），然后描述：\n\n我要给登录接口加上短信验证码功能。请先调研现有代码，\n给出一份方案：\n1. 涉及哪些文件\n2. 需要新增哪些类型 \u002F 接口\n3. 改动顺序\n4. 风险点 \u002F 待确认问题\n不要直接修改代码。\n",[207,3811,3809],{"__ignoreMap":1024},[277,3813,3815],{"id":3814},"_92-状态摘要请求模式保持上下文同步","9.2 状态摘要请求模式（保持上下文同步）",[1019,3817,3820],{"className":3818,"code":3819,"language":3118},[3116],"请用中文给我一份当前任务的进度摘要：\n1. 已完成\n2. 进行中（具体卡在哪）\n3. 待办\n4. 任何需要我决策的问题\n",[207,3821,3819],{"__ignoreMap":1024},[277,3823,3825],{"id":3824},"_93-根因分析模式不要止于能跑了","9.3 根因分析模式（不要止于「能跑了」）",[1019,3827,3830],{"className":3828,"code":3829,"language":3118},[3116],"现象：\u003Cbug 描述>\n请：\n1. 提出 3 个可能的根因，按概率排序\n2. 给出每个根因的验证方法\n3. 不要直接改代码，先告诉我你倾向哪个\n",[207,3831,3829],{"__ignoreMap":1024},[277,3833,3835],{"id":3834},"_94-假设确认模式消除歧义","9.4 假设确认模式（消除歧义）",[1019,3837,3840],{"className":3838,"code":3839,"language":3118},[3116],"开始之前，列出你为完成这个任务做出的所有假设。\n我会逐条确认 \u002F 修正。\n",[207,3841,3839],{"__ignoreMap":1024},[277,3843,3845],{"id":3844},"_95-pre-mortem-模式事前复盘","9.5 Pre-mortem 模式（事前复盘）",[1019,3847,3850],{"className":3848,"code":3849,"language":3118},[3116],"假设这次改动一周后线上出了事故。请列出：\n1. 最可能的 5 种事故\n2. 各自的兆头 \u002F 监控点\n3. 现在能加哪些防御\n",[207,3851,3849],{"__ignoreMap":1024},[277,3853,3855],{"id":3854},"_96-评审模式让-claude-当评审","9.6 评审模式（让 Claude 当评审）",[1019,3857,3860],{"className":3858,"code":3859,"language":3118},[3116],"请以严格的 senior reviewer 视角审查 git diff：\n- 安全\n- 边界条件\n- 命名 \u002F 可读性\n- 测试覆盖\n对每条 finding 标注严重性（blocker \u002F major \u002F minor \u002F nit）。\n",[207,3861,3859],{"__ignoreMap":1024},[277,3863,3865],{"id":3864},"_97-教学模式边做边学","9.7 教学模式（边做边学）",[1019,3867,3870],{"className":3868,"code":3869,"language":3118},[3116],"完成后，用中文给我一份学习笔记：\n- 你做了什么\n- 为什么这样做（替代方案与权衡）\n- 我后续应该补哪些知识\n",[207,3871,3869],{"__ignoreMap":1024},[262,3873],{},[265,3875,3877],{"id":3876},"十故障排查","十、故障排查",[277,3879,3881],{"id":3880},"_101-常见问题速查表","10.1 常见问题速查表",[282,3883,3884,3897],{},[285,3885,3886],{},[288,3887,3888,3891,3894],{},[291,3889,3890],{},"现象",[291,3892,3893],{},"可能原因",[291,3895,3896],{},"处理",[301,3898,3899,3919,3934,3951,3965,3976,3992,4007,4018,4029,4045,4059,4073,4090,4101],{},[288,3900,3901,3907,3910],{},[306,3902,3903,3906],{},[207,3904,3905],{},"socket hang up"," \u002F 网络超时",[306,3908,3909],{},"代理 \u002F DNS \u002F 公司防火墙",[306,3911,3912,3913,3916,3917],{},"设置 ",[207,3914,3915],{},"HTTPS_PROXY","、切换网络、",[207,3918,371],{},[288,3920,3921,3924,3927],{},[306,3922,3923],{},"上下文溢出",[306,3925,3926],{},"一次性塞入太多文件",[306,3928,3929,351,3931,3933],{},[207,3930,718],{},[207,3932,692],{}," 后重新组织任务",[288,3935,3936,3939,3944],{},[306,3937,3938],{},"权限被频繁询问",[306,3940,3941,3943],{},[207,3942,1360],{}," 不够",[306,3945,3946,3947,3950],{},"完成后用 ",[207,3948,3949],{},"claude-mem"," \u002F 复盘把高频命令加入 allow",[288,3952,3953,3956,3959],{},[306,3954,3955],{},"Hook 始终失败",[306,3957,3958],{},"超时 \u002F 命令找不到",[306,3960,3961,3962,3964],{},"单独 shell 跑该命令；检查 ",[207,3963,2263],{},"；用绝对路径",[288,3966,3967,3970,3973],{},[306,3968,3969],{},"Cache 失效",[306,3971,3972],{},"系统提示 \u002F 工具定义变动",[306,3974,3975],{},"把易变内容放最后，稳定内容放最前；分层缓存",[288,3977,3978,3983,3986],{},[306,3979,3980,3982],{},[207,3981,237],{}," 被拒",[306,3984,3985],{},"在受管理环境（managed settings）被锁",[306,3987,3988,3989,3991],{},"改用 ",[207,3990,471],{}," 或在容器中运行",[288,3993,3994,3997,4000],{},[306,3995,3996],{},"MCP 工具不可见",[306,3998,3999],{},"server 未启动 \u002F 未信任",[306,4001,4002,228,4004,4006],{},[207,4003,922],{},[207,4005,1492],{},"、看 stderr",[288,4008,4009,4012,4015],{},[306,4010,4011],{},"Skill 没被触发",[306,4013,4014],{},"description 不匹配用户意图",[306,4016,4017],{},"改写 description，加上动词 + 场景关键词",[288,4019,4020,4023,4026],{},[306,4021,4022],{},"模型「自信地给错误答案」",[306,4024,4025],{},"缺少 ground truth",[306,4027,4028],{},"强制 Claude 先 grep \u002F read 实际代码再回答",[288,4030,4031,4034,4037],{},[306,4032,4033],{},"编辑被回滚",[306,4035,4036],{},"Hook 拦截 \u002F lint 失败",[306,4038,4039,4040,661,4042,4044],{},"看 ",[207,4041,2087],{},[207,4043,2035],{}," 输出；先手动跑 lint",[288,4046,4047,4050,4053],{},[306,4048,4049],{},"会话越用越慢",[306,4051,4052],{},"上下文巨大",[306,4054,4055,4056,4058],{},"阶段性 ",[207,4057,705],{},"；长任务拆 session",[288,4060,4061,4067,4070],{},[306,4062,4063,4066],{},[207,4064,4065],{},"Edit"," 报「未读取过文件」",[306,4068,4069],{},"未先 Read 即 Edit",[306,4071,4072],{},"先 Read 再 Edit；或直接 Write 整文件",[288,4074,4075,4078,4081],{},[306,4076,4077],{},"中文乱码",[306,4079,4080],{},"终端 locale",[306,4082,4083,4084,351,4087],{},"终端设置 ",[207,4085,4086],{},"LANG=zh_CN.UTF-8",[207,4088,4089],{},"en_US.UTF-8",[288,4091,4092,4095,4098],{},[306,4093,4094],{},"Token 成本异常",[306,4096,4097],{},"反复重复读大文件",[306,4099,4100],{},"用 grep 局部搜索；启用 prompt cache",[288,4102,4103,4106,4112],{},[306,4104,4105],{},"子 Agent 不工作",[306,4107,4108,4111],{},[207,4109,4110],{},"agents"," 配置 \u002F mode 参数",[306,4113,4114,4115,4118,4119],{},"不传 ",[207,4116,4117],{},"mode: \"auto\"","；检查 ",[207,4120,902],{},[277,4122,4124],{"id":4123},"_102-常用排查命令","10.2 常用排查命令",[1019,4126,4130],{"className":4127,"code":4128,"language":4129,"meta":1024,"style":1024},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# 自检环境\nclaude doctor\n\n# 看版本\nclaude --version\n\n# 看当前会话状态\n\u002Fstatus\n\n# 看成本与 token\n\u002Fcost\n\n# 看权限\n\u002Fpermissions\n\n# 看 hooks\n\u002Fhooks\n\n# 看记忆\n\u002Fmemory\n\n# 看 MCP\n\u002Fmcp\n","bash",[207,4131,4132,4137,4144,4148,4153,4160,4164,4169,4174,4178,4183,4188,4192,4197,4202,4206,4211,4216,4220,4225,4230,4234,4239],{"__ignoreMap":1024},[1028,4133,4134],{"class":1030,"line":1031},[1028,4135,4136],{"class":1034},"# 自检环境\n",[1028,4138,4139,4141],{"class":1030,"line":1038},[1028,4140,274],{"class":1583},[1028,4142,4143],{"class":1061}," doctor\n",[1028,4145,4146],{"class":1030,"line":1045},[1028,4147,1080],{"emptyLinePlaceholder":1079},[1028,4149,4150],{"class":1030,"line":1051},[1028,4151,4152],{"class":1034},"# 看版本\n",[1028,4154,4155,4157],{"class":1030,"line":1071},[1028,4156,274],{"class":1583},[1028,4158,4159],{"class":1061}," --version\n",[1028,4161,4162],{"class":1030,"line":1076},[1028,4163,1080],{"emptyLinePlaceholder":1079},[1028,4165,4166],{"class":1030,"line":1083},[1028,4167,4168],{"class":1034},"# 看当前会话状态\n",[1028,4170,4171],{"class":1030,"line":1089},[1028,4172,4173],{"class":1583},"\u002Fstatus\n",[1028,4175,4176],{"class":1030,"line":1098},[1028,4177,1080],{"emptyLinePlaceholder":1079},[1028,4179,4180],{"class":1030,"line":1107},[1028,4181,4182],{"class":1034},"# 看成本与 token\n",[1028,4184,4185],{"class":1030,"line":1116},[1028,4186,4187],{"class":1583},"\u002Fcost\n",[1028,4189,4190],{"class":1030,"line":1121},[1028,4191,1080],{"emptyLinePlaceholder":1079},[1028,4193,4194],{"class":1030,"line":1691},[1028,4195,4196],{"class":1034},"# 看权限\n",[1028,4198,4199],{"class":1030,"line":1703},[1028,4200,4201],{"class":1583},"\u002Fpermissions\n",[1028,4203,4204],{"class":1030,"line":1713},[1028,4205,1080],{"emptyLinePlaceholder":1079},[1028,4207,4208],{"class":1030,"line":1719},[1028,4209,4210],{"class":1034},"# 看 hooks\n",[1028,4212,4213],{"class":1030,"line":1733},[1028,4214,4215],{"class":1583},"\u002Fhooks\n",[1028,4217,4218],{"class":1030,"line":1745},[1028,4219,1080],{"emptyLinePlaceholder":1079},[1028,4221,4222],{"class":1030,"line":1757},[1028,4223,4224],{"class":1034},"# 看记忆\n",[1028,4226,4227],{"class":1030,"line":1769},[1028,4228,4229],{"class":1583},"\u002Fmemory\n",[1028,4231,4232],{"class":1030,"line":1779},[1028,4233,1080],{"emptyLinePlaceholder":1079},[1028,4235,4236],{"class":1030,"line":1784},[1028,4237,4238],{"class":1034},"# 看 MCP\n",[1028,4240,4241],{"class":1030,"line":1798},[1028,4242,4243],{"class":1583},"\u002Fmcp\n",[277,4245,4247],{"id":4246},"_103-一份卡住时的标准操作","10.3 一份「卡住时」的标准操作",[1291,4249,4250,4255,4260,4265,4271,4277,4282],{},[249,4251,4252,4254],{},[207,4253,1157],{}," 中断当前请求",[249,4256,4257,4259],{},[207,4258,775],{}," 看模型 \u002F 模式 \u002F 目录是否符合预期",[249,4261,4262,4264],{},[207,4263,762],{}," 看是否上下文已经爆炸",[249,4266,4267,4268,4270],{},"如已爆炸 → ",[207,4269,705],{}," 带焦点压缩",[249,4272,4273,4274,4276],{},"仍异常 → ",[207,4275,692],{}," 重新进入任务，把刚才的关键结论作为开场白手动喂入",[249,4278,4273,4279,4281],{},[207,4280,371],{},"，必要时升级 \u002F 重启",[249,4283,4273,4284,4286],{},[207,4285,988],{}," 反馈",[262,4288],{},[265,4290,4292],{"id":4291},"十一附常用环境变量","十一、附：常用环境变量",[282,4294,4295,4303],{},[285,4296,4297],{},[288,4298,4299,4301],{},[291,4300,1438],{},[291,4302,296],{},[301,4304,4305,4315,4325,4335,4348,4358,4368,4380],{},[288,4306,4307,4312],{},[306,4308,4309],{},[207,4310,4311],{},"ANTHROPIC_API_KEY",[306,4313,4314],{},"API Key（自托管 \u002F SDK 场景）",[288,4316,4317,4322],{},[306,4318,4319],{},[207,4320,4321],{},"ANTHROPIC_MODEL",[306,4323,4324],{},"覆盖默认模型",[288,4326,4327,4332],{},[306,4328,4329],{},[207,4330,4331],{},"ANTHROPIC_BASE_URL",[306,4333,4334],{},"自定义 API endpoint（私有部署 \u002F 代理）",[288,4336,4337,4345],{},[306,4338,4339,220,4342],{},[207,4340,4341],{},"CLAUDE_CODE_USE_BEDROCK",[207,4343,4344],{},"CLAUDE_CODE_USE_VERTEX",[306,4346,4347],{},"启用 Bedrock \u002F Vertex 后端",[288,4349,4350,4355],{},[306,4351,4352],{},[207,4353,4354],{},"DISABLE_TELEMETRY",[306,4356,4357],{},"关闭遥测",[288,4359,4360,4365],{},[306,4361,4362],{},[207,4363,4364],{},"DISABLE_AUTOUPDATER",[306,4366,4367],{},"关闭自动更新",[288,4369,4370,4377],{},[306,4371,4372,220,4374],{},[207,4373,3915],{},[207,4375,4376],{},"HTTP_PROXY",[306,4378,4379],{},"代理",[288,4381,4382,4386],{},[306,4383,4384],{},[207,4385,2657],{},[306,4387,4388],{},"在 hook 内可读取，指向项目根",[195,4390,4391],{},[198,4392,4393,4394,4396],{},"具体支持的环境变量请以 ",[207,4395,337],{}," 与官方文档为准。",[262,4398],{},[265,4400,4402],{"id":4401},"十二附常用文件路径","十二、附：常用文件路径",[282,4404,4405,4413],{},[285,4406,4407],{},[288,4408,4409,4411],{},[291,4410,3361],{},[291,4412,296],{},[301,4414,4415,4424,4433,4442,4452,4461,4471,4480,4489,4499,4508,4517,4526],{},[288,4416,4417,4421],{},[306,4418,4419],{},[207,4420,548],{},[306,4422,4423],{},"用户全局配置根",[288,4425,4426,4430],{},[306,4427,4428],{},[207,4429,1333],{},[306,4431,4432],{},"用户全局 settings",[288,4434,4435,4439],{},[306,4436,4437],{},[207,4438,3093],{},[306,4440,4441],{},"用户全局 memory",[288,4443,4444,4449],{},[306,4445,4446],{},[207,4447,4448],{},"~\u002F.claude\u002Fcommands\u002F",[306,4450,4451],{},"用户全局自定义 Slash 命令",[288,4453,4454,4458],{},[306,4455,4456],{},[207,4457,3338],{},[306,4459,4460],{},"用户全局 Skills",[288,4462,4463,4468],{},[306,4464,4465],{},[207,4466,4467],{},"~\u002F.claude\u002Fhooks\u002F",[306,4469,4470],{},"用户全局 Hooks 脚本（约定俗成）",[288,4472,4473,4477],{},[306,4474,4475],{},[207,4476,1325],{},[306,4478,4479],{},"项目共享 settings",[288,4481,4482,4486],{},[306,4483,4484],{},[207,4485,1317],{},[306,4487,4488],{},"项目本地 settings（不入库）",[288,4490,4491,4496],{},[306,4492,4493],{},[207,4494,4495],{},"\u003Cproject>\u002F.claude\u002Fcommands\u002F",[306,4497,4498],{},"项目自定义 Slash 命令",[288,4500,4501,4505],{},[306,4502,4503],{},[207,4504,3334],{},[306,4506,4507],{},"项目 Skills",[288,4509,4510,4514],{},[306,4511,4512],{},[207,4513,3081],{},[306,4515,4516],{},"项目 memory（必入库）",[288,4518,4519,4523],{},[306,4520,4521],{},[207,4522,3087],{},[306,4524,4525],{},"项目本地 memory（不入库）",[288,4527,4528,4532],{},[306,4529,4530],{},[207,4531,3373],{},[306,4533,4534],{},"项目 MCP 配置",[262,4536],{},[265,4538,4540],{"id":4539},"十三附高频bash-工具白名单建议","十三、附：高频「Bash 工具」白名单建议",[198,4542,4543,4544,4546],{},"下表是工程师日常项目中可以预先放进 ",[207,4545,1360],{}," 的命令，能有效减少打断。请按你自己的项目实际栈裁剪。",[277,4548,4550],{"id":4549},"_131-包管理pnpm-优先","13.1 包管理（pnpm 优先）",[1019,4552,4554],{"className":1526,"code":4553,"language":1528,"meta":1024,"style":1024},"{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(pnpm install)\",\n      \"Bash(pnpm add:*)\",\n      \"Bash(pnpm remove:*)\",\n      \"Bash(pnpm dev:*)\",\n      \"Bash(pnpm build:*)\",\n      \"Bash(pnpm test:*)\",\n      \"Bash(pnpm lint:*)\",\n      \"Bash(pnpm typecheck)\",\n      \"Bash(pnpm format)\",\n      \"Bash(pnpm exec:*)\",\n      \"Bash(pnpm dlx:*)\"\n    ]\n  }\n}\n",[207,4555,4556,4560,4572,4584,4594,4605,4616,4626,4637,4647,4657,4668,4679,4690,4699,4703,4707],{"__ignoreMap":1024},[1028,4557,4558],{"class":1030,"line":1031},[1028,4559,1535],{"class":1057},[1028,4561,4562,4564,4566,4568,4570],{"class":1030,"line":1038},[1028,4563,1540],{"class":1057},[1028,4565,1568],{"class":1543},[1028,4567,1547],{"class":1057},[1028,4569,1550],{"class":1057},[1028,4571,1575],{"class":1057},[1028,4573,4574,4576,4578,4580,4582],{"class":1030,"line":1045},[1028,4575,1580],{"class":1057},[1028,4577,1603],{"class":1583},[1028,4579,1547],{"class":1057},[1028,4581,1550],{"class":1057},[1028,4583,1610],{"class":1057},[1028,4585,4586,4588,4590,4592],{"class":1030,"line":1051},[1028,4587,1615],{"class":1057},[1028,4589,1618],{"class":1061},[1028,4591,1547],{"class":1057},[1028,4593,1561],{"class":1057},[1028,4595,4596,4598,4601,4603],{"class":1030,"line":1071},[1028,4597,1615],{"class":1057},[1028,4599,4600],{"class":1061},"Bash(pnpm add:*)",[1028,4602,1547],{"class":1057},[1028,4604,1561],{"class":1057},[1028,4606,4607,4609,4612,4614],{"class":1030,"line":1076},[1028,4608,1615],{"class":1057},[1028,4610,4611],{"class":1061},"Bash(pnpm remove:*)",[1028,4613,1547],{"class":1057},[1028,4615,1561],{"class":1057},[1028,4617,4618,4620,4622,4624],{"class":1030,"line":1083},[1028,4619,1615],{"class":1057},[1028,4621,1629],{"class":1061},[1028,4623,1547],{"class":1057},[1028,4625,1561],{"class":1057},[1028,4627,4628,4630,4633,4635],{"class":1030,"line":1089},[1028,4629,1615],{"class":1057},[1028,4631,4632],{"class":1061},"Bash(pnpm build:*)",[1028,4634,1547],{"class":1057},[1028,4636,1561],{"class":1057},[1028,4638,4639,4641,4643,4645],{"class":1030,"line":1098},[1028,4640,1615],{"class":1057},[1028,4642,1640],{"class":1061},[1028,4644,1547],{"class":1057},[1028,4646,1561],{"class":1057},[1028,4648,4649,4651,4653,4655],{"class":1030,"line":1107},[1028,4650,1615],{"class":1057},[1028,4652,1651],{"class":1061},[1028,4654,1547],{"class":1057},[1028,4656,1561],{"class":1057},[1028,4658,4659,4661,4664,4666],{"class":1030,"line":1116},[1028,4660,1615],{"class":1057},[1028,4662,4663],{"class":1061},"Bash(pnpm typecheck)",[1028,4665,1547],{"class":1057},[1028,4667,1561],{"class":1057},[1028,4669,4670,4672,4675,4677],{"class":1030,"line":1121},[1028,4671,1615],{"class":1057},[1028,4673,4674],{"class":1061},"Bash(pnpm format)",[1028,4676,1547],{"class":1057},[1028,4678,1561],{"class":1057},[1028,4680,4681,4683,4686,4688],{"class":1030,"line":1691},[1028,4682,1615],{"class":1057},[1028,4684,4685],{"class":1061},"Bash(pnpm exec:*)",[1028,4687,1547],{"class":1057},[1028,4689,1561],{"class":1057},[1028,4691,4692,4694,4697],{"class":1030,"line":1703},[1028,4693,1615],{"class":1057},[1028,4695,4696],{"class":1061},"Bash(pnpm dlx:*)",[1028,4698,1068],{"class":1057},[1028,4700,4701],{"class":1030,"line":1713},[1028,4702,1823],{"class":1057},[1028,4704,4705],{"class":1030,"line":1719},[1028,4706,1867],{"class":1057},[1028,4708,4709],{"class":1030,"line":1733},[1028,4710,1873],{"class":1057},[277,4712,4714],{"id":4713},"_132-git-只读-低危操作","13.2 Git 只读 \u002F 低危操作",[1019,4716,4718],{"className":1526,"code":4717,"language":1528,"meta":1024,"style":1024},"{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(git status)\",\n      \"Bash(git status -s)\",\n      \"Bash(git diff)\",\n      \"Bash(git diff --cached)\",\n      \"Bash(git diff:*)\",\n      \"Bash(git log)\",\n      \"Bash(git log:*)\",\n      \"Bash(git show:*)\",\n      \"Bash(git branch)\",\n      \"Bash(git branch -a)\",\n      \"Bash(git remote -v)\",\n      \"Bash(git rev-parse:*)\",\n      \"Bash(git stash list)\",\n      \"Bash(git tag)\",\n      \"Bash(git fetch)\",\n      \"Bash(git fetch:*)\"\n    ],\n    \"ask\": [\n      \"Bash(git push:*)\",\n      \"Bash(git reset --hard:*)\",\n      \"Bash(git rebase:*)\",\n      \"Bash(git checkout --:*)\"\n    ],\n    \"deny\": [\n      \"Bash(git push --force:*)\",\n      \"Bash(git push -f:*)\",\n      \"Bash(rm -rf *)\"\n    ]\n  }\n}\n",[207,4719,4720,4724,4736,4748,4758,4769,4780,4791,4801,4812,4822,4833,4844,4855,4866,4877,4888,4899,4910,4919,4923,4935,4945,4956,4967,4976,4980,4992,5003,5014,5022,5026,5030],{"__ignoreMap":1024},[1028,4721,4722],{"class":1030,"line":1031},[1028,4723,1535],{"class":1057},[1028,4725,4726,4728,4730,4732,4734],{"class":1030,"line":1038},[1028,4727,1540],{"class":1057},[1028,4729,1568],{"class":1543},[1028,4731,1547],{"class":1057},[1028,4733,1550],{"class":1057},[1028,4735,1575],{"class":1057},[1028,4737,4738,4740,4742,4744,4746],{"class":1030,"line":1045},[1028,4739,1580],{"class":1057},[1028,4741,1603],{"class":1583},[1028,4743,1547],{"class":1057},[1028,4745,1550],{"class":1057},[1028,4747,1610],{"class":1057},[1028,4749,4750,4752,4754,4756],{"class":1030,"line":1051},[1028,4751,1615],{"class":1057},[1028,4753,1662],{"class":1061},[1028,4755,1547],{"class":1057},[1028,4757,1561],{"class":1057},[1028,4759,4760,4762,4765,4767],{"class":1030,"line":1071},[1028,4761,1615],{"class":1057},[1028,4763,4764],{"class":1061},"Bash(git status -s)",[1028,4766,1547],{"class":1057},[1028,4768,1561],{"class":1057},[1028,4770,4771,4773,4776,4778],{"class":1030,"line":1076},[1028,4772,1615],{"class":1057},[1028,4774,4775],{"class":1061},"Bash(git diff)",[1028,4777,1547],{"class":1057},[1028,4779,1561],{"class":1057},[1028,4781,4782,4784,4787,4789],{"class":1030,"line":1083},[1028,4783,1615],{"class":1057},[1028,4785,4786],{"class":1061},"Bash(git diff --cached)",[1028,4788,1547],{"class":1057},[1028,4790,1561],{"class":1057},[1028,4792,4793,4795,4797,4799],{"class":1030,"line":1089},[1028,4794,1615],{"class":1057},[1028,4796,1673],{"class":1061},[1028,4798,1547],{"class":1057},[1028,4800,1561],{"class":1057},[1028,4802,4803,4805,4808,4810],{"class":1030,"line":1098},[1028,4804,1615],{"class":1057},[1028,4806,4807],{"class":1061},"Bash(git log)",[1028,4809,1547],{"class":1057},[1028,4811,1561],{"class":1057},[1028,4813,4814,4816,4818,4820],{"class":1030,"line":1107},[1028,4815,1615],{"class":1057},[1028,4817,1684],{"class":1061},[1028,4819,1547],{"class":1057},[1028,4821,1561],{"class":1057},[1028,4823,4824,4826,4829,4831],{"class":1030,"line":1116},[1028,4825,1615],{"class":1057},[1028,4827,4828],{"class":1061},"Bash(git show:*)",[1028,4830,1547],{"class":1057},[1028,4832,1561],{"class":1057},[1028,4834,4835,4837,4840,4842],{"class":1030,"line":1121},[1028,4836,1615],{"class":1057},[1028,4838,4839],{"class":1061},"Bash(git branch)",[1028,4841,1547],{"class":1057},[1028,4843,1561],{"class":1057},[1028,4845,4846,4848,4851,4853],{"class":1030,"line":1691},[1028,4847,1615],{"class":1057},[1028,4849,4850],{"class":1061},"Bash(git branch -a)",[1028,4852,1547],{"class":1057},[1028,4854,1561],{"class":1057},[1028,4856,4857,4859,4862,4864],{"class":1030,"line":1703},[1028,4858,1615],{"class":1057},[1028,4860,4861],{"class":1061},"Bash(git remote -v)",[1028,4863,1547],{"class":1057},[1028,4865,1561],{"class":1057},[1028,4867,4868,4870,4873,4875],{"class":1030,"line":1713},[1028,4869,1615],{"class":1057},[1028,4871,4872],{"class":1061},"Bash(git rev-parse:*)",[1028,4874,1547],{"class":1057},[1028,4876,1561],{"class":1057},[1028,4878,4879,4881,4884,4886],{"class":1030,"line":1719},[1028,4880,1615],{"class":1057},[1028,4882,4883],{"class":1061},"Bash(git stash list)",[1028,4885,1547],{"class":1057},[1028,4887,1561],{"class":1057},[1028,4889,4890,4892,4895,4897],{"class":1030,"line":1733},[1028,4891,1615],{"class":1057},[1028,4893,4894],{"class":1061},"Bash(git tag)",[1028,4896,1547],{"class":1057},[1028,4898,1561],{"class":1057},[1028,4900,4901,4903,4906,4908],{"class":1030,"line":1745},[1028,4902,1615],{"class":1057},[1028,4904,4905],{"class":1061},"Bash(git fetch)",[1028,4907,1547],{"class":1057},[1028,4909,1561],{"class":1057},[1028,4911,4912,4914,4917],{"class":1030,"line":1757},[1028,4913,1615],{"class":1057},[1028,4915,4916],{"class":1061},"Bash(git fetch:*)",[1028,4918,1068],{"class":1057},[1028,4920,4921],{"class":1030,"line":1769},[1028,4922,1716],{"class":1057},[1028,4924,4925,4927,4929,4931,4933],{"class":1030,"line":1779},[1028,4926,1580],{"class":1057},[1028,4928,1789],{"class":1583},[1028,4930,1547],{"class":1057},[1028,4932,1550],{"class":1057},[1028,4934,1610],{"class":1057},[1028,4936,4937,4939,4941,4943],{"class":1030,"line":1784},[1028,4938,1615],{"class":1057},[1028,4940,1803],{"class":1061},[1028,4942,1547],{"class":1057},[1028,4944,1561],{"class":1057},[1028,4946,4947,4949,4952,4954],{"class":1030,"line":1798},[1028,4948,1615],{"class":1057},[1028,4950,4951],{"class":1061},"Bash(git reset --hard:*)",[1028,4953,1547],{"class":1057},[1028,4955,1561],{"class":1057},[1028,4957,4958,4960,4963,4965],{"class":1030,"line":1810},[1028,4959,1615],{"class":1057},[1028,4961,4962],{"class":1061},"Bash(git rebase:*)",[1028,4964,1547],{"class":1057},[1028,4966,1561],{"class":1057},[1028,4968,4969,4971,4974],{"class":1030,"line":1820},[1028,4970,1615],{"class":1057},[1028,4972,4973],{"class":1061},"Bash(git checkout --:*)",[1028,4975,1068],{"class":1057},[1028,4977,4978],{"class":1030,"line":1826},[1028,4979,1716],{"class":1057},[1028,4981,4982,4984,4986,4988,4990],{"class":1030,"line":1832},[1028,4983,1580],{"class":1057},[1028,4985,1724],{"class":1583},[1028,4987,1547],{"class":1057},[1028,4989,1550],{"class":1057},[1028,4991,1610],{"class":1057},[1028,4993,4994,4996,4999,5001],{"class":1030,"line":1845},[1028,4995,1615],{"class":1057},[1028,4997,4998],{"class":1061},"Bash(git push --force:*)",[1028,5000,1547],{"class":1057},[1028,5002,1561],{"class":1057},[1028,5004,5005,5007,5010,5012],{"class":1030,"line":1864},[1028,5006,1615],{"class":1057},[1028,5008,5009],{"class":1061},"Bash(git push -f:*)",[1028,5011,1547],{"class":1057},[1028,5013,1561],{"class":1057},[1028,5015,5016,5018,5020],{"class":1030,"line":1870},[1028,5017,1615],{"class":1057},[1028,5019,1738],{"class":1061},[1028,5021,1068],{"class":1057},[1028,5023,5024],{"class":1030,"line":2452},[1028,5025,1823],{"class":1057},[1028,5027,5028],{"class":1030,"line":2477},[1028,5029,1867],{"class":1057},[1028,5031,5032],{"class":1030,"line":2482},[1028,5033,1873],{"class":1057},[277,5035,5037],{"id":5036},"_133-文件系统-检索工具","13.3 文件系统 \u002F 检索工具",[1019,5039,5041],{"className":1526,"code":5040,"language":1528,"meta":1024,"style":1024},"{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(ls:*)\",\n      \"Bash(pwd)\",\n      \"Bash(fd:*)\",\n      \"Bash(rg:*)\",\n      \"Bash(jq:*)\",\n      \"Bash(cat:*)\",\n      \"Bash(wc:*)\",\n      \"Bash(head:*)\",\n      \"Bash(tail:*)\",\n      \"Bash(tree:*)\"\n    ]\n  }\n}\n",[207,5042,5043,5047,5059,5071,5082,5093,5104,5115,5126,5137,5148,5159,5170,5179,5183,5187],{"__ignoreMap":1024},[1028,5044,5045],{"class":1030,"line":1031},[1028,5046,1535],{"class":1057},[1028,5048,5049,5051,5053,5055,5057],{"class":1030,"line":1038},[1028,5050,1540],{"class":1057},[1028,5052,1568],{"class":1543},[1028,5054,1547],{"class":1057},[1028,5056,1550],{"class":1057},[1028,5058,1575],{"class":1057},[1028,5060,5061,5063,5065,5067,5069],{"class":1030,"line":1045},[1028,5062,1580],{"class":1057},[1028,5064,1603],{"class":1583},[1028,5066,1547],{"class":1057},[1028,5068,1550],{"class":1057},[1028,5070,1610],{"class":1057},[1028,5072,5073,5075,5078,5080],{"class":1030,"line":1051},[1028,5074,1615],{"class":1057},[1028,5076,5077],{"class":1061},"Bash(ls:*)",[1028,5079,1547],{"class":1057},[1028,5081,1561],{"class":1057},[1028,5083,5084,5086,5089,5091],{"class":1030,"line":1071},[1028,5085,1615],{"class":1057},[1028,5087,5088],{"class":1061},"Bash(pwd)",[1028,5090,1547],{"class":1057},[1028,5092,1561],{"class":1057},[1028,5094,5095,5097,5100,5102],{"class":1030,"line":1076},[1028,5096,1615],{"class":1057},[1028,5098,5099],{"class":1061},"Bash(fd:*)",[1028,5101,1547],{"class":1057},[1028,5103,1561],{"class":1057},[1028,5105,5106,5108,5111,5113],{"class":1030,"line":1083},[1028,5107,1615],{"class":1057},[1028,5109,5110],{"class":1061},"Bash(rg:*)",[1028,5112,1547],{"class":1057},[1028,5114,1561],{"class":1057},[1028,5116,5117,5119,5122,5124],{"class":1030,"line":1089},[1028,5118,1615],{"class":1057},[1028,5120,5121],{"class":1061},"Bash(jq:*)",[1028,5123,1547],{"class":1057},[1028,5125,1561],{"class":1057},[1028,5127,5128,5130,5133,5135],{"class":1030,"line":1098},[1028,5129,1615],{"class":1057},[1028,5131,5132],{"class":1061},"Bash(cat:*)",[1028,5134,1547],{"class":1057},[1028,5136,1561],{"class":1057},[1028,5138,5139,5141,5144,5146],{"class":1030,"line":1107},[1028,5140,1615],{"class":1057},[1028,5142,5143],{"class":1061},"Bash(wc:*)",[1028,5145,1547],{"class":1057},[1028,5147,1561],{"class":1057},[1028,5149,5150,5152,5155,5157],{"class":1030,"line":1116},[1028,5151,1615],{"class":1057},[1028,5153,5154],{"class":1061},"Bash(head:*)",[1028,5156,1547],{"class":1057},[1028,5158,1561],{"class":1057},[1028,5160,5161,5163,5166,5168],{"class":1030,"line":1121},[1028,5162,1615],{"class":1057},[1028,5164,5165],{"class":1061},"Bash(tail:*)",[1028,5167,1547],{"class":1057},[1028,5169,1561],{"class":1057},[1028,5171,5172,5174,5177],{"class":1030,"line":1691},[1028,5173,1615],{"class":1057},[1028,5175,5176],{"class":1061},"Bash(tree:*)",[1028,5178,1068],{"class":1057},[1028,5180,5181],{"class":1030,"line":1703},[1028,5182,1823],{"class":1057},[1028,5184,5185],{"class":1030,"line":1713},[1028,5186,1867],{"class":1057},[1028,5188,5189],{"class":1030,"line":1719},[1028,5190,1873],{"class":1057},[277,5192,5194],{"id":5193},"_134-docker-容器按需开放","13.4 Docker \u002F 容器（按需开放）",[1019,5196,5198],{"className":1526,"code":5197,"language":1528,"meta":1024,"style":1024},"{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(docker ps)\",\n      \"Bash(docker compose ps)\",\n      \"Bash(docker compose logs:*)\",\n      \"Bash(docker logs:*)\"\n    ],\n    \"ask\": [\n      \"Bash(docker compose up:*)\",\n      \"Bash(docker compose down:*)\",\n      \"Bash(docker run:*)\"\n    ],\n    \"deny\": [\n      \"Bash(docker system prune:*)\",\n      \"Bash(docker volume rm:*)\"\n    ]\n  }\n}\n",[207,5199,5200,5204,5216,5228,5239,5250,5261,5270,5274,5286,5297,5308,5317,5321,5333,5344,5353,5357,5361],{"__ignoreMap":1024},[1028,5201,5202],{"class":1030,"line":1031},[1028,5203,1535],{"class":1057},[1028,5205,5206,5208,5210,5212,5214],{"class":1030,"line":1038},[1028,5207,1540],{"class":1057},[1028,5209,1568],{"class":1543},[1028,5211,1547],{"class":1057},[1028,5213,1550],{"class":1057},[1028,5215,1575],{"class":1057},[1028,5217,5218,5220,5222,5224,5226],{"class":1030,"line":1045},[1028,5219,1580],{"class":1057},[1028,5221,1603],{"class":1583},[1028,5223,1547],{"class":1057},[1028,5225,1550],{"class":1057},[1028,5227,1610],{"class":1057},[1028,5229,5230,5232,5235,5237],{"class":1030,"line":1051},[1028,5231,1615],{"class":1057},[1028,5233,5234],{"class":1061},"Bash(docker ps)",[1028,5236,1547],{"class":1057},[1028,5238,1561],{"class":1057},[1028,5240,5241,5243,5246,5248],{"class":1030,"line":1071},[1028,5242,1615],{"class":1057},[1028,5244,5245],{"class":1061},"Bash(docker compose ps)",[1028,5247,1547],{"class":1057},[1028,5249,1561],{"class":1057},[1028,5251,5252,5254,5257,5259],{"class":1030,"line":1076},[1028,5253,1615],{"class":1057},[1028,5255,5256],{"class":1061},"Bash(docker compose logs:*)",[1028,5258,1547],{"class":1057},[1028,5260,1561],{"class":1057},[1028,5262,5263,5265,5268],{"class":1030,"line":1083},[1028,5264,1615],{"class":1057},[1028,5266,5267],{"class":1061},"Bash(docker logs:*)",[1028,5269,1068],{"class":1057},[1028,5271,5272],{"class":1030,"line":1089},[1028,5273,1716],{"class":1057},[1028,5275,5276,5278,5280,5282,5284],{"class":1030,"line":1098},[1028,5277,1580],{"class":1057},[1028,5279,1789],{"class":1583},[1028,5281,1547],{"class":1057},[1028,5283,1550],{"class":1057},[1028,5285,1610],{"class":1057},[1028,5287,5288,5290,5293,5295],{"class":1030,"line":1107},[1028,5289,1615],{"class":1057},[1028,5291,5292],{"class":1061},"Bash(docker compose up:*)",[1028,5294,1547],{"class":1057},[1028,5296,1561],{"class":1057},[1028,5298,5299,5301,5304,5306],{"class":1030,"line":1116},[1028,5300,1615],{"class":1057},[1028,5302,5303],{"class":1061},"Bash(docker compose down:*)",[1028,5305,1547],{"class":1057},[1028,5307,1561],{"class":1057},[1028,5309,5310,5312,5315],{"class":1030,"line":1121},[1028,5311,1615],{"class":1057},[1028,5313,5314],{"class":1061},"Bash(docker run:*)",[1028,5316,1068],{"class":1057},[1028,5318,5319],{"class":1030,"line":1691},[1028,5320,1716],{"class":1057},[1028,5322,5323,5325,5327,5329,5331],{"class":1030,"line":1703},[1028,5324,1580],{"class":1057},[1028,5326,1724],{"class":1583},[1028,5328,1547],{"class":1057},[1028,5330,1550],{"class":1057},[1028,5332,1610],{"class":1057},[1028,5334,5335,5337,5340,5342],{"class":1030,"line":1713},[1028,5336,1615],{"class":1057},[1028,5338,5339],{"class":1061},"Bash(docker system prune:*)",[1028,5341,1547],{"class":1057},[1028,5343,1561],{"class":1057},[1028,5345,5346,5348,5351],{"class":1030,"line":1719},[1028,5347,1615],{"class":1057},[1028,5349,5350],{"class":1061},"Bash(docker volume rm:*)",[1028,5352,1068],{"class":1057},[1028,5354,5355],{"class":1030,"line":1733},[1028,5356,1823],{"class":1057},[1028,5358,5359],{"class":1030,"line":1745},[1028,5360,1867],{"class":1057},[1028,5362,5363],{"class":1030,"line":1757},[1028,5364,1873],{"class":1057},[262,5366],{},[265,5368,5370],{"id":5369},"十四附ci-无人值守场景","十四、附：CI \u002F 无人值守场景",[198,5372,5373,5374,5377],{},"Claude Code 也可在 CI 中以 ",[207,5375,5376],{},"headless"," 模式运行（例如自动对 PR 做评审、批量重构）。",[277,5379,5381],{"id":5380},"_141-单次执行","14.1 单次执行",[1019,5383,5385],{"className":4127,"code":5384,"language":4129,"meta":1024,"style":1024},"# 把 prompt 直接传入，输出 JSON 便于解析\nclaude -p \"审查当前 git diff 并把问题写入 review.md\" \\\n  --output-format json \\\n  --permission-mode acceptEdits\n",[207,5386,5387,5392,5409,5419],{"__ignoreMap":1024},[1028,5388,5389],{"class":1030,"line":1031},[1028,5390,5391],{"class":1034},"# 把 prompt 直接传入，输出 JSON 便于解析\n",[1028,5393,5394,5396,5399,5401,5404,5406],{"class":1030,"line":1038},[1028,5395,274],{"class":1583},[1028,5397,5398],{"class":1061}," -p",[1028,5400,1553],{"class":1057},[1028,5402,5403],{"class":1061},"审查当前 git diff 并把问题写入 review.md",[1028,5405,1547],{"class":1057},[1028,5407,5408],{"class":1041}," \\\n",[1028,5410,5411,5414,5417],{"class":1030,"line":1045},[1028,5412,5413],{"class":1061},"  --output-format",[1028,5415,5416],{"class":1061}," json",[1028,5418,5408],{"class":1041},[1028,5420,5421,5424],{"class":1030,"line":1051},[1028,5422,5423],{"class":1061},"  --permission-mode",[1028,5425,5426],{"class":1061}," acceptEdits\n",[277,5428,5430],{"id":5429},"_142-github-actions-片段","14.2 GitHub Actions 片段",[1019,5432,5436],{"className":5433,"code":5434,"language":5435,"meta":1024,"style":1024},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: claude-review\non:\n  pull_request:\n    types: [opened, synchronize]\n\njobs:\n  review:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      pull-requests: write\n    steps:\n      - uses: actions\u002Fcheckout@v4\n        with: { fetch-depth: 0 }\n      - name: Install Claude Code\n        run: npm i -g @anthropic-ai\u002Fclaude-code\n      - name: Run review\n        env:\n          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}\n        run: |\n          claude -p \"对本 PR 的 diff 做 senior reviewer 评审，输出 markdown 到 review.md\" \\\n            --permission-mode acceptEdits \\\n            --output-format text\n      - name: Comment on PR\n        run: gh pr comment ${{ github.event.pull_request.number }} --body-file review.md\n","yaml",[207,5437,5438,5447,5456,5463,5482,5486,5493,5500,5510,5517,5527,5537,5544,5557,5577,5589,5599,5610,5617,5627,5637,5642,5647,5652,5663],{"__ignoreMap":1024},[1028,5439,5440,5442,5444],{"class":1030,"line":1031},[1028,5441,3138],{"class":2223},[1028,5443,1550],{"class":1057},[1028,5445,5446],{"class":1061}," claude-review\n",[1028,5448,5449,5453],{"class":1030,"line":1038},[1028,5450,5452],{"class":5451},"sfNiH","on",[1028,5454,5455],{"class":1057},":\n",[1028,5457,5458,5461],{"class":1030,"line":1045},[1028,5459,5460],{"class":2223},"  pull_request",[1028,5462,5455],{"class":1057},[1028,5464,5465,5468,5470,5472,5475,5477,5480],{"class":1030,"line":1051},[1028,5466,5467],{"class":2223},"    types",[1028,5469,1550],{"class":1057},[1028,5471,3458],{"class":1057},[1028,5473,5474],{"class":1061},"opened",[1028,5476,2548],{"class":1057},[1028,5478,5479],{"class":1061}," synchronize",[1028,5481,3486],{"class":1057},[1028,5483,5484],{"class":1030,"line":1071},[1028,5485,1080],{"emptyLinePlaceholder":1079},[1028,5487,5488,5491],{"class":1030,"line":1076},[1028,5489,5490],{"class":2223},"jobs",[1028,5492,5455],{"class":1057},[1028,5494,5495,5498],{"class":1030,"line":1083},[1028,5496,5497],{"class":2223},"  review",[1028,5499,5455],{"class":1057},[1028,5501,5502,5505,5507],{"class":1030,"line":1089},[1028,5503,5504],{"class":2223},"    runs-on",[1028,5506,1550],{"class":1057},[1028,5508,5509],{"class":1061}," ubuntu-latest\n",[1028,5511,5512,5515],{"class":1030,"line":1098},[1028,5513,5514],{"class":2223},"    permissions",[1028,5516,5455],{"class":1057},[1028,5518,5519,5522,5524],{"class":1030,"line":1107},[1028,5520,5521],{"class":2223},"      contents",[1028,5523,1550],{"class":1057},[1028,5525,5526],{"class":1061}," read\n",[1028,5528,5529,5532,5534],{"class":1030,"line":1116},[1028,5530,5531],{"class":2223},"      pull-requests",[1028,5533,1550],{"class":1057},[1028,5535,5536],{"class":1061}," write\n",[1028,5538,5539,5542],{"class":1030,"line":1121},[1028,5540,5541],{"class":2223},"    steps",[1028,5543,5455],{"class":1057},[1028,5545,5546,5549,5552,5554],{"class":1030,"line":1691},[1028,5547,5548],{"class":1057},"      -",[1028,5550,5551],{"class":2223}," uses",[1028,5553,1550],{"class":1057},[1028,5555,5556],{"class":1061}," actions\u002Fcheckout@v4\n",[1028,5558,5559,5562,5564,5567,5570,5572,5575],{"class":1030,"line":1703},[1028,5560,5561],{"class":2223},"        with",[1028,5563,1550],{"class":1057},[1028,5565,5566],{"class":1057}," {",[1028,5568,5569],{"class":2223}," fetch-depth",[1028,5571,1550],{"class":1057},[1028,5573,5574],{"class":2184}," 0",[1028,5576,2566],{"class":1057},[1028,5578,5579,5581,5584,5586],{"class":1030,"line":1713},[1028,5580,5548],{"class":1057},[1028,5582,5583],{"class":2223}," name",[1028,5585,1550],{"class":1057},[1028,5587,5588],{"class":1061}," Install Claude Code\n",[1028,5590,5591,5594,5596],{"class":1030,"line":1719},[1028,5592,5593],{"class":2223},"        run",[1028,5595,1550],{"class":1057},[1028,5597,5598],{"class":1061}," npm i -g @anthropic-ai\u002Fclaude-code\n",[1028,5600,5601,5603,5605,5607],{"class":1030,"line":1733},[1028,5602,5548],{"class":1057},[1028,5604,5583],{"class":2223},[1028,5606,1550],{"class":1057},[1028,5608,5609],{"class":1061}," Run review\n",[1028,5611,5612,5615],{"class":1030,"line":1745},[1028,5613,5614],{"class":2223},"        env",[1028,5616,5455],{"class":1057},[1028,5618,5619,5622,5624],{"class":1030,"line":1757},[1028,5620,5621],{"class":2223},"          ANTHROPIC_API_KEY",[1028,5623,1550],{"class":1057},[1028,5625,5626],{"class":1061}," ${{ secrets.ANTHROPIC_API_KEY }}\n",[1028,5628,5629,5631,5633],{"class":1030,"line":1769},[1028,5630,5593],{"class":2223},[1028,5632,1550],{"class":1057},[1028,5634,5636],{"class":5635},"s7zQu"," |\n",[1028,5638,5639],{"class":1030,"line":1779},[1028,5640,5641],{"class":1061},"          claude -p \"对本 PR 的 diff 做 senior reviewer 评审，输出 markdown 到 review.md\" \\\n",[1028,5643,5644],{"class":1030,"line":1784},[1028,5645,5646],{"class":1061},"            --permission-mode acceptEdits \\\n",[1028,5648,5649],{"class":1030,"line":1798},[1028,5650,5651],{"class":1061},"            --output-format text\n",[1028,5653,5654,5656,5658,5660],{"class":1030,"line":1810},[1028,5655,5548],{"class":1057},[1028,5657,5583],{"class":2223},[1028,5659,1550],{"class":1057},[1028,5661,5662],{"class":1061}," Comment on PR\n",[1028,5664,5665,5667,5669],{"class":1030,"line":1820},[1028,5666,5593],{"class":2223},[1028,5668,1550],{"class":1057},[1028,5670,5671],{"class":1061}," gh pr comment ${{ github.event.pull_request.number }} --body-file review.md\n",[195,5673,5674],{},[198,5675,5676,5677,5679,5680,5682,5683,5685],{},"CI 场景中一般禁用 ",[207,5678,237],{},"，使用 ",[207,5681,471],{}," + 严格 ",[207,5684,1724],{}," 规则更安全。",[277,5687,5689],{"id":5688},"_143-与-hook-联动的全自动-commit","14.3 与 Hook 联动的「全自动 commit」",[1019,5691,5693],{"className":1526,"code":5692,"language":1528,"meta":1024,"style":1024},"{\n  \"hooks\": {\n    \"Stop\": [\n      {\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"bash -c 'cd \\\"$CLAUDE_PROJECT_DIR\\\" && git add -A && git diff --cached --quiet || git commit -m \\\"chore(claude): autosave $(date +%H%M)\\\"'\"\n          }\n        ]\n      }\n    ]\n  }\n}\n",[207,5694,5695,5699,5711,5723,5727,5739,5743,5761,5798,5802,5806,5810,5814,5818],{"__ignoreMap":1024},[1028,5696,5697],{"class":1030,"line":1031},[1028,5698,1535],{"class":1057},[1028,5700,5701,5703,5705,5707,5709],{"class":1030,"line":1038},[1028,5702,1540],{"class":1057},[1028,5704,231],{"class":1543},[1028,5706,1547],{"class":1057},[1028,5708,1550],{"class":1057},[1028,5710,1575],{"class":1057},[1028,5712,5713,5715,5717,5719,5721],{"class":1030,"line":1045},[1028,5714,1580],{"class":1057},[1028,5716,2087],{"class":1583},[1028,5718,1547],{"class":1057},[1028,5720,1550],{"class":1057},[1028,5722,1610],{"class":1057},[1028,5724,5725],{"class":1030,"line":1051},[1028,5726,2176],{"class":1057},[1028,5728,5729,5731,5733,5735,5737],{"class":1030,"line":1071},[1028,5730,2181],{"class":1057},[1028,5732,231],{"class":2184},[1028,5734,1547],{"class":1057},[1028,5736,1550],{"class":1057},[1028,5738,1610],{"class":1057},[1028,5740,5741],{"class":1030,"line":1076},[1028,5742,2215],{"class":1057},[1028,5744,5745,5747,5749,5751,5753,5755,5757,5759],{"class":1030,"line":1083},[1028,5746,2220],{"class":1057},[1028,5748,2224],{"class":2223},[1028,5750,1547],{"class":1057},[1028,5752,1550],{"class":1057},[1028,5754,1553],{"class":1057},[1028,5756,2233],{"class":1061},[1028,5758,1547],{"class":1057},[1028,5760,1561],{"class":1057},[1028,5762,5763,5765,5767,5769,5771,5773,5776,5778,5781,5783,5786,5788,5791,5793,5796],{"class":1030,"line":1089},[1028,5764,2220],{"class":1057},[1028,5766,2233],{"class":2223},[1028,5768,1547],{"class":1057},[1028,5770,1550],{"class":1057},[1028,5772,1553],{"class":1057},[1028,5774,5775],{"class":1061},"bash -c 'cd ",[1028,5777,2376],{"class":1041},[1028,5779,5780],{"class":1061},"$CLAUDE_PROJECT_DIR",[1028,5782,2376],{"class":1041},[1028,5784,5785],{"class":1061}," && git add -A && git diff --cached --quiet || git commit -m ",[1028,5787,2376],{"class":1041},[1028,5789,5790],{"class":1061},"chore(claude): autosave $(date +%H%M)",[1028,5792,2376],{"class":1041},[1028,5794,5795],{"class":1061},"'",[1028,5797,1068],{"class":1057},[1028,5799,5800],{"class":1030,"line":1098},[1028,5801,2275],{"class":1057},[1028,5803,5804],{"class":1030,"line":1107},[1028,5805,2280],{"class":1057},[1028,5807,5808],{"class":1030,"line":1116},[1028,5809,2285],{"class":1057},[1028,5811,5812],{"class":1030,"line":1121},[1028,5813,1823],{"class":1057},[1028,5815,5816],{"class":1030,"line":1691},[1028,5817,1867],{"class":1057},[1028,5819,5820],{"class":1030,"line":1703},[1028,5821,1873],{"class":1057},[195,5823,5824],{},[198,5825,5826],{},"⚠️ 自动 commit 适合「实验分支」或独立 worktree，不要直接对接主分支。",[262,5828],{},[265,5830,5832],{"id":5831},"十五附sub-agents子智能体配置速查","十五、附：Sub-agents（子智能体）配置速查",[198,5834,5835,5836,5839],{},"子智能体是「带独立上下文窗口、独立系统提示、独立工具白名单」的小 Claude，由主 Agent 通过 ",[207,5837,5838],{},"Task"," 工具调用。适合并行调研、隔离上下文、强制执行某种角色。",[277,5841,5843],{"id":5842},"_151-目录与文件","15.1 目录与文件",[1019,5845,5848],{"className":5846,"code":5847,"language":3118},[3116],".claude\u002Fagents\u002F\n├── reviewer.md       # 项目级\n└── researcher.md\n~\u002F.claude\u002Fagents\u002F\n└── chinese-writer.md # 用户全局\n",[207,5849,5847],{"__ignoreMap":1024},[277,5851,5853],{"id":5852},"_152-子智能体-markdown-模板","15.2 子智能体 Markdown 模板",[1019,5855,5857],{"className":1021,"code":5856,"language":1023,"meta":1024,"style":1024},"---\nname: code-reviewer\ndescription: 审查最近的 git diff，给出 blocker\u002Fmajor\u002Fminor 分级反馈\ntools:\n  - Read\n  - Grep\n  - Glob\n  - Bash(git diff:*)\n  - Bash(git log:*)\nmodel: claude-opus-4-7\n---\n\n你是一位严格的资深代码评审员。原则：\n- 优先指出安全 \u002F 数据正确性问题\n- 关注边界条件、错误路径、并发\n- 不放过命名歧义与可读性\n- 反例使用代码片段说明\n\n输出格式：\n## Blockers\n- ...\n## Majors\n- ...\n## Minors \u002F Nits\n- ...\n",[207,5858,5859,5863,5872,5881,5888,5896,5903,5910,5917,5924,5933,5937,5941,5946,5953,5960,5967,5974,5978,5983,5990,5997,6004,6010,6017],{"__ignoreMap":1024},[1028,5860,5861],{"class":1030,"line":1031},[1028,5862,1042],{"class":1057},[1028,5864,5865,5867,5869],{"class":1030,"line":1038},[1028,5866,3138],{"class":2223},[1028,5868,1550],{"class":1057},[1028,5870,5871],{"class":1061}," code-reviewer\n",[1028,5873,5874,5876,5878],{"class":1030,"line":1045},[1028,5875,3148],{"class":2223},[1028,5877,1550],{"class":1057},[1028,5879,5880],{"class":1061}," 审查最近的 git diff，给出 blocker\u002Fmajor\u002Fminor 分级反馈\n",[1028,5882,5883,5886],{"class":1030,"line":1051},[1028,5884,5885],{"class":2223},"tools",[1028,5887,5455],{"class":1057},[1028,5889,5890,5893],{"class":1030,"line":1071},[1028,5891,5892],{"class":1057},"  -",[1028,5894,5895],{"class":1061}," Read\n",[1028,5897,5898,5900],{"class":1030,"line":1076},[1028,5899,5892],{"class":1057},[1028,5901,5902],{"class":1061}," Grep\n",[1028,5904,5905,5907],{"class":1030,"line":1083},[1028,5906,5892],{"class":1057},[1028,5908,5909],{"class":1061}," Glob\n",[1028,5911,5912,5914],{"class":1030,"line":1089},[1028,5913,5892],{"class":1057},[1028,5915,5916],{"class":1061}," Bash(git diff:*)\n",[1028,5918,5919,5921],{"class":1030,"line":1098},[1028,5920,5892],{"class":1057},[1028,5922,5923],{"class":1061}," Bash(git log:*)\n",[1028,5925,5926,5928,5930],{"class":1030,"line":1107},[1028,5927,1450],{"class":2223},[1028,5929,1550],{"class":1057},[1028,5931,5932],{"class":1061}," claude-opus-4-7\n",[1028,5934,5935],{"class":1030,"line":1116},[1028,5936,1042],{"class":1057},[1028,5938,5939],{"class":1030,"line":1121},[1028,5940,1080],{"emptyLinePlaceholder":1079},[1028,5942,5943],{"class":1030,"line":1691},[1028,5944,5945],{"class":1041},"你是一位严格的资深代码评审员。原则：\n",[1028,5947,5948,5950],{"class":1030,"line":1703},[1028,5949,2751],{"class":1057},[1028,5951,5952],{"class":1041}," 优先指出安全 \u002F 数据正确性问题\n",[1028,5954,5955,5957],{"class":1030,"line":1713},[1028,5956,2751],{"class":1057},[1028,5958,5959],{"class":1041}," 关注边界条件、错误路径、并发\n",[1028,5961,5962,5964],{"class":1030,"line":1719},[1028,5963,2751],{"class":1057},[1028,5965,5966],{"class":1041}," 不放过命名歧义与可读性\n",[1028,5968,5969,5971],{"class":1030,"line":1733},[1028,5970,2751],{"class":1057},[1028,5972,5973],{"class":1041}," 反例使用代码片段说明\n",[1028,5975,5976],{"class":1030,"line":1745},[1028,5977,1080],{"emptyLinePlaceholder":1079},[1028,5979,5980],{"class":1030,"line":1757},[1028,5981,5982],{"class":1041},"输出格式：\n",[1028,5984,5985,5987],{"class":1030,"line":1769},[1028,5986,2727],{"class":1057},[1028,5988,5989],{"class":1583},"Blockers\n",[1028,5991,5992,5994],{"class":1030,"line":1779},[1028,5993,2751],{"class":1057},[1028,5995,5996],{"class":1041}," ...\n",[1028,5998,5999,6001],{"class":1030,"line":1784},[1028,6000,2727],{"class":1057},[1028,6002,6003],{"class":1583},"Majors\n",[1028,6005,6006,6008],{"class":1030,"line":1798},[1028,6007,2751],{"class":1057},[1028,6009,5996],{"class":1041},[1028,6011,6012,6014],{"class":1030,"line":1810},[1028,6013,2727],{"class":1057},[1028,6015,6016],{"class":1583},"Minors \u002F Nits\n",[1028,6018,6019,6021],{"class":1030,"line":1820},[1028,6020,2751],{"class":1057},[1028,6022,5996],{"class":1041},[277,6024,6026],{"id":6025},"_153-调用方式","15.3 调用方式",[198,6028,6029,6030,6032],{},"主 Agent 会根据子智能体的 ",[207,6031,3148],{}," 自动判断是否分派。也可由用户显式触发：",[1019,6034,6037],{"className":6035,"code":6036,"language":3118},[3116],"请用 code-reviewer 子智能体评审当前的 git diff。\n",[207,6038,6036],{"__ignoreMap":1024},[277,6040,6042],{"id":6041},"_154-何时用子智能体vs-直接干","15.4 何时用子智能体（vs 直接干）",[282,6044,6045,6054],{},[285,6046,6047],{},[288,6048,6049,6052],{},[291,6050,6051],{},"场景",[291,6053,3046],{},[301,6055,6056,6064,6072,6079],{},[288,6057,6058,6061],{},[306,6059,6060],{},"一次性、强角色、上下文重",[306,6062,6063],{},"✅ Sub-agent",[288,6065,6066,6069],{},[306,6067,6068],{},"持续迭代、需要主对话上下文",[306,6070,6071],{},"❌ 直接干",[288,6073,6074,6077],{},[306,6075,6076],{},"需要并行（同时跑多份调研）",[306,6078,6063],{},[288,6080,6081,6084],{},[306,6082,6083],{},"需要隔离危险动作（只读评审）",[306,6085,6063],{},[262,6087],{},[265,6089,6091],{"id":6090},"十六附高频-prompt-片段库","十六、附：高频 Prompt 片段库",[198,6093,6094,6095,6098],{},"下面这些片段可以收藏到自定义 Slash 命令（",[207,6096,6097],{},".claude\u002Fcommands\u002F","）中，按需调用。",[277,6100,6102],{"id":6101},"_161-读懂代码三连","16.1 「读懂代码」三连",[1019,6104,6107],{"className":6105,"code":6106,"language":3118},[3116],"任务：理解 \u003Cpath\u002Fto\u002Ffile.ts>。\n请：\n1. 用 5 行以内中文概括它做了什么\n2. 列出它依赖的关键模块（不超过 8 条）\n3. 列出调用它的地方（用 grep 实证）\n不要修改任何文件。\n",[207,6108,6106],{"__ignoreMap":1024},[277,6110,6112],{"id":6111},"_162-最小修复原则","16.2 「最小修复」原则",[1019,6114,6117],{"className":6115,"code":6116,"language":3118},[3116],"我要修这个 bug：\u003C现象描述>\n约束：\n- 单文件、最少行变更\n- 不引入新依赖\n- 必须新增 \u002F 修改至少 1 个测试覆盖该 case\n- 修完后跑 `pnpm test` 直到通过\n",[207,6118,6116],{"__ignoreMap":1024},[277,6120,6122],{"id":6121},"_163-重构前必答","16.3 「重构前必答」",[1019,6124,6127],{"className":6125,"code":6126,"language":3118},[3116],"重构开始前请回答：\n1. 当前结构的痛点（具体例子）\n2. 你计划的目标结构（一句话 + 一张文字版示意）\n3. 兼容策略（如何保证调用方不动）\n4. 回滚方案（万一失败如何 5 分钟内回滚）\n",[207,6128,6126],{"__ignoreMap":1024},[277,6130,6132],{"id":6131},"_164-解释给非技术","16.4 「解释给非技术」",[1019,6134,6137],{"className":6135,"code":6136,"language":3118},[3116],"用一段话向产品经理解释这次改动：\n- 解决了什么问题\n- 用户能感知到什么\n- 上线后我们应该观察哪个指标\n不要出现技术术语。\n",[207,6138,6136],{"__ignoreMap":1024},[277,6140,6142],{"id":6141},"_165-质量门禁收尾","16.5 「质量门禁」收尾",[1019,6144,6147],{"className":6145,"code":6146,"language":3118},[3116],"完成前必须：\n1. `pnpm typecheck` 通过\n2. `pnpm lint` 无 error\n3. `pnpm test` 全绿\n4. 自己 git diff 自检一遍，列出 3 条「我作为评审最担心的点」\n",[207,6148,6146],{"__ignoreMap":1024},[262,6150],{},[265,6152,6154],{"id":6153},"十七附术语索引","十七、附：术语索引",[282,6156,6157,6166],{},[285,6158,6159],{},[288,6160,6161,6164],{},[291,6162,6163],{},"术语",[291,6165,1889],{},[301,6167,6168,6176,6184,6195,6203,6211,6219,6227,6235,6243,6251,6259,6271,6279],{},[288,6169,6170,6173],{},[306,6171,6172],{},"Harness",[306,6174,6175],{},"Claude Code 主进程，负责调度模型、执行工具、跑 hooks",[288,6177,6178,6181],{},[306,6179,6180],{},"Tool",[306,6182,6183],{},"Claude 可以发起的动作（Bash \u002F Read \u002F Edit \u002F WebFetch \u002F MCP 工具…）",[288,6185,6186,6189],{},[306,6187,6188],{},"Slash Command",[306,6190,6191,6192,6194],{},"以 ",[207,6193,661],{}," 开头的会话内命令，由 harness 解释",[288,6196,6197,6200],{},[306,6198,6199],{},"Permission Mode",[306,6201,6202],{},"控制工具确认策略的全局开关",[288,6204,6205,6208],{},[306,6206,6207],{},"Memory",[306,6209,6210],{},"自动加载到上下文的项目 \u002F 用户偏好（CLAUDE.md 等）",[288,6212,6213,6216],{},[306,6214,6215],{},"Skill",[306,6217,6218],{},"「按需加载」的过程性知识包",[288,6220,6221,6224],{},[306,6222,6223],{},"Hook",[306,6225,6226],{},"在生命周期事件触发的本地命令",[288,6228,6229,6232],{},[306,6230,6231],{},"MCP Server",[306,6233,6234],{},"通过 Model Context Protocol 提供工具 \u002F 资源的外部进程",[288,6236,6237,6240],{},[306,6238,6239],{},"Subagent",[306,6241,6242],{},"主 Agent 派遣的临时子任务执行者",[288,6244,6245,6248],{},[306,6246,6247],{},"Compact",[306,6249,6250],{},"把当前上下文压缩成摘要以释放 token",[288,6252,6253,6256],{},[306,6254,6255],{},"Plan Mode",[306,6257,6258],{},"只规划不写盘的安全模式",[288,6260,6261,6264],{},[306,6262,6263],{},"Headless",[306,6265,6266,6267,6270],{},"无人值守 \u002F 非交互式运行（",[207,6268,6269],{},"-p"," 参数）",[288,6272,6273,6276],{},[306,6274,6275],{},"Cache（Prompt Caching）",[306,6277,6278],{},"把稳定前缀缓存以减少重复 token 计费",[288,6280,6281,6284],{},[306,6282,6283],{},"Trunk-based",[306,6285,6286],{},"单主干分支开发模式，强调短分支与频繁合并",[262,6288],{},[265,6290,6292],{"id":6291},"十八附常见误用与纠正","十八、附：常见误用与纠正",[282,6294,6295,6305],{},[285,6296,6297],{},[288,6298,6299,6302],{},[291,6300,6301],{},"误用",[291,6303,6304],{},"纠正",[301,6306,6307,6315,6329,6344,6358,6368],{},[288,6308,6309,6312],{},[306,6310,6311],{},"把所有上下文一次性塞进 prompt",[306,6313,6314],{},"让 Claude 主动 grep \u002F read 实际代码",[288,6316,6317,6323],{},[306,6318,6319,6320,6322],{},"用 ",[207,6321,237],{}," 在主机上「跑得快」",[306,6324,6325,6326,6328],{},"改为 ",[207,6327,471],{}," + 容器隔离",[288,6330,6331,6337],{},[306,6332,6333,6334,6336],{},"把秘密写进 ",[207,6335,108],{},"（会入库）",[306,6338,6339,6340,6343],{},"放进 ",[207,6341,6342],{},"CLAUDE.local.md"," 或环境变量",[288,6345,6346,6355],{},[306,6347,6319,6348,661,6351,6354],{},[207,6349,6350],{},"cat",[207,6352,6353],{},"echo"," 代替工具",[306,6356,6357],{},"优先 Read \u002F Write \u002F Edit 等专用工具",[288,6359,6360,6363],{},[306,6361,6362],{},"在长会话里反复贴大文件",[306,6364,4055,6365,6367],{},[207,6366,718],{},"，或拆 session",[288,6369,6370,6373],{},[306,6371,6372],{},"让 Claude 自己说\"做完了\"就结束",[306,6374,6375],{},"强制走质量门禁（typecheck\u002Flint\u002Ftest）",[262,6377],{},[265,6379,6380],{"id":6380},"延伸阅读",[246,6382,6383,6392,6399,6406,6413,6420,6427,6434,6441,6448,6455,6462],{},[249,6384,6385],{},[6386,6387,6391],"a",{"href":6388,"rel":6389},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Foverview",[6390],"nofollow","Claude Code 官方文档总入口",[249,6393,6394],{},[6386,6395,6398],{"href":6396,"rel":6397},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fslash-commands",[6390],"Slash Commands 官方文档",[249,6400,6401],{},[6386,6402,6405],{"href":6403,"rel":6404},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fhooks",[6390],"Hooks 官方文档",[249,6407,6408],{},[6386,6409,6412],{"href":6410,"rel":6411},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fsettings",[6390],"Settings & 权限官方文档",[249,6414,6415],{},[6386,6416,6419],{"href":6417,"rel":6418},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fcli-reference",[6390],"CLI Reference 官方文档",[249,6421,6422],{},[6386,6423,6426],{"href":6424,"rel":6425},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fskills",[6390],"Skills 官方文档",[249,6428,6429],{},[6386,6430,6433],{"href":6431,"rel":6432},"https:\u002F\u002Fmodelcontextprotocol.io\u002F",[6390],"MCP（Model Context Protocol）官方站",[249,6435,6436],{},[6386,6437,6440],{"href":6438,"rel":6439},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fmcp",[6390],"MCP 在 Claude Code 中的使用",[249,6442,6443],{},[6386,6444,6447],{"href":6445,"rel":6446},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fmemory",[6390],"Memory（CLAUDE.md）官方文档",[249,6449,6450],{},[6386,6451,6454],{"href":6452,"rel":6453},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fsub-agents",[6390],"Subagents 官方文档",[249,6456,6457],{},[6386,6458,6461],{"href":6459,"rel":6460},"https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fclaude-code-best-practices",[6390],"Anthropic 官方博客：Best Practices for Claude Code",[249,6463,6464],{},[6386,6465,6468],{"href":6466,"rel":6467},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fbuild-with-claude\u002Fprompt-caching",[6390],"Prompt Caching 官方文档",[6470,6471,6472],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHepR, html code.shiki .sHepR{--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold}html pre.shiki code .so75L, html code.shiki .so75L{--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":1024,"searchDepth":1031,"depth":1038,"links":6474},[6475,6481,6488,6489,6494,6500,6505,6510,6516,6525,6530,6531,6532,6538,6543,6549,6556,6557,6558],{"id":267,"depth":1038,"text":268,"children":6476},[6477,6478,6479,6480],{"id":279,"depth":1045,"text":280},{"id":409,"depth":1045,"text":410},{"id":504,"depth":1045,"text":505},{"id":591,"depth":1045,"text":592},{"id":654,"depth":1038,"text":655,"children":6482},[6483,6484,6485,6486,6487],{"id":669,"depth":1045,"text":670},{"id":812,"depth":1045,"text":813},{"id":859,"depth":1045,"text":860},{"id":948,"depth":1045,"text":949},{"id":1016,"depth":1045,"text":1017},{"id":1136,"depth":1038,"text":1137},{"id":1282,"depth":1038,"text":1283,"children":6490},[6491,6492,6493],{"id":1336,"depth":1045,"text":1337},{"id":1522,"depth":1045,"text":1523},{"id":1876,"depth":1045,"text":1877},{"id":1987,"depth":1038,"text":1988,"children":6495},[6496,6497,6498,6499],{"id":1998,"depth":1045,"text":1999},{"id":2137,"depth":1045,"text":2138},{"id":2594,"depth":1045,"text":2595},{"id":2649,"depth":1045,"text":2650},{"id":2691,"depth":1038,"text":2692,"children":6501},[6502,6503,6504],{"id":2704,"depth":1045,"text":2705},{"id":3001,"depth":1045,"text":3002},{"id":3072,"depth":1045,"text":3073},{"id":3104,"depth":1038,"text":3105,"children":6506},[6507,6508,6509],{"id":3111,"depth":1045,"text":3112},{"id":3123,"depth":1045,"text":3124},{"id":3313,"depth":1045,"text":3314},{"id":3344,"depth":1038,"text":3345,"children":6511},[6512,6513,6514,6515],{"id":3351,"depth":1045,"text":3352},{"id":3389,"depth":1045,"text":3390},{"id":3700,"depth":1045,"text":3701},{"id":3729,"depth":1045,"text":3730},{"id":3797,"depth":1038,"text":3798,"children":6517},[6518,6519,6520,6521,6522,6523,6524],{"id":3804,"depth":1045,"text":3805},{"id":3814,"depth":1045,"text":3815},{"id":3824,"depth":1045,"text":3825},{"id":3834,"depth":1045,"text":3835},{"id":3844,"depth":1045,"text":3845},{"id":3854,"depth":1045,"text":3855},{"id":3864,"depth":1045,"text":3865},{"id":3876,"depth":1038,"text":3877,"children":6526},[6527,6528,6529],{"id":3880,"depth":1045,"text":3881},{"id":4123,"depth":1045,"text":4124},{"id":4246,"depth":1045,"text":4247},{"id":4291,"depth":1038,"text":4292},{"id":4401,"depth":1038,"text":4402},{"id":4539,"depth":1038,"text":4540,"children":6533},[6534,6535,6536,6537],{"id":4549,"depth":1045,"text":4550},{"id":4713,"depth":1045,"text":4714},{"id":5036,"depth":1045,"text":5037},{"id":5193,"depth":1045,"text":5194},{"id":5369,"depth":1038,"text":5370,"children":6539},[6540,6541,6542],{"id":5380,"depth":1045,"text":5381},{"id":5429,"depth":1045,"text":5430},{"id":5688,"depth":1045,"text":5689},{"id":5831,"depth":1038,"text":5832,"children":6544},[6545,6546,6547,6548],{"id":5842,"depth":1045,"text":5843},{"id":5852,"depth":1045,"text":5853},{"id":6025,"depth":1045,"text":6026},{"id":6041,"depth":1045,"text":6042},{"id":6090,"depth":1038,"text":6091,"children":6550},[6551,6552,6553,6554,6555],{"id":6101,"depth":1045,"text":6102},{"id":6111,"depth":1045,"text":6112},{"id":6121,"depth":1045,"text":6122},{"id":6131,"depth":1045,"text":6132},{"id":6141,"depth":1045,"text":6142},{"id":6153,"depth":1038,"text":6154},{"id":6291,"depth":1038,"text":6292},{"id":6380,"depth":1038,"text":6380},"md",null,{"date":6562},"2026-04-26",{"title":178,"description":1024},"lt35oJFIyV_e5SzlOZ_JA5TKb3OUnNjp-uTiuRGZogY",[6566,6568],{"title":168,"path":169,"stem":170,"description":6567,"children":-1},"Boris Cherny 是 Anthropic Claude Code 团队的工程师，他在 Anthropic 官方博客发表的 \"Claude Code Best Practices\"（2025 年 4 月）成为 AI 协作领域被引用最广的实战指南之一。该文章与他后续的多次公开演讲、社区分享共同构成了\"Claude Code 工程心法\"的事实基础。本节将其浓缩为 9 条可立即落地的心法，并补充本人在多个团队推广 Claude Code 时积累的经验。",{"title":182,"path":183,"stem":184,"description":1024,"children":-1},1777395306168]