☰
【AI智能体】Claude Code 核心系统提示词深度解析:从 MCP 到 Agent 的配置实践
2026/10/2 16:47:02 网站建设 项目流程

1. Claude Code 系统提示词到底在驱动什么:从 MCP 到 Agent 的调用链

Claude Code 的系统提示词不是一个躺在某处的system.md文件,而是一套分布式结构:每个 Agent 有自己的.md提示词,每个 Command 有自己的 frontmatter,每个 Skill 有自己的指导文档,工具权限则通过tools/allowed-tools字段传递。理解这一点,是理解 Claude Code 为什么能稳定调用工具、为什么能编排多步任务的前提。

它适合谁?适合已经在用 Claude Code 写代码、但发现 Agent 行为不稳定、工具乱调、权限失控的开发者;也适合想把 Claude Code 的提示词设计思路迁移到自己 MCP Server 上的工程师。核心检索词就是 Claude Code 系统提示词、MCP、Agent 协作机制。

我实测下来,Claude Code 的提示词设计遵循五条底层原则:权限边界清晰(Read 只读、Write 只写、Edit 只编辑)、工具选择有优先级(专用工具 > 通用工具,Read/Grep/Glob > Bash)、权限过滤(Bash(git:*)优于Bash(*))、语义清晰(工具名直接映射能力)、分布式提示词(每个 Agent/Command 独立控制权限)。

这五条原则落到配置上,就是三样东西:Agent 的 frontmatter、MCP Server 的 tools 声明、以及 settings 里的权限白名单。下面我会从零把这套配置跑通,并给出验证 Agent 调用链是否真正生效的具体动作。

2. TaoToken 前置:把 Claude Code 的模型出口接上

Claude Code 本身是客户端,它需要一个能响应 Anthropic 协议(或兼容协议)的模型出口。TaoToken 提供的就是这个出口,同时支持模型对话、Coding Plan 和 API Key 三种接入方式。对于本地 AI 编程助手场景,我建议用 API Key 方式接入,因为 Claude Code 的 Agent 调用链需要稳定的 Base URL 和 Key。

先到官网注册并进入控制台:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,在控制台里创建一个 API Key。创建时注意两点:一是 Key 只在创建时完整显示一次,复制后立刻存到本地环境变量;二是如果打算长期跑 Agent 任务,建议直接开 Coding Plan,避免按量计费在长上下文里烧得太快。

拿到 Key 之后,Claude Code 的接入点有两个:一个是环境变量ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY,另一个是~/.claude/settings.json里的env字段。我推荐后者,因为 settings.json 可以跟项目一起版本化,团队协作时不用每个人手动 export。

这里有个容易踩的坑:Claude Code 默认会去请求 Anthropic 官方域名,如果你只改了 Key 没改 Base URL,请求会直接失败。所以 Base URL 必须显式指向https://taotoken.net/api,注意这个地址不带任何 UTM 参数,UTM 只用于官网跳转归因。

另外,如果你用的是 Claude Code 的 OAuth 登录流程,切到 API Key 模式后需要先退出登录,否则客户端会优先走 OAuth 通道。这一步在后面的排障章节会详细讲。

3. 可复制配置:settings.json + MCP + Agent 三件套

这一节是全文的核心,所有片段都可以直接复制。先给 Claude Code 的~/.claude/settings.json:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoTokenKey", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" }, "permissions": { "allow": [ "Read", "Grep", "Glob", "Edit", "Bash(git:*)", "Bash(npm:test)", "Bash(npm:run lint)" ], "deny": [ "Bash(rm:*)", "Bash(curl:*)" ] } }

注意ANTHROPIC_MODEL这一项,它对应的是 Model ID,必须和 TaoToken 控制台里可用的模型名一致。Base URL、Key、Model ID 这三件套缺一不可,少任何一个都会在请求阶段报错。

接下来是 MCP Server 的配置。Claude Code 的 MCP 配置放在~/.claude.json或项目级.mcp.json里,我用项目级配置,方便跟代码一起提交:

{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/projects/demo" ] } } }

这个 filesystem MCP Server 会暴露read_file、write_file、list_directory、search_files等工具。Claude Code 启动时会读取这个配置,把 MCP 工具注册进当前会话的工具列表。

最后是 Agent 的 frontmatter。在.claude/agents/code-reviewer.md里写:

--- name: code-reviewer description: Use this agent for thorough code reviews. Examples: <example>Review my latest changes</example> model: inherit tools: ["Read", "Grep", "Glob"] --- You are an expert code reviewer specializing in identifying bugs and security issues. **Your Core Responsibilities:** 1. Analyze code changes for potential issues 2. Check security vulnerabilities 3. Provide specific, actionable feedback **Code Review Process:** 1. Use Glob to find recently modified files 2. Use Read to examine each changed file 3. Use Grep to scan for SQL injection, XSS, hardcoded credentials 4. Generate report with file:line references **Quality Standards:** - Every issue must include severity level - Provide code snippets for context

这个 Agent 的tools字段只给了三个只读工具,意味着它无法写文件、无法执行命令。这就是权限边界清晰的体现:审查类 Agent 天然不该有写权限。

三件套配好之后,Claude Code 的调用链就是:settings.json 决定模型出口和全局权限,.mcp.json 决定外部工具供给,Agent frontmatter 决定单个 Agent 的工具子集。三者叠加,才是完整的系统提示词驱动机制。

4. 验证请求:确认 Agent 调用链真的生效

配置写完不代表生效,必须验证。我一般分三步验证。

第一步,验证模型出口通不通。在终端里直接跑:

curl -s https://taotoken.net/api/v1/messages \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "max_tokens": 64, "messages": [{"role": "user", "content": "reply with ok"}] }'

如果返回 JSON 里content[0].text是ok,说明 Base URL 和 Key 都对。如果返回 401,说明 Key 有问题;如果返回local proxy failed,说明 Base URL 写错了或者网络出口被拦。

第二步,验证 MCP 工具注册。在 Claude Code 里输入/mcp,它会列出当前会话加载的所有 MCP Server 和工具。你应该能看到filesystem下面挂着read_file、write_file等条目。如果列表为空,说明.mcp.json路径不对,或者npx拉包失败。

第三步,验证 Agent 调用链。在 Claude Code 里输入:

@code-reviewer 帮我审查 src/auth.ts 的安全问题

观察它的行为:它应该先调用 Glob 找文件,再调用 Read 读内容,再调用 Grep 搜敏感模式,最后输出带 file:line 的报告。如果它直接开始写代码,说明 Agent frontmatter 没被加载,Claude Code 退化成了默认 Agent。

我试过在同一个项目里放两个 Agent,一个只读一个可写,然后用@分别调用,观察工具调用日志。只读 Agent 尝试写文件时会被权限层拦下,报tool not allowed。这个拦截动作就是权限边界生效的直接证据。

验证通过后,你可以在~/.claude/logs里看到每次工具调用的记录,包括工具名、参数、耗时。这份日志是排查 Agent 行为异常的第一手材料。

5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth

排障部分我按真实报错来写,每条都给触发条件和修复动作。

401 Unauthorized:最常见。触发条件是 Key 无效、Key 过期、或者 Key 前面多了空格。修复动作是重新在控制台生成 Key,然后echo $ANTHROPIC_API_KEY | tr -d ' '确认没有空白字符。如果用的是 settings.json,注意 JSON 里字符串不能有换行。

local proxy failed:这个报错通常出现在 Base URL 配置错误时。Claude Code 会尝试把请求发到一个本地代理地址,如果ANTHROPIC_BASE_URL没设或者设成了http://localhost:xxxx,就会报这个。修复动作是确认 Base URL 是https://taotoken.net/api,注意结尾不要带/v1,Claude Code 会自己拼路径。

reading choices 相关报错:这类报错一般出现在响应体解析阶段,说明返回的 JSON 结构不符合 Anthropic 协议。触发条件通常是 Model ID 写错,服务端返回了错误结构。修复动作是核对ANTHROPIC_MODEL和控制台里的模型名是否完全一致,大小写和日期后缀都要对上。

OAuth 冲突:如果你之前用 OAuth 登录过 Claude Code,切到 API Key 模式后可能仍然走 OAuth 通道,表现为请求发到了官方域名。修复动作是删除~/.claude/credentials.json(或对应平台的凭据文件),然后重启 Claude Code。重启后它会优先读 settings.json 里的 env。

MCP 工具不出现:.mcp.json里command写的是npx,但系统 PATH 里没有 npx,或者 Node 版本太低。修复动作是which npx确认路径,必要时在配置里写绝对路径,比如/usr/local/bin/npx。

Agent 不响应 @ 调用:Agent 文件名和name字段不一致,或者文件不在.claude/agents/目录下。修复动作是确认文件名是code-reviewer.md,frontmatter 里name: code-reviewer,两者必须一致。

排障时有个通用技巧:把 Claude Code 的日志级别调到 debug,在 settings.json 里加"logLevel": "debug",然后看日志里实际发出的请求 URL 和 headers。90% 的接入问题都能从这一行日志里看出来。

6. 把提示词设计迁移到自己的 MCP Server

Claude Code 的这套设计思路,完全可以迁移到你自己的 MCP Server 上。核心是三条:工具粒度要细、权限要能过滤、提示词要分布式。

工具粒度细的意思是,不要把「读文件」和「写文件」塞进一个工具,而是拆成fs_read和fs_write。这样 Agent 在只读场景下可以只挂fs_read,从工具层面杜绝误写。我在自己的 filesystem MCP 里就是这么做的,12 个工具按读、写、改、执行四类分开,每类有独立的权限声明。

权限过滤的意思是,执行类工具必须支持参数级白名单。比如exec工具不要只接受一个command字符串,而是接受runtime和command两个参数,然后在服务端校验command是否匹配白名单。这样即使 Agent 被提示词注入攻击,也无法执行白名单外的命令。

分布式提示词的意思是,每个 Agent 的.md文件里都要写清楚「用哪个工具、按什么顺序、输出什么格式」。不要指望一个全局提示词能覆盖所有场景。Claude Code 的做法是每个 Agent 独立一份提示词,通过tools字段控制权限,这个模式可以直接抄。

如果你想把模型出口也统一管理,可以在 TaoToken 控制台里给不同项目建不同的 Key,然后在各自的 settings.json 里引用。这样既能隔离权限,又能按项目统计用量。模型对话入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API Key 管理在 https://taotoken.net/api ,接入文档在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。

最后给一个我实际在用的技巧:把 Agent 的提示词当成代码来维护,每次改完都跑一遍验证请求,确认工具调用链没断。提示词不是写完就完事的配置,它跟代码一样会腐化,需要持续验证。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询