[{"data":1,"prerenderedAt":611},["ShallowReactive",2],{"content-seo":3,"zh_topics":6,"zh_posts:\u002Fposts\u002Fclaude-code-agents-md-fallback":59},{"\u002F":4,"\u002Fposts":4,"\u002Ftopics":4,"\u002Fposts\u002Fclaude-code-agents-md-fallback":4,"\u002Fposts\u002Fmac-apps-i-use":4,"\u002Fposts\u002Fmacos-keyboard-shortcuts":4,"\u002Fposts\u002Fmacos-terminal-commands":4,"\u002Fposts\u002Ftailwind-advanced-customization":4,"\u002Fposts\u002Ftailwind-spacing":4,"\u002Fposts\u002Ftunneling-ngrok-frp":4,"\u002Fabout":4,"\u002Ftopics\u002Fbuilding":4,"\u002Ftopics\u002Flearning":4,"\u002Ftopics\u002Fliving":5,"\u002Fzh":4,"\u002Fzh\u002Fposts":4,"\u002Fzh\u002Ftopics":4,"\u002Fzh\u002Fposts\u002Fclaude-code-agents-md-fallback":4,"\u002Fzh\u002Fposts\u002Fmac-apps-i-use":4,"\u002Fzh\u002Fposts\u002Fmacos-keyboard-shortcuts":4,"\u002Fzh\u002Fposts\u002Fmacos-terminal-commands":4,"\u002Fzh\u002Fposts\u002Ftailwind-advanced-customization":4,"\u002Fzh\u002Fposts\u002Ftailwind-spacing":4,"\u002Fzh\u002Fabout":4,"\u002Fzh\u002Ftopics\u002Fbuilding":4,"\u002Fzh\u002Ftopics\u002Flearning":4,"\u002Fzh\u002Ftopics\u002Fliving":5},true,false,{"building":7,"learning":28,"living":43},{"id":8,"title":9,"body":10,"description":17,"extension":18,"meta":19,"navigation":4,"order":22,"path":23,"published_at":21,"seo":24,"sitemap":25,"stem":26,"__hash__":27},"zh_topics\u002Ftopics\u002Fbuilding.md","造物",{"type":11,"value":12,"toc":13},"minimark",[],{"title":14,"searchDepth":15,"depth":15,"links":16},"",2,[],"把想法做成东西：电商、产品，与 AI 一起敲下的代码。","md",{"icon":20,"created_at":21,"updated_at":21},"i-lucide-hammer","2026-10-16",1,"\u002Ftopics\u002Fbuilding",{"title":9,"description":17},{"loc":23},"topics\u002Fbuilding","oVA9tu7sd_eyfR_zUjr2EW9XNPdrvDC5ZYfCECV2YEg",{"id":29,"title":30,"body":31,"description":35,"extension":18,"meta":36,"navigation":4,"order":15,"path":38,"published_at":21,"seo":39,"sitemap":40,"stem":41,"__hash__":42},"zh_topics\u002Ftopics\u002Flearning.md","札记",{"type":11,"value":32,"toc":33},[],{"title":14,"searchDepth":15,"depth":15,"links":34},[],"读过的、试过的、踩过的坑，随手记下。",{"icon":37,"created_at":21,"updated_at":21},"i-lucide-notebook-pen","\u002Ftopics\u002Flearning",{"title":30,"description":35},{"loc":38},"topics\u002Flearning","VaQVDFCd0NuNux8vegUbv3IYoq4IiZyaI111aR5vMGg",{"id":44,"title":45,"body":46,"description":50,"extension":18,"meta":51,"navigation":4,"order":53,"path":54,"published_at":21,"seo":55,"sitemap":56,"stem":57,"__hash__":58},"zh_topics\u002Ftopics\u002Fliving.md","日常",{"type":11,"value":47,"toc":48},[],{"title":14,"searchDepth":15,"depth":15,"links":49},[],"工作之外，一些寻常日子。",{"icon":52,"created_at":21,"updated_at":21},"i-lucide-coffee",3,"\u002Ftopics\u002Fliving",{"title":45,"description":50},{"loc":54},"topics\u002Fliving","hIq7MDKoWaRiwBdutiE3nn4YlsJzhlv7cwxDpXCLZPw",{"page":60,"surround":605},{"id":61,"title":62,"body":63,"category":593,"created_at":594,"description":595,"excerpt":596,"extension":18,"guid":596,"icon":597,"image":596,"meta":598,"navigation":4,"path":599,"published_at":594,"seo":600,"sitemap":601,"stem":602,"topics":603,"updated_at":594,"__hash__":604},"zh_posts\u002Fposts\u002Fclaude-code-agents-md-fallback.md","Claude Code 读 AGENTS.md 的回退条件实测：为什么还不能删 CLAUDE.md",{"type":11,"value":64,"toc":585},[65,88,91,95,109,207,210,238,241,244,326,338,341,367,373,376,398,401,413,422,425,566,581],[66,67,68,69,73,74,77,78,80,81,83,84,87],"p",{},"Claude Code 从 2.1.277 起支持在没有 ",[70,71,72],"code",{},"CLAUDE.md"," 时直接读取 ",[70,75,76],{},"AGENTS.md","。我的项目同时给 Codex 和 Claude Code 用，每个目录都维护一对入口：",[70,79,76],{}," 是唯一权威，",[70,82,72],{}," 只写一行 ",[70,85,86],{},"@AGENTS.md","。于是自然想问：这一行是不是可以删了？",[66,89,90],{},"答案是不能。下面是实测过程。",[92,93,94],"h2",{"id":94},"测试设计",[66,96,97,98,100,101,104,105,108],{},"在一个上层没有任何 ",[70,99,72],{}," 的临时目录里搭四组结构，每个文件埋一个独一无二的标记（",[70,102,103],{},"MARKER_A_AGENTS"," 这样的 token），然后在各目录用 ",[70,106,107],{},"claude -p --debug"," 起一个非交互会话，看哪些标记真的进了上下文。",[110,111,112,128],"table",{},[113,114,115],"thead",{},[116,117,118,122,125],"tr",{},[119,120,121],"th",{},"组",[119,123,124],{},"结构",[119,126,127],{},"想验证什么",[129,130,131,145,165,185],"tbody",{},[116,132,133,137,142],{},[134,135,136],"td",{},"A",[134,138,139,140],{},"只有 ",[70,141,76],{},[134,143,144],{},"回退是否生效",[116,146,147,150,159],{},[134,148,149],{},"B",[134,151,152,153,155,156,158],{},"上层有 ",[70,154,72],{},"，子目录只有 ",[70,157,76],{},"，在子目录启动",[134,160,161,162,164],{},"删掉子项目的 ",[70,163,72],{}," 会怎样",[116,166,167,170,179],{},[134,168,169],{},"C",[134,171,139,172,174,175,178],{},[70,173,76],{},"，内含一个 cwd 内的 ",[70,176,177],{},"@"," 导入和一个 cwd 外的",[134,180,181,182,184],{},"回退路径下 ",[70,183,177],{}," 导入怎么处理",[116,186,187,190,204],{},[134,188,189],{},"D",[134,191,152,192,194,195,197,198,200,201,203],{},[70,193,72],{},"，子目录 ",[70,196,72],{}," 单行 ",[70,199,86],{}," + ",[70,202,76],{},"（含 cwd 外导入）",[134,205,206],{},"对照组，现有做法",[66,208,209],{},"证据不取模型的回答，取两处更硬的东西：",[211,212,213,231],"ul",{},[214,215,216,219,220,223,224,226,227,230],"li",{},[70,217,218],{},"--debug"," 日志里内置插件 ",[70,221,222],{},"cc-plugin-agents-md"," 的输出，它会在加载 ",[70,225,76],{}," 时写一行 ",[70,228,229],{},"no CLAUDE.md found; AGENTS.md loaded: \u003Cpath>","；",[214,232,233,234,237],{},"会话记录（",[70,235,236],{},"projects\u002F\u003Ccwd>\u002F\u003Csession>.jsonl","）里实际注入的指令文件内容，直接数标记。",[66,239,240],{},"测试时 CLI 的 OAuth 恰好过期，模型一句话都没回。这反而证明了一点：指令文件在发出第一个请求之前就已经装配完毕并写入会话记录，加载结果与模型无关。",[92,242,243],{"id":243},"结果",[110,245,246,258],{},[113,247,248],{},[116,249,250,252,255],{},[119,251,121],{},[119,253,254],{},"实际加载的标记",[119,256,257],{},"结论",[129,259,260,274,295,311],{},[116,261,262,264,268],{},[134,263,136],{},[134,265,266],{},[70,267,103],{},[134,269,270,271],{},"回退生效，日志出现 ",[70,272,273],{},"AGENTS.md loaded",[116,275,276,278,284],{},[134,277,149],{},[134,279,280,281],{},"只有上层的 ",[70,282,283],{},"MARKER_B_PARENT_CLAUDE",[134,285,286,287,289,290,294],{},"子目录 ",[70,288,76],{}," ",[291,292,293],"strong",{},"整份未加载","，日志里连祖先扫描都没有",[116,296,297,299,308],{},[134,298,169],{},[134,300,301,304,305],{},[70,302,303],{},"MARKER_C_AGENTS","、",[70,306,307],{},"MARKER_C_IMPORT_INSIDE",[134,309,310],{},"cwd 内导入展开；cwd 外导入静默丢弃，没有任何提示",[116,312,313,315,323],{},[134,314,189],{},[134,316,317,304,320],{},[70,318,319],{},"MARKER_D_PARENT_CLAUDE",[70,321,322],{},"MARKER_D_CHILD_AGENTS",[134,324,325],{},"配对入口正常；cwd 外导入同样未加载",[66,327,328,329,331,332,334,335,337],{},"B 组就是「删掉子项目 ",[70,330,72],{},"」之后的真实状态。只要祖先链上任何一层还有 ",[70,333,72],{},"，Claude Code 就把整个目录树当成 Claude 项目，不再查找任何 ",[70,336,76],{},"。子项目的身份、状态声明、技术栈导入会一起静默消失，没有警告。",[92,339,340],{"id":340},"机制",[66,342,343,344,304,346,349,350,353,354,357,358,360,361,363,364,366],{},"从二进制里能看到判定顺序：插件先扫描祖先链有没有 ",[70,345,72],{},[70,347,348],{},".claude\u002FCLAUDE.md"," 或 ",[70,351,352],{},"CLAUDE.local.md","，任一存在就标记 ",[70,355,356],{},"isClaudeProject","，直接跳过 ",[70,359,76],{}," 的查找。只有祖先链干净时才去找 ",[70,362,76],{},"，并展开它的 ",[70,365,177],{}," 导入。",[66,368,369,370,372],{},"这解释了 B 组日志为什么连 ",[70,371,76],{}," 的祖先扫描都没有：第一步就短路了。",[92,374,375],{"id":375},"一处没有分开的地方",[66,377,378,379,382,383,386,387,390,391,394,395,397],{},"C 和 D 的 cwd 外导入都没加载。我试过往 ",[70,380,381],{},"~\u002F.claude.json"," 的 ",[70,384,385],{},"projects[\u003Ccwd>]"," 写 ",[70,388,389],{},"hasClaudeMdExternalIncludesApproved: true"," 再跑，结果不变。所以在非交互的 ",[70,392,393],{},"claude -p"," 下，两条路径对仓外导入的处理一样：不加载。文档所说的「经 ",[70,396,72],{}," 导入时首次弹批准框」是交互行为，这次没有覆盖。",[92,399,400],{"id":400},"对我的意义",[66,402,403,404,406,407,409,410,412],{},"我的工作区是一个容器仓库，根目录有 ",[70,405,72],{},"，几十个子项目各自是独立 Git 仓库。它们全部命中 B 组的情形。删掉任何一个子项目的单行 ",[70,408,72],{},"，该项目的 ",[70,411,76],{}," 就对 Claude Code 不可见。",[66,414,415,416,418,419,421],{},"那一行 11 字节的 ",[70,417,86],{}," 继续留着。回退机制省不出什么，却会在两种情况下静默丢规则：上层有 ",[70,420,72],{}," 时丢整份，没有时丢仓外导入。",[92,423,424],{"id":424},"复现",[426,427,431],"pre",{"className":428,"code":429,"language":430,"meta":14,"style":14},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","mkdir -p \u002Ftmp\u002Ffb\u002FB\u002Fchild\nprintf 'MARKER_B_PARENT_CLAUDE present.\\n' > \u002Ftmp\u002Ffb\u002FB\u002FCLAUDE.md\nprintf 'MARKER_B_CHILD_AGENTS present.\\n' > \u002Ftmp\u002Ffb\u002FB\u002Fchild\u002FAGENTS.md\ncd \u002Ftmp\u002Ffb\u002FB\u002Fchild && claude -p --debug 'reply NONE' >\u002Fdev\u002Fnull 2>&1\ngrep -c MARKER_B_CHILD_AGENTS \"$(ls -t ~\u002F.claude\u002Fprojects\u002F*fb-B-child\u002F*.jsonl | head -1)\"\n","bash",[70,432,433,448,470,486,521],{"__ignoreMap":14},[434,435,437,441,445],"span",{"class":436,"line":22},"line",[434,438,440],{"class":439},"sBMFI","mkdir",[434,442,444],{"class":443},"sfazB"," -p",[434,446,447],{"class":443}," \u002Ftmp\u002Ffb\u002FB\u002Fchild\n",[434,449,450,454,458,461,464,467],{"class":436,"line":15},[434,451,453],{"class":452},"s2Zo4","printf",[434,455,457],{"class":456},"sMK4o"," '",[434,459,460],{"class":443},"MARKER_B_PARENT_CLAUDE present.\\n",[434,462,463],{"class":456},"'",[434,465,466],{"class":456}," >",[434,468,469],{"class":443}," \u002Ftmp\u002Ffb\u002FB\u002FCLAUDE.md\n",[434,471,472,474,476,479,481,483],{"class":436,"line":53},[434,473,453],{"class":452},[434,475,457],{"class":456},[434,477,478],{"class":443},"MARKER_B_CHILD_AGENTS present.\\n",[434,480,463],{"class":456},[434,482,466],{"class":456},[434,484,485],{"class":443}," \u002Ftmp\u002Ffb\u002FB\u002Fchild\u002FAGENTS.md\n",[434,487,489,492,495,498,501,503,506,508,511,513,515,518],{"class":436,"line":488},4,[434,490,491],{"class":452},"cd",[434,493,494],{"class":443}," \u002Ftmp\u002Ffb\u002FB\u002Fchild",[434,496,497],{"class":456}," &&",[434,499,500],{"class":439}," claude",[434,502,444],{"class":443},[434,504,505],{"class":443}," --debug",[434,507,457],{"class":456},[434,509,510],{"class":443},"reply NONE",[434,512,463],{"class":456},[434,514,466],{"class":456},[434,516,517],{"class":443},"\u002Fdev\u002Fnull",[434,519,520],{"class":456}," 2>&1\n",[434,522,524,527,530,533,536,539,542,546,549,551,554,557,560,563],{"class":436,"line":523},5,[434,525,526],{"class":439},"grep",[434,528,529],{"class":443}," -c",[434,531,532],{"class":443}," MARKER_B_CHILD_AGENTS",[434,534,535],{"class":456}," \"$(",[434,537,538],{"class":439},"ls",[434,540,541],{"class":443}," -t ~\u002F.claude\u002Fprojects\u002F",[434,543,545],{"class":544},"sTEyZ","*",[434,547,548],{"class":443},"fb-B-child\u002F",[434,550,545],{"class":544},[434,552,553],{"class":443},".jsonl ",[434,555,556],{"class":456},"|",[434,558,559],{"class":439}," head",[434,561,562],{"class":443}," -1",[434,564,565],{"class":456},")\"\n",[66,567,568,569,572,573,576,577,580],{},"输出 ",[70,570,571],{},"0"," 即为 B 组现象。",[70,574,575],{},"~\u002F.claude"," 换成你的 ",[70,578,579],{},"CLAUDE_CONFIG_DIR","。版本基准：Claude Code 2.1.304，2026-10-21 实测。",[582,583,584],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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);}",{"title":14,"searchDepth":15,"depth":15,"links":586},[587,588,589,590,591,592],{"id":94,"depth":15,"text":94},{"id":243,"depth":15,"text":243},{"id":340,"depth":15,"text":340},{"id":375,"depth":15,"text":375},{"id":400,"depth":15,"text":400},{"id":424,"depth":15,"text":424},"building","2026-10-21","用 claude -p --debug 实测 Claude Code 2.1.304 读取 AGENTS.md 的回退条件：上层目录存在 CLAUDE.md 时子项目的 AGENTS.md 整份不加载，cwd 之外的 @ 导入在非交互模式下也不加载。",null,"i-lucide-file-search",{},"\u002Fposts\u002Fclaude-code-agents-md-fallback",{"title":62,"description":595},{"loc":599},"posts\u002Fclaude-code-agents-md-fallback",[593],"uZE_wkuS2LNnqu6Q8Z_zLFMtNzODSvbhMSZlC3s_p_M",[596,606],{"title":607,"path":608,"stem":609,"description":610,"children":-1},"Mac 上使用的软件","\u002Fposts\u002Fmac-apps-i-use","posts\u002Fmac-apps-i-use","记录一下 Mac 上使用的软件，持续更新",1792977433780]