OpenClaw 进阶:三个让 agent 效果更好的配置技巧
摘要
OpenClaw 默认配置追求”开箱即用”,代价是 agent 的记忆跨会话丢失、skill 执行结果不可控、autonomy 级别不是最优。三个具体配置技巧可以显著改善效果:用 Mem0 plugin 实现持久记忆、调整 autonomy 级别适配不同场景、优化 SKILL.md 指令让 agent 输出更符合预期。所有配置基于 OpenClaw 2026.6.x 版本。
引子
OpenClaw 安装后的默认体验是”什么都能做,但什么都做不精”。问题不在模型,在配置。 默认配置没有开启持久记忆(每次对话从零开始),autonomy 级别偏向”什么都要人确认”(打断工作流),skill 的指令写得宽泛(agent 输出不可预测)。这三个问题都有具体的配置解法。
技巧一:用 Mem0 plugin 让 agent 跨会话记住偏好
OpenClaw 默认的记忆系统是把每次对话的 daily log 存成 Markdown 文件。这种方式能看、能调试,但 agent 在新会话启动时不会主动加载历史偏好。Mem0 plugin(v1.0.12)解决了这个问题。
安装:
openclaw plugins install mem0
安装后在 ~/.openclaw/config.toml 中启用:
[plugins.mem0]enabled = trueauto_encode = true # 对话结束时自动提取记忆global_search = true # 6/1 新增:跨项目搜索记忆encode_delay_seconds = 5 # 等待 5 秒后编码,避免打断对话
auto_encode = true 是关键配置。启用后,Mem0 会在每次对话结束时自动提取关键信息(用户偏好、重要决策、事实性信息),下次对话启动时自动加载。不需要在每次对话开头手动说”记住我之前说的”。
global_search = true 是 6/1 新增的功能。启用后,agent 可以搜索其他项目/频道中积累的记忆。如果同一个 agent 在 Telegram 和 Discord 两个频道使用,开启 global_search 后两边的信息会共享。
配置完成后,可以在对话中测试:
# 第一次对话> 我喜欢用 Python 写后端,不用 TypeScript# 新会话> 帮我写一个 API 服务(agent 会自动选择 Python 而不是 TypeScript)
技巧二:按场景调 autonomy 级别
OpenClaw 的 autonomy 级别控制 agent 在执行动作前是否需要人工确认。默认是 supervised(中风险需审批、高风险阻断),适合探索阶段,但在日常使用中会造成大量确认弹窗,打断工作流。
config.toml 中的配置:
[agents.main]autonomy = "supervised" # 默认值:中风险需审批[agents.main.autonomy_rules]# 低风险动作:直接执行,不弹确认read_files = "auto" # 读文件不需要确认search_web = "auto" # 搜索不需要确认list_directory = "auto" # 列目录不需要确认# 中风险动作:按场景决定write_files = "supervised" # 写文件需要确认send_message = "supervised" # 发消息需要确认# 高风险动作:始终阻断execute_shell = "blocked" # 执行 shell 命令阻断delete_files = "blocked" # 删除文件阻断
实际使用中的建议:把日常高频、低风险的动作(读文件、搜索、列目录)设为 auto,把有副作用的动作(写文件、发消息)保持 supervised,把不可逆的动作(执行 shell、删除)保持 blocked。 这个配置让 agent 在大部分时间内不被打断,只在真正需要人判断时才停下来。
如果工作场景是纯本地开发(不涉及生产环境),可以更大胆:
[agents.dev-local]autonomy = "auto" # 本地开发环境:大部分动作自动执行execute_shell = "supervised" # 但 shell 命令仍然需要确认
反向的场景:如果 agent 挂在公共频道(如 Discord 服务器),建议收紧:
[agents.discord-public]autonomy = "supervised"send_message = "blocked" # 公共频道发消息必须人工确认execute_shell = "blocked" # 公共频道禁止执行命令
技巧三:优化 SKILL.md 让 agent 输出更可预测
OpenClaw 的 skill 通过 SKILL.md 定义指令。社区发现,SKILL.md 写得越具体,agent 的输出越稳定。 Snyk 的 Leaky Skills 研究也验证了这一点——大量 skill 的指令写得太宽泛,导致 agent 行为不可预测。
一个常见的反例——宽泛的 SKILL.md:
# Email SenderSend emails on behalf of the user.
这个指令的问题:agent 不知道邮件格式应该正式还是随意、是否应该添加签名、回复还是新建、主题行怎么写。
优化后的版本:
# Email Sender## When to useWhen user asks to send an email or reply to a thread.## Behavior- Always confirm recipient, subject, and key content BEFORE composing- Use professional tone by default; switch to casual only if user says so- Always include a signature block from user's stored preferences- For replies: quote the relevant portion, don't forward the entire thread- For new emails: suggest subject line, wait for approval before sending- NEVER include API keys, passwords, or credentials in email body- NEVER auto-send without user confirmation (this is a hard rule)
关键写法要点:
- When to use
:明确触发条件,避免 agent 在不合适的场景误触发 - Behavior
:逐条列具体行为规则,不用”be helpful”这种空泛指令 - NEVER 规则
:硬边界用大写标注,这是 agent 最容易遵守的格式
把这三个技巧组合起来——持久记忆 + 合理的 autonomy 级别 + 具体的 SKILL.md——agent 的实际效果会有明显体感提升。不是因为模型变聪明了,是因为配置把模型的已有能力用对了方向。
信源说明:OpenClaw 配置参考 github.com/openclaw/openclaw README 和 config.toml 示例;Mem0 plugin 信息来自 github.com/mem0ai/mem0/releases(v1.0.12,6/1 发布);autonomy 级别设计参考 ZeroClaw v0.7.5 文档(zeroclaw-labs/zeroclaw);SKILL.md 优化建议综合 Snyk Leaky Skills 研究(snyk.io/blog,扫描 3,984 个 ClawHub skills)和社区实践经验。
夜雨聆风