Files
Agent-System-Documents/docs/proposals/2026-10-12-generative-ui-usage-and-evaluation.md
agent-exec-transportandCursor f5417fb721
governance / governance (pull_request) Successful in 14s
Record the 2026-10-21 GenUI prod acceptance rerun
Replace the NOT_RUN note in the deployment acceptance bullet with the
rerun result on dev@5360884: the 10-12 API checklist passes (11 items,
no model calls), run through a temporary genui-accept role and account
that were disabled afterwards. Also record that project.create now comes
only from roles, so admin cannot create projects until a role is assigned.

Why: the upgrade record still listed the GenUI acceptance as NOT_RUN.
Evidence: agent-exec unit documents-genui-prod-acceptance-20261021 (cursor, attempt 1, terminal=success); prod API replay VERDICT PASS on 2026-10-21.
Impact: documentation only.
Refs: Dev task fix/genui-prod-upgrade-followups.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-21 13:33:58 +00:00

120 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Generative UI usage guide and U1-U6 evaluation record
date: 2026-10-12
type: feat
revision: r1
status: final
product_contract_source: generative-ui-r2
---
# Generative UI 使用说明与 U1–U6 评测记录
本文是主记录 r2(2026-10-10-generative-ui-plugin.md)的配套文档:面向使用者的启用/使用/
禁用说明,以及 U1–U6 各增量落地后的组合评测结论。状态:**final**(方向收口稿)。
## 一、使用说明(dev 实例实测口径,2026-10-12)
### 启用与禁用(owner 级)
```bash
# 启用(需 API key;服务以 --auth on 运行)
curl -X POST http://<host>/api/plugins/generative-ui/activation \
-H "Authorization: Bearer <key>" -H "Content-Type: application/json" \
-d '{"enabled":true}'
# 禁用(新页面/新动作/迟到提交全部拒绝;历史页面保留只读)
curl -X POST ... -d '{"enabled":false}'
```
- 启用后 `generative-ui.present` 工具对模型可见(禁用时工具不注入)。
- 禁用即时生效:进行中的提交按 epoch 失配被拒,已保存页面按权限保留。
### 生成与修订页面(对话内)
对话中说「把 X 整理成一页对比 / 报告页 / 时间线」——模型调用 present 提交声明式页面:
- 页面自动在**文件预览区**打开;修订时说「改为按 Y 组织」,模型带 surfaceId+baseRevision 重提。
- 表单页可直接填写并点「提交」按钮(数据落插件台账,走命令总线审计)。
### 任务工作区(U6)
- **工作**入口的当前任务卡下方出现「任务页面」紧凑区:默认显示最新一页;📌 固定后
新页面不抢占;↗ 跳转文件预览全屏。
- 项目级跨会话聚合:`GET /api/projects/{id}/surfaces`(owner 作用域)。
### API 速查
| 端点 | 说明 |
|---|---|
| POST /api/plugins/{id}/activation | 启禁(epoch 递增) |
| POST /api/surfaces | 提交页面(直接 API,与插件同咽喉) |
| GET /api/surfaces/{id} | 读取整页快照(禁用后仍可读) |
| GET /api/conversations/{id}/surfaces | 会话内页面列表 |
| GET /api/projects/{id}/surfaces | 项目级跨会话聚合(U6) |
| POST /api/surfaces/{id}/actions | 页面动作(白名单:generative-ui.submit、builtin.help、system.intent;后者 button 只读匹配) |
## 二、U1–U6 落地与评测结论
| 增量 | 交付 | 关键证据 | 结论 |
|---|---|---|---|
| U1 受控试验 | Documents #62(r2) | R1 分化 6/6;文本通道下界 60%/83%;工具通道探针消除语法类失败;M3 ¥0.067/页;highspeed 否决为生成档 | 方向成立,生成走工具参数通道 |
| U2 契约/启禁/持久化 | Core #25/#26、Backend #143/#146、Dev #336 | 修订 1→2 冲突守卫、epoch 语义、事件恢复、SQLite/PG 双档 | 宿主地基就位 |
| U3 插件与上下文闭环 | Backend #149、Dev #345 | 真实模型回放 PASS(≈¥0.08);禁用不注入工具;语义投影回灌 | 模型可提交、可修订 |
| U4 只读渲染与恢复 | Core #27/#28、UI #42–#45、Frontend #53、Dev #351 | 刷新恢复、revision 守卫、SurfaceView | 页面用户可见 |
| U5 动作闭环 | Backend #155、UI #46/#47、Frontend #56、Dev #367 | 幂等同参回放/异参拒绝、DangerHigh 经确认卡不可伪造、草稿只在动作载荷 | 表单可提交且受控 |
| U6 工作区与项目聚合 | Backend #163、Frontend #62、Dev #408 | owner 隔离/跨 owner 零可见/禁用保留;pin 固定不抢占 | 页面进工作视图 |
### 现场体验驱动的修复(2026-10-11–12)
用户实测反馈「页面未出现 + 同名工件 ×3」→ 三个根因逐一修复(Backend #156/#160、
Frontend #58/#59,Dev #381/#382/#387/#388):工具描述缺「何时用」引导、事件分支缺
右栏切换、children 对象形状偏差、面板同名并列。修复后 E2E:真实模型 present 成功
(rev 1),surfaces 表落库,前后对照成立。
### U7 组合验收(2026-10-12,dev@b634a27,真实 MiniMax-M3)
- 会话内:新指令「实施进度页」→ 模型自主 present(steps 步骤条、三阶段、状态正确),
会话 surfaces = 2(对比页 rev1 + 进度页 rev1),修订链完整。
- 项目聚合:GET /api/projects/{id}/surfaces 返回跨会话页面(owner 作用域验证)。
- 工作区:前端「任务页面」容器显示最新页(pin/follow 测试覆盖)。
- 收据:Dev 任务卡 feature/generative-ui-u7-acceptance(SELF;CI GATE 随发布 PR)。
### 现场体验驱动的修复记录
| 日期 | 症状 | 修复 | PR |
|---|---|---|---|
| 2026-10-12 | `POST /api/surfaces/{id}/actions` 对无确认卡的 committed 动作 panic(nil Card) | dispatcher 空指针守卫 | Backend#173 |
| 2026-10-12 | `system.intent` button 动作恒报 missing text | action data 键上浮到命令 params | Backend#174 |
## 已知边界与后续项
- 自动触发 opt-in:settings `plugins.generative-ui.autoPresent`(默认关;须同时
Surface activation);语义事件 + 预算≤3/时 + 冷却≥60s;设计见
`2026-10-12-generative-ui-auto-trigger.md`。
- B 类命令:已加白 `builtin.help` / `system.intent`(button 入口 intent 只读匹配、
不嵌套分发;提案 `2026-10-12-generative-ui-bclass-help-intent.md`);其余仍逐条评审。
- 人类可用性对照以 owner 实际使用替代(2026-10-11 用户裁定),本轮体感「初步不错」,
小问题另行修复。
- 部署与运行验收:2026-10-12 本机 `prod`(127.0.0.1:8787,`--auth on`,PG `pg1/prod`)
两刀部署至 `dev@b4649d7`(含 Backend#173/#174);验收覆盖启禁、present、B/C 类动作、
项目聚合、未登录 401。2026-10-21 经用户授权升级至 `dev@5360884`,库 schema v25→v51
(升级前已备份 PG 与运行目录,并在库副本上完整演练);`prod` 与 `pg1` 均由 Dev 主检出
`scripts/svc.sh` 管理(`runtime/prod`、`runtime/pg1`),DSN 只经环境变量
`AGENT_SYSTEM_DSN` 交付、不进命令行。开启认证需超级管理员:账户 `superadmin`,凭据文件
`runtime/prod/super-admin.env`(0600),`deploy/start/restart` 时以 `AGENT_SYSTEM_ENV_FILE`
指向该文件(svc 不持久化该凭据,缺失时服务拒绝启动);原 `admin` 账户保留。升级后验证
healthz/readyz/UI 200、superadmin 登录、未登录 401。2026-10-21 在 `dev@5360884` 上按
10-12 清单重放 GenUI API 验收,结果 PASS(11 项:登录、未登录 401、`autoPresent` 默认关、
建项目与会话、present 201、`builtin.help`/`system.intent`/`generative-ui.submit` 动作 200、
未知动作 400、项目聚合 200、禁用后 403);不调用模型、无费用。执行方式:用 `superadmin`
建临时角色 `genui-accept`(仅 `project.create`)与同名临时账户执行,验收后账户与角色均已
停用,验收产生的项目/会话/页面留在该账户名下。发现:新版本 `project.create` 只来自角色
(管理员标记与系统授权都不授予),prod 升级后没有可用的业务角色,`admin` 目前不能新建
项目,需按使用需要在管理区建角色并分配。
经验:schema v27 之前的旧库经 svc 部署前,须先以候选二进制执行 `agent-system migrate`
(svc 身份门禁的 identity ensure 不做迁移)。
## 三、结论
Generative UI 方向按主记录 r2 的 U1–U7 全部增量落地:调研→契约→生成插件→只读渲染→
动作闭环→工作区→组合验收,每个增量独立走组件 PR + Dev 组合 CI + 任务闭环,真实模型
证据贯穿(试验、回放、现场 E2E)。方案收口为 final;后续按「已知边界」清单演进。