fix(events): 全链缺时间/关联元数据——事件、SSE 帧、span、日志拼不回同一条时间线
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 32/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- rust
- Domain
- observability
Research direction
Start with the AgentEvent enum at src/event.rs:28-275 to see every variant that would need ts_ms/seq/session_id/turn, then read the SSE framing at src/handlers.rs:1329-1352, where no id: is set despite the step-concatenation advice. Cross-check the per-turn step counter at src/run_core.rs:1331 and the dead Span::current().record at src/runtime.rs:266-272 alongside the agent.turn log at runtime.rs:332-336. Done means events carry a monotonic seq and wall clock, SSE frames emit id:, and the host builds a per-turn span with field::Empty declarations so spans and logs join on session_id. Runtime verification needs Langfuse (#124).
Written by the indexing model from the issue text.
Description
场景 gap 单(okguitar 提报)· 优先级 P1 · 依赖:无 · 验收:代码 diff 逐点核对;运行时可见性另需 Langfuse(#124)
基线 origin/main = fc29f3d4。(与 #97 互补:即便补 Last-Event-ID,id 也不含墙钟与回合语义。)
Summary
AgentEvent全枚举(src/event.rs:28-275)无 timestamp/seq/turn/session_id;step每 turn 从 1 重数(run_core.rs:1331),而 SSE 注释教客户端"concatenate deltas keyed on step"(handlers.rs:1350-1352)——goal-loop 多 turn 时 step 撞号。- SSE 帧
Event::default().event(t).data(d)无id:(handlers.rs:1329-1332)。 Span::current().record("session_id", ...)(src/runtime.rs:266-272)是死写入——全仓无field::Empty声明、宿主不建 root span,tracing 对未声明字段静默忽略;agent.run.complete日志(run_core.rs:647-655)无 session 字段——多会话 HTTP 服务里agent.turn: finished(runtime.rs:332-336)无法归属。
建议
事件统一 envelope(ts_ms + 单调 seq + session_id + turn),SSE id: 直接承载;宿主建 per-turn span 并声明字段后 record。
- Dominant language
- Rust
- Stars
- 4
- Forks
- 0
- Avg merge
- 5h 32m
- Merged PRs (30d)
- 7
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from jeffkit/recursive
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 66/100
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
jeffkit/recursive#134 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 30/100
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
jeffkit/recursive#131 · 1 comment ·
Maintainers usually reply within 1 day
All issues in jeffkit/recursive
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 4 days
-
`future_into_py` loses the original panic messagePossibly taken @Danipulok claimed this today. Open
Difficulty 1/5 Under an hour Newbie friendliness 90/100
PyO3/pyo3-async-runtimes#91 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 2 days