한 줄 목표
Server가 Prompt나 Provider를 직접 소유하지 않고, 비식별 요청을 별도 AI Runtime에
정확히 한 번 전달한 뒤 응답을 불신 경계에서 다시 검증합니다.
호출 경계
AiRunWorker (#24)
→ ValidatingAiRuntimeClient
→ RemoteAiRuntimeClient
→ POST /internal/v1/analyses (fowoco/ai)
→ Agent Pipeline → pinned Knowledge Bundle → LLM Provider
Server는 요청 최소화, 서비스 인증, deadline과 장애 격리, 응답의 최종 방어 검증을
소유합니다. Prompt·모델·Provider 연동은 fowoco/ai 책임입니다.
내부 요청 계약
- Header:
Authorization: Bearer <service-credential>, X-Request-Id, 선택적 traceparent
- Body:
requestId, attemptId, contractVersion, requiredKnowledgeVersion,
deadlineMs, maskedInput
- Worker 정보: 원문 식별번호가 아닌
workerRef, language, stayExpiryDate,
workStatus 등 최소 context
별도 Service-Authorization custom header는 사용하지 않습니다. 실제 외국인등록번호,
여권번호, 전화번호, 계좌번호, JWT, Worker Link token은 AI 경계로 보내지 않습니다.
내부 응답 계약
requestId, outcome, candidates, validationErrors
agentVersion, modelProvider, modelName, modelVersion
promptVersion, contextPackVersion, workflowCatalogVersion, contractVersion
providerAttemptCount, latencyMs
낮은 신뢰도와 누락정보는 기술 장애가 아니라 정상 NEEDS_INFO/REVIEW_REQUIRED
분석 결과입니다. HTTP·timeout·parsing 장애는 안전한 AiRuntimeFailureCode로 구분합니다.
Server 구현 현황
구현 PR:
Retry 소유권
- Server: 영속 AiRun attempt 생성, 재시작 복구, 사용자 수동 retry, 전체 deadline/budget
- AI Runtime: 한 attempt 안에서만 제한된 Provider retry
RemoteAiRuntimeClient는 투명한 HTTP retry를 하지 않습니다. 다시 호출하려면 #24가
새로운 AiAttempt를 먼저 기록해야 합니다.
이 이슈에서 하지 않는 것
- Prompt/Context 조립, Agent Router, Intent 추출
- OpenAI/Gemini/Anthropic/LM Studio client
- 모델 선택·fallback·fine-tuning·evaluation runner
- Knowledge YAML/Schema 원본 소유
- Task 생성·승인·발송
위 항목은 각각 fowoco/ai, fowoco/knowledge, Server #24/#11의 책임입니다.
완료 조건
관계
한 줄 목표
Server가 Prompt나 Provider를 직접 소유하지 않고, 비식별 요청을 별도 AI Runtime에
정확히 한 번 전달한 뒤 응답을 불신 경계에서 다시 검증합니다.
호출 경계
Server는 요청 최소화, 서비스 인증, deadline과 장애 격리, 응답의 최종 방어 검증을
소유합니다. Prompt·모델·Provider 연동은
fowoco/ai책임입니다.내부 요청 계약
Authorization: Bearer <service-credential>,X-Request-Id, 선택적traceparentrequestId,attemptId,contractVersion,requiredKnowledgeVersion,deadlineMs,maskedInputworkerRef, language, stayExpiryDate,workStatus 등 최소 context
별도
Service-Authorizationcustom header는 사용하지 않습니다. 실제 외국인등록번호,여권번호, 전화번호, 계좌번호, JWT, Worker Link token은 AI 경계로 보내지 않습니다.
내부 응답 계약
requestId,outcome,candidates,validationErrorsagentVersion,modelProvider,modelName,modelVersionpromptVersion,contextPackVersion,workflowCatalogVersion,contractVersionproviderAttemptCount,latencyMs낮은 신뢰도와 누락정보는 기술 장애가 아니라 정상
NEEDS_INFO/REVIEW_REQUIRED분석 결과입니다. HTTP·timeout·parsing 장애는 안전한
AiRuntimeFailureCode로 구분합니다.Server 구현 현황
AiRuntimeClientport와 Provider-neutral DTOFakeAiRuntimeClient— Server 단위·통합 테스트 전용RemoteAiRuntimeClient— Bearer service auth, request/trace propagationrequestId상관관계 재검증workerRef와 Server 기준stay_expiry_date보존 검증fowoco/ai원본 OpenAPI·JSON Schema release 후 동일 version fixture 확인구현 PR:
Retry 소유권
RemoteAiRuntimeClient는 투명한 HTTP retry를 하지 않습니다. 다시 호출하려면 #24가새로운 AiAttempt를 먼저 기록해야 합니다.
이 이슈에서 하지 않는 것
위 항목은 각각
fowoco/ai,fowoco/knowledge, Server #24/#11의 책임입니다.완료 조건
fowoco/ai의 versioned internal contract와 staging smoke test가 통과합니다.관계
fowoco/aiinternal contract, Knowledge release