首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Agent = Model + Harness:语义也需要一道闸门

Agent = Model + Harness:语义也需要一道闸门

原创
作者头像
阿基拉de.Akir
发布2026-06-20 12:58:12
发布2026-06-20 12:58:12
2030
举报

阿里云原生在拆解 Agent 底座时,给了一个等式:

代码语言:javascript
复制
Agent = Model + Harness

Model 是大脑。Harness 是缰绳。

没有 Harness 的 Agent 是脱缰的——它能跑,但不知道往哪跑,更不知道什么不能跑。

这比"安全对齐"更诚实。安全对齐试图让模型"自己知道什么该做、什么不该做",但概率性生成的不确定性决定了,模型不可能 100% 自律。

Harness 不依赖模型的自律。它在外部给模型套上一层规矩——

你不需要懂为什么。 你只需要按规矩执行。

Harness 的核心是约束基建。规矩必须:

  • 可审计——写了什么、什么时候改的、谁改的,有迹可循
  • 可进化——业务变了,规矩跟着变,版本化管理,Diff 可见

阿里云在业务逻辑层和数据层做了这件事。

但当 Agent 的输出流向 Web UI 时,约束链断了。


一、约束链止于业务逻辑层

想象一条流水线:

代码语言:javascript
复制
数据层定义了字段语义
    ↓
业务层定义了规则语义
    ↓
策略层定义了模型标签语义
    ↓
Agent 生成了一段文案、一个按钮、一个错误提示
    ↓
用户看到了

数据层有约束:

  • status_code=500 → "服务器错误"

业务层有约束:

  • "服务器错误" → 值班员立即响应

策略层有约束:

  • "Critical" → 情绪权重最高

但到生成 Web UI 这一步,约束链断了。

Agent 把 status_code=500 渲染成 Web UI 时,可能写成:

  • "Something went wrong"(语义降级)
  • 按钮做成蓝色实心(样式错误)
  • 四种错误全部用红色(分级缺失)

后端的规矩再严密,语义层没有约束,等于零。

这不是前端的锅。前端按设计稿实现了,设计稿按规范画了,但规范写在文档里,Agent 生成内容时没读。

Agent 按概率生成,每次输出的文案、颜色、样式可能不同——语义在生成过程中漂移了。

约束链止于业务逻辑层,语义层是空白。

这是端到端可信的缺口。


二、Code-Text-Code 的启示

《Specification-Based Code-Text-Code Reengineering》在代码层验证了一件事:

在转换链条中插入一层受控的规范层,把意思和语法解耦。

源代码和目标代码的语法完全不同,但中性文本规范把"意思"固定下来——无论怎么转换,意思不会漂移。

这意味着:概率性生成的不确定性,被确定性规则锁在边界之内。Agent 在边界里面发挥理解力,边界本身不容谈判。

审查可以交给 Agent。

判断可以交给 Agent。

修复也可以交给 Agent。

但——

什么时候停止? 什么时候阻断? 什么绝对不能改?

这些由硬逻辑说了算。

不由模型说了算。


三、语义闸口:在 Web UI 生成链条中插入受控的规范层

这个解耦方法在语义层有三个实现环节。

发现意思在哪里可能跑偏——模式库。

不是截图记笔记,是按组件类型做结构化归档:

组件类型

语义属性

典型漂移

Alert

type: success/info/warning/error

多种错误共用红色

Button

type + danger + ghost

高危操作做成普通样式

Modal

type: confirm/info/success/error

拒绝和终止混为一谈

Progress

status: wait/process/finish/error

阶段标签模糊

当 Agent 生成的输出与组件手册中的语义定义出现偏差时,记录为模式。

把意思写成机器能懂的规矩——契约库。

规矩不是写在文档里让人读,是写在代码里让机器执行。

代码语言:javascript
复制
# 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 必须是 primarydanger 必须是 trueghost 必须是 true——这些不是建议,是约束。

契约买的不是"生成能力",是**"可审查性"**。

证明意思没有被跑偏——验证工具集。

输入一段文案或 Web UI 描述,自动判断是否符合契约,给出通过/不通过。

不是人眼走查,是机器自动审查。

不是"感觉好多了",是有明确的测试标准和通过准则:

  • 单元测试:单组件语义合规性 → 准确率 ≥ 90%
  • 集成测试:多组件语义一致性 → 100% 匹配
  • 回归测试:规范迭代后兼容性 → 通过率 100%

三个环节叠加,形成语义层的 Harness:

代码语言:javascript
复制
发现漂移(模式库)
    ↓
裁决契约(契约库)
    ↓
修订生成(Prompt 注入)
    ↓
验证锁定(验证工具集)

意思在生成之前被固定,样式在规范之内被允许漂移。

这才是端到端可信——从决策到呈现,每一层都有约束、每一层都可审计。


四、为什么现在必须做

以前 Web UI 是人画的。

设计师画什么,前端做什么,语义不会变。

现在 Web UI 是 Agent 生成的。

同一个需求,Agent 每次生成的文案、颜色、样式可能不同——语义一致性从"确定性"变成了"概率性"。

传统设计系统管的是像素级一致性:

  • 颜色
  • 字体
  • 间距

但 Agent 生成时,像素对了,语义可能错了:

像素对了

语义错了

颜色是红色

但四种错误全部用红色,没有分级

文案是中文

但 Critical 变成了严重,情绪降级

按钮有圆角

但删除做成了蓝色实心,没有二次确认

这些不是视觉回归能捕获的问题。

视觉回归检查"长什么样"。

语义闸口检查"意味着什么"。

Agent 时代,约束基建必须从业务逻辑层延伸到语义层。

否则后端的规矩再严密,Web UI 的语义没有闸口,用户看到的仍然是"意思跑偏了"的界面。


一句话

Agent = Model + Harness。

Harness 不能只套在业务逻辑层,必须延伸到语义层——从决策到呈现,每一层都有约束、每一层都可审计。

真正的可信是端到端的。

语义也需要一道闸门。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、约束链止于业务逻辑层
  • 二、Code-Text-Code 的启示
  • 三、语义闸口:在 Web UI 生成链条中插入受控的规范层
  • 四、为什么现在必须做
  • 一句话
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档