AI 提供建议,人工掌握权威:有界候选、事务确认与恢复
语言: English | 简体中文
发布日期:2026-10-22
我为 FLH 加入 AI Concept 建议,降低知识单元整理的手工成本。模型从已有 Concept 中提出候选并说明理由,用户逐项确认后才改变 membership。生成证据、当前状态和人工权威分别管理。
我的工程贡献:定义有界输入与候选,把生成和确认设计为不同操作,并完善重放、取消及过期状态处理。
给模型一个有限的决定范围
用户显式选择最多十个可审阅 unit。服务通过 exact signature 和 BM25,为每个准备最多五个已有候选;没有候选的 unit 不发给 provider。模型可推荐其中一个或表达不确定,不能创造任意 Concept ID。
响应校验缺失、重复、外来 unit、目录外 Concept 和无效理由。畸形响应记录 failed run,而非接受一部分结果。候选召回也有明确范围:没有词法重叠的合适 Concept 可能进不了列表,后续可以单独改进候选检索。
生成存证据,确认改 membership
生成只创建 run 和 advisory item,不创建人工标签、不改 membership 或 admission。界面提供逐项确认与 Leave unused。
确认是一个事务:先取写锁,重读 unit 和目标,追加带来源的 human SAME event,更新 current membership 并保存回执。Extraction 改变、出现新 membership、INVALID、目标 retired / identity 改变或新 DISTINCT 都导致冲突拒绝。
并发确认同一 item 只产生一个 event,重放返回原 event,不重新分配 unit。
找回结果,而不是重复调用模型
带 key 的生成可在丢响应后查询。后续审查发现一个竞态:第二请求在获取 in-flight slot 前读到“未提交”,等第一个完成后又调用 provider。修复将 slot 获取移到查询之前,关闭单进程中的这个窗口。
另一个缺陷是 provider 已回答后客户端断开,取消的 request context 让可能已计费的结果无法落库。现在使用带十秒上限的 detached context 提交,结果可按 key 找回。
Failed run 重放仍是失败;重试需要明确创建新 key。服务器在提交前停止、存储失败或多进程竞争仍可能重复调用 provider。持久合同是同 key 最多存一份 run,而非声称外部计费 exactly-once。
历史确认不等于当前归属
建议被确认后仍可被人工纠正。原 event 继续保存,但可能已不是当前 membership。响应读取时推导 confirmation.still_current,UI 将被替代确认标为历史。这延续 FLH 一贯的设计:保留证据,以当前 projection 表达权威。
双语审阅采用同样原则
同一显式 provider 请求返回英文和中文解释,分别存储。UI language 与 explanation language 是两个 preference;反馈记录展示过的语言,并支持按语言纠正。
接受英文不意味着中文也已审阅。旧记录保留原文并标明语言未记录。这项改动扩展解释视图,不修改 Concept signature 或 embedding representation。
验证
隔离数据库与 fake provider 检查 advisory-only 生成、候选边界、畸形输出、并发 key、过期确认和重放。Mutation 检查恢复旧竞态或 cancelable commit,让对应回归失败,再确认修复通过。
后续全套验证记录 312 个前端测试及 Go tests、vet 和构建;这是该快照的总数,不是该功能新增 312 项。真实模型建议质量和双语质量仍需通过审核样本评估;已经交付的是完整流程和恢复合同。
实现结合 Claude Code 与 Codex,由我负责方向、任务和审查。
实现 PR #120 · 修复 PR #122 · 建议验证 · 正确性复核 · 双语解释
- 标题: AI 提供建议,人工掌握权威:有界候选、事务确认与恢复
- 作者: Sirui Liu
- 创建于 : 2026-10-22 12:00:00
- 更新于 : 2026-10-25 12:00:00
- 链接: https://vanquisher.world/zh-CN/2026/10/22/flh-ai-suggestions/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。