diff --git a/agent-roadmap/phase/knowledge-tool-optimization-extension/PHASE.md b/agent-roadmap/phase/knowledge-tool-optimization-extension/PHASE.md index 355f6ff..829e549 100644 --- a/agent-roadmap/phase/knowledge-tool-optimization-extension/PHASE.md +++ b/agent-roadmap/phase/knowledge-tool-optimization-extension/PHASE.md @@ -15,7 +15,7 @@ Ollama serving 경로와 운영 기반이 안정화된 뒤, 단계 호출, tool/ 완료된 Milestone은 archive 경로를 가리키고, 검토중, 진행중, 계획, 스케치 또는 보류 Milestone은 이 Phase 하위 `milestones/` 경로를 가리킨다. 완료, 검토중, 진행중, 계획, 스케치 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. -- [계획] Tool Call Runtime 검증 재시도 MVP +- [검토중] Tool Call Runtime 검증 재시도 MVP - 경로: `agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/tool-call-runtime-validation-retry.md` - 요약: 명시적 `tools[]`/`tool_choice` 계약이 있는 OpenAI-compatible 요청에서 IOP 내부 provider 응답의 마지막 tool call을 검증하고, schema 불일치 시 같은 요청을 bounded exact replay로 재시도하는 runtime-only MVP를 구현한다. diff --git a/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/tool-call-runtime-validation-retry.md b/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/tool-call-runtime-validation-retry.md index a0f81af..d4253e2 100644 --- a/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/tool-call-runtime-validation-retry.md +++ b/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/tool-call-runtime-validation-retry.md @@ -13,7 +13,7 @@ tool name 또는 `function.arguments`가 요청 schema와 맞지 않으면 calle ## 상태 -[계획] +[검토중] ## 승격 조건 @@ -43,21 +43,21 @@ tool name 또는 `function.arguments`가 요청 schema와 맞지 않으면 calle 명시적 schema가 있는 요청에서 모델 응답의 tool call shape를 runtime이 결정적으로 검증하고 재시도하는 capability를 묶는다. -- [ ] [contract-detect] `tools[]`가 있는 OpenAI-compatible 요청을 runtime validation 대상으로 판정하고 `tool_choice: none` 등 검증 제외 조건을 정리한다. -- [ ] [candidate-normalize] native `tool_calls`와 IOP text fallback 결과를 tool name, arguments, origin, raw payload를 가진 공통 후보로 정규화한다. -- [ ] [schema-validate] 요청 tool schema를 기준으로 tool name, arguments JSON parse, required/type/object/array/enum/additionalProperties subset을 검증한다. -- [ ] [exact-retry] validation 실패가 응답 방출 전 발견되면 같은 요청을 bounded exact replay로 재제출하고, 새 attempt run과 원 요청의 상관관계를 남긴다. -- [ ] [failure-surface] retry 한도 초과 또는 재시도 불가 경로에서는 malformed tool call을 그대로 성공 응답으로 내보내지 않고 OpenAI-compatible 실패로 구분한다. -- [ ] [validation-tests] runtime validation, retry 성공, retry 한도 초과, stream 제외 또는 buffer 경로를 테스트한다. 검증: `go test ./apps/edge/internal/openai` +- [x] [contract-detect] `tools[]`가 있는 OpenAI-compatible 요청을 runtime validation 대상으로 판정하고 `tool_choice: none` 등 검증 제외 조건을 정리한다. +- [x] [candidate-normalize] native `tool_calls`와 IOP text fallback 결과를 tool name, arguments, origin, raw payload를 가진 공통 후보로 정규화한다. +- [x] [schema-validate] 요청 tool schema를 기준으로 tool name, arguments JSON parse, required/type/object/array/enum/additionalProperties subset을 검증한다. +- [x] [exact-retry] validation 실패가 응답 방출 전 발견되면 같은 요청을 bounded exact replay로 재제출하고, 새 attempt run과 원 요청의 상관관계를 남긴다. +- [x] [failure-surface] retry 한도 초과 또는 재시도 불가 경로에서는 malformed tool call을 그대로 성공 응답으로 내보내지 않고 OpenAI-compatible 실패로 구분한다. +- [x] [validation-tests] runtime validation, retry 성공, retry 한도 초과, stream 제외 또는 buffer 경로를 테스트한다. 검증: `go test ./apps/edge/internal/openai` ## 완료 리뷰 -- 상태: 없음 -- 요청일: 없음 -- 완료 근거: 계획 Milestone이며 기능 Task가 아직 충족되지 않았다. -- 검토 항목: 기능 Task와 검증 통과, 구현 잠금 해제 유지, malformed tool call 비노출 확인 +- 상태: 검토중 +- 요청일: 2026-07-03 +- 완료 근거: `agent-task/archive/2026/07/m-tool-call-runtime-validation-retry/complete.log`의 Roadmap Completion에서 `contract-detect`, `candidate-normalize`, `schema-validate`, `exact-retry`, `failure-surface`, `validation-tests`가 모두 PASS로 기록되었다. +- 검토 항목: `go test -count=1 ./apps/edge/internal/openai`, `go test -count=1 ./apps/edge/...` PASS. 구현 잠금은 해제이며 남은 결정 필요와 SDD gate는 없다. - agent-ui 상태 반영: 해당 없음 -- 리뷰 코멘트: 없음 +- 리뷰 코멘트: 완료 archive 전 최종 확인 후보이다. ## 범위 제외