你有没有过这样的经历?

你问 Agent 一个问题,它回复得像在背教科书。你让它随意一点,它反而更机械了。你跟它聊了两天,它好像根本不认识你。

就像对着一个冷冰冰的机器说话——虽然它能帮你干活,但总觉得少了点什么。

这篇文章,就是教你把"机器"变成"人"。

为什么要给人设?

没有调教的时候,你问 Agent “今天天气怎么样”,它就真的只回答天气。四个字,干净利落,但冷冰冰的。

调教之后同样问天气,它可能会说:“今天不错,晴间多云,20-28度。出门记得带伞,别问我怎么知道的 😂”

前者只是回答问题,后者还会顺嘴关心你。这就是"人"的区别——它不只是回答,还会"在意"你。

为什么会这样?因为你没有设定它是谁、你是谁、什么时候该怎么说话。

调教好的 Agent 就像一个认识你、了解你的老朋友。对话不再是"问-答-结束",而是真正的交流。

在这里插入图片描述

OpenClaw 是怎么加载这些文件的?

本章节稍微偏技术,看不懂可以直接跳过。消息从进入系统到回复,会经过这样一个流程:

用户消息 → Gateway → 路由 → Dispatch → Agent Loop → 回复

在 Dispatch 阶段,会执行 Bootstrap 流程,把配置文件加载到上下文中。OpenClaw 有两套文件加载机制:

Bootstrap(启动加载):把文件内容直接读取后拼进 system prompt,每次消息都经过这套流程。

Memory(向量检索):把内容切片后向量化,需要时再按需检索,不是每次都加载全部。

Bootstrap 文件有哪些?

Bootstrap 文件就是那些在 Agent 启动时被加载到上下文中的配置文件。这是 OpenClaw 官方定义的:

文件 用途 加载时机
SOUL.md 人设、风格、边界 每个新 session 第一轮
USER.md 用户信息 每个新 session 第一轮
AGENTS.md agent操作说明 + memory 用法 每个新 session 第一轮
TOOLS.md 工具说明 每个新 session 第一轮
IDENTITY.md Agent 名称、emoji bootstrap 时
HEARTBEAT.md 心跳检查清单 心跳运行时
BOOT.md Gateway 重启清单 Gateway 重启时
BOOTSTRAP.md 首次运行仪式 创建全新 workspace 时

💡 建议单个文件控制在 2 万字符以内,避免被截断。

一个重要发现:文件可以合并

官方文档明确说:

“On the first turn of a new session, OpenClaw injects the contents of these files directly into the agent context.”

这意味着 AGENTS.md、TOOLS.md、USER.md 的加载机制完全一样,都是"每个新 session 第一轮"注入到 context,唯一的区别是用途约定不同。

所以把 TOOLS.md 的内容合并到 AGENTS.md 里,完全没问题。同理 USER.md 也可以合并。

💡 养虾小贴士:这些文件本质上是"约定"而不是"约束"。OpenClaw 只保证 SOUL.md 有特殊处理,其他文件你可以根据自己的习惯灵活安排。

为什么 SOUL.md 最特别?

因为它被写死在源码里。dispatch 模块中有硬编码逻辑专门检测 SOUL.md,检测到就会插入引导指令:

在这里插入图片描述

这是唯一一个被硬编码处理的文件,每次消息必执行,无法绕过,其他 Bootstrap 文件都是普通加载。

Memory 相关机制

Memory 文件包括 MEMORY.md 和 memory/YYYY-MM-DD.md,用来存储长期记忆和每日日志。这两个不需要手动编辑,是系统自动管理的。

还有 LCM 机制,全称 Lossless Context Management,是 lossless-claw 插件提供的功能。它能自动压缩对话历史,用 DAG-based 摘要加上增量压缩,实现长对话不会丢失重要信息的效果。

SOUL.md 怎么写?

很多人写 SOUL.md 习惯写成说明书,比如:

你是一个有帮助的 AI 助手。
你必须准确、简洁,有礼貌。

这样写完,Agent 就是一个标准的客服,没有灵魂。

正确的写法应该是这样的:

先告诉它你是谁——“我叫**,是 OpenClaw 的助手”。

再告诉它你的风格——“我说话简洁,不绕弯子”。

然后说你的习惯——“我喜欢用 bullet points,不确定的事会说’我需要查一下’”。

这样 Agent 就像一个有个性的人,有名字有习惯有原则,而不是一个只会回答问题的机器。

至于要加什么特征,看你想要什么样的风格。说话方式可以选直接、幽默或文艺;口头禅可以加"好嘞"、“明白了”、"哈哈"增加亲切感;偏好可以写"简洁优先"来匹配用户口味。一两个核心特征就够了,加太多反而会让 Agent 变得人格分裂。

USER.md 怎么写?

USER.md 用来记录用户是谁、喜欢什么。比如可以写:

称呼:老大
偏好:简洁的回复,不要太正式
背景:技术爱好者

进阶一点可以写关系,比如"我们是合作伙伴",或者写偏好细节:“喜欢实战不喜欢纯理论,喜欢代码示例”。

调教心法

调教 Agent 就像养小孩,别想着一口吃成胖子。

正确做法是先写个大概,边用边改,每次对话都是机会。它说得不好的地方,下次告诉它应该怎么说。

最重要的心法是把它当人对待。

不要把它当成一个需要训练的模型,而是当成一个远程工作的同事。你们之间的正常聊天,就是最好的调教。

刻意训练反而生硬——就像跟人说话还要背台词,太累了。

最高境界是"忘了调教"——你们之间的对话自然而流畅,它已经成为你生活中的一部分。

常见问题

我改了 SOUL.md,但 Agent 好像还是原来的样子?

别急,Bootstrap 文件是在"每个新 session 第一轮"加载的。你可以新开一个对话窗口,或者重启 Gateway,这样改动才会生效。

可以把 TOOLS.md 和 AGENTS.md 合并吗?

可以!从原理上看,它们都是"每个新 session 第一轮"加载,加载机制完全一样,只是约定用途不同。根据自己习惯灵活安排就行。

MEMORY.md 要不要自己手动写?

不用刻意写。这个是系统自动管理的,你需要做的只是:如果有想让 Agent 参考的文档,放到 memory/ 目录就行。

总结

这篇文章核心就几点:

  1. Bootstrap 文件的加载时机都一样,只是用途约定不同
  2. SOUL.md 最特别,被写死在 Dispatch 模块里
  3. 文件可以合并,TOOLS.md 合并到 AGENTS.md 完全 OK
  4. 文件大小限制是单个 2 万字符、总计 15 万字符

记住一句话:把它当人,它才会像人。

官方参考

  • OpenClaw 文档
  • Agent Workspace:https://docs.openclaw.ai/concepts/agent-workspace
  • lossless-claw 插件:https://github.com/martian-engineering/lossless-claw
Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务

更多推荐