Files
ai-agent-book/book-ko/images/fig5-7.svg
T
liqiang b119135836
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
2026-08-20 13:12:50 +00:00

69 lines
19 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 40 880 520" width="880" height="520" style="background:#ffffff">
<defs><marker id="ah" markerWidth="12" markerHeight="8" refX="12" refY="4" orient="auto"><polygon points="0 0, 12 4, 0 8" fill="#333333"/></marker><marker id="ah-light" markerWidth="12" markerHeight="8" refX="12" refY="4" orient="auto"><polygon points="0 0, 12 4, 0 8" fill="#999999"/></marker></defs>
<rect x="20" y="60" width="250" height="160" rx="6" fill="#ffffff" stroke="#333333" stroke-width="2" stroke-dasharray="8,4"/>
<text x="145" y="82" font-family="Arial, 'Apple SD Gothic Neo', 'Noto Sans CJK KR', 'Noto Sans KR', 'Malgun Gothic', 'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="20" fill="#333333" text-anchor="middle" dominant-baseline="central" font-weight="bold">① 로그 수집</text>
<rect x="30" y="98" width="230" height="122" rx="3" fill="#f5f5f5" stroke="#999999" stroke-width="2"/>
<text x="38" y="112" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central">trajectory_001.json:</text>
<text x="38" y="126" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> {&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:</text>
<text x="38" y="140" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> &quot;주문 #12345 취소해 줘&quot;}</text>
<text x="38" y="154" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> {&quot;role&quot;:&quot;assistant&quot;,</text>
<text x="38" y="168" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> &quot;tool_call&quot;:&quot;cancel_order&quot;}</text>
<text x="38" y="182" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> {&quot;role&quot;:&quot;tool&quot;,&quot;result&quot;:</text>
<text x="38" y="196" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> &quot;ERROR: no insurance&quot;}</text>
<text x="38" y="210" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> → 에이전트가 원인을 알리지 않음</text>
<line x1="270" y1="140" x2="310" y2="140" stroke="#333333" stroke-width="2" marker-end="url(#ah)"/>
<rect x="310" y="60" width="260" height="160" rx="6" fill="#ffffff" stroke="#333333" stroke-width="2" stroke-dasharray="8,4"/>
<text x="440" y="82" font-family="Arial, 'Apple SD Gothic Neo', 'Noto Sans CJK KR', 'Noto Sans KR', 'Malgun Gothic', 'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="20" fill="#333333" text-anchor="middle" dominant-baseline="central" font-weight="bold">② LLM 분석</text>
<text x="320" y="100" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central">입력: 궤적 + 아키텍처 문서 + PRD</text>
<text x="320" y="114" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"></text>
<text x="320" y="128" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central">분석 기준:</text>
<text x="320" y="142" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> - 실행 흐름이 예상과 일치하는가</text>
<text x="320" y="156" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> - 도구 호출이 정확한가</text>
<text x="320" y="170" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> - 오류 처리가 적절한가</text>
<text x="320" y="184" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> - 사용자 경험이 만족스러운가</text>
<text x="320" y="198" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"></text>
<text x="320" y="212" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central">→ 편차 발생 단계와 모듈 식별</text>
<line x1="570" y1="140" x2="610" y2="140" stroke="#333333" stroke-width="2" marker-end="url(#ah)"/>
<rect x="610" y="60" width="250" height="160" rx="6" fill="#ffffff" stroke="#333333" stroke-width="2" stroke-dasharray="8,4"/>
<text x="735" y="82" font-family="Arial, 'Apple SD Gothic Neo', 'Noto Sans CJK KR', 'Noto Sans KR', 'Malgun Gothic', 'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="20" fill="#333333" text-anchor="middle" dominant-baseline="central" font-weight="bold">③ 구조화 보고서</text>
<rect x="620" y="98" width="230" height="108" rx="3" fill="#f5f5f5" stroke="#999999" stroke-width="2"/>
<text x="628" y="112" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central">문제 보고서:</text>
<text x="628" y="126" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> 우선순위: P1 (사용자 이탈 위험)</text>
<text x="628" y="140" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> 모듈: cancellation_handler</text>
<text x="628" y="154" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> 설명: 취소 실패 후 사용자에게</text>
<text x="628" y="168" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> 원인과 대안을 설명하지 않음</text>
<text x="628" y="182" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> 제안: 실패 원인 설명과</text>
<text x="628" y="196" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="9" fill="#333333" text-anchor="start" dominant-baseline="central"> 보험 구매 안내 추가</text>
<line x1="440.0" y1="220" x2="440.0" y2="260" stroke="#333333" stroke-width="2" marker-end="url(#ah)"/>
<rect x="60" y="260" width="370" height="160" rx="6" fill="#ffffff" stroke="#333333" stroke-width="2" stroke-dasharray="8,4"/>
<text x="245" y="282" font-family="Arial, 'Apple SD Gothic Neo', 'Noto Sans CJK KR', 'Noto Sans KR', 'Malgun Gothic', 'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="20" fill="#333333" text-anchor="middle" dominant-baseline="central" font-weight="bold">④ 회귀 테스트 생성</text>
<rect x="70" y="298" width="350" height="150" rx="3" fill="#f5f5f5" stroke="#999999" stroke-width="2"/>
<text x="78" y="312" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central">def test_cancel_no_insurance():</text>
<text x="78" y="326" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> &quot;&quot;&quot;궤적 #001, 턴 3~5&quot;&quot;&quot;</text>
<text x="78" y="340" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> # 재생: 사용자가 이코노미 취소 요청</text>
<text x="78" y="354" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> resp = agent.run(</text>
<text x="78" y="368" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> &quot;주문 #12345 취소해 줘&quot;)</text>
<text x="78" y="382" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> # 검증: 원인을 설명해야 함</text>
<text x="78" y="396" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> assert &quot;보험&quot; in resp.text</text>
<text x="78" y="410" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> assert &quot;대안&quot; in resp.text</text>
<text x="78" y="424" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> # 검증: 오류만 반환하면 안 됨</text>
<text x="78" y="438" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> assert &quot;ERROR&quot; not in resp.text</text>
<line x1="430" y1="340" x2="470" y2="340" stroke="#333333" stroke-width="2" marker-end="url(#ah)"/>
<rect x="470" y="260" width="380" height="160" rx="6" fill="#ffffff" stroke="#333333" stroke-width="2" stroke-dasharray="8,4"/>
<text x="660" y="282" font-family="Arial, 'Apple SD Gothic Neo', 'Noto Sans CJK KR', 'Noto Sans KR', 'Malgun Gothic', 'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="20" fill="#333333" text-anchor="middle" dominant-baseline="central" font-weight="bold">⑤ GitHub Issue 자동 생성</text>
<rect x="480" y="298" width="360" height="136" rx="3" fill="#f5f5f5" stroke="#999999" stroke-width="2"/>
<text x="488" y="312" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central">gh issue create \</text>
<text x="488" y="326" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> --title &quot;P1: 취소 실패 시</text>
<text x="488" y="340" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> 사용자 안내 누락&quot; \</text>
<text x="488" y="354" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> --body &quot;**문제**: 에이전트가</text>
<text x="488" y="368" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> cancel_order 실패 뒤 오류만</text>
<text x="488" y="382" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> 반환하고 원인을 설명하지 않음...</text>
<text x="488" y="396" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> **궤적**: #001 턴 3~5</text>
<text x="488" y="410" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> **테스트**: test_cancel_...&quot; \</text>
<text x="488" y="424" font-family="'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans Mono CJK KR', 'D2Coding', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Courier New', Courier, monospace" font-size="10" fill="#333333" text-anchor="start" dominant-baseline="central"> --assignee @backend-team</text>
<rect x="100" y="445" width="680" height="44" rx="6" fill="#999999" stroke="#333333" stroke-width="2"/>
<text x="440.0" y="460" font-family="Arial, 'Apple SD Gothic Neo', 'Noto Sans CJK KR', 'Noto Sans KR', 'Malgun Gothic', 'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="20" fill="#ffffff" text-anchor="middle" dominant-baseline="central" font-weight="bold">엔드투엔드 자동화: 로그 → 분석 → 보고서 → 테스트 → Issue</text>
<text x="440.0" y="480" font-family="Arial, 'Apple SD Gothic Neo', 'Noto Sans CJK KR', 'Noto Sans KR', 'Malgun Gothic', 'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="14" fill="#ffffff" text-anchor="middle" dominant-baseline="central" font-weight="normal">MCP로 GitHub 연동 · 테스트 프레임워크로 자동 재생·검증</text>
<text x="440.0" y="530" font-family="Arial, 'Apple SD Gothic Neo', 'Noto Sans CJK KR', 'Noto Sans KR', 'Malgun Gothic', 'PingFang SC', 'Microsoft YaHei', sans-serif" font-size="16" fill="#666666" text-anchor="middle" dominant-baseline="central" font-weight="bold">수작업 진단 비용을 시간 단위에서 분 단위로 단축</text>
</svg>