1. 从 110 条提示词里,我真正想抄走的是什么
Claude Code 的提示词被拆到第 110 条时,很多人第一反应是「收藏原文」。但真正落地过 Agent 的人会知道,原文抄下来没用——你缺的不是那几句英文,而是把这些规则变成可运行配置的骨架。Claude Code 之所以强,不是某一条提示词写得漂亮,而是它把「身份定义、做事原则、任务管理、Git 安全、多 Agent 协作」这五组规则,固化进了 CLI 和 SDK 的默认行为里。你每次敲下命令,它都在按同一套骨架执行。
这篇不重复翻译那 110 条,而是做一件更实用的事:把其中可复用的结构抽出来,整理成settings.json和config.toml两套骨架,再通过 TaoToken 统一 Key/API 通道跑一次真实的 Agent 调用验证。适合两类人:一是正在用 Claude Code 或 Claude Agent SDK 做 CLI 工具的人,二是想给自己的 Agent 写系统提示、但不知道从哪下手的开发者。读完你能拿到一份可直接改的配置模板,以及一次能跑通的验证流程。
先说结论:提示词工程的终点不是「写得更长」,而是「配置得更稳」。110 条里真正决定 Agent 行为下限的,其实就那么十几条,剩下的都是围绕它们做边界收口。
2. TaoToken 前置:统一 Key 与 API 通道
在写配置之前,得先把调用通道理顺。Claude Code 和 Agent SDK 默认走 Anthropic 官方端点,但实际项目里经常需要统一管理 Key、切换模型、做多环境隔离。TaoToken 在这里扮演的角色是统一的 API 通道:你拿到一个 Key,就能通过兼容端点调用模型,CLI、SDK、脚本共用同一套凭证,不用在每个工具里重复配。
具体操作路径:
- 注册并登录后,进控制台创建 API Key:
https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite - Key 管理页在:
https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite - 接入文档(含各语言示例):
https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite - API 基础地址:
https://taotoken.net/api(这个不加 UTM,直接用于配置)
拿到 Key 后,环境变量统一成两个:
export TAOTOKEN_API_KEY="sk-你的key" export TAOTOKEN_BASE_URL="https://taotoken.net/api"注意:Key 只放环境变量或密钥管理里,别写进
settings.json提交到仓库。配置文件里用${TAOTOKEN_API_KEY}这种占位引用。
这一步做完,后面 CLI 和 SDK 就能共用同一套凭证,切换环境只改环境变量,不动配置。
3. 可复制配置:settings.json 与 config.toml 骨架
现在进入正题。我把 110 条提示词里可复用的部分,拆成两套骨架:settings.json管 Claude Code CLI 的行为,config.toml管 Agent SDK 的系统提示与工具策略。
3.1 settings.json:CLI 行为骨架
这份配置对应提示词里的「身份定义、工具调用规范、Git 安全、任务管理」几组。字段名按 Claude Code 的约定来,注释用 JSON5 风格说明,实际使用时删掉注释。
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "${TAOTOKEN_API_KEY}" }, "permissions": { "allow": [ "Read", "Glob", "Grep", "Edit", "Write" ], "deny": [ "Bash(git push --force:*)", "Bash(git reset --hard:*)", "Bash(git clean -f:*)", "Bash(git branch -D:*)", "Bash(git config:*)" ] }, "systemPromptAppend": "你是运行在终端里的工程工具,不是聊天助手。修改任何文件前必须先完整读取。只做被明确要求或明显必要的改动,不重构、不加未被要求的功能。删除的代码直接删干净,不留注释痕迹。不主动创建新文件,优先编辑已有文件。不给出时间估算,不使用 emoji。" }这里有几个点值得展开。permissions.deny对应的是提示词 #17 的 Git 八大禁令——把破坏性命令直接挡在权限层,比在提示词里「请求模型别做」可靠得多。systemPromptAppend则是把 #1 到 #9 里最核心的几条压成一段,追加到默认系统提示后面,不覆盖原有行为。
3.2 config.toml:Agent SDK 骨架
SDK 场景下,配置更偏向「系统提示结构 + 工具策略 + 多 Agent 协作」。下面这份config.toml把提示词 #14 到 #20 的结构落进去。
[agent] name = "cli-engineer" model = "claude-sonnet-4-6" max_tokens = 8192 [api] base_url = "https://taotoken.net/api" api_key_env = "TAOTOKEN_API_KEY" [system] role = "interactive-cli-tool" rules = [ "先读后改:修改前必须读取完整文件", "不过度工程:只做明确要求或明显必要的改动", "删干净:无用代码直接删除,不留兼容补丁", "并行优先:无依赖的工具调用并发发出", "安全底线:不引入命令注入、XSS、SQL 注入等漏洞", "专用工具优先:文件操作用 Read/Edit/Write,不用 cat/sed/echo", "不创建非必要文件:优先编辑已有文件" ] [task_management] require_todo_list = true mark_completed_immediately = true plan_mode_triggers = [ "new_feature", "multi_file_change", "architectural_decision", "unclear_requirements" ] [git_safety] never_amend = true never_force_push_main = true stage_by_filename = true commit_message_focus = "why" [multi_agent] coordinator_must_read_findings = true no_rubber_stamp = truetask_management这一段直接对应提示词 #14 和 #15:复杂任务强制列清单、完成一项立刻勾一项、满足触发条件就进规划模式。multi_agent对应 #19 和 #20——主 Agent 必须读实际结果再指挥,不许当传话筒,也不许对半成品盖橡皮图章。
提示:这两份骨架不是让你照抄,而是给你一个「规则 → 配置字段」的映射思路。你完全可以按自己项目增删,关键是别让规则只停留在提示词文本里。
4. 验证请求:跑一次 Agent 调用
配置写完,得验证它真的生效。下面用 Python 走一次 SDK 调用,确认 TaoToken 通道通、系统提示被加载、工具策略生效。
4.1 安装与最小调用
pip install anthropicimport os from anthropic import Anthropic client = Anthropic( api_key=os.environ["TAOTOKEN_API_KEY"], base_url="https://taotoken.net/api", ) resp = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, system=( "你是运行在终端里的工程工具,不是聊天助手。" "修改任何文件前必须先完整读取。只做被明确要求或明显必要的改动。" "不给出时间估算,不使用 emoji。" ), messages=[ {"role": "user", "content": "读取 demo.py 并说明它做了什么,先不要改。"} ], ) print(resp.content[0].text)跑通后你会看到模型先描述文件内容、不直接动手改——这就是「先读后改」在起作用。如果它上来就给你一段修改后的代码,说明系统提示没被正确加载,回去检查system字段是否传进去了。
4.2 验证工具策略
再跑一次带工具定义的调用,确认权限层拦截生效:
resp = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, system="你是 CLI 工程工具。破坏性 git 命令一律拒绝执行。", tools=[ { "name": "run_bash", "description": "执行 shell 命令", "input_schema": { "type": "object", "properties": {"cmd": {"type": "string"}}, "required": ["cmd"], }, } ], messages=[ {"role": "user", "content": "帮我执行 git reset --hard HEAD~1"} ], ) print(resp.content)预期结果是模型拒绝执行,并说明这是破坏性操作。如果它直接返回了工具调用,说明你的权限策略没落到实际执行层——settings.json里的deny只对 Claude Code CLI 生效,SDK 场景需要你在工具执行函数里自己加拦截。
4.3 成功结果长什么样
一次完整的验证应该满足三个条件:请求返回 200、系统提示里的规则体现在输出行为上、工具策略按预期拦截或放行。三者都过,说明你的配置骨架和 TaoToken 通道是通的。想直接对比模型输出差异,可以到模型对话页手动试几轮:https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite
5. 本篇常见错排查
配置跑不通,八成是下面几个坑。
报 401 或 invalid api key:先确认TAOTOKEN_API_KEY真的导出到了当前 shell,echo $TAOTOKEN_API_KEY能看到值。如果是在 IDE 里跑,注意 IDE 可能没继承你终端的环境变量,需要在 IDE 的运行配置里单独设。
base_url 写错:常见错误是写成https://taotoken.net/api/v1或漏掉/api。正确的基础地址就是https://taotoken.net/api,SDK 会自动拼路径。多写一段反而 404。
系统提示没生效:检查是不是把规则写进了messages而不是system字段。messages里的内容会被当成对话历史,权重和system完全不同。另外settings.json的systemPromptAppend只在 Claude Code CLI 里生效,SDK 调用要自己传system。
权限拦截没起作用:permissions.deny是 CLI 层的,SDK 场景下工具执行是你自己写的函数,得在函数入口加判断。别指望配置文件能管到你自己实现的工具调用。
多 Agent 协作变成传话筒:这是提示词 #19 的典型翻车。主 Agent 拿到子 Agent 输出后直接转发,没有先理解。解决办法是在协调器的系统提示里明确写「必须读取实际结果并指定下一步具体动作,禁止使用『根据你的发现』这类表述」。
提交消息只写 what:对应 #18。如果你的 Agent 生成的 commit message 是「修改了 user.py」,说明提示词里没强调「聚焦 why」。在系统提示里加一句「提交消息说明为什么改,而不是改了什么」。
6. 把提示词洞察变成可运行配置
回到开头那个判断:110 条提示词的价值不在文本本身,而在它揭示了一套「规则如何固化成配置」的方法。Anthropic 把「不拍马屁、不过度工程、先读后改、删干净」这些原则,写进了 CLI 的默认行为和 SDK 的工具策略里,所以 Claude Code 用起来才稳。你抄原文,抄到的是句子;你抄结构,抄到的才是能力。
落地路径其实就三步:把核心规则映射成settings.json的权限和系统提示,把任务管理和多 Agent 策略映射成config.toml的字段,然后通过 TaoToken 统一通道跑一次验证。跑通之后,你手里就有一套可复用、可迭代的 Agent 配置骨架,而不是一堆躺在收藏夹里的提示词。
如果你打算长期做编码类 Agent,建议把配置纳入版本管理,配合 Coding Plan 做多环境切换:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite。接入细节和更多语言示例在文档里:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite。先把骨架跑起来,再按项目需要往里加规则——这比一次性抄完 110 条,然后一条都用不上,要实在得多。