3.1 约束优先原则

本节介绍约束优先原则的核心理念、重要性、约束的分类、设计方法和实施策略,阐明为什么约束是构建安全智能体系统的首要考虑。

3.1.1 原则的核心

约束优先 意味着:在设计Harness系统时,首先考虑的不是“智能体能做什么”,而是“Agent不能做什么”、“Agent做事时的限制是什么”。

这与直觉相反。通常我们在构建系统时,首先关心的是功能特性——系统应该具备什么能力。但对于智能体系统,这个思路导致了无尽的“功能蔓延”和安全隐患。

约束优先原则翻转了这个优先级:

  1. 首先定义约束:明确智能体可以做的事(Permission Model)

  2. 然后在约束内赋能:通过工具和模型来实现功能

  3. 最后验证合规:确保所有操作都在约束内

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的特殊之处在于:

  1. 可读可维护:用人类可读的方式定义约束,便于审查

  2. 可验证:系统在运行时可以检查智能体的行为是否违反SOUL.md

  3. 可追溯:当出现问题时,可以追踪到具体哪个约束被违反了

3.1.6 约束与效能的平衡

一个常见的疑问是:过度约束会不会限制智能体的能力?

答案是:取决于约束的设计。好的约束不会限制能力,反而会使智能体更加聪明。

对比:机械臂和外科医生

机械臂没有约束 → 可以随意摆动,但容易伤害周围的人 外科医生有约束 → 规范的操作流程,但能够精确地完成复杂手术

Agent没有约束 → 可以做任何事,但经常出错或做不该做的事 Agent有约束 → 在清晰的界限内工作,能够可靠地完成任务

好的约束实际上使智能体更有效。它们:

  1. 减少歧义:Agent不用浪费推理能力在“该不该做”上

  2. 加快执行:许多禁止的路径被剪除,搜索空间变小

  3. 提高成功率:少了“想做但不能做”的冲突

3.1.7 约束的实现模式

如图所示,约束的实现模式从最严格的白名单到最灵活的规则引擎,提供了不同的安全性和灵活性权衡:

图 3-2:约束实现模式的安全性和灵活性权衡

模式1:白名单模式

白名单模式通过明确指定允许的操作来实现最高的安全性:

模式2:黑名单模式

黑名单模式通过禁止特定的危险操作,允许其他所有操作:

模式3:规则引擎模式

规则引擎模式使用条件化的规则集,实现细粒度的访问控制:

3.1.8 约束的监控和违反处理

约束仅仅定义是不够的,还需要在运行时监控和执行。

3.1.9 约束的演进

约束不是一成不变的。随着系统的运行和学习,约束也应该演进。

这个演进过程应该基于数据和观测,而不是猜测。

3.1.10 总结

约束优先原则的核心要点:

  1. 安全第一:约束不是限制,而是保护

  2. 清晰定义:约束应该明确、可读、可验证

  3. 多维度约束:权限、操作、时间、数据等多个维度

  4. 平衡与灵活:约束和能力之间找到平衡,使用规则引擎获得灵活性

  5. 监控与演进:约束需要被监控、被验证、随时间演进

在后续章节,我们将看到这个原则如何在具体的工具层、权限管理等地方落实。

最后更新于