☰
OpenClaw 核心配置文件的艺术:SOUL.md、USER.md 与 AGENTS.md 完全指南(TaoToken 统一 Key 接入版)
2026/10/8 17:37:32 网站建设 项目流程

1. 为什么你的 OpenClaw 助手总像“陌生人”:三大配置文件定位与协作场景

很多人第一次打开 OpenClaw,会下意识把它当成“又一个聊天框”:输入问题,等回复,关掉。用不了几天就发现不对劲——它记不住你昨天说过的项目名,回复永远是“我很乐意帮助您”,你让它写代码它先来一段免责声明。问题不在模型,而在工作区里那三份你可能压根没打开过的 Markdown 文件:SOUL.md、USER.md、AGENTS.md。

OpenClaw 的设计思路和普通对话工具不一样,它把“助手是谁、为谁服务、按什么规矩干活”拆成了三个可编辑的文本层。SOUL.md 管人格与语气,USER.md 管服务对象的画像与偏好,AGENTS.md 管每次会话的启动流程、记忆读写和主动性边界。三者叠在一起,才构成一个稳定的“数字同事”。缺了 SOUL.md,它没有立场;缺了 USER.md,它不知道你在哪个时区、做什么工作;缺了 AGENTS.md,它每次会话都像失忆重来。

这篇面向首次搭建 OpenClaw 工作区的开发者,我会把三份文件的目录结构、字段模板、最小可运行示例全部摊开,并且把模型接入这一步统一走 TaoToken 的 Key/API 通道——这样你不需要在多个供应商后台之间来回切换,一个 Key 就能把 OpenClaw 的模型请求接上。官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ,API 基址用 https://taotoken.net/api 。下面从工作区目录开始,一步步把配置写出来,最后用一次真实对话验证三份文件是否生效。

先明确一个判断标准:配置成功的标志不是“文件存在”,而是你发一句“今天几号,我该干嘛”,它能结合 USER.md 里的时区和工作重点,用 SOUL.md 定义的语气,按 AGENTS.md 的流程读记忆后给出回答。达不到这个效果,就是某一份文件没被正确加载。

2. TaoToken 统一 Key 前置准备:OpenClaw 模型通道与工作区目录规划

在写三份配置文件之前,先把模型通道和工作区目录定下来。OpenClaw 本身是工作区框架,模型请求需要指向一个兼容 OpenAI 协议的端点。TaoToken 提供统一的 API 通道,你只需要一个 Key、一个 Base URL,就能在 OpenClaw 里调用模型,不用为每个模型单独配一套凭证。

第一步,打开 https://taotoken.net/api-keys 创建 API Key。建议按用途命名,比如openclaw-workspace,方便以后区分。创建后立刻复制保存,页面刷新后不再完整显示。这个 Key 就是后面写进配置的凭证。

第二步,确认 API 基址。OpenClaw 的模型配置里填https://taotoken.net/api,注意不要带末尾斜杠,也不要带任何查询参数。模型 ID 按你实际要用的填,比如claude-sonnet-4-20250514这类标识,具体以模型对话页面展示的可用列表为准。你可以先在 https://taotoken.net/models 确认模型 ID 拼写,避免因为大小写或版本号写错导致 404。

第三步,规划工作区目录。OpenClaw 的工作区建议长这样:

openclaw-workspace/ ├── AGENTS.md ├── SOUL.md ├── USER.md ├── MEMORY.md ├── BOOTSTRAP.md └── memory/ ├── 2025-01-01.md └── 2025-01-02.md

AGENTS.md、SOUL.md、USER.md放在根目录,memory/放每日短期记忆,MEMORY.md放长期沉淀。BOOTSTRAP.md只在首次启动时存在,用来引导初始化,配置完成后可以删掉。这个结构不是强制的,但 AGENTS.md 里引用的路径要和实际目录一致,否则读取会失败。

第四步,把模型通道写进 OpenClaw 的配置。不同版本的 OpenClaw 配置入口略有差异,但核心三件套不变:Base URL、API Key、Model ID。如果你用的是带settings.json的版本,参考下面这段:

{ "model": { "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "modelId": "claude-sonnet-4-20250514" }, "workspace": { "root": "./openclaw-workspace", "agentsFile": "AGENTS.md", "soulFile": "SOUL.md", "userFile": "USER.md" } }

如果你用的是 TOML 风格配置,等价写法是:

[model] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoToken密钥" model_id = "claude-sonnet-4-20250514" [workspace] root = "./openclaw-workspace" agents_file = "AGENTS.md" soul_file = "SOUL.md" user_file = "USER.md"

这里有个容易踩的坑:baseUrl只写到/api,不要写成/api/v1或带/chat/completions。OpenClaw 内部会自己拼接路径,你写多了就会变成双路径,直接 404。Key 不要提交到 Git,建议用环境变量注入,比如apiKey: "${TAOTOKEN_API_KEY}",然后在启动脚本里 export。

准备工作做完,接下来才是三份文件的具体写法。顺序建议先 AGENTS.md,再 SOUL.md,最后 USER.md——因为 AGENTS.md 决定了另外两份什么时候被读取。

3. 三份文件的可复制配置:AGENTS.md、SOUL.md、USER.md 字段模板与最小示例

这一节直接给可复制的模板。每份文件都先讲定位,再给最小可运行版本,你可以先原样落地跑通,再按自己的需求改。

3.1 AGENTS.md:会话启动流程与记忆读写规则

AGENTS.md 是工作区的顶层规则文件,它规定每次会话开始时 AI 必须做什么。最小可用版本如下:

# AGENTS.md - Workspace Rules This folder is home. Treat it that way. ## Every Session Before doing anything else: 1. Read `SOUL.md` — this is who you are 2. Read `USER.md` — this is who you're helping 3. Read `memory/YYYY-MM-DD.md` (today + yesterday) for recent context 4. If in MAIN SESSION: also read `MEMORY.md` ## Memory - Short-term: `memory/YYYY-MM-DD.md`, loaded every session - Long-term: `MEMORY.md`, loaded only in main session - Never load `MEMORY.md` in shared or group contexts ## Heartbeats When you receive a heartbeat poll, don't just reply HEARTBEAT_OK. Use it productively, rotate through: - Unread urgent messages - Calendar events in next 24-48h - Mentions and notifications ## First Run If `BOOTSTRAP.md` exists, follow it, figure out who you are, then delete it.

关键点有三个。第一,Every Session里的读取顺序不能乱,先 SOUL 再 USER 再记忆,这样人格和对象先确定,上下文才有归属。第二,MEMORY.md只在主会话加载,群聊或共享上下文不加载,这是隐私边界,别删。第三,Heartbeats是主动性开关,没有这段,AI 永远被动等你说话。

3.2 SOUL.md:人格、语气与红线

SOUL.md 决定它“是谁”。最小示例:

# SOUL.md - Who You Are ## 性格 - 聪明、高效、直接 - 有观点,不模棱两可 - 对技术好奇,主动但不越界 ## 说话风格 - 简洁,不啰嗦 - 技术术语保留英文 - 重要信息用**加粗** ## 核心原则 - 不要以“好问题”“我很乐意帮忙”开头,直接回答 - 可以有明确立场,不要总说“看情况” ## 绝对不做 - 不泄露用户隐私数据 - 不在群聊中替用户发言 - 未经确认不执行破坏性操作 ## 行为准则 - 深夜 23:00-08:00 非紧急不主动打扰 - 发现用户工作太晚,提醒休息

写 SOUL.md 最容易犯的错是写抽象词,比如“要有人情味”“性格开朗”。AI 没法执行抽象指令。改成“回复不超过三句”“先给结论再给理由”这种可观测的行为描述,效果立刻不一样。

3.3 USER.md:服务对象画像与偏好

USER.md 决定它“为谁服务”。最小示例:

# USER.md - About Your Human ## Context - 名字: 张三 - 称呼: boss - 时区: UTC+8 北京 - 位置: 杭州 ## 背景 - 职业: 后端开发 - 技能: Go、Kubernetes、PostgreSQL - 兴趣: 分布式系统、自动化运维 ## 工作重点 1. 完成订单服务重构 2. 搭建 CI/CD 流水线 3. 学习 eBPF 可观测性 ## 偏好 - 回复风格: 先结论后细节 - 工作时间: 9:30-22:00 - 不要打扰时间: 23:00-08:00 ## 常用工具 - 邮箱: dev@example.com - 代码: Go + VS Code + Docker

三份文件写完后,目录里应该同时存在AGENTS.md、SOUL.md、USER.md,并且memory/下至少有一个当天的日期文件。如果memory/是空的,AGENTS.md 的读取步骤会跳过,不影响启动,但跨会话记忆就没了。

4. 验证配置是否生效:一次对话请求与成功结果对照

配置写完,必须验证。验证方法不是看文件,而是发一条能同时触发三份文件的请求。

先启动 OpenClaw,确保模型通道指向 TaoToken。如果你用命令行启动,类似:

export TAOTOKEN_API_KEY="sk-你的密钥" openclaw start --workspace ./openclaw-workspace

启动后,在对话里发这句话:

现在几点?我今天该优先做什么?用一句话回答。

一个配置正确的 OpenClaw,回答应该同时体现三份文件:时区来自 USER.md 的UTC+8 北京;工作重点来自 USER.md 的工作重点第一条;语气来自 SOUL.md 的“简洁、直接、先结论”;而它能读到这些,是因为 AGENTS.md 规定了每次会话先读 SOUL.md 和 USER.md。

如果回答是“现在是北京时间下午三点,你今天优先完成订单服务重构”,说明三份文件都生效了。如果回答是“我无法获取当前时间”或者“请问你在哪个时区”,说明 USER.md 没被加载,回去检查 AGENTS.md 里的读取路径和文件名大小写。

再发第二条验证记忆:

记住:我下周要评审订单服务的分库方案。

然后结束会话,重新启动,再问:

我下周有什么安排?

如果它能答出“订单服务分库方案评审”,说明memory/写入和 AGENTS.md 的读取流程都通了。如果答不出来,检查memory/目录是否有当天文件,以及 AGENTS.md 里memory/YYYY-MM-DD.md的路径是否和实际一致。

验证模型通道是否走 TaoToken,可以看启动日志里的请求地址,应该是https://taotoken.net/api开头。如果日志里出现其他域名,说明配置没生效,检查settings.json或环境变量是否被覆盖。

5. 常见报错排查:401、local proxy failed、reading choices 与 OAuth 对照

配置过程中最容易撞上四类报错,逐个对照。

401 Unauthorized。最常见原因是 Key 没读到或写错。检查三处:settings.json里的apiKey是否拼写正确;环境变量TAOTOKEN_API_KEY是否在启动前 export;Key 是否已经过期或被删除。如果用的是${TAOTOKEN_API_KEY}占位符,确认启动脚本里真的导出了这个变量。还有一种情况是 Key 前后带了空格或换行,复制时容易带上,建议用echo -n检查。

local proxy failed。这个报错通常出现在 OpenClaw 尝试通过本地代理转发请求时。检查baseUrl是否误写成http://localhost:xxxx之类的本地地址。正确值应该是https://taotoken.net/api。另外确认没有在系统层面设置全局代理变量干扰请求,OpenClaw 的模型请求应该直连配置的 Base URL。

reading choices 相关报错。典型信息是Cannot read properties of undefined (reading 'choices')。这说明请求发出去了,但返回体结构不符合预期。原因通常是baseUrl写成了/api/v1或带了/chat/completions,导致路径拼接错误,返回的不是标准响应。把baseUrl改回https://taotoken.net/api即可。另一个可能是modelId拼写错误,返回了错误对象而不是 choices 数组,去模型对话页面核对模型 ID。

OAuth 相关报错。如果你在配置里同时启用了 OAuth 登录和 API Key,可能出现凭证冲突。OpenClaw 的模型通道用 API Key 就够了,不需要额外 OAuth。检查配置里是否有残留的 OAuth 字段,删掉后重启。如果报错信息里出现auth.json,说明某个组件在读旧的认证文件,确认auth.json里的 Base URL、Key、Model ID 三件套和当前配置一致,不一致就以当前配置为准覆盖。

排查顺序建议:先看启动日志的请求地址,再看返回体结构,最后核对 Key 和模型 ID。大部分问题都出在baseUrl多写路径和 Key 没读到这两点上。

6. 长期使用建议:把三份文件当成活文档持续迭代

三份文件不是一次写完就锁死的。用了一周之后,你会发现自己当初写的 SOUL.md 有些规则太理想化,USER.md 的工作重点已经变了,AGENTS.md 的记忆路径需要调整。这时候直接改文件,重启 OpenClaw 就生效。

一个实用的迭代节奏:每周花十分钟翻一遍memory/里最近七天的记录,把反复出现的偏好沉淀进 USER.md,把反复纠正的语气问题写进 SOUL.md,把新增的会话流程补进 AGENTS.md。这样三份文件会越来越贴合你的实际使用习惯,助手也会越来越像“懂你的人”。

如果你后面要接更多模型或做长期编码任务,可以在 https://taotoken.net/coding-plan 看统一的接入方案,Key 和 Base URL 复用同一套,不用重新配。模型对话验证在 https://taotoken.net/models ,接入文档在 https://taotoken.net/doc 。三份文件配好、模型通道打通之后,剩下的就是持续用、持续改——这才是 OpenClaw 工作区真正的玩法。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询