名称: 显式身份 描述: 跨边界显式身份 用户可调用: false
跨边界显式身份
在跨进程或异步边界时,永远不要依赖“最新”或“当前”。
模式
在整个管道中传递显式标识符。“最近”是一种竞态条件。
执行
- 在生成进程时传递
--session-id $ID - 将 ID 存储在状态文件中以便后续关联
- 使用完整的 UUID,而不是部分匹配
- 保持不同的 ID 类型分离(不要混淆概念)
避免
- 在执行时查询“最近会话”
- 假设当前上下文在 await/spawn 后仍然当前
- 混淆不同的 ID 类型:
session_id= Claude Code 会话(面向人类)root_span_id= Braintrust 追踪(查询键)turn_span_id= Braintrust 会话内的轮次
示例
// 坏:会话边界处的竞态条件
spawn('analyzer', ['--learn']) // 默认为“最近”
// 好:显式身份
spawn('analyzer', ['--learn', '--session-id', input.session_id])
源会话
- 1c21e6c8: 定义了 session_id 与 root_span_id 的区别
- 6a9f2d7a: 通过显式传递修复了错误会话归属
- a541f08a: 确认模式防止了会话边界处的竞态条件