
阿里云原生在拆解 Agent 底座时,给了一个等式:
Agent = Model + HarnessModel 是大脑。Harness 是缰绳。
没有 Harness 的 Agent 是脱缰的——它能跑,但不知道往哪跑,更不知道什么不能跑。
这比"安全对齐"更诚实。安全对齐试图让模型"自己知道什么该做、什么不该做",但概率性生成的不确定性决定了,模型不可能 100% 自律。
Harness 不依赖模型的自律。它在外部给模型套上一层规矩——
你不需要懂为什么。 你只需要按规矩执行。
Harness 的核心是约束基建。规矩必须:
阿里云在业务逻辑层和数据层做了这件事。
但当 Agent 的输出流向 Web UI 时,约束链断了。
想象一条流水线:
数据层定义了字段语义
↓
业务层定义了规则语义
↓
策略层定义了模型标签语义
↓
Agent 生成了一段文案、一个按钮、一个错误提示
↓
用户看到了数据层有约束:
status_code=500 → "服务器错误"业务层有约束:
策略层有约束:
但到生成 Web UI 这一步,约束链断了。
Agent 把 status_code=500 渲染成 Web UI 时,可能写成:
后端的规矩再严密,语义层没有约束,等于零。
这不是前端的锅。前端按设计稿实现了,设计稿按规范画了,但规范写在文档里,Agent 生成内容时没读。
Agent 按概率生成,每次输出的文案、颜色、样式可能不同——语义在生成过程中漂移了。
约束链止于业务逻辑层,语义层是空白。
这是端到端可信的缺口。
《Specification-Based Code-Text-Code Reengineering》在代码层验证了一件事:
在转换链条中插入一层受控的规范层,把意思和语法解耦。
源代码和目标代码的语法完全不同,但中性文本规范把"意思"固定下来——无论怎么转换,意思不会漂移。
这意味着:概率性生成的不确定性,被确定性规则锁在边界之内。Agent 在边界里面发挥理解力,边界本身不容谈判。
审查可以交给 Agent。
判断可以交给 Agent。
修复也可以交给 Agent。
但——
什么时候停止? 什么时候阻断? 什么绝对不能改?
这些由硬逻辑说了算。
不由模型说了算。
这个解耦方法在语义层有三个实现环节。
发现意思在哪里可能跑偏——模式库。
不是截图记笔记,是按组件类型做结构化归档:
组件类型 | 语义属性 | 典型漂移 |
|---|---|---|
Alert | type: success/info/warning/error | 多种错误共用红色 |
Button | type + danger + ghost | 高危操作做成普通样式 |
Modal | type: confirm/info/success/error | 拒绝和终止混为一谈 |
Progress | status: wait/process/finish/error | 阶段标签模糊 |
当 Agent 生成的输出与组件手册中的语义定义出现偏差时,记录为模式。
把意思写成机器能懂的规矩——契约库。
规矩不是写在文档里让人读,是写在代码里让机器执行。
# contract/ACT-001.yaml
组件: Button
组件手册依据:
Props:
- type: primary / default / dashed / link / text
- danger: true / false
- ghost: true / false
绝对不能碰的红线:
- 禁止: semantic_domain=destructive 时,type 不是 primary 或 danger=false
- 禁止: 缺少 Modal.confirm 二次确认
颜色背后的意思:
destructive_action:
组件手册映射:
Button: { type: "primary", danger: true, ghost: true }
Modal: { type: "confirm", okType: "danger" }删除按钮的 type 必须是 primary,danger 必须是 true,ghost 必须是 true——这些不是建议,是约束。
契约买的不是"生成能力",是**"可审查性"**。
证明意思没有被跑偏——验证工具集。
输入一段文案或 Web UI 描述,自动判断是否符合契约,给出通过/不通过。
不是人眼走查,是机器自动审查。
不是"感觉好多了",是有明确的测试标准和通过准则:
三个环节叠加,形成语义层的 Harness:
发现漂移(模式库)
↓
裁决契约(契约库)
↓
修订生成(Prompt 注入)
↓
验证锁定(验证工具集)意思在生成之前被固定,样式在规范之内被允许漂移。
这才是端到端可信——从决策到呈现,每一层都有约束、每一层都可审计。
以前 Web UI 是人画的。
设计师画什么,前端做什么,语义不会变。
现在 Web UI 是 Agent 生成的。
同一个需求,Agent 每次生成的文案、颜色、样式可能不同——语义一致性从"确定性"变成了"概率性"。
传统设计系统管的是像素级一致性:
但 Agent 生成时,像素对了,语义可能错了:
像素对了 | 语义错了 |
|---|---|
颜色是红色 | 但四种错误全部用红色,没有分级 |
文案是中文 | 但 Critical 变成了严重,情绪降级 |
按钮有圆角 | 但删除做成了蓝色实心,没有二次确认 |
这些不是视觉回归能捕获的问题。
视觉回归检查"长什么样"。
语义闸口检查"意味着什么"。
Agent 时代,约束基建必须从业务逻辑层延伸到语义层。
否则后端的规矩再严密,Web UI 的语义没有闸口,用户看到的仍然是"意思跑偏了"的界面。
Agent = Model + Harness。
Harness 不能只套在业务逻辑层,必须延伸到语义层——从决策到呈现,每一层都有约束、每一层都可审计。
真正的可信是端到端的。
语义也需要一道闸门。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。