1. 从一行 401 报错开始:去 AI 味 Skill 的请求出口才是故障点
你按 README 把那个 42.2K+ Star 的开源去 AI 味 Skill 装进 Claude Code,挑了一段 800 字的英译中译文喂进去,回车之后终端只回你一行:
API Error: 401 authentication_error很多人第一反应是去翻 SKILL.md:是不是 frontmatter 写错了,是不是 description 不够具体,是不是规则清单漏了「禁用『值得注意的是』」。但真正的断点往往在更外层——Skill 只是把指令拼进上下文,真正把这段上下文送出去的,是 Claude Code 的请求出口。出口没配对,规则写得再漂亮也跑不起来。把 Base URL 换成 TaoToken 之后(入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=trans_skill_intro ),同一份 SKILL.md、同一段译文、同一套审校口令,可以一次跑完,不需要动 Skill 里的任何一个字。
这篇不是「又一个去 AI 味工具推荐」。它记录的是一条翻译审校流水线:英译中初稿出来之后,怎么用开源去 AI 味 Skill 做后编辑,怎么把请求从原来的出口切到 TaoToken,怎么在两个工具(Claude Code 和 Codex)之间保持同一套 Base URL,以及怎么留下可复核的替换记录和前后译文对照。术语表不动、事实不动、数字不动,只动风格层。下面所有步骤都是本地可执行的配置,没有一步需要你把生产库或者内部系统直接暴露给模型。
2. 去 AI 味 Skill 在翻译审校里到底改什么、不改什么
先把边界划清楚,否则后面配置跑通了,你也不知道该拿它干什么。
翻译稿的「AI 味」和「翻译腔」是两种病,经常同时发作,但成因不同。翻译腔来自源语句法结构的残留:长定语不拆、被动语态照搬、代词密度过高、「的」字连用、名词化优先。AI 味则来自生成侧的统计偏好:连接词通货膨胀(然而、此外、值得注意的是、总的来说)、每段三句的均匀节奏、三元排比、破折号与冒号滥用、以及「不仅……而且……」这类模板化递进。
开源去 AI 味 Skill 的价值,是把这些现象变成一份可复用的规则清单和改写流程:先扫一遍标记词,再做句长打散,再做名词化还原,最后做一次术语一致性回查。它的输出是一份改写后的文本,不是一份质检报告,所以它必须跑在一个能稳定调用大模型的客户端里——Claude Code、Codex、或者任何支持自定义 Base URL 的 CLI。
它的边界同样明确:不碰事实层。译文中的人名、机构名、数字、法规条款、产品型号、术语表映射,Skill 一律做冻结处理,只允许在风格层做等价替换。如果有人拿它去改技术文档里的参数,那不是 Skill 的问题,是用错了工具。审校视角下,它更像一个「后编辑助手」:你出初稿或者机器初稿,它做风格清洗,你最后做事实与术语的终审。
所以真正需要配置的只有两件事:Skill 文件本身,和请求出口。前者是一次性投入,后者是你每天都要用到的开关。
3. 到 TaoToken 拿 Key、抄 Base URL:翻译流水线的第一颗螺丝
配置任何客户端之前,先把两个值拿到手:一个 API Key,一个 Base URL。这一步在 TaoToken 官网完成,不需要装额外工具。
第一步,打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=trans_skill_getkey ,进入控制台。如果你还没确认自己要用哪个模型,先去「模型对话」页面随便跑一句,把「英译中 + 去 AI 味」这个组合试一遍,看输出风格是不是你要的,再回来建 Key。试跑用的是网页端,不消耗你本地任何配置。
第二步,创建 API Key。Key 只显示一次,复制下来之后先丢进本地环境变量,不要直接硬编码到 git 仓库里的配置文件。本文所有示例统一用占位符YOUR_API_KEY,你替换成自己的即可。
第三步,记住 Base URL:
https://taotoken.net/api这个地址后面会出现在settings.json和config.toml里,两处写法不同,但值完全一样。注意它不带任何查询参数,不要把你从浏览器复制的带 UTM 的完整地址粘进配置文件,那会导致路径拼接错误。
用一个环境变量把它固化下来,后续切换工具时只改这一处:
export TAOTOKEN_BASE_URL="https://taotoken.net/api" export TAOTOKEN_API_KEY="YOUR_API_KEY"Windows PowerShell 用户写成$env:TAOTOKEN_API_KEY="YOUR_API_KEY",或者在系统环境变量面板里新建同名变量。做完之后关掉终端重开一次,避免旧会话读不到。
4. Claude Code 接入:settings.json 里只动 ANTHROPIC_ 三个字段
Claude Code 读取配置的优先级是:命令行参数 > 项目级.claude/settings.json> 用户级~/.claude/settings.json。做翻译审校项目,建议把供应商配置写在用户级,把 Skill 和术语表写在项目级,这样切换项目时不用重复改 Key。
用户级配置文件路径:
- macOS / Linux:
~/.claude/settings.json - Windows:
C:\Users\<你的用户名>\.claude\settings.json
内容如下:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY", "ANTHROPIC_MODEL": "YOUR_MODEL_ID" } }三个字段的含义:
ANTHROPIC_BASE_URL:请求出口,填 TaoToken 的https://taotoken.net/api,末尾不要加/v1,客户端会自己补路径。ANTHROPIC_AUTH_TOKEN:放你的 Key。如果你的客户端版本读的是ANTHROPIC_API_KEY,两个都写上也行,但不要只写一个然后怀疑 Key 失效。ANTHROPIC_MODEL:填你在模型对话页确认过的模型 ID。不确定就先删掉这一行,启动后用/model交互选择,选完再回填。
如果settings.json里已经有别的配置,不要整份覆盖,只往env对象里加这三个键。JSON 不允许尾随逗号,改完用python -m json.tool ~/.claude/settings.json验一遍语法,比在终端里对着 401 猜半天快得多。
改完配置后,做一次连通性验证,不要在 Skill 里试错:
claude -p "只回复 ok,不要解释"返回ok说明出口通了。如果仍然报 401,先执行claude config list看当前生效的配置来源,多半是项目级settings.json覆盖了用户级,把两处 Key 对齐即可。
5. Codex 接入:config.toml 用 provider 段落,别把 ANTHROPIC_ 搬过来
这是最容易踩的坑:Claude Code 和 Codex 的配置模型完全不同。Claude Code 走env里的ANTHROPIC_*系列变量,Codex 走config.toml里的model_providers段落。把ANTHROPIC_BASE_URL写进config.toml不会报错,但也不会生效,你只会看到一个莫名其妙的模型找不到。
Codex 配置文件路径:
- macOS / Linux:
~/.codex/config.toml - Windows:
C:\Users\<你的用户名>\.codex\config.toml
配置内容:
model = "YOUR_MODEL_ID" model_provider = "taotoken" model_reasoning_effort = "medium" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" wire_api = "chat"要点逐条说明:
model_provider的值必须和下面[model_providers.<名字>]的段落名一致,这里都叫taotoken。base_url同样是不带/v1的主地址。env_key写的是环境变量的名字,不是 Key 本身。Codex 会去读这个变量。wire_api填chat走 Chat Completions 风格;如果你的模型在控制台标注走 Responses 接口,改成responses。不确定就先按chat跑,报 404 再换。
导出环境变量后启动:
export TAOTOKEN_API_KEY="YOUR_API_KEY" codex进交互界面先用一句短指令验证,例如让它把一句英文译成中文并保持术语。返回正常,再去挂你的去 AI 味 Skill。两个工具共用同一个TAOTOKEN_BASE_URL值,这一点很重要:只要出口一致,你在 Claude Code 里调好的审校口令,迁到 Codex 时风格表现不会漂移太大。
6. CC Switch 三件套:让 Claude Code 和 Codex 共用一套出口
如果你同时在用 Claude Code、Codex,可能还有第三个 CLI 工具,最省事的做法不是手改三份配置文件,而是用 CC Switch 这类配置切换工具统一管理。它需要你填的核心就是三件套:
| 项 | 填什么 | 备注 |
|---|---|---|
| Base URL / 供应商地址 | https://taotoken.net/api | 三个工具填同一个值 |
| API Key | YOUR_API_KEY | 从控制台创建,只显示一次 |
| 模型名 | 控制台里确认的模型 ID | 不同工具可各选各的,但建议统一 |
三件套填完之后,切换工具就是点一下的事,不需要再进settings.json或者config.toml手动改。这里有个细节值得强调:CC Switch 里填的是「供应商地址」,很多工具的 UI 会把这个字段叫成Base URL、API Base、Endpoint三种名字,含义一样,都填到/api这一层就停住,别自己往后加路径。
如果 CC Switch 版本较老,不识别 Codex 的model_providers写法,那就退回到手动模式:CC Switch 只管 Claude Code,Codex 单独维护config.toml。两边的 Key 引用同一个环境变量,改名的时候一处生效,两处不打架。
7. 把去 AI 味 Skill 落到目录里:SKILL.md 的最小结构
Skill 不是插件,不需要编译,它就是一个带 frontmatter 的 Markdown 文件。Claude Code 读取的目录是~/.claude/skills/<skill-name>/SKILL.md。
目录结构:
~/.claude/skills/deai-translation/ ├── SKILL.md └── glossary.tsvSKILL.md的最小内容:
--- name: deai-translation description: 清洗英译中译文的 AI 味与翻译腔,保留术语、数字与事实不变。当用户提供译文并要求去 AI 味、去翻译腔、口语化、精简连接词时使用。 --- # 译文去 AI 味规则 ## 必须保留 - 人名、机构名、产品名、版本号、数字、单位 - glossary.tsv 中定义的术语映射,一律按表替换 ## 需要清理 - 连接词堆叠:然而、此外、值得注意的是、总的来说、综上所述 - 名词化结构:对……进行优化 → 优化…… - 三元排比与对仗过工整的短句 - 被动语态的无意义堆叠 - 每段句数过于均匀,需要打散句长 ## 输出格式 1. 直接给改写后的译文,不解释 2. 若某处无法在不改事实的前提下改写,保留原文并标注 [保留]description这一行决定 Skill 什么时候被自动触发,所以要写清楚「触发场景」和「输入类型」。翻译审校场景里,建议把「去翻译腔」也写进去,否则模型可能只认「去 AI 味」这个词。
术语表用 TSV,方便 diff:
source target note latency 时延 不要译成延迟 throughput 吞吐量 单位统一 deployment 部署 不要译成上线Skill 挂好之后,用一条命令跑通端到端:
claude -p "用 deai-translation 处理 input.txt,结果写入 output.txt,术语以 glossary.tsv 为准"第一次跑建议把max_tokens设宽松一点,译文被截断在句子中间,多半是输出长度不够,不是 Skill 出错。
8. 译文去 AI 味前后对照:三组真实改写
下面三组对照,源句是英文原文,初稿是机器翻译直出(典型 AI 味),终稿是去 AI 味 Skill 处理后再做人工终审的结果。规则清单就是上面那一份。
第一组,连接词与自我评价堆叠。
- 源句:It is worth noting that the model may occasionally produce inconsistent terminology.
- 初稿:值得注意的是,该模型有时可能会产生不一致的术语,这一点值得关注。
- 终稿:模型偶尔会前后术语不一致。
改动点:删掉「值得注意的是」和「这一点值得关注」两处评价性插入,把「产生不一致的术语」还原成动词结构「术语不一致」。
第二组,名词化与被动语态。
- 源句:The platform streamlines the review workflow, enabling teams to ship localized content faster.
- 初稿:该平台简化了审校工作流程,使团队能够更快地交付本地化内容,从而显著提升整体效率。
- 终稿:平台缩短了审校流程,本地化内容能更快上线。
改动点:删掉「从而显著提升整体效率」这句无信息量的收尾,把「交付本地化内容」换成更符合中文技术语境的说法,同时把句子长度压下来。
第三组,排比与均匀节奏。
- 源句:Caching reduces latency, lowers cost, and improves stability.
- 初稿:缓存能够降低延迟,降低成本,并提升稳定性。
- 终稿:缓存降延迟、省成本,稳定性也跟着变好。
改动点:三元排比结构打散,把第三个并列项改成补充说明,避免三段等长的机械节奏。
这三组对照可以直接作为你团队的审校基准。真正在项目里跑的时候,建议每次把「初稿 / 终稿 / 改动类型」记成一行,攒够五十行你就能看出自己团队的译文最容易犯哪几类 AI 味,反过来收敛 Skill 的规则清单。
9. Base URL 替换记录:一份可复核的变更台账
审校项目里,配置变更和译文变更一样需要留痕。下面这份表格是推荐的最小记录格式,每次改配置就加一行。
| 日期 | 位置 | 替换前 | 替换后 | 验证方式 | 结果 |
|---|---|---|---|---|---|
| 第 1 次 | ~/.claude/settings.json的ANTHROPIC_BASE_URL | 旧出口地址 | https://taotoken.net/api | claude -p "只回复 ok" | 通过 |
| 第 1 次 | ~/.claude/settings.json的ANTHROPIC_AUTH_TOKEN | 旧 Key | YOUR_API_KEY | 同上 | 通过 |
| 第 1 次 | ~/.codex/config.toml的base_url | 未配置 | https://taotoken.net/api | 交互模式短指令 | 通过 |
| 第 1 次 | ~/.codex/config.toml的env_key | 未配置 | TAOTOKEN_API_KEY | echo $TAOTOKEN_API_KEY | 通过 |
验证通路时,除了用 CLI 发一句短指令,也可以直接打接口。下面这条命令用于确认地址与鉴权头是否匹配:
curl -sS -X POST "https://taotoken.net/api/v1/messages" \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "content-type: application/json" \ -d '{ "model": "YOUR_MODEL_ID", "max_tokens": 32, "messages": [{"role": "user", "content": "ping"}] }'如果返回 404,说明该平台的路径约定不是/v1/messages,以控制台文档给出的路径为准;返回 401 则是 Key 或请求头的问题;返回 200 但内容为空,检查model字段是否填成了显示名而不是 ID。
这张表的另一个用途是回滚。任何时候译文风格突然变差,先看这份台账最近有没有动过 Base URL 或模型名——出口变更导致的模型切换,往往表现为「AI 味规则还在,但输出风格变了」,比 Skill 本身被改更常见。
10. 排障清单:翻译流水线上最常见的六类报错
| 现象 | 最可能的原因 | 处理方式 |
|---|---|---|
401 authentication_error | Key 没生效,或项目级配置覆盖了用户级 | claude config list看生效来源,两处 Key 对齐 |
403 | Key 权限不足或该模型未开通 | 回控制台确认 Key 可用范围 |
模型不存在 /model not found | ANTHROPIC_MODEL或model填了显示名 | 改填模型 ID |
429 | 并发过高 | 降低并行任务数,串行跑审校批次 |
| 连接超时 | 本地代理环境变量指向了不可达地址 | 检查HTTP_PROXY/HTTPS_PROXY,必要时加NO_PROXY |
| 输出在中途停住 | max_tokens太小 | 调大输出上限,长译文分段处理 |
还有一个不在表里但很常见的现象:配置全部正确、请求也通了,但译文里的术语被 Skill 改掉了。这不是出口问题,是 Skill 里没锁术语表。解决办法是在SKILL.md的「必须保留」段落里明确写上glossary.tsv,并且在调用时再强调一次术语以文件为准。
最后提醒一点配置习惯:settings.json和config.toml都属于本地配置文件,不要提交到团队仓库。团队共享的是 Skill 目录和术语表,Key 和出口地址走各自的本地环境变量。
11. 下一步:把出口固定下来,再谈风格
翻译审校这条流水线里,去 AI 味 Skill 是风格层,TaoToken 的 Base URL 是通路层。通路层稳定之后,风格层的迭代才有意义——你今天调好的规则清单,明天换台机器、换个 CLI 工具,只要 Base URL 还是https://taotoken.net/api,表现就是可复现的。
建议的收尾动作有三个:把YOUR_API_KEY换成你自己的 Key,把 Skill 目录接进版本控制,把上面那份替换台账建起来。做完这三步,你就有了一个可以长期跑的译文清洗流程。
要开始的话,先去模型对话页面跑一句「英译中 + 去 AI 味」看看效果:https://taotoken.net/models/detail/chat?utm_source=taotoken_aicg_blog_end&utm_content=trans_skill_cta_chat 。如果这条流水线要跑量,看一下 Coding Plan 的额度策略:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=trans_skill_cta_plan 。然后到控制台创建 Key:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=trans_skill_cta_key 。Claude Code 侧的完整字段说明放在文档里,配置卡住的时候对着查:https://taotoken.net/doc/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_content=trans_skill_cta_doc 。