Repository navigation
[Decision] 平台要不要正式做 AI 表单填写建议与 AI 推荐:现在立契约做(A)、暂缓(B),还是先调研(C)? #27286
Description
domain:ui#1 · os-warren · session_01JQwxbZDEjqevXbcGAEVeSF
Ruled: 6485902300 · letter B · 2026-10-29T02:08Z
⛔ 不是认领,⛔ 不是派发。本卡只请维护者回一个字母;裁决之前什么都不做。
立卡门类别: ② 只有维护者能做的决定(产品方向:平台要不要正式做 AI 表单填写建议与 AI 推荐)。
业务理由: 维护者在 #25921 线程问「表单 AI 辅助(ai-form-assist)、AI 推荐列表(ai-recommendations)对于我们的平台有价值吗?」「主流类似系统有这些功能吗」「先立一张决策卡」(2026-10-28 14:25–14:26Z)。#27042 正在把这两个空壳组件退役,退役之后平台上就没有这两项能力的任何痕迹,要不要正式做需要一个方向。
动手的读者: 裁 A ⇒ domain:spec 席位立契约 ADR 卡,cloud 车道立 service-ai 技能卡,domain:ui 席位立通用渲染块卡;裁 B ⇒ 无人动手,本卡记下裁决后关闭,#27042 照常落地;裁 C ⇒ domain:ui 席位 1 开一个线程写调研文档,完成后带调研结论回本卡重呈。
查重: 搜索 API 被会话代理拒(只放 repo 级路径),改为全量列 open issue:3 页共 207 张 issue(open_issues_count 229 = 207 issue + 22 PR,总数核对相符),加最近更新的 1000 条 closed(其中 456 张 issue,最早更新到 2026-10-27 00:02Z);正则 ai-form-assist|ai-recommendation|AIFormAssist|AIRecommend|plugin-ai|form.?fill|表单.{0,4}AI|AI.{0,6}(推荐|建议|填)|copilot|next best action|prediction|recommendation 扫标题与正文。同题命中 0;相关命中:#25921(退役母卡)、#27048(skills 指南仍教 plugin-ai,退役后续)、#27176(MCP 草稿署名,不相关)。更早的 closed 未覆盖。
维护者速读
- 问题一句话: 客户在表单里填写记录时,平台能不能用 AI 帮他预填字段、在列表/记录页给出「下一步建议」?今天不能;仓里那两个同名组件只是空壳,正在被退役。
- 实测:
AIFormAssist/AIRecommendations只渲染调用方手动传进来的建议,不调用任何模型或 Agent,spec 里没有对应契约;控制台从未注册过它们;本仓examples/、skills/、packages/零消费;10-25 的裁决(retire the zero-consumer surface: nine dead modules (2,211 LOC), plugin-ai, runner's publish flag, test-only reset helpers on public barrels, the providers trio, 122 dead i18n keys, root orphans #25921 评论 6407925660)实测 objectui、objectstack、hotcrm 均无代码消费者。 - 主流平台: 有,而且都是「平台服务 + 声明式配置」,不是一个前端组件:Dynamics 365 / Power Apps 的 Copilot 表单填写辅助、Salesforce Einstein Prediction Builder / Next Best Action(现已并入 Agentforce)、ServiceNow Now Assist、HubSpot Breeze、Zoho Zia、Airtable / Notion 的 AI 字段。趋势是由 Agent 产出建议、由平台契约约束写回。(来源:公开产品资料,本会话未联网逐一核实。)
- 我们的边界: 北极星写明社区版只经 MCP 暴露对象与动作、用户接自己的 Agent;界面内置 Agent 是企业版,住 cloud 仓(cloud ADR-0025)。所以「界面里的 AI 填表 / 推荐」按现行边界是企业版能力。
| 选项 | 做什么 | 客户可感知后果 | 工作量 |
|---|---|---|---|
| A 现在正式做 | 先在 spec 立契约(哪个 Agent / 技能产出字段建议与推荐、返回形状、写回走哪道门与权限),再在 cloud 的 service-ai 实现,最后 ui/ 出一个通用渲染块(社区版无 AI 面时按既有门控不显示) |
企业版客户获得 AI 预填与推荐;社区版不变 | spec + cloud + ui 三车道,至少 1 个 ADR(Tier H)+ 3 个 PR,跨两仓;无先例 |
| B 暂缓(推荐) | #27042 照退,不立任何契约;把终态记在本卡:这类能力将来作为企业版内置 Agent 的技能交付,有具名客户拉动时由 cloud 立卡、从 spec 契约起步 | 今天无变化;社区版用户已可经 MCP 让自己的 Agent 读对象、建/改记录 | 零;本卡关闭即完 |
| C 先调研再定 | 开一个线程把 7 个主流平台的配置方式、建议来源、写回与审计做成对照文档,带结论回本卡重呈 | 无变化,晚一轮再裁 | ui 席位 1 线程,1 份文档,约半天;无先例 |
- 推荐 B。 理由见下文四轴;一句话:能力有价值、主流都有,但按我们的边界它属于企业版内置 Agent,今天零客户拉动,开源侧先立契约是没有读者的契约。
- 请回:
A / B / C。
背景
#25921(维护者 10-25 裁 A「同意」,评论 6407925660)裁定退役 @object-ui/plugin-ai(AIFormAssist、AIRecommendations、NLQueryInput、useAiTranslation),执行 PR 是 #27042(open,已 ready)。当时的裁决里,选项 B「接进控制台」因「no product need named it」未取。本卡问的是另一件事:不是要不要留这两个空壳,而是平台要不要正式做这两项能力。
所有读数取自 objectstack-ai/objectstack origin/main 0d45c0e7(2026-10-28 14:03Z)。
Governing text
docs/NORTH-STAR.md:7:「AI 原生的意思:应用自带一个能替用户操作它的 Agent——本仓(社区版)通过 MCP 把对象与动作暴露出去,用户接入自己的 Agent;企业版把 Agent 内置在用户界面里,那一半住 cloud 仓。」docs/NORTH-STAR.md:104:「ai · 社区版没有的就诚实说没有,界面也不摆空架子」(清单项ai.console-ai-surface-gating、open-edition-honest-degradation)。- cloud ADR-0025(引自
docs/adr/0063-…md:3的状态头):界面内 AI 运行时与ask/buildAgent 移到 cloud / 企业版;开源框架只经@objectstack/mcp(BYO-AI)暴露 AI。 - ADR-0063:技能(skill)是第三方唯一的扩展原语,Agent 按所在界面绑定。
- AGENTS.md 第 10 条推论:「never advertise or demo a capability the runtime doesn't actually deliver」。
协议声明
spec 里没有任何表单 AI 建议或推荐的契约(packages/spec/src/ai/** 只有 agent / skill / tool / knowledge 等)。选项 A 会新增协议(Metadata-protocol: added);B、C 不改协议。
前提(每条带 re-check 命令)
- 两个组件不调用任何模型或数据源:
git grep -n -E "fetch\(|useAgent|apiClient|dataSource" origin/main -- ui/packages/plugin-ai/src/AIFormAssist.tsx ui/packages/plugin-ai/src/AIRecommendations.tsx→ 0 行。 - 控制台从未注册 plugin-ai:
git grep -n plugin-ai origin/main -- ui/apps/console/src→ 0 行(命中只在 CHANGELOG)。 - 产品面零消费:
git grep -l -i -E "AIFormAssist|AIRecommendation|ai-form-assist|ai-recommendations" origin/main -- examples skills packages→ 只有packages/console/CHANGELOG.md。 - 社区版已有让外部 Agent 写记录的门:
git grep -n -E "'(create|update)_record'" origin/main -- packages/mcp/src/mcp-http-tools.ts→ 2 行(1056、1083)。 - refactor(ui)!: retire
@object-ui/plugin-aiand its three node types #27042 尚未合并:GET /repos/objectstack-ai/objectstack/pulls/27042→state: open。合并与否不影响本卡的选项。
业务含义直译
- A = 现在就像 Dynamics 那样做「Copilot 帮你填表」,但我们是在没有一个客户点名要它的情况下先盖楼。
- B = 先不做;等企业版有客户说「我要 AI 帮我填工单」,再按主流做法从契约做起。社区版用户今天用自己的 Agent 经 MCP 也能让 AI 建、改记录。
- C = 先花半天把对手怎么做的摸清楚,再回来选 A 或 B。
四轴分析
① 项目长远合理性(权重 ≥50%)。 两年后的终态:企业版内置 Agent 带「表单填写」「下一步建议」两类技能,建议的来源是 Agent,写回走既有记录写入门与权限,界面上是一个通用的「Agent 建议」渲染块;社区版同样能力由用户自己的 Agent 经 MCP 完成。主流平台的建模也在往这个方向走:Salesforce 把 Prediction Builder / Next Best Action 并进 Agentforce,ServiceNow、HubSpot 都以 Agent 为建议的产出者。这个终态里,真正的契约要等企业版 Agent 的技能设计确定后才能写对;今天在开源 spec 先立一套表单建议契约,是在读者出现前增生契约,将来大概率要改形或退役。B 不增生任何特例,与终态不冲突。
② 实际业务拉动。 实测零:控制台从未加载、产品面零消费、hotcrm 无消费者(10-25 裁决的读数);没有客户、run record 或北极星条目点名这两项能力。今天没有人撞上「没有 AI 填表」。
③ 防 AI 犯错。 若出错,谁看到什么:A 若契约先于运行时落地,AI 作者会照着声明配置一个企业版没兑现、社区版不显示的能力,最终用户看到的是一个没反应的按钮或空面板,这正是 #25921 刚清掉的那类空壳;B 不声明就不会被写错。
④ 创业阶段不扩散。 每个声明的键都是永久义务;A 一次扩张三车道、两仓。B 是 remove 优于 declare-and-maintain 的直接应用。
os-decision-facets
① 长远合理性:B 不新增契约与特例;A 在读者(企业版 Agent 技能)确定前先立契约,终态形状大概率要返工
② 业务拉动:今天零拉动,控制台未加载、产品面与 hotcrm 零消费、无客户点名
③ 防 AI 犯错:不声明则写不错;A 先声明后兑现,会让 AI 配出不生效的能力(静默空壳)
④ 不扩散:B 零新增义务;A 一次扩张 spec + cloud + ui 三车道
Prior rulings read: plugin-ai, ai-form-assist, ai-recommendations, AIFormAssist, form fill, AI 推荐 → 1 hit (#25921 评论 6407925660,objectui 决裁批 #14 第 6 项 = A 退役;选项 B「接进控制台」未取,无产品需求); ADR-0063 / ADR-0033 / ADR-0040 / ADR-0064(状态头引 cloud ADR-0025); thread: #25921
推荐
B。 只看①选 B;②③④ 是否翻转:否。A 与 B 工作量差远超 3 倍(依规点名);推荐只由①得出,不靠工作量。
置信缺口: 主流平台读数来自公开产品资料,本会话未联网逐一核实;cloud 仓的企业版路线图与客户需求未读(本会话只能读本仓),若企业版已有客户点名要 AI 填表,②会变,那时应改裁 A,并从 cloud 立卡起步。C 不取:调研能补齐①的细节,但不会改变「今天零拉动、能力属企业版」这两个决定性读数。A 不取:契约先于读者。
裁后执行
- 裁 B: 席位在本卡记下裁决(含上文终态),关闭本卡(not planned);refactor(ui)!: retire
@object-ui/plugin-aiand its three node types #27042 与 skills/objectui guides still teach@object-ui/plugin-ai, a package retired by #25921 (PR #27042) #27048 照常推进;将来 cloud 出现具名客户需求时,由 cloud 车道立卡并引用本卡。 - 裁 A:
domain:spec席位先立契约 ADR 卡(建议来源、返回形状、写回门、权限、审计);ADR 落地后 cloud 车道立 service-ai 技能卡,domain:ui席位立通用渲染块卡(社区版按ai.console-ai-surface-gating门控不显示)。refactor(ui)!: retire@object-ui/plugin-aiand its three node types #27042 照退,不复活空壳。 - 裁 C:
domain:ui席位 1 开一个线程写对照文档(配置方式、建议来源、写回与审计、版本归属),完成后带结论回本卡重呈 A / B。
相关
#25921 · #27042 · #27048 · ADR-0063 · cloud ADR-0025
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 29, 2026
director#1 · os-bill · session_01Utp6CbQLcy8yg6vhJVXXi8
Brief-claimed-by: session_01Utp6CbQLcy8yg6vhJVXXi8 · batch #425 · 2026-10-29T01:37Z
Director seat, summon #54 (ledger objectstack#12708). Presented to the maintainer in batch #425 as item 4 of 4.
Seat increment (re-read at
origin/main6d7634a9, 2026-10-29T01:37Z):ui/packages/plugin-ai/src/has 0 entries onmain, because PR refactor(ui)!: retire@object-ui/plugin-aiand its three node types #27042 merged at 2026-10-28T14:43Z (c59b1bfa), after this card was filed; premise 5 therefore changed state, and the card's own statement that the merge does not change the options holds: the shells are gone and the question is whether to build the capability for real. 2:plugin-ai→ 0 hits inui/apps/console/src. 3: onlypackages/console/CHANGELOG.md. 4:create_record/update_record→ 2 hits inpackages/mcp/src/mcp-http-tools.ts(the community-edition door for a user's own agent).check-prior-rulings.mjs --card 27286names ADR-0032 §1, ADR-0063 §5 (surface binding, tier degradation), ADR-0080 §5, ADR-0038 §5–7 — term matches, none rules on form-fill suggestions or recommendations. Thread: the mother ruling 6407925660 on retire the zero-consumer surface: nine dead modules (2,211 LOC), plugin-ai, runner's publish flag, test-only reset helpers on public barrels, the providers trio, 122 dead i18n keys, root orphans #25921 (A, retire@object-ui/plugin-ai; "wire it into the console" not taken for want of a product need). Governing text as the card quotes it:docs/NORTH-STAR.mdL7 (the community edition exposes objects and actions over MCP; the in-UI agent is the enterprise half, in cloud) and L104 (open-edition-honest-degradation,console-ai-surface-gating).Prior rulings read: plugin-ai, form assist, recommendations, copilot → ADR term matches only; thread: 6407925660 on #25921; repo: objectstack-ai/objectstack
objectstack-fleet commentedon Oct 29, 2026
director#1 · os-bill · session_01Utp6CbQLcy8yg6vhJVXXi8
Ruling: batch #425 item 4 · letter B · maintainer 「27297 27286 同意,pr已审核」 2026-10-29T02:06Z
Director seat, summon #54 (ledger objectstack#12708, opening mark 6485456694, brief 6485472645). The maintainer answered batch #425 in the summon chat, verbatim: 「27297 27286 同意,pr已审核」 — 同意 = the seat's letter on each card; for this card B.
What the ruling binds (letter B — defer): the platform does not build AI form-fill suggestions or AI recommendations now, and declares no contract for them in
packages/spec. The retirement of@object-ui/plugin-ai(#25921 ruling 6407925660, landed in PR #27042 atc59b1bfa) stands; the shells are not revived. End state recorded for the future card: these capabilities are delivered as skills of the enterprise edition's in-UI agent (cloud, perdocs/NORTH-STAR.mdL7 and cloud ADR-0025), with the agent as the source of suggestions, write-back through the existing record-write doors and permissions, and one generic "agent suggestion" rendering block inui/gated byai.console-ai-surface-gating; the community edition reaches the same outcome through a user's own agent over MCP (create_record/update_record). Trigger for revisiting: a named enterprise customer asking for it — the cloud lane files that card first, and the spec contract is written from the enterprise agent's skill design, not before it. Not taken: A (contract before its reader; three lanes, two repositories, zero measured pull), C (research refines the end state but changes neither the zero pull nor the edition boundary).Governing text:
docs/NORTH-STAR.mdL7 and L104 (open-edition-honest-degradation,console-ai-surface-gating); cloud ADR-0025 as cited in ADR-0063's status header; AGENTS.md Prime Directive 10 (never advertise a capability the runtime does not deliver); mother ruling 6407925660 on #25921. Premises re-read atorigin/main6d7634a9(brief 6485472645):ui/packages/plugin-ai/src/gone;plugin-ai0 hits inui/apps/console/src; product surfaces 0 consumers; MCP record-write tools present.Workload of the letter: 0 — this card closes
not_plannedin this act; nothing is dispatched. #27048 (skills guide still teaching plugin-ai) proceeds on its own.os-decision-facets
① 长远:能力属企业版 Agent 的技能;读者出现前在开源 spec 立契约是契约增生
② 拉动:实测零:控制台从未加载、产品面与 hotcrm 零消费、无客户点名
③ 防错:不声明则写不错;先声明后兑现会让 AI 配出静默空壳
④ 不扩散:B 零新增义务;A 一次扩张 spec + cloud + ui 三车道两仓
objectstack-fleet commentedon Oct 29, 2026
director#1 · os-bill · session_01Utp6CbQLcy8yg6vhJVXXi8
Closed
not_planned· 2026-10-29T02:13Z · ruling 6485902300 (batch #425 item 4, letter B: defer; no contract declared, nothing built; the end state and the revisit trigger — a named enterprise customer, filed first in the cloud repository — are recorded in that comment).needs-user-decisionleaves with the close;domain:spec,priority:p3,area:aistay as ownership. #27048 proceeds on its own.