news 2026/9/19 5:52:42

Claude Code 系统提示词里 glm-5.2 的 Environment 段为何只剩模型 ID?TaoToken 这样改 Base URL

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Claude Code 系统提示词里 glm-5.2 的 Environment 段为何只剩模型 ID?TaoToken 这样改 Base URL

这篇排障笔记解决一个很具体的现象:Claude Code 系统提示词里的 Environment 段,换成 glm-5.2 后只剩模型 ID,没有展示名,也没有知识截止日期。要复现这条链路,先到 TaoToken 官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册并创建 Key,再把 Claude Code 的 Base URL 指向 https://taotoken.net/api。TaoToken 这里只负责 Key 与 Base URL 接入,Environment 段如何生成仍取决于 Claude Code 源码里的 getSystemPrompt 和 computeSimpleEnvInfo。下面按源码分析、TaoToken 前置、可复制配置、打包导出、diff 验证、错排查的顺序走一遍。

一、原问题与场景:glm-5.2 在 Claude Code 的 Environment 段只剩模型 ID

Claude Code 在生成系统提示词时,会拼出一段描述当前运行环境的内容,也就是常见的 Environment 段。这个段里通常包含工作目录、操作系统、当前模型名称、模型版本、知识截止日期等信息。目的是让模型在回答“你是谁”“你的知识截止到什么时候”这类问题时,不依赖自己的记忆,而是直接读取提示词里的明确说明。

在源码层面,getSystemPrompt 接收几个入参,其中 tools、model、additionalWorkingDirectories、mcpClients 都是关键参数。本篇聚焦第二个参数 model。它会被传给 computeSimpleEnvInfo,由这个函数负责生成 Environment 段里和模型有关的部分。与 model 相关的逻辑主要分两块:一块是模型展示名与精确模型 ID,另一块是知识截止日期。

展示名由 getMarketingNameForModel 处理。它先调用 getCanonicalName 把传入的 modelId 规范化,然后用一连串 includes 去匹配 Claude 型号。命中 claude-opus-4-6,就返回 Opus 4.6;命中 claude-sonnet-4-6,就返回 Sonnet 4.6;命中 claude-haiku-4-5,就返回 Haiku 4.5。如果没有命中任何 Claude 型号,就返回 undefined。glm-5.2 正好属于最后一种。

知识截止日期由 getKnowledgeCutoff 处理,套路基本一致。它同样先规范化 modelId,再按 includes 匹配 Claude 型号。claude-opus-4-6 对应 May 2025,claude-sonnet-4-6 对应 August 2025,其他 Claude 型号各有自己的日期。匹配不到就返回 null。glm-5.2 不在这些 Claude 型号列表里,所以拿不到 cutoff。

于是 computeSimpleEnvInfo 在拼模型描述时会出现两个分支。如果 marketingName 存在,就生成带展示名和精确 ID 的描述;如果 marketingName 是 undefined,就退化成只带模型 ID 的描述。知识截止日期也类似,cutoff 为 null 时,对应那行不会出现。

因此现象就很清楚了:claude-opus-4-6 能匹配到展示名 Opus 4.6,也能匹配到知识截止 May 2025,Environment 段里会同时出现展示名、精确模型 ID 和知识截止行。glm-5.2 两个函数都匹配不上,最后只剩类似 “powered by the model glm-5.2” 这种只带模型 ID 的形式。这不是 TaoToken 的 Base URL 改坏了提示词,而是 getSystemPrompt 内部匹配范围只覆盖 Claude 型号。TaoToken 只影响模型请求通道,不改变源码里的 includes 判断。

二、TaoToken 前置:创建 Key,并把 Claude Code Base URL 设为 https://taotoken.net/api

要让 Claude Code 真实走到 glm-5.2 这条模型通道,先处理接入信息。打开 TaoToken 官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册账号,然后在控制台创建 API Key。这个 Key 后面会替换配置里的 YOUR_API_KEY,不要直接提交到仓库,也不要写进公开脚本。

接下来是 Base URL。Claude Code 的 Base URL 填:

https://taotoken.net/api

注意两点。第一,不要带 /v1。Claude Code 自己会在 Base URL 后面拼 API 路径,如果 Base URL 已经带了 /v1,很容易出现重复路径。第二,不要加 UTM 参数。UTM 是给网页来源统计用的,不是 API 地址的一部分。API 地址保持 https://taotoken.net/api 即可。

在 Claude Code 里,常见做法是改 settings.json,或者用 ANTHROPIC_* 环境变量。settings.json 可以放在用户级配置里,也可以放在项目级配置里,具体取决于你的使用方式。核心是让 Claude Code 读取到 ANTHROPIC_BASE_URL 和认证信息。认证字段常见的是 ANTHROPIC_AUTH_TOKEN,有些环境也会用 ANTHROPIC_API_KEY,按你当前 Claude Code 版本的接入文档为准。模型名可以先写 glm-5.2,方便后面验证通道。

需要再次强调:TaoToken 负责的是 Key 和 Base URL。你后面要在源码里复现 Environment 段差异,仍然需要改 src/entrypoints/cli.tsx 里的 model 参数,并且重新打包。Base URL 配通只代表请求能到模型,不代表 getMarketingNameForModel 和 getKnowledgeCutoff 会认识 glm-5.2。

三、可复制配置:settings.json、ANTHROPIC_* 与 src/entrypoints/cli.tsx 的 dump 行

先给一份 settings.json 示例。字段名按你的 Claude Code 版本可能略有差异,但思路一致:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY", "ANTHROPIC_MODEL": "glm-5.2" } }

如果你更习惯环境变量,也可以这样:

export ANTHROPIC_BASE_URL=https://taotoken.net/api export ANTHROPIC_AUTH_TOKEN=YOUR_API_KEY export ANTHROPIC_MODEL=glm-5.2

这里 Base URL 仍然是 https://taotoken.net/api,不带 /v1,也不带 UTM。配置完成后,Claude Code 的模型请求会走 TaoToken 的 Base URL。接下来才是源码复现部分。

打开 src/entrypoints/cli.tsx,找到 dump 系统提示词那一行。原文实操是把 getSystemPrompt 的 model 参数先写成 claude-opus-4-6,再写成 glm-5.2。第一轮先改成:

const prompt = await getSystemPrompt([], 'claude-opus-4-6');

然后重新打包并导出:

bun devkit/build.ts bun dist/cli.js --dump-system-prompt > a.txt

第二轮把同一行的 model 参数换成 glm-5.2:

const prompt = await getSystemPrompt([], 'glm-5.2');

再次打包并导出到另一个文件:

bun devkit/build.ts bun dist/cli.js --dump-system-prompt > b.txt

最后做 diff:

diff a.txt b.txt

这里有个容易忽略的点:dump 系统提示词通常需要打开对应的 feature 开关,例如 DUMP_SYSTEM_PROMPT。实验做完后,把 feature 里的 DUMP_SYSTEM_PROMPT 去掉,把 cli.tsx 里的 dump 行改回原样,再重新打包恢复默认。不要把实验配置留在工作区里。

四、验证请求与成功结果:bun devkit/build.ts 后 diff a.txt 与 b.txt

验证分两层。第一层是 TaoToken 通道是否通,第二层是源码 dump 结果是否符合预期。

先看 TaoToken 通道。你可以用 curl 直接请求,完整 URL 可以写 https://taotoken.net/api/v1/messages,但 Claude Code 的 Base URL 仍然只填 https://taotoken.net/api。请求示例:

curl https://taotoken.net/api/v1/messages \ -H "x-api-key: YOUR_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{"model":"glm-5.2","max_tokens":64,"messages":[{"role":"user","content":"说一句你好"}]}'

如果返回 HTTP 200,并且 content 里有正常文本,说明 Key、Base URL、模型名这条通道已经可用。如果返回 401,优先检查 Key 是否替换;返回 404,优先检查 Base URL 是否多写了 /v1;返回模型不存在,检查 model 名是否写错。

第二层看 dump 结果。diff a.txt b.txt 时,重点看 Environment 段,不要被全文其他差异干扰。a.txt 对应 claude-opus-4-6,预期能看到展示名 Opus 4.6、精确模型 ID claude-opus-4-6,以及知识截止 May 2025。b.txt 对应 glm-5.2,预期与模型相关的描述退化,只保留模型 ID 形式,不再出现展示名和知识截止日期。

如果你只想快速定位,可以:

grep -n -A 8 -i "Environment" a.txt grep -n -A 8 -i "Environment" b.txt

然后对比这两个片段。b.txt 的 Environment 段如果只有 glm-5.2 这个模型 ID,没有展示名和 cutoff,就说明复现成功。a.txt 如果能同时看到 Opus 4.6 和 May 2025,说明 Claude 型号匹配逻辑正常。这个差异与 TaoToken 的 Base URL 无关,它只是证明源码里的 getMarketingNameForModel 和 getKnowledgeCutoff 只认 Claude 型号。

五、本篇常见错排查:Base URL 带 /v1、Key 未替换、打包缓存与 DUMP_SYSTEM_PROMPT

第一个高频错误是 Base URL 写成 https://taotoken.net/api/v1。Claude Code 会在 Base URL 后面继续拼 /v1/messages 之类的路径,结果变成重复路径,常见表现是 404 或路由异常。正确写法是 https://taotoken.net/api。

第二个错误是 Base URL 后面带了 UTM 参数,比如把网页推广链接直接粘进 settings.json。API 地址不认这些参数,轻则请求异常,重则鉴权失败。官网链接可以带 UTM,API 地址不要带。

第三个错误是 Key 没替换。配置里保留 YOUR_API_KEY,请求会 401。还有一种情况是字段名写错,比如把 ANTHROPIC_AUTH_TOKEN 写成别的变量,Claude Code 读不到认证信息,表现同样像 Key 失效。

第四个错误是 settings.json 位置不对或 JSON 格式错。项目级配置和用户级配置作用范围不同,JSON 多一个逗号也会导致整个文件解析失败。改完以后可以用 Claude Code 启动日志确认它实际读取了哪个配置文件。

第五个错误是把 ANTHROPIC_MODEL 和 dump 实验里的 model 参数混为一谈。ANTHROPIC_MODEL 影响真实请求走哪个模型;src/entrypoints/cli.tsx 里的 model 参数决定导出系统提示词时传给 getSystemPrompt 的值。要对比 Environment 段,必须改 cli.tsx,并且重新执行 bun devkit/build.ts。

第六个错误是打包缓存。改完 cli.tsx 后没有重新打包,bun dist/cli.js 读到的还是旧代码,导出的 a.txt 和 b.txt 自然没有差异。每次改 model 参数后都要重新 build。

第七个错误是忘记打开或忘记恢复 DUMP_SYSTEM_PROMPT。没有打开时,--dump-system-prompt 可能不生效;实验后不恢复,又会污染后续开发。建议实验前后都检查一遍 feature 开关和 cli.tsx。

第八个错误是 diff 看错范围。a.txt 和 b.txt 全文可能有很多无关差异,比如时间戳或路径。只看 Environment 段即可。必要时用 grep 截取上下文,再比较模型描述行和知识截止行。

第九个错误是 model 参数实际没有传成 glm-5.2。比如被别名、环境变量或默认值覆盖,导致 getCanonicalName 拿到的仍是 Claude 型号。确认 dump 行里传入的字符串就是 glm-5.2。

第十个错误是终端换行或编码造成 diff 噪音。Windows 下 CRLF、重定向编码、终端宽度都可能影响输出。可以先统一换行格式,再看关键段落。

六、语义一致 CTA:继续从 API Keys 与接入文档复现 Claude Code 源码链路

回到本篇目标:Claude Code 系统提示词里 glm-5.2 的 Environment 段只剩模型 ID,是因为 getMarketingNameForModel 和 getKnowledgeCutoff 只对 Claude 型号做 includes 匹配。TaoToken 在这里负责 Key 与 Base URL,让你能把 Claude Code 的模型请求接到 https://taotoken.net/api,但不改变源码匹配逻辑。要复现完整链路,先配通 TaoToken 通道,再改 src/entrypoints/cli.tsx 的 model 参数,执行 bun devkit/build.ts,分别导出 a.txt / b.txt,最后 diff 看 Environment 段。

如果你卡在 Key、Base URL、settings.json 或 ANTHROPIC_* 配置上,建议先看 API Keys 页面和接入文档,按实际控制台里的字段核对: API Keys:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_content=api-keys&utm_campaign=rewrite 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_content=doc&utm_campaign=rewrite

拿到 Key 并配好 Base URL 后,你就能继续按原文改 src/entrypoints/cli.tsx、重新打包、导出系统提示词,观察 claude-opus-4-6 与 glm-5.2 在 Environment 段里的实际差异。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 5:50:56

基于改进PSO算法的永磁同步电机参数辨识优化

1. 项目背景与核心挑战永磁同步电机(PMSM)作为高效能电机代表,其精确控制依赖于准确的参数辨识。传统方法如最小二乘法在应对非线性、强耦合的电机系统时往往力不从心。我在参与某工业伺服系统项目时,就遇到过因参数失配导致电机转…

作者头像 李华
网站建设 2026/9/19 5:49:25

多轮工具调用区间,TaoToken 帮你对 PaperScout 做成本归因

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 5:48:00

Java开发者的大模型应用开发指南:基于SpringAI的工程化实践

1. 为什么 Java 开发者需要一套自己的大模型应用开发方法论过去一年多,我身边不少做 Java 后端的同事都动过转大模型应用的念头,但真正动手时几乎都卡在同一个地方:Python 生态里的 LangChain、LlamaIndex 教程铺天盖地,而自己每天…

作者头像 李华
网站建设 2026/9/19 5:47:14

工业级旋转目标检测的梯度实操手记

1. 这不是又一篇“讲反向传播的博客”——它是一份工业级旋转目标检测网络的梯度实操手记你点开这个标题,大概率不是想再听一遍“链式法则怎么推导”或者“计算图就是有向无环图”这种教科书定义。我干了十年CV系统落地,从安防摄像头里抠出倾斜的车牌&am…

作者头像 李华