3.1 约束优先原则
本节介绍约束优先原则的核心理念、重要性、约束的分类、设计方法和实施策略,阐明为什么约束是构建安全智能体系统的首要考虑。
3.1.1 原则的核心
约束优先 意味着:在设计 Harness 系统时,首先考虑的不是“智能体能做什么”,而是“Agent 不能做什么”、“Agent 做事时的限制是什么”。
这与直觉相反。通常我们在构建系统时,首先关心的是功能特性——系统应该具备什么能力。但对于智能体系统,这个思路导致了无尽的“功能蔓延”和安全隐患。
约束优先原则翻转了这个优先级:
首先定义约束:明确智能体不能做的事及做事的边界(Permission Model)
然后在约束内赋能:通过工具和模型来实现功能
最后验证合规:确保所有操作都在约束内
3.1.2 为什么约束如此重要
本小节通过现象观察、成本分析和失败案例,论证约束机制在智能体系统中的关键作用。
现象观察
在 Claude Code 中,有一个叫“protected files”的机制,以及“dangerous patterns”的检测。这些都是约束。
在 OpenClaw 中,有一个叫 SOUL.md 的约束文档。这个文档不是系统的“特性”,而是智能体的“戒律”。它定义了 Agent 绝对不能做的事。
有趣的是,许多智能体系统失败的原因,往往不是因为模型不够聪明,而是因为缺乏足够的约束。Agent 学会了用户没有授权的方式做事,执行了超越权限的操作,或者被用户恶意利用。
约束能解决什么
1. 安全性 通过约束,我们明确地防止某些危险操作。比如:
不允许删除生产数据库的内容
不允许修改系统配置文件
不允许执行需要人工审批的操作
2. 可预测性 有约束的系统比无约束系统更容易被理解和维护:
无约束
智能体可以调用任何 API
很难预测会发生什么;难以编写测试用例
有约束
Agent 只能调用预先批准的 API 列表
系统行为在可预期的范围内;易于编写和维护测试用例
3. 可审计性 有约束的系统更容易被审计:
3.1.3 约束的多个维度
约束可以在多个维度进行定义和实现。如图所示,约束可以分为四个关键维度:
图 3-1:约束的四个维度
1. 权限维度
定义智能体能访问什么资源:
2. 操作维度
定义什么样的操作是被禁止的:
3. 时间维度
定义什么时候某些操作被允许:
4. 数据维度
定义什么样的数据可以被处理:
3.1.4 Claude Code 的 protected files 和 dangerous patterns
Claude Code 的约束体现在多个地方:
Protected Files
系统通过保护文件列表来防止访问敏感文件:
Dangerous Patterns
通过检测危险的命令模式来防止恶意操作:
3.1.5 OpenClaw 的 SOUL.md 约束
OpenClaw 使用一个特殊的 SOUL.md 文件来定义智能体的约束:
SOUL.md 的特殊之处在于:
可读可维护:用人类可读的方式定义约束,便于审查
可验证:系统在运行时可以检查智能体的行为是否违反 SOUL.md
可追溯:当出现问题时,可以追踪到具体哪个约束被违反了
3.1.6 约束与效能的平衡
一个常见的疑问是:过度约束会不会限制智能体的能力?
答案是:取决于约束的设计。好的约束不会限制能力,反而会使智能体更加聪明。
对比:机械臂和外科医生
机械臂没有约束 → 可以随意摆动,但容易伤害周围的人 外科医生有约束 → 规范的操作流程,但能够精确地完成复杂手术
Agent 没有约束 → 可以做任何事,但经常出错或做不该做的事 Agent 有约束 → 在清晰的界限内工作,能够可靠地完成任务
好的约束实际上使智能体更有效。它们:
减少歧义:Agent 不用浪费推理能力在“该不该做”上
加快执行:许多禁止的路径被剪除,搜索空间变小
提高成功率:少了“想做但不能做”的冲突
3.1.7 约束的实现模式
如图所示,约束的实现模式从最严格的白名单到最灵活的规则引擎,提供了不同的安全性和灵活性权衡:
图 3-2:约束实现模式的安全性和灵活性权衡
模式 1:白名单模式
白名单模式通过明确指定允许的操作来实现最高的安全性:
模式 2:黑名单模式
黑名单模式通过禁止特定的危险操作,允许其他所有操作:
模式 3:规则引擎模式
规则引擎模式使用条件化的规则集,实现细粒度的访问控制:
3.1.8 约束的监控和违反处理
约束仅仅定义是不够的,还需要在运行时监控和执行。
3.1.9 约束的演进
约束不是一成不变的。随着系统的运行和学习,约束也应该演进。
这个演进过程应该基于数据和观测,而不是猜测。
3.1.10 总结
约束优先原则的核心要点:
安全第一:约束不是限制,而是保护
清晰定义:约束应该明确、可读、可验证
多维度约束:权限、操作、时间、数据等多个维度
平衡与灵活:约束和能力之间找到平衡,使用规则引擎获得灵活性
监控与演进:约束需要被监控、被验证、随时间演进
在后续章节,我们将看到这个原则如何在具体的工具层、权限管理等地方落实。
最后更新于
