explicit-identity
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseExplicit Identity Across Boundaries
跨边界的显式身份标识
Never rely on "latest" or "current" when crossing process or async boundaries.
在跨越进程或异步边界时,绝不要依赖“latest(最新)”或“current(当前)”这类模糊标识。
Pattern
模式
Pass explicit identifiers through the entire pipeline. "Most recent" is a race condition.
在整个流程中传递显式标识符。“最新的”这种表述会引发竞态条件。
DO
正确做法
- Pass when spawning processes
--session-id $ID - Store IDs in state files for later correlation
- Use full UUIDs, not partial matches
- Keep different ID types separate (don't collapse concepts)
- 生成进程时传递参数
--session-id $ID - 将ID存储在状态文件中,以便后续关联
- 使用完整的UUID,不要使用部分匹配
- 区分不同类型的ID(不要混淆概念)
DON'T
错误做法
- Query for "most recent session" at execution time
- Assume the current context will still be current after await/spawn
- Collapse different ID types:
- = Claude Code session (human-facing)
session_id - = Braintrust trace (query key)
root_span_id - = Braintrust turn within session
turn_span_id
- 在执行时查询“最新会话”
- 假设await/生成操作后当前上下文仍然保持不变
- 混淆不同类型的ID:
- = Claude Code会话(面向用户)
session_id - = Braintrust追踪(查询键)
root_span_id - = 会话内的Braintrust轮次
turn_span_id
Example
示例
typescript
// BAD: race condition at session boundaries
spawn('analyzer', ['--learn']) // defaults to "most recent"
// GOOD: explicit identity
spawn('analyzer', ['--learn', '--session-id', input.session_id])typescript
// 错误:会话边界存在竞态条件
spawn('analyzer', ['--learn']) // 默认使用“最新会话”
// 正确:显式身份标识
spawn('analyzer', ['--learn', '--session-id', input.session_id])Source Sessions
来源会话
- 1c21e6c8: Defined session_id vs root_span_id distinction
- 6a9f2d7a: Fixed wrong-session attribution via explicit passing
- a541f08a: Confirmed pattern prevents race at session boundaries
- 1c21e6c8:定义了session_id与root_span_id的区别
- 6a9f2d7a:通过显式传递修复了会话归属错误
- a541f08a:确认该模式可避免会话边界的竞态问题