KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
04. 第一条全栈垂直切片应该包含什么? — keel 龙骨
一个 notebook 能证明模型可能有用,不能证明用户能完成工作。第一条 vertical slice 要从真实身份进入,到一个有证据、有状态、可恢复的用户结果结束。
一个 notebook 能证明模型可能有用,不能证明用户能完成工作。第一条 vertical slice 要从真实身份进入,到一个有证据、有状态、可恢复的用户结果结束。
API 不只是 /chat
最小接口通常包含:创建 run、订阅事件、查看当前 projection、提交/撤回审批、取消任务、获取 citation 和读取审计历史。SSE/WebSocket 传输的是结构化事件,不是把所有状态压成文本 token。
queued -> running -> waiting_for_data/approval
-> completed | failed | cancelled
前端必须稳定呈现这些状态。断线重连后用 run_id + last_event_id 恢复,而不是重新执行请求。
Agent UX 的专业边界
- 结论旁展示证据、版本和访问状态;
- 长任务展示正在等待什么,而不是无限 spinner;
- 审批展示动作、参数、影响范围和过期时间;
- 错误说明可恢复动作,不泄露内部 secret;
- 用户可以纠正输入、接管或取消,但不能修改已发生事实。
本章的实验场就是你自己那条垂直切片:先用 simulator 撑起一条端到端能跑的链路,再按第 03 章的约定,把其中一个 simulator adapter 换成 contract adapter;为 pending、timeout 和 permission denied 增加 UI 状态;验证刷新页面不会重复动作。
本章交付物
- API/OpenAPI 契约和 UI 状态图;
- 一条登录 -> 创建 run -> 工具/检索 -> citation -> 人工确认的完整路径;
- 网络断开、页面刷新、重复提交和审批过期实验;
- 一份无障碍和错误 UX 检查表。
自测
- 用户看到
completed时,哪个后端事实已经成立? - streaming 中断时,客户端如何区分传输断开与 run 失败?
- 为什么聊天历史不能替代审计时间线?