同一个用户、两种状态——如何设计显性切换的角色系统,实现权限清晰、留痕可控
---
想象一个场景:
你花了一下午研究怎么自动化处理工作邮件。你查资料、试工具、调配置,最后写出了一个完美的脚本。
第二天,你想用这个脚本处理邮件,却发现:
问题出在哪?
你混淆了两种状态:构建状态和使用状态。
这篇文章想聊聊 OpenClaw 的角色分离设计——如何让同一个用户,在两种状态下高效切换,互不干扰。
---
在构建 OpenClaw 的过程中,我们发现一个有趣的现象:
同一个用户,面对 AI 助手时,其实有两种完全不同的状态。
场景:
特点:
心理状态: 我在构建一个东西
场景:
特点:
心理状态: 我在使用一个工具
---
如果 AI 助手不区分这两种状态,会发生什么?
用户:帮我查一下今天的天气
AI:好的!不过我注意到您之前提到想搭建一个天气数据收集系统,
要不要趁这个机会一起设计一下?我可以帮您...
用户:不用了,我就想知道今天要不要带伞
AI:明白!但如果您有一个自动化系统,就可以...
用户:(关闭对话)
问题: AI 过度热情,打断了用户的简单任务。
用户:我想设计一个自动化的邮件处理系统,帮我分析一下需求 AI:好的!您可以使用 Python 的 imaplib 库... 用户:但我觉得这个架构有问题,如果并发量大了怎么办? AI:您说得对!那...我帮您查一下 imaplib 的文档? 用户:(无奈)我是想讨论架构设计,不是查文档...
问题: AI 无法跟上用户的深度思考,只能提供浅层帮助。
---
OpenClaw 的设计:显性命令切换,会话隔离,状态持久化。
| 维度 | 构造者 (Builder) | 使用者 (User) |
|---|
| 触发条件 | 深入思考 + 外部调研后 | 日常使用场景 |
|---|
| 目标 | 构建大型任务,生成 Skills | 使用已有 Skills 完成任务 |
|---|
| 权限 | 可动系统、新增 Skills | 只读/调用,不新增 Skills |
|---|
| 留痕 | 完整记录(用于迭代) | 仅记录行为习惯 |
|---|
| 频率 | 低频、高投入 | 高频、轻量 |
|---|
/builder → 构造者模式(创建 Skills,系统权限) /user → 使用者模式(调用 Skills,日常权限)
特性:
---
需求输入(已有调研/思考)
↓
调用最优模型 → 生成框架
↓
龙虾本地化拆解 → 分阶段执行
↓
人机确认(关键节点)
↓
Debug 循环
↓
打包为 Skills → 存入 Skills 库
↓
完整留痕(用于后续迭代)
典型对话:
用户(/builder):我想设计一个自动化的数据收集系统AI:好的!我理解您的需求是: 1. 每天定时抓取 B 站热门视频 2. 分析评论情感 3. 生成日报发送到邮箱 我建议分 3 个阶段实现: 【阶段 1】数据抓取 - 使用 bilibili_api 库 - 配置关键词过滤 - 存储到 SQLite 【阶段 2】情感分析 - 调用 Qwen API - 设置情感阈值 - 标记异常评论 【阶段 3】日报生成 - 使用 Jinja2 模板 - 生成 HTML 报告 - SMTP 发送邮件 您觉得这个方案如何?需要调整吗?
用户:阶段 1 没问题,但阶段 2 我想用本地模型,不想调用 API
AI:明白!那我们可以用: - 方案 A:部署 Qwen-7B 本地版(需要 8GB 显存) - 方案 B:使用 TextBlob(轻量,但准确度较低) 您倾向于哪个?
用户:方案 A,我有闲置的 GPU
AI:✅ 已记录!现在详细设计阶段 1...
关键特点:
需求输入(日常任务)
↓
Skills 库检索 → 匹配已有 Skills
↓
直接执行(无框架生成环节)
↓
结果输出
↓
轻量留痕(仅记录行为习惯)
典型对话:
用户(/user):帮我抓取 B 站热门视频AI:✅ 找到匹配的 Skill:B 站数据抓取器 v2 参数确认: - 关键词:AI 工作流(上次使用) - 数量:50 条(上次使用) - 格式:JSON(上次使用) 是否使用这些参数?
用户:确认
AI:✅ 执行中... ✅ 完成!共抓取 50 条数据 📄 文件路径:/data/bilibili/2026-03-28.json
关键特点:
---
在使用者模式下,AI 会记录用户的行为习惯,但不记录对话内容。
记录什么:
用途:
用户经常使用"数据抓取器"和"情感分析器"
↓
AI 推荐:"检测到这两个 Skills 经常一起使用,
是否创建一个 Pipeline 自动串联?"
【月度效率报告】
用户在"使用者模式"下频繁修改某个参数
↓
反馈给"构造者模式":
"检测到'数据抓取器'的数量参数经常被修改,
是否考虑增加一个'智能推荐数量'功能?"
发现用户每周一上午都会执行"周报生成"任务
↓
AI 主动提醒:
"检测到您每周一都会生成周报,
是否需要设置定时任务自动执行?"
---
让我用一个完整案例,展示两种角色如何配合。
时间: 周六下午,用户有整块时间
用户(/builder):我想搭建一个自动化的周报生成系统AI:好的!我理解您的需求: 1. 收集本周的工作记录 2. 整理成结构化报告 3. 发送到领导邮箱 这个系统需要 3 个 Skills: - 工作记录收集器 - 报告生成器 - 邮件发送器 我先帮您创建框架,然后逐一实现,如何?
用户:好的
AI:✅ 框架已创建! 【Skill 1】工作记录收集器 - 功能:从 Notion/Todoist 抓取本周任务 - 输入:日期范围 - 输出:任务列表(JSON) 您看这个设计合理吗?需要调整吗?
用户:合理,继续
AI:✅ 已实现!测试一下... ✅ 测试通过! 现在设计【Skill 2】报告生成器... (经过 2 小时讨论和调试)
AI:✅ 系统已部署! 3 个 Skills 已创建: - work-collector v1 - report-generator v1 - email-sender v1 Pipeline 已配置: - 每周一 9:00 自动执行 - 发送到 leader@company.com 完整留痕已保存,后续可以基于此迭代。
时间: 次周一,用户忙碌
用户(/user):生成本周周报AI:✅ 执行 Pipeline:周报生成系统 收集工作记录中... ✅ 生成报告中... ✅ 发送邮件中... ✅ ✅ 完成!周报已发送到 leader@company.com 📄 报告预览:/reports/2026-W12.html
对比:
---
不依赖 AI 猜测用户状态,而是通过显性命令:
/builder → 进入构造者模式/user → 进入使用者模式好处:
两种模式的会话历史完全独立:
好处:
用户选择角色后,下次会话默认保持:
/builder,周日打开还是构造者模式/user好处:
构造者权限:
使用者权限:
好处:
---
角色分离设计的核心价值:
| 价值 | 说明 |
|---|
| 权限清晰 | 构造者/使用者权限分离,防止误操作 |
|---|
| 留痕可控 | 构建留痕完整,使用留痕轻量 |
|---|
| 效率提升 | 构建时深入讨论,使用时快速执行 |
|---|
| 体验优化 | 显性切换,用户有控制感 |
|---|
让同一个用户,在不同场景下都能获得最佳体验——深度思考时有 AI 协助,日常使用时有 AI 代劳。
---
下一篇预告: 《Skills 管理系统:如何避免重复造轮子》
探讨 Skills 的存储结构、检索机制、冲突检测和 Pipeline 编排。
---
本文基于 OpenClaw 架构设计研究报告第 4.1 章改写
完整报告:docs/openclaw-architecture-research-report.md