Why: Capture nil-card panic and intent data-flatten field fixes found during local prod acceptance without revising the final closure verdict. Evidence: Backend#173 #174; prod action checklist Impact: Field-fix log lists the two hotfixes and their PRs. Refs: GenUI prod deploy; fix track
6.0 KiB
6.0 KiB
title, date, type, revision, status, product_contract_source
| title | date | type | revision | status | product_contract_source |
|---|---|---|---|---|---|
| Generative UI usage guide and U1-U6 evaluation record | 2026-10-12 | feat | r1 | final | generative-ui-r2 |
Generative UI 使用说明与 U1–U6 评测记录
本文是主记录 r2(2026-10-10-generative-ui-plugin.md)的配套文档:面向使用者的启用/使用/ 禁用说明,以及 U1–U6 各增量落地后的组合评测结论。状态:final(方向收口稿)。
一、使用说明(dev 实例实测口径,2026-10-12)
启用与禁用(owner 级)
# 启用(需 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 用户裁定),本轮体感「初步不错」, 小问题另行修复。
- 部署与运行验收:本机
prod实例已登记(scripts/svc.sh prod,--auth on, PGpg1/prod,来源dev@c76f2bb+后端 nil-card 修复);验收覆盖启禁、present、 B/C 类动作、项目聚合、未登录 401。
三、结论
Generative UI 方向按主记录 r2 的 U1–U7 全部增量落地:调研→契约→生成插件→只读渲染→ 动作闭环→工作区→组合验收,每个增量独立走组件 PR + Dev 组合 CI + 任务闭环,真实模型 证据贯穿(试验、回放、现场 E2E)。方案收口为 final;后续按「已知边界」清单演进。