约束编码智能体仅一杠杆可拒绝,Tessl团队提出四杠杆法应对AI编程失控

Tessl 工程主管 Ian Johnson 通过对照实验揭示,当前编码智能体在复杂仓库中仅12.5%检查通过率,根源在于缺乏有效拒绝机制。其提出的“四杠杆法”将约束拆解为指令、约束、能力与检查四类,...

人工智能

在AI编程工具日益普及的背景下,一个隐蔽却致命的问题正逐渐浮出水面:当智能体面对混杂新旧代码的仓库时,它可能完全无视团队制定的规范,仅凭眼前可见的旧代码模式进行复制与改写——即便这些模式早已被标记为‘冻结’或‘废弃’。

Tessl 工程主管 Ian Johnson 在2026年10月12日发布的博客中公开了一项对照实验:向编码智能体提交一张工单,其目标仓库被刻意构造为‘三个年代’并存的状态——2026年的领域层代码逻辑正确,但2023年的‘神文件’与2021年的冻结模块在数量上以10:1压倒前者。结果令人警醒:智能体未进入正确的领域层,反而深入神文件,用random.randint随机生成逻辑,重写了已有日志助手函数,并两次触碰冻结模块。在8项预设检查中,仅1项(测试能否通过)达标,通过率低至12.5%。

关键在于,仓库中并无错误代码,智能体也未报错;它只是机械地复现了所见即所得的编码风格。Johnson 的结论直指核心:“你没写下来的规矩,对它而言不存在。”

为系统性解决该问题,Tessl 提出“四杠杆法”,将约束机制拆解为四个可在工程实践中落地的组成部分:指令(Instruction)、约束(Constraint)、能力(Capability)与检查(Check)。这四者均以文件形式存在于仓库中,且在智能体启动前即被读取,构成一套前置防御体系。

第一杠杆是指令,典型代表为根目录下的CLAUDE.md。它负责定义仓库定位与整体方向,例如“本项目使用DDD架构,禁止在应用层调用数据库”。尽管到达率最高(因智能体默认读取根目录),但其本质仍是建议性文本,无法强制执行。

第二杠杆是约束,通常置于.claude/rules/路径下,按目录粒度限定修改边界,如“/legacy/auth目录禁止新增接口,改动前需查阅2023-08-17事故报告”。这类规则仍属说服性质——模型可选择忽略,尤其当历史代码更“显眼”时。

第三杠杆是能力,对应commands/skills/MCP等工具注册目录。它不规定“该怎么做”,而是明确“能做什么”:例如仅允许调用logger.v2而非logger.v1,或禁用直接访问/frozen路径的API。Johnson 特别指出,这是最常被误用的一环:许多团队将能力配置写成规则语句(如“请勿调用旧版日志”),实则应通过工具授权实现硬隔离。他建议开展“家庭测试”:临时移除某项能力,若智能体行为随之受限,则确为能力;若仅质量下降,则仍是规则伪装。

第四杠杆,也是唯一具备拒绝权的环节,是检查(hooks),位于.claude/hooks/。它在代码生成完成后触发,执行双重验证:一是单元测试通过性,二是禁区扫描(如检测是否触及冻结模块或使用禁用函数)。只有两项均通过,才允许合并入主干。这一环节不可绕过,是整套机制的最终保险。

四杠杆的工程投入差异显著:指令与约束的最小可用版本可在1屏内完成,约束条目建议附带事故日期以增强上下文依据;能力需逐项做家庭测试,Johnson 称其团队曾砍掉近半已注册工具,显著收窄智能体操作面;而检查杠杆虽成本最高(需编写钩子脚本、集成CI流程),却是唯一能真正“叫停”错误输出的环节。

  • 智能体照抄旧代码坏味道 → 缺失路径级约束(应在对应目录放置带事故记录的规则);
  • 频繁调用不应调用的外部服务 → 能力层未收紧MCP权限列表;
  • 修改后未经验证即合入主干 → 缺少检查钩子;
  • 团队各自写提示词 → 指令分散,缺乏统一根目录规范。

值得注意的是,当前行业普遍依赖CLAUDE.md作为唯一防线,因其“写一次、自动读”的便捷性而广受欢迎。但这仅解决了“信息可达性”,未解决“行为可控性”。当模型对规则产生认知偏差或优先级误判时,说服链即告断裂,后续无任何补救机制。

四杠杆:投入 vs 产出

Tessl 的方法论提供了一种结构化补强路径:将约束从“软性倡导”升级为“硬性分层控制”。其中,检查杠杆的价值尤为突出——它不试图改变模型的决策过程,而是在结果层面设置不可逾越的红线。这种“事后拦截”思路,与传统软件工程中的静态分析、代码门禁(code gate)理念一脉相承,但首次被系统应用于AI编程代理场景。

业内已有类似实践雏形。例如部分企业引入自定义pre-commit hook扫描关键词(如// TODO: legacy或@frozen注解),或在CI中嵌入AST解析器识别高风险变更。但 Tessl 的创新在于将此类零散措施整合为统一框架,并明确区分“说服”与“拒绝”的功能边界。

随着编码智能体从辅助工具转向自主执行角色,其行为可靠性已不再仅关乎效率,更直接影响系统稳定性与技术债累积速度。一项未被记录的“小妥协”,可能在未来引发连锁故障;而一次未被拦截的冻结模块修改,足以让整个团队继承数年前的技术包袱。

四杠杆法并非要求一次性重建所有机制,而是提供清晰的演进路线:从根目录指令起步,逐步补充路径约束与能力收窄,最终在关键节点部署检查钩子。每一步都可独立验证,且成本可控——最小可行版本甚至可在半天内落地。

在AI原生开发范式加速成型的今天,如何让智能体“守规矩”,已成为工程效能与系统健壮性的共同瓶颈。Tessl 的实践表明:真正的约束不在于写多少规则,而在于设计多少不可绕过的拒绝点。