Universal Linux Port Skill v0.1.2 发布说明
原 GUI 封存,Agent 全部旁路化
这一版把边界进一步钉死:原程序给人使用的 GUI 默认保持不变,Agent 的控制、审查、审批、诊断和日志界面全部放在 GUI 之外。
所谓 AI-native,不再允许被解释成给原软件加聊天框、提示词输入框、侧栏、浮窗、菜单项、Review 按钮、Agent 状态标记或新的活动面板。人仍然使用原来的程序界面;AI 通过同一 Domain Core 的 MCP、CLI、D-Bus、本地服务或库接口工作。AI 导致的数据变化会自然反映在原 GUI 中,但详细 actor、receipt、trace 和审查信息保存在外部。
新增 surfaceSeparation
HAI-App 0.1 现在要求 GUI 项目声明 Agent Surface 的放置边界:
surfaceSeparation:
mode: out-of-band
agentSurfaceIds: [surface.cli, surface.mcp]
humanGuiAdditions: []
controlLocations: [cli, agent-host]
reviewLocations: [artifacts, agent-host]
approvalLocations: [agent-host]
activation: on-demand
idlePolicy: dormant
networkExposure: none
authorization:
status: not-required默认 out-of-band 表示:
- 人类 GUI 不增加任何 Agent 专属控件;
- MCP/CLI 由 Agent Host 按需启动;
- 截图、Accessibility Tree、语义快照、Receipt、Trace、性能报告和审查包通过 CLI、Agent Host、测试工具或文件生成;
- 风险操作的审批由 Agent Host、CLI 或单独的 Inspector 完成,不往原 GUI 塞一套审批界面;
- 默认不开放网络端口;
- 普通人使用 GUI 时,Agent 集成处于 dormant 或 minimal 状态,不应明显增加启动时间和空闲内存。
可以提供单独的 Agent Inspector,但它必须是另一个程序或独立窗口,默认关闭、绝不自动覆盖原程序,也不能成为人类正常使用的前置依赖。
严格验收新增的拒绝条件
验证器现在会拒绝:
- GUI 项目没有
surfaceSeparation; out-of-band模式下新增 Agent 菜单、按钮、面板、状态标记、对话框或通知;- Agent 控制、审查或审批位置包含
human-gui; - 某个 MCP/CLI Agent Surface 没有被隔离声明覆盖;
- 迁移已有 GUI 时,用
new-application-integrated绕过保真; - 未经明确授权,把 Agent UI 集成进原 GUI;
interfaceContinuity没有保护agent-ui-absence;- GUI 对照仍为
pending或已经fail。
参考应用也已修正
上一版 HAI Notes GUI 里还有一个 Review Snapshot 按钮,并且状态栏会显示 receipt/transaction ID。这虽然只是示例,但和新的边界不一致。v0.1.2 已经将这些全部移出 GUI:
- 人类 GUI 只保留 Notes、New、Delete、Undo、Title、正文、Save、Refresh 和普通状态;
- Review Snapshot、Capability Catalog、Receipt、Event、Screenshot、Audit Bundle 全部继续通过 CLI/MCP/测试工具提供;
- 新增测试,保证 GUI 源码不包含 Review Snapshot 或 MCP/Agent 控制面;
- MCP 仍然与 GUI 操作同一份 revisioned Domain Core。
设计结论
最终结构固定为:
原 GUI ───────────────> 人类正常使用
│
└── Domain Core <── MCP / CLI / local adapter <── Agent
│
└── snapshots / screenshots / receipts / audit
原 GUI 是封存的人类产品表面;Agent Surface 是有文档、有权限、有审计,但不占用人类界面的旁路接口。这样既能保持原软件的熟悉感,也能让 Agent 获得完整语义能力,同时避免 Agent 集成拖慢或污染普通使用体验。