1. AGENTS.md 被读取就消耗 Token,规则必须短且可执行
在仓库根目录放一份 AGENTS.md,是后端开发者约束编码助手最直接的方式。TaoToken 控制台提供 API Key,官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=agents_md_intro 。编码助手每次请求都会把 AGENTS.md 带进上下文,规则越长,Token 消耗越高,模型遵守的概率反而下降。我维护一个后端仓库时,把 AGENTS.md 从 400 多行压缩到 90 行左右,删除重复强调、模糊描述和示例堆砌。留下的每条规则都能映射到具体动作,例如“需要的依赖直接 import”、“禁止读取 /tmp 目录”、“禁止使用 Git 回滚代码”。
TaoToken 的 Base URL 是 https://taotoken.net/api ,兼容 Claude Code 使用的 ANTHROPIC_* 环境变量,也兼容 Codex 的 config.toml 配置方式。先把 Key 放入环境变量,再把 Base URL 指向 TaoToken,编码助手读取 AGENTS.md 消耗的 Token 会计入同一个账户,排查额度与请求日志都方便。官网控制台可以查看模型对话、Coding Plan 与 API Keys,具体入口在文末列出。
编码模型读取 AGENTS.md 时消耗 Token,这一点经常被忽略。一份 400 行的规则文件,每次对话都会完整注入上下文。如果仓库每天产生 200 次编码请求,仅 AGENTS.md 就会消耗大量输入 Token。规则写得越啰嗦,模型越容易忽略关键条款。把规则压缩到一屏以内,并且把最高频的约束放在文件开头,模型执行效果更稳定。
2. 反过度工程条款:精简后的 AGENTS.md 片段
反过度工程的核心是让模型停止输出“先做第一版,观察后再调整”之类的措辞,也停止在回答末尾追加总结。下面是我在仓库中实际使用的 AGENTS.md 片段,内容经过压缩,删除了重复说明。
# AGENTS.md ## 强制生效 所有条款在临时命令、一次性脚本、命令行输入中同样生效。没有豁免。 ## 输出语言 - 禁止使用两种对比句式:否定加转折结构,以及选择加排除结构。 - 回答禁止开头总起,禁止结尾总结。 - 使用完整双字词。动词和名词使用双字及以上的完整形式。 - 禁止使用互联网黑话词汇。使用简单中文常用词汇。 - 禁止使用某个表示技术集合的单字名词。直接说明使用的技术或者全部模型。 ## 方案设计 - 方案一次写完整。禁止出现“先做第一版,观察效果后再调整”的措辞。 - 禁止把方案分成稳妥与激进两类。如果需要多个方案,多个方案必须平行成立。 - 搜索 A 相关内容时,如果找到 B、C、D 不满足要求,禁止列举 B、C、D。 ## 代码行为 - 需要的依赖直接 import。禁止用 try-except 包裹 import。 - 禁止进入 plan mode。 - 禁止使用 Git 回滚。恢复代码使用文件编辑工具手动完成。 - 禁止读取和写入 /tmp。中间结果写入当前目录的 work/,并把 work/ 加入 .gitignore。 - 禁止主动使用视觉功能。 - 代码在错误位置就地崩溃。禁止捕获错误,禁止降级处理。 - 禁止 mock、假数据、欺骗性 workaround。 - 禁止用 heredocs、python 脚本、sed、perl 修改代码。 - 禁止手写 parser 解析成熟文件格式。使用第三方库或者避免解析。 - 用户以疑问句结尾时,只回答该问题。禁止提出新方案,禁止反问。 ## 文档与测试 - 发现文档或者代码存在错误时,更新内容不保留错误痕迹。 - 功能实现必须运行测试。测试通过才算完成。这份片段只有 30 多条规则,覆盖了反过度工程、反黑话、代码行为、文档更新四个部分。原文中反复强调“违反任何一条规则都会遭受毁灭性打击”,我改写为“所有条款在临时命令、一次性脚本、命令行输入中同样生效”。这样既保留强制力,又减少修辞。
把规则写入 AGENTS.md 之后,编码助手在读取文件时会消耗 Token。如果规则文件太长,模型可能只读取开头部分。因此我把“强制生效”和“输出语言”放在最前面,把“文档与测试”放在最后。实测发现,模型对前 20 行的遵守程度明显高于后 20 行。
3. 环境变量设置:Claude Code 与 Codex 分开写
TaoToken 的 Key 需要放入环境变量,禁止硬编码到仓库文件。Claude Code 使用 ANTHROPIC_* 环境变量,Codex 使用 config.toml 中的 env_key 字段。两种工具不能混用环境变量,禁止把 ANTHROPIC_* 套到 Codex 配置里。
Claude Code 的 settings.json 可以放在 ~/.claude/settings.json,也可以放在项目目录的 .claude/settings.json。下面是一份可复制的配置示例。
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" } }其中 ANTHROPIC_BASE_URL 固定为 https://taotoken.net/api ,ANTHROPIC_AUTH_TOKEN 使用 TaoToken 控制台创建的 Key。模型名称以 TaoToken 模型对话页面展示的可用模型为准,需要先到 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=agents_md_env 查看模型列表。
如果希望在终端中临时使用,可以导出环境变量。
export TAOTOKEN_API_KEY="YOUR_API_KEY" export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_AUTH_TOKEN="$TAOTOKEN_API_KEY"Codex 使用 config.toml,路径通常是 ~/.codex/config.toml。配置内容如下。
model = "gpt-5-codex" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" wire_api = "chat"Codex 通过 env_key 读取环境变量,因此需要提前设置 TAOTOKEN_API_KEY。
export TAOTOKEN_API_KEY="YOUR_API_KEY"检查环境变量是否生效。
printenv TAOTOKEN_API_KEY printenv ANTHROPIC_BASE_URL如果 printenv 输出为空,说明当前终端没有加载配置文件。把 export 语句写入 ~/.zshrc 或者 ~/.bashrc,然后重新打开终端。
4. CC Switch 三件套:供应商名称、Base URL、API Key
CC Switch 用于在多个供应商之间切换。配置时需要填写三件套:供应商名称、Base URL、API Key。下面是对应 TaoToken 的填写方式。
供应商名称填写 TaoToken,Base URL 填写 https://taotoken.net/api ,API Key 填写 YOUR_API_KEY。保存之后,CC Switch 会把配置写入对应的工具配置文件。如果使用 Claude Code,它会写入 settings.json 的 env 字段;如果使用 Codex,它会写入 config.toml 的 model_providers 字段。
手动核对 CC Switch 生成的配置时,重点检查三处。第一处是 Base URL 是否包含末尾斜杠。TaoToken 的 Base URL 不要写成 https://taotoken.net/api/ ,也不要写成 https://taotoken.net/api/v1 。第二处是 API Key 是否包含多余空格。复制 Key 时容易带上换行符,导致 401 错误。第三处是模型名称是否与 TaoToken 模型对话页面一致。
如果 CC Switch 切换之后编码助手仍然报错,可以直接打开配置文件核对。Claude Code 的配置文件示例:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY" } }Codex 的配置文件示例:
model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" wire_api = "chat"CC Switch 三件套填写正确之后,编码助手会把请求发送到 TaoToken。此时 AGENTS.md 的规则才会被模型读取。如果 Base URL 写错,请求会直接失败,模型没有机会读取 AGENTS.md。
5. 终端问答对照:同一需求在规则生效前后的输出差异
下面用三个终端问答对照,说明 AGENTS.md 规则生效前后的输出差异。提问内容相同,只有 AGENTS.md 是否加载存在区别。
第一个对照,提问是“给这个仓库加一个读取配置的函数,要能处理缺失字段”。
规则生效前,模型输出:
我建议先实现一个基础版本,使用 try-except 捕获所有异常,返回默认值。 然后观察线上表现,如果发现性能问题,再考虑增加缓存。 另外,我还可以提供第二种方案,使用环境变量覆盖配置文件。 如果这两种都不合适,我们还可以考虑第三种方案,使用配置中心。规则生效后,模型输出:
import json from pathlib import Path def read_config(path: Path) -> dict: with path.open("r", encoding="utf-8") as file: return json.load(file)规则生效后,模型没有输出“第一版”、“观察”、“第二种方案”之类的措辞。它直接给出实现,并且在错误位置就地崩溃。缺失字段的处理由调用方决定,模型没有擅自增加 fallback。
第二个对照,提问是“搜索一下项目里有没有使用 Redis 的地方”。
规则生效前,模型输出:
我搜索了 Redis,发现项目中有 3 个文件使用了 Redis。 另外我还搜索了 Memcached、Kafka、RabbitMQ,它们都不满足要求。 我认为 Redis 是最合适的选择,因为它支持持久化。规则生效后,模型输出:
src/cache.py:12 src/session.py:45 tests/test_cache.py:8规则生效后,模型只列出包含 Redis 的文件和行号,没有列举 Memcached、Kafka、RabbitMQ。AGENTS.md 中明确写了“搜索 A 相关内容时,如果找到 B、C、D 不满足要求,禁止列举 B、C、D”。
第三个对照,提问是“这个函数为什么报错”。
规则生效前,模型输出:
上述内容是错误分析,下面详细拆开。 一句话总结:参数类型不匹配。 建议你检查调用方,也可以增加类型转换。 如果你需要,我可以继续帮你修改。规则生效后,模型输出:
TypeError: unsupported operand type(s) for +: 'int' and 'str' 错误位置:src/calc.py:27 调用参数:left=3, right="4"规则生效后,模型没有“上述内容是”、“一句话总结”、“如果你需要”之类的总结和反问。AGENTS.md 中禁止总结和总起,也禁止在用户以疑问句结尾时提出新方案。
6. 排障:401、404 与 AGENTS.md 上下文膨胀
接入 TaoToken 之后,常见错误有三类。第一类是 401,表示 Key 无效或者没有携带。检查 ANTHROPIC_AUTH_TOKEN 或者 TAOTOKEN_API_KEY 是否设置正确。可以在终端执行下面的命令查看。
printenv ANTHROPIC_AUTH_TOKEN printenv TAOTOKEN_API_KEY如果输出为空,说明环境变量没有加载。如果输出包含空格或者换行,重新设置。
第二类是 404,表示 Base URL 路径错误。Claude Code 和 Codex 都使用 https://taotoken.net/api ,不要添加 /v1,也不要添加末尾斜杠。检查配置文件中的 base_url 字段。
grep -n "base_url" ~/.codex/config.toml grep -n "ANTHROPIC_BASE_URL" ~/.claude/settings.json第三类是 AGENTS.md 上下文膨胀。编码助手每次请求都会读取 AGENTS.md,如果文件超过 200 行,Token 消耗会明显增加。可以在 TaoToken 控制台查看请求日志,确认每次请求的输入 Token 数量。官网控制台入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=agents_md_troubleshoot 。
减少 Token 消耗的方法有三种。第一种是把 AGENTS.md 压缩到 100 行以内。第二种是把低频规则移到单独文档,通过链接引用,编码助手不会自动读取。第三种是把项目专属规则放在仓库根目录,把通用规则放在用户级配置中,避免每次请求都重复注入。
如果编码助手仍然忽略 AGENTS.md 中的规则,检查文件是否放在仓库根目录。Claude Code 读取当前工作目录下的 AGENTS.md,Codex 也读取当前工作目录下的 AGENTS.md。如果终端工作目录在子目录,模型可能读取不到根目录的规则文件。
7. 从模型对话到 Coding Plan:TaoToken 接入顺序
接入 TaoToken 时,建议按照下面的顺序操作。第一步,打开模型对话页面,确认可用模型与返回格式。入口是 https://taotoken.net/models/detail/chat?utm_source=taotoken_aicg_blog_end&utm_content=agents_md_chat 。第二步,根据编码请求量选择合适的 Coding Plan。入口是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=agents_md_plan 。第三步,创建 API Key。入口是 https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=agents_md_keys 。第四步,按照 Claude Code 文档配置环境变量与 settings.json。入口是 https://taotoken.net/doc/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_content=agents_md_doc 。
创建 Key 之后,把 Key 写入环境变量,把 Base URL 设置为 https://taotoken.net/api 。Claude Code 使用 ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN,Codex 使用 config.toml 中的 base_url 和 env_key。两种工具分开配置,禁止把 ANTHROPIC_* 环境变量写入 Codex 配置。
最后检查 AGENTS.md 是否生效。可以在仓库根目录创建测试文件,然后向编码助手提问。如果模型遵守“禁止总结”、“禁止列举无关选项”等规则,说明 AGENTS.md 已经加载。如果模型继续输出“第一版”、“稳妥方案”、“一句话总结”等内容,检查 AGENTS.md 是否放在当前工作目录,以及文件是否过长导致模型只读取了开头部分。