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

简介: 阿里云提出“Agent = Model + Harness”,强调Harness(约束基建)须延伸至Web UI语义层。通过模式库、契约库与验证工具集,构建可审计、可进化的语义闸口,确保Agent生成的文案、样式、交互始终符合设计意图,实现端到端可信。

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

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

Agent = Model + Harness

Model 是大脑。Harness 是缰绳。

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

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

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

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

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

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

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

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


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

想象一条流水线:

数据层定义了字段语义
业务层定义了规则语义
策略层定义了模型标签语义
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 生成的输出与组件手册中的语义定义出现偏差时,记录为模式。

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

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

# 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:

发现漂移(模式库)
裁决契约(契约库)
修订生成(Prompt 注入)
验证锁定(验证工具集)

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

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


四、为什么现在必须做

以前 Web UI 是人画的。

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

现在 Web UI 是 Agent 生成的。

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

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

  • 颜色
  • 字体
  • 间距

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

像素对了

语义错了

颜色是红色

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

文案是中文

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

按钮有圆角

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

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

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

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

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

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


一句话

Agent = Model + Harness。

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

真正的可信是端到端的。

语义也需要一道闸门。

相关文章
|
2月前
|
运维 应用服务中间件 网络安全
宝塔服务器报错全覆盖排查指南:新手不用盲猜,按步骤快速修复网站/面板故障
宝塔面板本身稳定性极强,绝大多数报错并非面板BUG,而是端口策略、系统资源、网站代码、权限配置四类问题。 运维排查核心思想:先外网,后内网;先系统,后服务;先日志,后重装。遇到报错不要慌乱,按照本文流程一步步定位,无需专业运维功底,也能独立
589 6
|
2月前
|
Java
【AgentScope Java新手村系列】(8)多Agent协作
多Agent协作 — orchestrator + workers 模式替代 MsgHub,一个 HarnessAgent 搭载多个 SubagentDeclaration,LLM 主持群聊与辩论。
469 0
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
Agent = Model + Harness:模型决定上限Harness 决定下限
Claude Code、Cursor等并非聊天界面,而是AI编码的“操作系统”——Harness。它决定模型能否稳定执行规则、调用工具、管理上下文与权限。模型定上限,Harness定下限。差异常源于Harness配置,而非模型本身。
587 5
|
前端开发 NoSQL Java
【AgentScope Java新手村系列】(2)第一个Agent-基础对话
第一个Agent-基础对话 — 演示 HarnessAgent 的 Builder 模式创建、ReAct 推理循环、流式事件与思考模式三个核心能力。
615 2
|
30天前
|
机器学习/深度学习 缓存 人工智能
SSE流式传输稳定性进阶:心跳保活、断连重连、分片处理与双端容错实战.162
SSE(Server-Sent Events)是基于HTTP的单向流式协议,天然适配大模型逐字输出场景。具备轻量、兼容性好、自动重连、低内存占用等优势,相比WebSocket更契合服务端单向推送需求,是AI应用流式响应的理想选择。
314 7
|
2月前
|
SQL JSON Java
【AgentScope Java新手村系列】(15)MCP协议工具
MCP协议工具 — tools.json 一行声明一个 MCP server,支持 stdio/sse/ws 协议,McpMeta 传递调用元数据。
337 1
|
3月前
|
JSON 自然语言处理 API
大模型应用:解锁大模型能力边界:Skill 与 Function Call的底层逻辑与实战应用.117
本文深入解析大模型能力扩展核心机制:Skill(技能)与Function Call(函数调用)的关系。Skill是标准化、可复用的能力单元(如计算器、天气查询),定义“能做什么”;Function Call是执行协议,实现“如何调用”。二者结合突破大模型在实时性、准确性、安全性上的局限,推动其从对话工具进化为可执行复杂任务的智能体。
535 6
|
2月前
|
前端开发 NoSQL Java
【AgentScope Java新手村系列】(9)SpringBoot集成
SpringBoot集成 — 工厂方法将 HarnessAgent 注册为单例 Bean,WebFlux 流式输出 streamEvents 到 SSE 端点。
346 3
|
2月前
|
Java 中间件 API
【AgentScope Java新手村系列】(10)实战-多Agent天气助手
实战-多Agent天气助手 — 文件驱动 subagent 实战,主 agent 自主编排天气查询、航班搜索、景点推荐三个子任务并行调研。
501 1
|
2月前
|
自然语言处理 Java API
【AgentScope Java新手村系列】(7)子Agent编排
子Agent编排 — SubagentDeclaration 描述子 agent,主 agent 通过 agent_spawn 工具同步/异步委派子任务。
499 0

热门文章

最新文章