1. 为什么你的 OpenClaw Agent 总是“养不熟”很多人第一次接触 OpenClaw兴奋地跑完安装脚本对着终端敲下第一句话结果发现它像个刚睡醒的实习生答非所问、记不住上下文、换个话题就失忆。问题不在模型本身而在于 Agent 的“人格”和“记忆”没有落地成文件。OpenClaw 的设计哲学是把 Agent 拆成可读可改的配置文件核心就是 SOUL.md、USER.md、Skills 目录以及一份统一的 config.toml。你把这些文件写清楚Agent 才有稳定的行为边界你让模型通过一个统一的 Key 接入才能避免到处散落 API 凭证。这篇内容面向想快速跑通 OpenClaw 的开发者交付可复制的配置骨架、TaoToken 统一 Key 的接入方式以及每一步的验证命令和预期输出。适合谁已经装好 OpenClaw、但 Agent 表现不稳定或者正准备从零搭建一个长期可维护 Agent 的人。我试过把六个步骤拆成“先定性格、再认主人、建记忆、分角色、装技能、持续调教”的顺序每一步都有对应的文件和验证手段。下面按这个顺序展开你可以边看边改自己项目里的文件。2. TaoToken 前置一个 Key 管住所有模型调用OpenClaw 的 Agent 在运行时会频繁调用模型写 SOUL.md 时要模型帮你润色、Skills 执行时要模型做总结、多 Agent 分工时每个角色都要独立请求。如果每个环节都配一套不同的 Key维护成本会迅速失控。TaoToken 的作用就是提供一个统一的接入点你只需要在配置里写一次 API Key 和 Base URL所有 Agent 和 Skills 都走同一个出口。先拿到 Key。打开 https://taotoken.net/api-keys 登录后创建一个新的 API Key复制保存。注意这个 Key 只在创建时完整显示一次后面只能看到前缀。拿到之后OpenClaw 的 config.toml 里模型段这样写[model] provider openai-compatible base_url https://taotoken.net/api api_key sk-你的TaoTokenKey default_model claude-sonnet-4-20250514这里 base_url 用 https://taotoken.net/api 不要加多余的路径后缀。default_model 可以按你实际订阅的模型改Claude 系列在长上下文和指令遵循上比较稳适合 Agent 场景。如果你后面要接 Claude Code 或做长期编码任务可以单独看 Coding Plan 的配置方式但基础接入就是上面这几行。注意config.toml 里不要出现明文 Key 提交到 Git。建议用环境变量注入OpenClaw 支持${TAOTOKEN_API_KEY}这种写法本地用 .env 文件加载。验证 Key 是否可用不用等 Agent 跑起来直接发一个最小请求curl -s 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:user,content:ping}]}预期返回一个 JSONchoices[0].message.content 里有内容就说明 Key 和网络都通了。如果返回 401检查 Key 是否复制完整返回 404检查 base_url 是否写成了带 /v1 的完整路径。3. 六个关键步骤的可复制配置3.1 第一步SOUL.md 定性格别让 Agent 自由发挥SOUL.md 放在 Agent 工作目录的根下和 config.toml 同级。它的作用是给模型一个稳定的系统提示告诉它“你是谁、怎么说话、什么不能做”。很多人只写一句“你是一个 helpful assistant”结果 Agent 每次回复风格飘忽。正确的写法是把名字、性格、说话风格、擅长领域、禁止事项都写进去。# SOUL ## 名字 小虾 ## 性格 直接、不废话、先给结论再给理由。遇到不确定的事说“我不确定”不编造。 ## 说话风格 中文为主技术术语保留英文。代码块用 包裹。重点内容加粗。不用 emoji。 ## 擅长领域 Python 后端、OpenClaw 配置、API 调试、日志分析。 ## 禁止事项 不讨论与工作无关的娱乐话题。不输出未经确认的版本号或价格。不代替用户执行删除操作。写完之后在 config.toml 里指向这个文件[agent] soul_file ./SOUL.md user_file ./USER.md memory_dir ./memory knowledge_dir ./knowledge验证方式启动 OpenClaw 后问一句“你是谁”预期它回答“我是小虾擅长 Python 后端和 OpenClaw 配置”而不是泛泛的“我是一个 AI 助手”。如果回答里出现了你禁止的内容说明 SOUL.md 没被加载检查路径是否写对。3.2 第二步USER.md 让 Agent 认识你USER.md 和 SOUL.md 同路径写的是“你是谁、你的习惯、你的偏好”。这一步经常被忽略但它是 Agent 从“通用助手”变成“你的助手”的分水岭。内容可以包括职业、沟通偏好、工作节奏、常用技术栈。# USER ## 职业 后端开发主要写 Python 和 Go偶尔做数据清洗。 ## 沟通偏好 喜欢先看结论再看推导过程。不喜欢长篇铺垫。代码示例要能直接跑。 ## 工作习惯 每天早上 9 点开早会周五下午写周报。周三晚上不处理工作消息。 ## 当前项目 OpenClaw Agent 搭建目标是把日常日志分析和周报生成自动化。USER.md 要定期更新。你换了项目、改了作息、偏好变了都回来改几行。Agent 每次启动都会读这个文件所以改完重启就生效。验证方式问“我周五下午通常做什么”预期它回答“写周报”而不是“我不知道你的安排”。3.3 第三步建记忆解决 Agent 失忆记忆是 OpenClaw 最容易被低估的部分。没有记忆Agent 每次对话都是冷启动你重复解释同一件事它重复犯同一个错。推荐三层记忆架构全部放在 memory 目录下。第一层是日常对话记忆。当你说“记住这个”时Agent 把当前上下文写入 memory/日期.md。你可以在 SOUL.md 里加一条规则“当用户说‘记住这个’时把上一条对话摘要追加到 memory/当天日期.md”。第二层是每周复盘。每周五让 Agent 写一份工作日志核心内容追加到 MEMORY.md。第三层是个人知识库建一个 knowledge 文件夹重要资料让 Agent 总结后存成独立 md 文件。目录结构长这样agent-root/ ├── config.toml ├── SOUL.md ├── USER.md ├── MEMORY.md ├── memory/ │ ├── 2025-06-01.md │ └── 2025-06-02.md └── knowledge/ ├── openclaw-config.md └── api-debug-notes.md验证方式对 Agent 说“记住这个我的 TaoToken Key 放在 .env 里变量名是 TAOTOKEN_API_KEY”然后检查 memory/当天日期.md 是否多了一行。再重启 Agent问“我的 TaoToken Key 放在哪”预期它能从记忆里读出来。3.4 第四步多 Agent 分工一个角色干一件事一个 Agent 既写代码又做搜索又执行命令结果就是上下文互相污染行为不稳定。OpenClaw 支持在 config.toml 里定义多个 Agent每个 Agent 有自己的 SOUL.md 和职责范围。[[agents]] name writer soul_file ./agents/writer/SOUL.md skills [summarize] [[agents]] name searcher soul_file ./agents/searcher/SOUL.md skills [find-skills] [[agents]] name executor soul_file ./agents/executor/SOUL.md skills [create-skills]writer 负责总结和写周报searcher 负责找技能和查资料executor 负责执行具体命令。每个角色的 SOUL.md 只写自己领域的规则不要互相串。验证方式分别向三个 Agent 发同一个问题“帮我总结今天的日志”预期只有 writer 给出完整总结searcher 和 executor 会说明这不是自己的职责。3.5 第五步装 Skills装一个用好一个Skills 是 OpenClaw 的能力扩展但装太多会拖慢启动、增加上下文长度。建议先装三个基础技能summarize 做总结、find-skills 找技能、create-skills 创建新技能。安装方式不用手动 clone把 GitHub 链接发给 Agent说“帮我安装这个 Skill”它会自动处理。如果你要手动确认Skills 目录结构如下skills/ ├── summarize/ │ ├── skill.toml │ └── main.py ├── find-skills/ │ ├── skill.toml │ └── main.py └── create-skills/ ├── skill.toml └── main.py每个 skill.toml 里声明名称、触发词、入口函数。验证方式对 Agent 说“总结一下 SOUL.md 的内容”如果 summarize 装好了它会调用技能并返回摘要如果没装它会直接用模型能力回答但不会走技能流程。你可以通过日志里是否出现 skill 调用来区分。3.6 第六步持续调教越养越聪明调教不是一次性工作。每次 Agent 回复不对直接说“这里错了下次要这样说”并把正确说法追加到 SOUL.md 或 USER.md。偏好变了就改 USER.md重要事项更新到 MEMORY.md。每周让 Agent 复盘一次“这周我们讨论了什么有哪些重复出现的问题”这一步没有固定配置文件靠的是习惯。你可以建一个 feedback.md专门记录每次纠正的内容每周整理一次把稳定的规则合并进 SOUL.md。验证方式连续纠正同一个问题三次后第四次遇到类似场景Agent 应该直接按你纠正的方式回答而不是再犯。4. 验证请求与成功结果配置写完跑一次完整验证。先确认 config.toml 能被解析openclaw config validate预期输出Config OK: 3 agents, 3 skills, modelclaude-sonnet-4-20250514。如果报错按提示检查 TOML 语法常见问题是字符串没加引号、数组括号不匹配。然后启动 Agent 并发一条测试消息openclaw run --agent writer --message 总结一下今天的 memory 文件预期返回一段摘要内容来自 memory/当天日期.md。如果返回空检查 memory 目录是否存在、当天文件是否有内容。如果返回“我没有权限访问文件”检查 config.toml 里 memory_dir 路径是否正确。最后验证多 Agent 隔离openclaw run --agent executor --message 你是谁预期返回 executor 的 SOUL.md 里定义的身份而不是 writer 的身份。如果返回了 writer 的内容说明 agents 数组里的 soul_file 路径写重了。5. 本篇常见错排查错误一401 Unauthorized。最常见的原因是 Key 复制时带了空格或者 .env 文件没被加载。检查echo $TAOTOKEN_API_KEY是否有值没有的话在启动命令前加source .env。错误二Agent 不读 SOUL.md。检查 config.toml 里 soul_file 的路径是相对路径还是绝对路径。OpenClaw 默认从工作目录解析相对路径如果你在别的目录启动路径就会错。建议统一用绝对路径或者固定在工作目录下启动。错误三记忆文件写了但读不到。memory_dir 指向的目录必须存在OpenClaw 不会自动创建。手动mkdir -p memory knowledge再启动。另外日期格式要统一建议用YYYY-MM-DD.md避免 Agent 写入时格式不一致导致读不到。错误四Skills 装了但不触发。检查 skill.toml 里的触发词是否和你的提问匹配。比如 summarize 的触发词是“总结”“摘要”你说“帮我概括一下”可能不触发。改触发词或者换说法都行。错误五多 Agent 启动报错。agents 数组里每个 name 必须唯一soul_file 不能指向同一个文件。如果两个 Agent 共用 SOUL.md行为会互相干扰启动时可能报冲突。6. 接入方式与后续动作如果你还没拿到 Key先去 https://taotoken.net/api-keys 创建一个然后按第 2 节的 config.toml 骨架填进去。接入文档在 https://taotoken.net/doc 里面有完整的参数说明和错误码对照。想先验证模型对话是否正常可以直接用 https://taotoken.net/model-chat 发一条消息确认返回内容符合预期再回到 OpenClaw 配置。长期做编码或 Agent 任务的话Coding Plan 的配置方式在 https://taotoken.net/coding-plan 它针对长会话和代码场景做了优化。控制台在 https://taotoken.net/console 可以看调用量和余额。Claude Code 相关的接入说明在 https://taotoken.net/claudecode-anthropic 如果你用 Claude Code 作为前端可以参考那份配置。最后一步是持续调教。每周花十分钟让 Agent 复盘把稳定的规则合并进 SOUL.md把过期的记忆归档。Agent 不是配一次就完事它更像一个需要定期维护的同事。你改得越勤它越懂你。
