ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

腾讯二面追问 AGENTS.md:Claude Code 与 Cursor 的配置骨架该怎么写

腾讯二面追问 AGENTS.md:Claude Code 与 Cursor 的配置骨架该怎么写 1. 面试官为什么盯着 AGENTS.md 不放如果你最近在项目根目录看到过一个叫AGENTS.md的文件却一直没搞懂它和CLAUDE.md到底谁管谁那这篇就是写给你的。AGENTS.md是一份写给 AI 编程智能体看的“项目说明书”纯 Markdown没有必填字段核心作用是告诉智能体用什么命令构建和测试、代码风格怎么约定、哪些目录绝对不能碰、提交前要跑哪些检查。它和给人看的 README 分工不同——README 负责让新同事快速上手AGENTS.md负责让 Claude Code、Cursor、Codex 这类工具少犯错。它适合谁适合同时用两三个 AI 编程工具、又不想把同一套规则维护好几份的开发者。面试里被追问往往不是问你“知不知道这个文件”而是问你“多个工具并用时配置骨架怎么分层、加载顺序是什么、改完怎么验证生效”。这几个问题答不上来确实会显得平时只是把工具当黑盒在用。我试过在同一个仓库里同时挂 Cursor 和 Claude Code最开始两份规则各写各的结果 Cursor 改了测试命令Claude Code 那边还在跑旧命令排查了半天才发现是配置漂移。后来把通用规则收敛到AGENTS.md工具专属的再单独放问题才稳定下来。下面按“先讲清分工与加载顺序再给可复制骨架最后用一次改配置重开对话验证生效”的顺序展开中间穿插怎么通过 TaoToken 统一 Key 和 API 通道让多个工具走同一条接入路径。2. AGENTS.md 与 CLAUDE.md 的分工和加载顺序2.1 两者定位差异先把结论摆出来避免绕弯维度AGENTS.mdCLAUDE.md定位开放的跨工具标准Claude Code 专属格式支持工具Codex、Copilot、Cursor、Gemini CLI、Windsurf 等 30 多种仅 Claude Code格式要求纯 Markdown无固定字段纯 Markdown无固定字段Claude Code 是否原生读取不会需导入或 /init会原生支持关键点Claude Code 默认只认CLAUDE.md不会自动去读AGENTS.md。所以多工具并用时通用规则写进AGENTS.mdClaude Code 通过一行导入把它接进来这样规则只有一份源头。2.2 加载顺序与优先级理解加载顺序才能预测“改了哪份文件会生效”。以常见的分层结构为例/AGENTS.md ← 全局约定 /frontend/AGENTS.md ← 前端专属规则 /backend/AGENTS.md ← 后端专属规则 /services/payments/AGENTS.md ← 支付服务特殊规则智能体处理某个文件时会就近读取离它最近的那份AGENTS.md多份内容合并越靠近正在编辑的文件优先级越高。你在改services/payments下的代码支付服务那份“未经安全团队确认不得轮换密钥”的规则就比根目录通用规则优先。此外你在对话里临时给的指令优先级始终高于任何配置文件——它更像背景资料不是铁律。2.3 Claude Code 打通 AGENTS.md 的两种方式方法一用语法导入。新建CLAUDE.md第一行写AGENTS.mdClaude Code 打开项目时会通过这行导入读取AGENTS.md相当于两份合并生效。方法二运行/init。项目里已有AGENTS.md时在 Claude Code 里执行/init它会自动读取并整合AGENTS.md以及.cursorrules、.windsurfrules等规则文件。注意导入方式适合规则稳定的仓库/init适合初次接入或规则文件较多时做一次整合。两者不要反复交替用否则容易产生重复条目。3. 可复制的 AGENTS.md 与 CLAUDE.md 骨架3.1 AGENTS.md 骨架这份骨架覆盖六个核心板块直接改项目名和命令即可用# AGENTS.md ## 项目简介 这是一个基于 React 18 TypeScript Vite 的任务管理应用。 ## 开发环境 - 包管理器统一用 pnpm不要用 npm 或 yarn - pnpm install 安装依赖 - pnpm dev 启动开发服务器 ## 构建与测试 - pnpm build 生产构建 - pnpm test 跑全部测试 - 提交前必须保证测试全绿 - 新增或修改代码要补充对应测试即使没人要求 ## 代码风格 - 使用 MUI v3注意不要写出 v4 语法 - 状态管理统一用 mobx 的 useLocalStore - 禁止硬编码颜色值统一从 DynamicStyles.tsx 取设计 token ## 架构说明 - 业务概念上区分 workspace 与 group二者不是同层概念 - 数据请求统一走 src/api 下的封装不要直接裸调 fetch ## 安全边界 - 绝不能提交任何密钥到仓库 - 不要修改 .github/workflows 下的 CI 配置 - 不要引入新的重量级依赖除非获得批准 ## 提交规范 - commit message 使用 feat/fix/chore 前缀 - 分支从 main 切出命名 feature/xxx3.2 CLAUDE.md 骨架Claude Code 专属配置只放它独有的东西通用规则靠导入AGENTS.md ## Claude Code 专属 - 优先使用内置的 Read/Edit 工具不要用 cat/sed 绕路 - 长任务先输出计划再动手 - 涉及多文件重构时先列出受影响文件清单3.3 写作技巧命令精确、示例优先、边界分级命令要精确到能直接复制执行。写“用 pnpm 测试”不如写pnpm turbo run test --filterweb带上参数智能体会反复引用。想让智能体照某种风格写代码直接贴一段真实代码片段胜过三段文字描述。权限用“总是可以做 / 先问一下 / 绝对不能做”三级来划能有效防止破坏性操作。另外别写具体文件路径写“能力”和“概念”——src/auth/handlers.ts一旦被重命名AI 会自信地找错地方而“workspace 与 group 的区别”这类业务概念稳定得多。反直觉的约定要优先写比如某个看起来该加 try/catch 的地方偏偏不需要这类内容能让智能体理解设计意图。文件保持精简Codex 这类工具对AGENTS.md有默认 32KB 上限超出会被静默截断每一行都在争夺智能体有限的注意力预算。4. 用 TaoToken 统一多工具的 Key 与 API 通道多工具并用时另一个容易乱的地方是 Key 和 API 通道Cursor 配一套、Claude Code 配一套换工具就要重新找 Key。TaoToken 的思路是把模型接入收敛到一个入口官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。你可以先在控制台创建 Key再让各个工具指向同一通道。第一步打开控制台创建 API Keyhttps://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsole第二步在 API Keys 页面管理你的密钥建议按工具分 Key方便排查和吊销https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys第三步接入前对照文档确认参数格式避免路径拼错https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc如果你主要用 Claude Code 做长期编码可以了解 Coding Plan把编码类请求固定走一条通道https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-planClaude Code 的接入说明单独有一页照着填 base_url 和 Key 即可https://taotoken.net/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentClaudeCodeAnthropic注意Key 只放在本地环境变量或工具的配置界面里不要写进AGENTS.md更不要提交到仓库——这正好对应骨架里“绝不能提交密钥”那条边界。5. 验证请求改配置后重开对话确认生效配置写完不算完要验证它真的被加载了。最直接的动作是改一条规则重开对话看行为是否变化。第一步在AGENTS.md里加一条可观察的规则比如## 验证用规则 - 回答任何代码问题前先输出一行 [AGENTS-LOADED]第二步重开一个新对话不要复用旧会话旧会话可能缓存了之前的上下文发一句帮我看看这个项目的测试命令是什么如果配置生效回复里会先出现[AGENTS-LOADED]再给出pnpm test。没出现就说明没加载回到第 2 节检查导入或/init是否执行。第三步验证 API 通道是否通。用 curl 打一次请求确认 Key 和地址可用curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: ping}] }返回里带choices字段就说明通道正常。想先在网页里确认模型可用可以用模型对话页快速试一句https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel-chat成功结果长这样[AGENTS-LOADED]出现、测试命令正确、curl 返回 200 且带choices。三个都过说明配置骨架和接入通道都通了。6. 本篇常见错排查改了 AGENTS.md 但 Claude Code 没反应。最常见原因是没建CLAUDE.md或没写AGENTS.md导入。Claude Code 不原生读AGENTS.md必须显式导入或跑/init。检查CLAUDE.md第一行是否是AGENTS.md。规则冲突不知道哪条生效。记住就近优先子目录的AGENTS.md覆盖根目录对话里的临时指令覆盖所有文件。如果两条规则打架把更具体的那条放到离代码更近的目录。文件太大被截断。Codex 对AGENTS.md默认 32KB 上限超出静默截断你写的后半段可能根本没被读到。用链接分层把细节挪到docs/下按需引用。写了文件路径重构后 AI 找错地方。把src/auth/handlers.ts这类路径改成能力描述比如“认证逻辑集中在 auth 模块入口由路由层调用”让智能体自己定位。Key 报 401。先确认环境变量名和工具里填的一致再确认 Key 没被吊销。用第 5 节的 curl 单独测一次能区分是 Key 问题还是工具配置问题。多个工具规则漂移。通用规则只维护AGENTS.md一份工具专属的才写进各自原生文件。每次改完通用规则重开对话验证一次别让两份配置各说各话。7. 把配置当成代码来迭代AGENTS.md不是一次写完就一劳永逸的东西它更像代码需要迭代维护。智能体哪里理解错了就回来补一条规则哪条规则从没被触发过就删掉别让它白占注意力预算。多工具并用时把通用规则收敛到AGENTS.mdClaude Code 用AGENTS.md接进来Key 和 API 通道通过 TaoToken 统一改完配置重开对话验证一次——这套动作跑顺了面试里再被追问加载顺序和分工你就有实打实的操作经验可以讲而不是背概念。
返回列表