
1. 从一次身份错乱说起IDENTITY.md 到底管什么如果你同时用 Claude Code、Cline、Codex 这类工具大概率遇到过这种场面同一个工作区里A 工具叫你「cosmoslife」B 工具叫你「assistant」C 工具干脆没有名字回复风格一会儿严谨一会儿跳脱。问题不在模型而在身份定义文件没有被统一读取。IDENTITY.md 就是解决这件事的配置文件。它是一份放在工作区根目录的 Markdown 文件用「- Key: Value」的列表格式声明 AI 的名字、物种、风格、签名表情和头像路径。它和 AGENTS.md、SOUL.md 最大的区别在于IDENTITY.md 不只是被整段塞进 system prompt还会被程序化解析成结构化字段写入 OpenClaw 的配置系统openclaw.yaml 里的 agents.list[].identity。也就是说它同时服务两个读者——AI 自己通过上下文注入和宿主程序通过字段解析。适合谁用三类人最需要它。第一类是多 AI 工具并行、希望所有工具对外呈现同一个身份的开发者第二类是把 endpoint 和鉴权入口收敛到 TaoToken 统一通道、需要身份与鉴权解耦的团队第三类是给 Discord/Telegram 机器人做多 agent 区分、需要每个 agent 有独立显示名和头像的人。我试过在一个工作区里放三份不同的身份描述结果 CLI 注册时后写的覆盖先写的UI 上显示的名字和实际对话里自称的名字对不上。踩过这个坑之后才明白IDENTITY.md 是唯一事实来源其他地方的重复定义都是隐患。这篇会先讲清楚字段结构和生效逻辑再给出可复制的 IDENTITY.md 片段然后把 endpoint 与鉴权项改到 TaoToken 统一通道最后用一次请求验证身份字段是否被正确读取。全程可跟做命令和配置都能直接抄。2. TaoToken 前置准备把鉴权入口统一到一条通道在改 IDENTITY.md 之前先把「身份」和「鉴权」两件事分开。身份是 IDENTITY.md 管的鉴权是 API Key 和 Base URL 管的。很多人把两者混在一个配置文件里导致换模型供应商时身份也跟着乱。正确做法是身份留在 IDENTITY.md鉴权统一走 TaoToken。TaoToken 在这里扮演的是统一通道角色。你不需要在每个工具里分别填不同的供应商地址和密钥而是把 Base URL 指向同一个入口Key 用同一把模型 ID 按需切换。这样 IDENTITY.md 里定义的身份就能跨工具保持一致不会因为换了后端就丢失。第一步拿到 API Key。打开 https://taotoken.net/api-keys 登录后创建一个新 Key复制保存。注意 Key 只在创建时完整显示一次关掉页面就看不到了。第二步确认 Base URL。统一通道地址是https://taotoken.net/api这个地址不加任何查询参数直接作为 OpenAI 兼容协议的 base_url 使用。如果你用的是 Anthropic 协议的工具比如 Claude Code走的是另一套路径具体在接入文档里查 https://taotoken.net/doc第三步确认模型 ID。不同工具对模型名的写法略有差异但都遵循「供应商/模型」或直接模型名的形式。你可以在模型对话页面先试跑一次确认哪个模型 ID 可用 https://taotoken.net/chat第四步规划长期编码场景。如果你打算把 TaoToken 作为日常 coding 和 Agent 任务的固定通道建议直接看 Coding Plan里面有额度与并发说明 https://taotoken.net/coding-plan这里有个关键点IDENTITY.md 本身不存 Key也不存 Base URL。它只存身份字段。鉴权项放在各工具自己的配置文件里比如 Codex 的 auth.json、Cline 的 MCP 设置、Claude Code 的 settings。所以「把身份定义改到 TaoToken 统一通道」这句话的准确含义是身份文件保持独立鉴权入口统一指向 TaoToken两者通过工作区路径关联起来。如果你用的是 Claude Code 这类需要 OAuth 或 settings 的工具配置入口在控制台里可以找到对应说明 https://taotoken.net/console3. 可复制配置IDENTITY.md 字段结构与 settings 片段先看 IDENTITY.md 的字段结构。解析器 parseIdentityMarkdown() 只认六个字段键名不区分大小写值两端的星号和下划线会被清除括号内容会被去掉模板占位符会被跳过。可复制的最小片段如下# IDENTITY.md - Who Am I? - Name: cosmoslife - Creature: 数字助手 - Vibe: 科学、严谨、以数据和证据为基础 - Emoji: - Theme: 科学严谨 - Avatar: avatars/cosmoslife.png六个字段的含义分别是Name 是 AI 在对话中可能自称的名字Creature 定义角色定位Vibe 是一句话风格描述会同时影响行为Emoji 用于辨识Theme 和 Vibe 可互换Avatar 是多 agent 环境下的视觉区分路径。注意几个解析细节。以-开头的列表项用:分隔键和值Name、name、NAME都能识别。值两端的*和_会被清除所以- **Name**: cosmoslife也能正确解析。括号内的值会被去掉- Name: cosmoslife (v2)解析出来是cosmoslife。模板占位符比如pick something you like会被跳过不会当成有效身份。接下来是鉴权配置。以 Codex 的 auth.json 为例三件套必须写全Base URL、Key、Model ID。{ base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密钥, model: claude-sonnet-4-20250514 }如果你用的是 Cline 的 MCP 配置写法类似把 provider 指向 OpenAI 兼容端点{ mcpServers: { taotoken: { command: npx, args: [-y, taotoken/mcp-server], env: { TAOTOKEN_BASE_URL: https://taotoken.net/api, TAOTOKEN_API_KEY: sk-你的TaoToken密钥, TAOTOKEN_MODEL: claude-sonnet-4-20250514 } } } }Claude Code 的 settings 片段则放在项目级配置里{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }三件套的核心逻辑是Base URL 决定请求发往哪里Key 决定鉴权是否通过Model ID 决定用哪个模型。三者缺一请求就会失败。IDENTITY.md 不参与鉴权它只负责身份字段通过工作区路径被读取。写完 IDENTITY.md 后需要注册到配置系统。命令如下openclaw agents identity --from-identity这条命令会从 IDENTITY.md 读取身份写入 openclaw.yaml 的 agents.list[].identity。也可以用 CLI 参数直接指定此时会反向更新 IDENTITY.mdopenclaw agents identity --name cosmoslife --emoji --theme 科学严谨指定工作区路径的写法openclaw agents identity --workspace ~/.openclaw/workspace --from-identity4. 验证请求确认身份字段被正确读取配置写完必须验证。验证分两层第一层确认鉴权通道通了第二层确认身份字段被正确解析。先验证鉴权。用 curl 发一次最小请求curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 你是谁}], max_tokens: 100 }如果返回 200 且 choices 里有内容说明 Base URL 和 Key 都正确。如果返回 401说明 Key 有问题如果返回 model not found说明 Model ID 写错了。再验证身份字段。在对话里直接问 AI 的名字和风格看它是否引用了 IDENTITY.md 里的值。比如你写了- Name: cosmoslifeAI 应该自称 cosmoslife你写了- Vibe: 科学、严谨回复风格应该偏严谨。更可靠的验证方式是看 system prompt 注入。在开发模式下系统会校验 AGENTS.md、SOUL.md、IDENTITY.md、USER.md 四个文件是否被正确注入。你可以打开调试日志搜索# Project Context部分确认 IDENTITY.md 的完整内容出现在里面。结构化字段的验证则看 openclaw.yaml。注册成功后配置里应该出现agents: list: - identity: name: cosmoslife emoji: theme: 科学严谨 avatar: avatars/cosmoslife.png如果这里为空说明解析失败。常见原因是字段值命中了模板占位符被解析器跳过了。检查你的 IDENTITY.md确认没有写pick something you like这类占位文本。还有一个双向同步的验证点用 CLI 修改身份后IDENTITY.md 应该被自动更新。执行openclaw agents identity --name 新名字然后打开 IDENTITY.md看 Name 字段是否变成了「新名字」。如果没变说明合并回写机制没生效检查文件权限和路径。5. 常见报错排查401、local proxy failed、reading choices、OAuth排障部分按真实报错来。以下四类是最常遇到的。第一类401 Unauthorized。这是鉴权失败和 IDENTITY.md 无关。检查三件事Key 是否复制完整有没有漏掉前缀、Base URL 是否写成https://taotoken.net/api不要多加/v1除非工具要求、请求头是否是Authorization: Bearer sk-xxx。如果 Key 是在别的环境创建的确认它没有过期或被删除。第二类local proxy failed。这个报错通常出现在工具试图走本地代理但代理没起来的时候。检查你的工具配置里有没有残留的 proxy 设置把它清掉让请求直连 TaoToken 的 Base URL。同时确认网络环境能正常访问https://taotoken.net/api。第三类reading choices 相关报错比如cannot read property choices of undefined。这说明请求发出去了但返回体结构不对。常见原因是 Model ID 写错服务端返回了错误对象而不是标准的 chat completion 结构。检查 Model ID 是否和模型对话页面里可用的一致。另一个原因是 Base URL 少了/v1路径段导致请求打到了错误的端点。第四类OAuth 相关报错。Claude Code 这类工具默认走 OAuth 流程如果你改成 API Key 鉴权需要显式关闭 OAuth 或覆盖对应环境变量。检查 settings 里是否同时存在 OAuth 配置和 API Key 配置两者冲突时会报错。保留 API Key 那套删掉 OAuth 相关字段。排查顺序建议先 curl 验证通道再验证工具配置最后验证 IDENTITY.md 解析。这样能把「鉴权问题」和「身份问题」分开定位不会混在一起查。如果以上都排查完还是不通直接看接入文档里的错误码对照表 https://taotoken.net/doc 。文档里有每个错误码对应的原因和修复方式比盲目试错快得多。6. 把身份与鉴权解耦长期维护建议最后说几个长期维护的实操建议。IDENTITY.md 保持简洁。六个核心字段填准额外信息用自由格式 Markdown 加在结构化字段之后。比如你想声明专业领域可以这样写# IDENTITY.md - Who Am I? - Name: cosmoslife - Creature: 数字助手 - Emoji: ## 专业领域 - 期货量化分析 - Python 工程开发 - Bug 根因分析## 专业领域这部分不会被 parseIdentityMarkdown() 解析为结构化字段但会被完整注入 system promptAI 依然能看到。这样既不影响程序解析又扩展了身份信息。鉴权配置集中管理。所有工具的 Base URL 都指向https://taotoken.net/apiKey 用同一把Model ID 按工具需求切换。这样换 Key 时只改一处不用每个工具翻一遍。多 agent 环境用 Avatar 区分。每个 agent 的 IDENTITY.md 里写不同的 Avatar 路径UI 和 session 列表里就能一眼分辨。Avatar 支持工作区相对路径、http(s) URL 或 data URI 三种形式。定期验证双向同步。用 CLI 改一次身份看 IDENTITY.md 是否被回写手动改一次 IDENTITY.md看注册后配置是否更新。两个方向都通说明链路健康。身份文件不要放密钥。IDENTITY.md 会被完整注入 system prompt如果里面写了 Key等于把密钥暴露给了模型上下文。鉴权项永远放在工具自己的配置文件里和身份文件物理隔离。做到这几点你的多工具身份就能保持一致鉴权入口也收敛到一条通道。后面再加新工具只需要配三件套身份自动继承。