Skip to content

feat(kiro-desktop-session): emit STEP/LLM/TOOL spans for multi-turn ReAct (#5)#165

Open
rangemer333-cell wants to merge 1 commit into
mainfrom
age-966-kiro-desktop-session
Open

feat(kiro-desktop-session): emit STEP/LLM/TOOL spans for multi-turn ReAct (#5)#165
rangemer333-cell wants to merge 1 commit into
mainfrom
age-966-kiro-desktop-session

Conversation

@rangemer333-cell

Copy link
Copy Markdown
Collaborator

背景

AGE-966 Kiro 桌面端 pilot plugin 采集开发:将 Kiro CDP 通道产出的对话事件接入 loongsuite-pilot,输出符合 ARMS GenAI 语义规范的 OTel trace。CDP 外挂采集模式(非 shell hook / 进程内 plugin)。

核心改动(CP5: STEP/LLM/TOOL + 多轮 ReAct)

  • src/inputs/kiro-desktop-session/kiro-desktop-session-input.ts — 重写为 batch 处理:按 payload.executionId 分组轮次,按记录顺序生成 STEP/LLM/TOOL spans;新增跨 batch 轮次状态持久化(loadTurnState/saveTurnState);tool_call 时间戳自动后移避免 0ms duration;轮次无 assistant Say 时合成 final text-only Say(过 last_step_no_tool_call);TextPart 用 content 字段满足 schema;standalone 用户记录 attach 到下一轮 ENTRY,standalone session_event 丢弃避免 spurious ENTRY+AGENT trace
  • tests/unit/inputs/kiro-desktop-session-input.test.ts — 新增 REACT_FIXTURE_LINES(2 轮、3 tool cycles、final Say),新增断言:3+ STEP / 3+ TOOL / 多轮 ReAct、tool.result 时间 > tool.call、step.id 共享、gen_ai.input.messages_delta / gen_ai.output.messages 非空、kiro_event_type 7 类全保留
  • scripts/e2e/run-ide-e2e.sh — 改为两次 CDP prompt:先 ReAct 多步 prompt(触发 3 个 tool_call),再 no-tool follow-up(保证最终 STEP 是 text-only)

CP1~CP3 已落(本轮未改,一并入库)

  • agents.d/kiro.jsonscripts/e2e/kiro-cdp-chat.pyscripts/e2e/kiro-e2e-config.json — agent 定义 + CDP 操控脚本 + E2E 配置
  • src/core/orchestrator.tssrc/flushers/otlp-trace-flusher.ts — orchestrator & OTLP flusher 增量

修改文件

文件 类型 说明
src/inputs/kiro-desktop-session/kiro-desktop-session-input.ts 新增 batch 处理 + STEP/LLM/TOOL span 生成
tests/unit/inputs/kiro-desktop-session-input.test.ts 新增 REACT_FIXTURE_LINES + 多轮 ReAct 断言
scripts/e2e/run-ide-e2e.sh 新增 两次 CDP prompt 驱动
scripts/e2e/kiro-cdp-chat.py 新增 CDP 操控脚本
scripts/e2e/kiro-e2e-config.json 新增 E2E 配置
agents.d/kiro.json 新增 agent 定义
src/core/orchestrator.ts 修改 +23 行
src/flushers/otlp-trace-flusher.ts 修改 +65 行

准出 5 条硬门禁(详见 issue comment ba04a09b)

  1. 单测 PASSnpx vitest run tests/unit/inputs/kiro-desktop-session-input.test.ts tests/unit/flushers → 14 文件 / 119 用例全 PASS(Kiro 15/15 + flushers 104/104)
  2. 真实触发 Kiro CDP 9222PILOT_DATA_DIR=/tmp/pilot-kiro-age966-5 KIRO_E2E_TIMEOUT=120 bash scripts/e2e/run-ide-e2e.sh → 产出真实 OTLP/normalized JSONL(非手工构造)
  3. validate-trace 0 ERRORSummary: 2 traces, 17 spans ✅ Pass: 64 ⚠️ Warn: 0 ❌ Error: 0 ⏭️ Skipped: 0 Verdict: PASS
  4. 多轮 ReAct(3+ STEP、2+ TOOL):trace 1 = 1 ENTRY + 1 AGENT + 4 STEPs + 4 LLMs + 3 TOOLs;trace 2 = 1 ENTRY + 1 AGENT + 1 STEP + 1 LLM
  5. gen_ai.input.messages / gen_ai.output.messages 非空:5 LLM spans,全部含 input.messages 和 output.messages(5/5/5)

Closes AGE-966.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant