Agent 为什么不能只保存最终答案:从游戏验证项目讲 Trace、Evidence 与可回放性
从游戏变更验证 Agent 的文件化工作流出发,解释为什么 Agent 系统需要记录模型调用、状态变化、候选历史、工具证据与失败样本,以及 Trace、Evidence、Checkpoint 和 Replay 之间的区别。
Latest notes
从代码路径出发,记录系统如何工作,以及为什么这样取舍。
从游戏变更验证 Agent 的文件化工作流出发,解释为什么 Agent 系统需要记录模型调用、状态变化、候选历史、工具证据与失败样本,以及 Trace、Evidence、Checkpoint 和 Replay 之间的区别。
从游戏变更验证 Agent 的实际工作流出发,解释 Human-in-the-loop、确定性校验、Policy Gate、有限动作空间和运行预算分别解决什么问题,以及为什么模型输出合法并不等于可以执行。
从游戏变更验证 Agent 的 EngineRunner 与确定性工具出发,解释 Tool Calling 解决什么问题、MCP 又标准化了什么,以及内部函数什么时候值得进一步封装成 MCP Tool。
从游戏变更验证 Agent 的真实工作流出发,解释 Agent Loop 中模型、状态、工具、观察结果与终止条件分别承担什么职责,以及为什么真正可控的 Agent 必须有边界。
从 ModelGate 的 Provider 级并发治理出发,解释为什么 goroutine 很轻量仍然需要限制并发、Semaphore 与限流器有什么区别,以及流式请求为什么必须一直占用并发额度。
从 ModelGate 的非流式模型请求出发,解释 Idempotency-Key、请求指纹、pending/completed 状态机、并发冲突与结果重放,以及为什么幂等并不等于 exactly-once。
从 ModelGate 的 Provider 治理出发,解释 Circuit Breaker 的 CLOSED、OPEN、HALF_OPEN 三种状态、滑动窗口失败率、探测请求,以及它与 Retry、路由和流式请求之间的边界。
从 ModelGate 的上游模型调用出发,解释整体超时、单次尝试超时、可重试错误分类、指数退避与 Full Jitter,以及为什么重试本身也可能放大故障。
从 LabReserve 的设备资源缓存出发,解释 Cache Aside 的读写路径、TTL、缓存失效、Redis 故障降级,以及缓存与数据库为什么很难做到强一致。
从 LabReserve 的重复预约与取消后重约出发,解释为什么应用层检查不能替代数据库唯一约束,以及生成列、NULL 唯一性和业务幂等之间的关系。
从 30 个用户同时争抢 2 个名额的场景出发,解释 LabReserve 如何使用 InnoDB 事务、行锁、READ COMMITTED 与唯一约束处理并发预约。
从一次并发超发出发,解释 ModelGate 如何用 Redis Lua 和统一时间源实现分布式 Token Bucket,以及它与并发控制的边界。
从 ModelGate 的流式代理实现出发,解释 SSE 的响应边界、首帧前后错误处理、Flush、Context 取消与资源释放。
从最简单的模型 API 调用出发,记录 ModelGate 如何逐步加入流式代理、限流、幂等、路由、重试、熔断、可观测性与工程化验证。