Identifiers and Ordering
이벤트와 노드를 구분하는 식별자와, 그래프의 순서를 정하는 규칙입니다.
그래프의 모든 규칙은 “무엇이 먼저 관찰됐는가”에 기대고 있습니다. 이 페이지에서는 순서를 정하는 방법, 후보 범위를 정하는 단위, 이벤트를 서로 연결하는 식별자를 설명합니다.
Collector는 엔진이 받은 이벤트마다 순번을 매기고 노드를 만듭니다. 그래프에서 어느 노드가 먼저인지는 이 순번, 즉 엔진이 관찰한 순서로 정합니다.
간선은 항상 먼저 관찰된 노드를 향합니다. 의존받는 쪽이 반드시 먼저 관찰된 노드여야 하므로 그래프에는 순환이 생기지 않습니다(DAG).
같은 값이 여러 곳에 그대로 적혀 있으면 가장 먼저 나온 곳을 출처로 봅니다. 앞서 읽은 문서의 값이 도구 결과를 한 번 거치면서 출처가 바뀌는 것(세탁)을 막기 위해서입니다.
세션, 턴, 묶음
Section titled “세션, 턴, 묶음”부모 후보를 고르는 범위는 세 단위로 정합니다.
| 후보 | 범위 |
|---|---|
| 요청 | 같은 세션의 최근 요청 5개 |
| 앞선 할 일 | 같은 턴의 앞선 할 일 5개 |
| 호출이 수행하는 할 일 | 같은 턴, 같은 묶음의 직전 할 일 |
| 직전 오류 | 바로 앞 묶음의 오류 |
CLEAN과 EXPOSED도 세션 단위로 정합니다.
엔진은 훅 이벤트의 종류를 요청 본문의 hook_event_name으로 구분합니다. 이 방식은 이번 명세에서 정한 초안입니다.
tool_use_id는 호출과 그 결과를 연결하는 열쇠입니다. PostToolUse로 들어온 결과는 tool_use_id로 원래 호출을 찾아 produced_by로 연결합니다. agentgateway도 MCP 호출의 판정을 tool_use_id로 조회합니다.
- 순번의 형식. 세션마다 새로 시작하는지 등을 정해야 합니다.
- 거의 같은 시각에 들어온 이벤트의 순서를 정하는 방법.
- 세션, 턴, 묶음의 경계. 묶음 경계는 PostToolBatch로 정할 수 있는지 봐야 하는데, PostToolBatch가 묶음 경계에서 정확히 오는지 아직 확인하지 못했습니다.
- agentgateway에서
tool_use_id를 담는claudecode/toolUseId가 공식으로 약속된 필드인지. - 노드, 간선, Provenance Record의 식별자 형식.
- 훅별 필드 모양. 수집 기록을 본 뒤 확정합니다.
