| pi 惰性初始化:动态 import、ModelRuntime + secret 注入 key、观测者扩展、会话注册表 |
| apps/api/spike/ask.ts | api.raw GET/POST /spike/ask — 真实 LLM 对话 SSE(text delta 流) |
| apps/api/spike/trace.ts | api.raw GET /spike/trace/stream?sessionId= — 轨迹事件 SSE(缓冲回放 + live tail) |
| apps/api/spike/audit.ts | GET /spike/events/audit — 34 事件订阅核验 + 四模式计数 + 实际捕获事件类型 |
| apps/api/spike/mem.ts | GET /spike/mem + POST /spike/mem/import / /spike/mem/sessions — 内存基线测量 |
| apps/web/next.config.ts | 仅 dev 生效的 /api/:path* → 127.0.0.1:4000/:path* rewrites(与 Caddy strip_prefix 语义一致;非样式改动) |
| CLAUDE.md | 新增「钉版本」段:pi SDK 包名与版本 |
| docs/architecture.md | 事件模式计数按实测回改(如有出入) |
| 本文件 | 实测数字回填 |
| # | 检查 | 命令 / 期望 |
|---|---|---|
| 1 | 钉版本 | apps/api/package.json 精确版本 0.84.3;lockfile 含该版本;CLAUDE.md「钉版本」段落地 |
| 2 | 真实 LLM 对话 | curl -N "127.0.0.1:4000/spike/ask?q=..." 流式返回 DeepSeek 真实回复(非 mock);Encore 请求 handler 内完成 createAgentSession({noTools:'all'}) → prompt() 全程 |
| 3 | 34 事件订阅 | /spike/events/audit:34 个事件名全部 pi.on 订阅成功;四模式计数与实测一致;对话后至少捕获 agent/turn/message/provider 生命周期事件,每条含 {eventType, mode, timestamp, data} |
| 4 | 模式计数核对 | 实测计数 vs docs/architecture.md(notify 18 / veto 6 / chain 7 / takeover 2,合计 33 ≠ 34,已知有出入)→ 以实测回改文档 |
| 5 | SSE 直连不缓冲 | curl -N 127.0.0.1:4000/spike/ask?... 与 /spike/trace/stream 均逐事件到达(非整体一次性);对话进行中 trace 流实时出事件 |
| 6 | SSE 经 Next dev proxy | 同上两条经 localhost:3000/api/spike/... 逐事件到达、长连接不断流 |
| 7 | 内存基线 | import 增量、单活跃会话增量、10 轮 create/dispose 后 RSS 回落数字全部回填本文件「本轮实测」 |
| 8 | 凭据不泄漏 | 抽查两条 SSE 原始输出:无 Authorization/api-key/key 明文;仓库 diff 无任何 key 片段 |
| 9 | 编译 | dev.ps1 check 通过 |
同一验收项针对性整改后连续 2 次验证仍不过 → 写 rounds/round-01/BLOCKED.md,停下呼人(重点预案:sidecar 形态重评估)。
验收逐项(2026-08-28,本机 Windows,encore v1.57.13,node v24.11.1):
踩坑与实测发现:
与计划的偏离: