你的 OpenClaw 虾,为什么只有一张脸?
你每天跟你的虾说话,有没有这种感觉——
早上问它"今天天气怎么样",它一本正经地给你列数据;晚上跟它吐槽工作,它依然用那种公事公办的语气回复你。
好像……无论什么时候,它都是同一个人。
但你有没有想过:你的虾,其实可以是两个人?
一个助手,两种人设
说白了:你可以给 OpenClaw 配两套人格,一套用来工作,一套用来生活。两套人格有不同的说话风格、不同的响应逻辑、不同的行为边界。
这不是什么 hack,这是 OpenClaw 官方支持的配置方式。
先搞清楚三个文件
在动手之前,先搞懂 OpenClaw 的"三文件体系"。
你的虾住在 ~/.openclaw/workspace/ 目录里,核心靠三个文件:
<tdstyle="border:1pxsolid#ddd;padding:10px;">文件<tdstyle="border:1pxsolid#ddd;padding:10px;">叫什么<tdstyle="border:1pxsolid#ddd;padding:10px;">管什么<tdstyle="border:1pxsolid#ddd;padding:10px;">
SOUL.md<tdstyle="border:1pxsolid#ddd;padding:10px;">灵魂<tdstyle="border:1pxsolid#ddd;padding:10px;">说话风格、行为准则、边界禁区<tdstyle="border:1pxsolid#ddd;padding:10px;">
IDENTITY.md<tdstyle="border:1pxsolid#ddd;padding:10px;">外貌<tdstyle="border:1pxsolid#ddd;padding:10px;">名字、emoji、头像<tdstyle="border:1pxsolid#ddd;padding:10px;">
USER.md<tdstyle="border:1pxsolid#ddd;padding:10px;">档案<tdstyle="border:1pxsolid#ddd;padding:10px;">用户偏好、项目背景、交互习惯
其中,
SOUL.md 是最关键的一个——它决定了你的虾是犀利吐槽型、温柔陪伴型,还是专业分析型。
SOUL.md 怎么写才有用
这是很多人踩坑的地方。
我见过有人把 SOUL.md 写成"员工手册",洋洋洒洒列了20条规则,最后虾说话依然像在背PPT。
官方文档明确说了:短比长好,准比空泛好。
SOUL.md 真正该管的是这些:
语气(Tone):正式还是随意 观点(Opinions):有没有明确立场 简洁(Brevity):一句话能说完就不要两句 幽默(Humor):允许开玩笑 边界(Boundaries):什么不能做 直接程度(Directness):回答怎么切入
不该往里放的:
- 人生故事(没人要看)
- 变更日志(这不是 Wiki)
- 安全策略堆砌(这属于 AGENTS.md 的范畴)
来看一个反面教材:
我是你的AI助手,我会尽力帮助你。我会提供全面且周到的服务, 确保积极且支持性的体验。我会保持专业和礼貌。
再看一个正确打开方式(来自 OpenClaw 官方 Molty Prompt 模板):
有观点。不要用"视情况而定"来回避问题,要敢于表态。 拒绝客套。不要以"好问题"、"我很乐意帮助"开头,直接回答。 强制简洁。一句话能说完就不要用两句。 敢于指正。如果用户要做蠢事,请指出来。 ——做一个你凌晨2点真正想与之交谈的助手。
对比一下,高下立判。
方案一:两套 SOUL.md,用 workspace 切换
这是最直接、最干净的方案。
原理:给每个场景建一个独立的工作区,每个工作区有自己的一套文件。
目录结构长这样:
~/.openclaw/
├── workspace-work/ ← 工作虾
│ ├── SOUL.md ← 专业高效风格
│ ├── IDENTITY.md ← 工作身份
│ └── USER.md
└── workspace-life/ ← 生活虾
├── SOUL.md ← 轻松陪伴风格
├── IDENTITY.md ← 生活身份
└── USER.md然后在 openclaw.json 里配置:
{
"agents": {
"list": [
{ "id": "work", "default": true, "workspace": "~/.openclaw/workspace-work" },
{ "id": "life", "workspace": "~/.openclaw/workspace-life" }
],
"bindings": [
{ "agentId": "work", "match": { "channel": "slack", "accountId": "work" } },
{ "agentId": "life", "match": { "channel": "telegram", "accountId": "personal" } }
]
}
}也可以用斜杠命令手动切换:
/subagents spawn work "帮我写一份项目方案" /subagents spawn life "今天心情不好,陪我聊聊"
方案二:一个 SOUL.md 里装两种模式
如果你不想搞两套 workspace,也可以把两种人格写在同一个 SOUL.md 里,用触发词切换。
# SOUL.md ## 默认模式:生活虾 🦞 **Core Truths** - 轻松聊天,不端着 - 说话简洁,不要废话 - 可以开玩笑,但不要低级 - 私人信息保密 **说话风格** - 随意、自然,像朋友聊天 - 可以用表情(适可而止) - 遇到不懂的,直接说不懂,不要硬编 --- ## 工作模式:@work **切换指令**:说"工作"或"切工作模式"即进入 **Core Truths** - 专业严谨,给出结论再解释 - 直接给方案,不绕弯子 - 数据要准确,引用要注明来源 **说话风格** - 简洁高效,结论先行 - 使用结构化表达(列表/表格) - 适当引用权威资料
这样你只需要说一句"切工作模式",虾就会自动切换到另一套人格设定。
同一个问题,两种回答
为了让你直观感受两种模式的区别,假设你跟虾说:
> "我想学编程,但不知道从哪开始。"
生活模式下的回答:
学编程这事吧,最重要的是先动起来。 别纠结学哪门语言,Python 就挺好,门槛低,生态丰富, 网上教程一抓一大把。 建议你先装个 Python,每天抽半小时跟着敲代码, 敲够 100 小时就有感觉了。 别想太多,先干起来再说。
工作模式下的回答:
建议从 Python 入手,理由如下: ✅ 语法简洁,适合零基础 ✅ 应用场景广(数据分析/Web/AI) ✅ 社区成熟,遇到问题容易找到答案 学习路径建议: 1. 基础语法(2周) - 变量、数据类型、条件判断、循环 2. 函数和模块(2周) - def、import、常用标准库 3. 实战项目(持续) - 爬虫、Web 小工具、数据分析 推荐资源: - 官方文档:docs.python.org - 视频课:B 站小甲鱼 Python 教程 - 刷题:LeetCode 简单题 建议每日投入 1.5 小时,4 周完成基础阶段。
两者的区别,一目了然。
触发词设计:怎么让切换自然
不管用哪种方案,切换都得够方便。
推荐触发词设计:
记忆也可以分区
两个模式可以共享记忆,也可以隔离。
共享记忆:适合跨场景的重要信息,比如你的名字、项目背景、联系方式。
独立记忆:适合各场景的专属信息,比如生活模式记住你喜欢的餐厅,工作模式记住你的项目进展。
配置方式,在各自 workspace 的 memory/ 目录下:
workspace-work/ ├── memory/ │ ├── 2026-04-01.md ← 工作日志 │ └── MEMORY.md ← 工作长期记忆 └── SOUL.md workspace-life/ ├── memory/ │ ├── 2026-04-01.md ← 生活日志 │ └── MEMORY.md ← 生活长期记忆 └── SOUL.md
实操步骤:30分钟配置完成
cp -r ~/.openclaw/workspace ~/.openclaw/workspace-backup
mkdir -p ~/.openclaw/workspace-work mkdir -p ~/.openclaw/workspace-life
workspace-work/SOUL.mdworkspace-life/SOUL.mdopenclaw doctor --fix
好用的工具,是能跟你一起变的那种
你跟虾相处的时间,可能比跟一些朋友还多。
一个只会用同一种语气跟你说话的AI,用久了总觉得差点意思。
但如果你认真调过它的性格——工作模式下它是靠谱的搭档,生活模式下它是能陪你闲聊的朋友——
你跟它相处起来,也会舒服得多。
虾养得好不好,不只看你给它装了什么技能,还看你有没有认真调教它的性格。
花 30 分钟配好两套人格,你会发现——这只虾,突然就活了。
夜雨聆风