
1. 为什么你的 OpenClaw Agent 总像“换了个人”很多人第一次跑 OpenClaw 的时候都会遇到一个很割裂的体验同一个 Agent昨天回答得像个沉稳的技术顾问今天却突然变得油腔滑调上一轮还在给你贴心的排障建议下一轮就开始胡编 API 参数。问题往往不在模型本身而在于你从来没给它一个稳定的“人格底座”。OpenClaw 这类 Agent 框架里真正决定“它是谁”的文件就是SOUL.md。它不像AGENTS.md那样规定“做什么任务”而是定义“以什么身份、什么语气、什么价值排序去做”。你可以把它理解成给 Agent 写的一份性格说明书人格特质、沟通风格、价值判断三块写清楚Agent 的行为一致性会立刻上一个台阶。这篇面向的是想快速搭一个个性化 Agent 的开发者尤其是已经在用 OpenClaw、但被“人格漂移”和“多模型 Key 管理混乱”两头夹击的人。我会给出一份可直接复制的SOUL.md模板骨架再配上settings.json/config.toml的配置片段最后用 TaoToken 的统一 Key 通道把整条链路跑通。目标很明确从模板到可运行 Agent一次闭环不返工。适合谁手上有 OpenClaw 项目、想给 Agent 加人格层、又不想为每个模型单独维护一堆 Key 的开发者。读完你能拿到三样东西——一份能改的 SOUL 模板、一份能跑的配置、一套能验证的请求动作。2. TaoToken 前置一个 Key 打通多模型通道在讲配置之前先把“Key 从哪来”这件事说清楚。OpenClaw 的 Agent 通常要调用多个模型主对话用一个代码补全用一个可能还有个便宜的做意图分类。如果每个模型都去单独申请 Key、单独配环境变量配置文件会迅速变成一团乱麻。TaoToken 在这里的角色是统一入口。你只需要在它那边拿一个 API Key然后在 OpenClaw 的配置里把 base_url 指向统一通道模型名按需切换即可。这样SOUL.md里定义的人格不会因为换了底层模型就崩掉配置层也只维护一份凭证。具体操作路径注册并登录后进控制台创建 API Keyhttps://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteKey 管理页在这里方便你后续轮换https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite接入文档含 base_url 和参数说明https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite注意API 地址统一用 https://taotoken.net/api 不要在后面拼多余的路径OpenClaw 的 OpenAI 兼容客户端会自动补/v1/chat/completions这类后缀。拿到 Key 之后先别急着写 SOUL。建议你先在模型对话页手动发一条消息确认通道是通的https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。这一步能帮你把“Key 错、余额不足、模型名写错”这类低级问题提前排掉省得后面在 OpenClaw 里瞎猜。3. 可复制配置SOUL.md 模板 settings.json / config.toml3.1 SOUL.md 模板骨架下面这份模板是我实测下来结构最稳的版本。它把人格、风格、价值观分成三节每节都用“具体描述 行为约束”的写法避免只写“友好”“专业”这种空词。# SOUL.md ## Personality 你是一位经验丰富的技术顾问性格沉稳、逻辑清晰。 你对技术有热情乐于帮人把问题拆开来看。 面对不确定的事情你会明确说“我不确定”而不是编一个答案。 你不会为了显得聪明而堆砌术语。 ## Communication Style - 使用简洁明了的中文技术术语首次出现时附英文原文 - 技术讨论时给出可运行的代码示例而不是伪代码 - 复杂概念先用类比解释再补精确定义 - 用列表或表格组织对比信息避免大段文字 - 回答结尾给一个明确的下一步建议 ## Values - 准确性优先于速度宁可多想一步也不给错误答案 - 安全第一涉及密钥、权限、数据删除时主动提醒风险 - 授人以渔解释原理而不只是给结论 - 尊重隐私不主动索要不必要的个人信息 - 对新技术保持开放但不盲目推荐未经验证的方案这份骨架的关键在于“可判定”。比如“准确性优先于速度”后面跟了“宁可多想一步也不给错误答案”Agent 在生成时就有了可执行的取舍依据。如果你只写“要准确”模型大概率会忽略。3.2 场景化改造三行改动换人格同一份骨架改Personality和Values就能切换场景。客服助手把人格改成“耐心、温暖、先共情再解决”价值观里加一条“首次响应解决率优先”技术专家把人格改成“严谨、系统性思考”价值观里加“代码质量和可维护性优先”创意写手则把风格改成“语言生动、善用比喻”价值观里加“原创性和读者体验优先”。我试过在同一个 OpenClaw 实例里挂多个 SOUL 文件按会话切换效果比在一个 SOUL 里写“情境模式”更干净。情境切换比如“进入调试模式”虽然能写但容易和主逻辑打架不如直接分文件。3.3 settings.json 配置片段OpenClaw 如果用 JSON 配置核心是把 provider 指向 TaoToken 的统一通道。下面这段可以直接改{ agent: { name: my-openclaw-agent, soul_path: ./souls/SOUL.md, agents_path: ./AGENTS.md }, llm: { provider: openai-compatible, base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY, model: claude-sonnet-4-20250514, temperature: 0.4, max_tokens: 4096 } }api_key_env指向环境变量别把 Key 硬编码进文件。temperature设 0.4 是我在人格一致性上的经验值太高人格会飘太低回答会僵。3.4 config.toml 配置片段如果你的 OpenClaw 用 TOML等价写法如下[agent] name my-openclaw-agent soul_path ./souls/SOUL.md agents_path ./AGENTS.md [llm] provider openai-compatible base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY model claude-sonnet-4-20250514 temperature 0.4 max_tokens 4096两种格式选一种即可别混用。环境变量这样设export TAOTOKEN_API_KEYsk-你的keyWindows PowerShell 用$env:TAOTOKEN_API_KEYsk-你的key。设完记得新开一个终端否则旧会话读不到。3.5 SOUL 与 AGENTS 的优先级这里有个容易踩的坑SOUL.md定义“是什么”AGENTS.md定义“做什么”。当两者冲突时任务约束优先。比如 SOUL 里写“回答简洁”但 AGENTS 里要求“输出完整排障步骤”那就按 AGENTS 走。理解这一点你就不会奇怪为什么 Agent 有时候“不听话”——它只是在服从更高优先级的任务指令。4. 验证请求确认 Agent 真的按 SOUL 在跑配置写完别急着上生产。先用一条最小请求验证通道和人格是否都生效。4.1 用 curl 验证通道curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-20250514, messages: [ {role: system, content: 你是一位经验丰富的技术顾问回答简洁结尾给下一步建议。}, {role: user, content: OpenClaw 的 SOUL.md 和 AGENTS.md 有什么区别} ], temperature: 0.4 }如果返回 200 且内容结构正常说明 Key 和 base_url 都没问题。返回 401 就是 Key 错返回 404 多半是 base_url 多写了路径。4.2 验证 SOUL 是否被注入启动 OpenClaw 后发一条测试消息观察三个点语气是否稳定、术语是否附了英文原文、结尾是否给了下一步建议。这三点对应 SOUL 里的三条风格约束全中说明注入成功。如果语气对但结尾没建议检查soul_path是否指向了正确文件如果完全没变化检查 OpenClaw 启动日志里有没有加载 SOUL 的记录。很多框架默认不读 SOUL需要在 agent 配置里显式声明。4.3 验证多模型切换把model换成另一个模型名重发同一条消息。人格描述应该保持一致只有知识细节可能不同。如果换了模型人格就崩说明你的 SOUL 写得太依赖某个模型的默认行为需要把约束写得更硬。5. 本篇常见错排查5.1 报错 401 Unauthorized最常见的原因是环境变量没生效。先echo $TAOTOKEN_API_KEY确认有值再确认 OpenClaw 进程是在设了变量的终端里启动的。如果你用 systemd 或 Docker环境变量要在对应配置里单独注入不会自动继承。5.2 报错 model not found模型名拼写错误或者该模型不在你的可用列表里。去模型对话页确认一下当前可用的模型名复制粘贴别手打。5.3 SOUL 不生效三个检查点soul_path路径对不对、文件编码是不是 UTF-8、OpenClaw 版本是否支持 SOUL 注入。有些旧版本把人格配置放在AGENTS.md里需要升级或改配置。5.4 人格漂移如果 Agent 跑着跑着语气就变了多半是temperature太高或者对话历史太长把 system prompt 稀释了。把 temperature 降到 0.3–0.4并在框架里开启“每轮重注入 system prompt”。5.5 多模型 Key 冲突如果你之前给每个模型单独配了 Key现在换成 TaoToken 统一通道记得把旧的 provider 配置删掉否则框架可能优先读旧配置。配置文件里只留一份llm段。6. 把 Key 和人格都收进一个骨架里走到这里你应该已经有一份能跑的 SOUL.md、一份指向 TaoToken 统一通道的配置以及一套验证动作。剩下的就是按你的场景微调人格描述然后把它固化进项目模板。如果你还在选模型阶段可以先去模型对话页对比几个模型在同一份 SOUL 下的表现https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。长期做编码类 Agent 的话Coding Plan 会更省心https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。Key 管理和接入细节分别在 API Keys 页和接入文档里遇到报错先回去对一遍参数。最后留一个我踩过的坑SOUL.md 别写太长。超过 800 字之后模型对后面内容的注意力会明显下降人格约束反而变弱。把最关键的 5–8 条写死剩下的交给 AGENTS.md 去管任务分工清楚Agent 才稳。