<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AI 에이전트 Archives -</title>
	<atom:link href="https://blog.kwt.co.kr/tag/ai-%ec%97%90%ec%9d%b4%ec%a0%84%ed%8a%b8/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.kwt.co.kr/tag/ai-에이전트/</link>
	<description>여러분의 돈과 시간을 낭비하지마세요.</description>
	<lastBuildDate>Tue, 22 Sep 2026 00:12:59 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>

<image>
	<url>https://blog.kwt.co.kr/wp-content/uploads/2022/07/cropped-logo_bg-32x32.jpg</url>
	<title>AI 에이전트 Archives -</title>
	<link>https://blog.kwt.co.kr/tag/ai-에이전트/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>피그마 유료 좌석 없이 AI 에이전트 양방향 연결: Figwright 설치·보안·제거 직접 검증</title>
		<link>https://blog.kwt.co.kr/figwright-figma-mcp-install-security-removal/</link>
					<comments>https://blog.kwt.co.kr/figwright-figma-mcp-install-security-removal/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Sat, 12 Sep 2026 21:52:26 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[AI 에이전트]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[Codex]]></category>
		<category><![CDATA[Figma]]></category>
		<category><![CDATA[MCP]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/?p=2895</guid>

					<description><![CDATA[<p>Figma 공식 MCP의 유료 좌석 제약 없이 무료 플랜으로 디자인 읽기·쓰기를 지원하는 양방향 MCP 서버 Figwright를 격리 환경에 설치하고 도구 목록·보안 경계·제거까지 직접 검증했다.</p>
<p>The post <a href="https://blog.kwt.co.kr/figwright-figma-mcp-install-security-removal/">피그마 유료 좌석 없이 AI 에이전트 양방향 연결: Figwright 설치·보안·제거 직접 검증</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Figma MCP는 공식 서버가 유료 좌석에 묶여 있고, 무료 원격 서버는 곧 사용량 과금 전환이 예고된 상태다. Figwright는 무료 플랜만으로 읽기와 쓰기를 모두 지원하는 양방향 MCP 서버다. 피그마 시안을 프레임워크에 맞는 코드로 바꾸는 작업과, 반대로 코드·문장으로 피그마 캔버스에 화면을 그리는 작업을 Claude Code, Codex, Cursor에서 그대로 쓸 수 있다. 이 글은 격리 환경에서 설치·도구 목록 조회·보안 경계·제거까지 직접 검증한 결과를 정리한다.</p>



<h2 class="wp-block-heading">핵심 요약</h2>



<ul class="wp-block-list">
<li><strong>문제</strong>: Figma 공식 데스크톱 MCP 서버는 유료 플랜의 Dev/Full 좌석이 필요하고, 무료 원격 서버는 베타 이후 사용량 기반 유료 전환이 예고되어 있다.</li>

<li><strong>해결</strong>: Figwright는 로컬 MCP 서버와 피그마 플러그인을 WebSocket 릴레이로 연결한다. 디자인 읽기·쓰기 112개 도구를 무료 플랜에서 쓸 수 있다.</li>

<li><strong>검증 결과</strong>: npm 타르볼 sha512 무결성 일치, SLSA provenance(attestation) 확인, 원격 텔레메트리 없음, 릴레이 포트의 Origin/Host 헤더 검증 동작을 직접 확인했다.</li>

<li><strong>주의</strong>: 쓰기 도구는 피그마 파일을 변경하고 내보내기 도구는 에이전트가 지정한 경로에 파일을 쓴다. 악성 디자인이나 프롬프트 인젝션에 악용될 수 있으므로 MCP 클라이언트의 도구 승인 설정이 실제 방어선이다.</li>

<li><strong>판정</strong>: 피그마를 쓰는 프론트엔드 개발자에게 유용하고, 피그마를 디자인 소스로 쓰지 않는 백엔드 개발자는 설치할 이유가 없다.</li>
</ul>



<h2 class="wp-block-heading">Figwright란 무엇인가</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>항목</th><th>내용</th></tr></thead><tbody>
<tr><td>이름</td><td>Figwright (@figwright/mcp)</td></tr>
<tr><td>유형</td><td>로컬 MCP 서버 + 피그마 플러그인 (양방향)</td></tr>
<tr><td>공식 URL</td><td>https://github.com/awdr74100/figwright</td></tr>
<tr><td>라이선스</td><td>MIT</td></tr>
<tr><td>생성일</td><td>2026-06-18</td></tr>
<tr><td>최근 푸시</td><td>2026-09-12 (검증 시점 기준)</td></tr>
<tr><td>최신 릴리스</td><td>v0.5.0 (2026-08-30)</td></tr>
<tr><td>Stars / Forks</td><td>739 / 40 (2026-09-13 관측)</td></tr>
<tr><td>최근 증가</td><td>3일간 +22 (+7/일, 실측)</td></tr>
<tr><td>npm 주간 다운로드</td><td>433회 (2026-09-05~09-11)</td></tr>
</tbody></table></figure>




<p>이 표의 스타 수치는 2026-09-13 관측값이며, 증가율은 직전 스냅숏(2026-09-10 717개)과의 실측 차이다. 저장소 생성 90일 미만의 신생 프로젝트라 장기 추이는 아직 판단할 수 없다.</p>



<h2 class="wp-block-heading">왜 필요한가: 공식 Figma MCP의 제약</h2>



<p>Figma 공식 문서에 따르면 두 가지 제약이 있다.</p>



<ol class="wp-block-list">
<li><strong>데스크톱 MCP 서버는 유료 플랜의 Dev 또는 Full 좌석이 필요하다.</strong> 무료·프로 플랜의 일반 시트로는 로컬 서버를 쓸 수 없다.</li>

<li><strong>원격 서버는 모든 좌석에서 쓸 수 있지만 &#8220;AI 에이전트 지원은 결국 사용량 기반 유료 기능이 될 것&#8221;이라고 명시되어 있다.</strong> 현재는 베타 무료지만 과금 전환이 예고된 상태다.</li>
</ol>



<p>또한 공식 서버의 코드 생성은 읽기 중심이다. 에이전트가 피그마 캔버스에 직접 프레임·텍스트·컴포넌트를 만들거나 수정하는 쓰기 작업은 Figwright의 차별점이다.</p>



<h2 class="wp-block-heading">작동 구조와 데이터 경계</h2>



<p>Figwright는 세 부분으로 구성된다.</p>



<pre class="wp-block-code"><code>Claude Code / Codex / Cursor
        │ stdio (MCP)
        ▼
@figwright/mcp 서버 (npx 실행)
        │ 로컬 WebSocket · msgpack (127.0.0.1:3055)
        ▼
피그마 데스크톱/브라우저의 Figwright 플러그인
        │ Figma Plugin API
        ▼
      캔버스</code></pre>



<p>서버·릴레이·플러그인이 모두 내 컴퓨터에서 실행된다. 디자인 파일이 외부로 전송되지 않고, API 키도 필요 없다. 외부 호스트로 나가는 통신 코드가 번들에 없음을 직접 확인했다.</p>



<p>루프백 포트라도 웹 페이지가 로컬 포트에 접근할 수 있으므로(DNS 리바인딩), 릴레이는 두 가지 검증을 한다. <strong>Host 헤더</strong>가 루프백을 지칭해야 하고, <strong>Origin 헤더</strong>는 플러그인의 샌드박스 핸드셰이크만 허용한다.</p>



<h2 class="wp-block-heading">Claude Code 설치 방법</h2>



<p>Node.js 20.19+ 또는 22.12+가 필요하다 (18/21, 22.0~22.11은 미지원). 프로젝트 루트의 <code>.mcp.json</code>에 추가한다.</p>



<pre class="wp-block-code"><code>{
  "mcpServers": {
    "figwright": {
      "command": "npx",
      "args": ["-y", "@figwright/mcp@latest"]
    }
  }
}</code></pre>



<p>설치 시 바뀌는 것은 설정 파일의 서버 항목뿐이다. 전역 설치나 상주 프로세스는 없다.</p>



<h2 class="wp-block-heading">피그마 플러그인 설치</h2>



<p>플러그인은 아직 피그마 커뮤니티 마켓에 없다. GitHub 릴리스에서 zip을 받아 수동 등록한다.</p>



<ol class="wp-block-list">
<li>https://github.com/awdr74100/figwright/releases/latest 에서 <code>figwright-plugin-v0.5.0.zip</code>을 내려받아 압축을 푼다.</li>

<li>피그마 <strong>데스크톱 앱</strong>에서 메뉴 → Plugins → Development → Import plugin from manifest… 를 선택하고 압축 푼 폴더의 <code>manifest.json</code>을 지정한다.</li>

<li>Plugins → Development → Figwright를 열면 로컬 서버에 자동 연결되어 Connected 상태가 된다.</li>
</ol>



<p>데스크톱 앱이 필요한 이유는 개발 모드 플러그인 임포트가 데스크톱에서만 지원되기 때문이다. 피그마 플랜 자체는 무료로 충분하다.</p>



<h2 class="wp-block-heading">Codex와 기타 클라이언트 연결</h2>



<p>같은 MCP 설정 형식을 쓰는 클라이언트라면 동일하게 연결된다. Codex는 <code>~/.codex/config.toml</code>에 <code>[mcp_servers.figwright]</code> 항목으로, Cursor는 MCP 설정 UI에 같은 명령을 등록한다. Hermes Agent에서는 표준 MCP 서버 등록 절차를 따른다. 이번 검증에서는 Hermes 프로젝트 디렉터리가 격리 환경에 없어 자동 설치가 스킵되었음을 확인했다.</p>



<h2 class="wp-block-heading">스킬 설치(선택)</h2>



<p>에이전트가 적절한 순간에 Figwright를 찾도록 도우미 스킬 2종을 제공한다.</p>



<pre class="wp-block-code"><code>npx skills add awdr74100/figwright/skills</code></pre>



<ul class="wp-block-list">
<li><code>figma-codegen</code>: 피그마 선택 영역을 프로젝트 스택에 맞는 코드로 변환하는 워크플로</li>

<li><code>figma-build</code>: 코드나 설명에서 피그마 디자인을 만드는 워크플로</li>
</ul>



<p>설치 위치는 <code>~/.agents/skills/</code>다 (Universal 스킬 경로). 스킬은 서버가 연결되어 있어야 동작한다.</p>



<h2 class="wp-block-heading">112개 도구의 구성</h2>



<p>직접 서버를 실행해 <code>tools/list</code>를 조회한 결과 112개 도구가 노출된다.</p>



<ul class="wp-block-list">
<li><strong>읽기</strong>: 선택 영역·문서·노드 검사, 스타일·변수·컴포넌트 조회, 폰트, 반응·모션 상태, 스크린샷, 이미지 에셋, PDF·비디오 내보내기, 다중 파일 작업</li>

<li><strong>쓰기</strong>: 프레임·텍스트·모양 생성과 편집, 오토레이아웃, 이펙트, 스타일·변수·컴포넌트 제작, 페이지, 반응, 모션 애니메이션, 일괄 편집</li>

<li><strong>그라운딩</strong>: <code>get_design_context</code>(중복 제거된 디자인 컨텍스트), <code>component_map</code>/<code>token_map</code>/<code>icon_map</code>(피그마 데이터와 코드베이스 조인), <code>design_diff</code>(기준선 대비 변경 보고)</li>
</ul>



<p><code>component_map</code>은 피그마 컴포넌트를 로컬 코드 컴포넌트에 매핑하고 재사용 가능한 것을 알려준다. 스크린샷을 보고 범용 마크업을 생성하는 방식과 달리, 기존 컴포넌트·토큰을 재활용하는 코드를 만드는 것이 그라운딩 도구의 목적이다.</p>



<h2 class="wp-block-heading">기존 유명 도구와 비교: Figma 공식 MCP vs Figwright</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>항목</th><th>Figma 공식 MCP (데스크톱)</th><th>Figwright</th></tr></thead><tbody>
<tr><td>분류</td><td>직접 대체재</td><td>직접 대체재</td></tr>
<tr><td>요구 좌석</td><td>유료 플랜 Dev/Full 좌석</td><td>무료 플랜 가능</td></tr>
<tr><td>데이터 경로</td><td>로컬</td><td>로컬 (WebSocket 릴레이)</td></tr>
<tr><td>읽기</td><td>지원</td><td>지원 (그라운딩 도구 포함)</td></tr>
<tr><td>쓰기</td><td>제한적</td><td>지원 (캔버스 편집·생성)</td></tr>
<tr><td>도구 수</td><td>비공개</td><td>112개</td></tr>
<tr><td>스킬</td><td>공식 문서로 제공</td><td>figma-codegen·figma-build 제공</td></tr>
<tr><td>유지보수</td><td>Figma 공식</td><td>개인 개발자 (v0.5.0, 2026-08-30)</td></tr>
<tr><td>라이선스</td><td>상용</td><td>MIT</td></tr>
</tbody></table></figure>




<p>관계는 <strong>직접 대체재</strong>다. 유료 좌석이 없거나 쓰기 기능이 필요하면 Figwright를, 공식 지원과 안정성이 우선이면 공식 서버를 선택한다.</p>



<p>좌석이 이미 있다면: 공식 데스크톱 서버가 지원과 문서에서 앞선다. Figwright로 갈 이유는 쓰기 도구다.</p>



<p>좌석이 없다면: Figwright가 유료 없이 양방향 작업을 가능하게 하는 거의 유일한 선택지다.</p>



<p>공식 서버와 섞어 쓰기: 서버 이름을 다르게 지정하면 공식 원격 서버(읽기)와 Figwright(쓰기)를 동시에 연결할 수도 있다.</p>



<h2 class="wp-block-heading">안전한 복사·붙여넣기 설치 프롬프트</h2>



<p>아래 프롬프트를 Claude Code나 Codex에 붙여 넣으면 된다. 운영 환경에서는 버전을 고정하고, 비밀 입력이나 기존 설정 백업 없이 진행하지 않도록 요구한다.</p>



<pre class="wp-block-code"><code>Figwright MCP 서버를 설치해줘. 안전하게 진행해.

1. Node.js 버전을 확인해줘. 20.19+ 또는 22.12+가 아니면 먼저 알려주고 중단해.
2. 이 프로젝트의 .mcp.json을 먼저 백업한 뒤, figwright 서버 항목을 추가해:
   command: npx, args: ["-y", "@figwright/mcp@0.5.0"]
   (@latest 대신 0.5.0으로 버전을 고정해)
3. npm 레지스트리 무결성(sha512)과 provenance attestation이 있는지 확인했다고 알려줘.
4. MCP 연결 후 tools/list에서 112개 도구와 ping이 보이는지 확인하고 결과를 보여줘.
5. 쓰기 도구(create_, set_ 계열)는 승인 없이 실행되지 않도록 클라이언트 도구 승인 설정을 켜줘.
6. 내 API 키나 비밀번호를 묻지 마. 필요하면 중단하고 이유를 설명해.
7. 완료되면 설치된 파일 경로와 제거 방법을 안내해줘.</code></pre>



<p>제거는 설정 파일의 figwright 항목을 지우고, 스킬을 설치했다면 <code>npx skills remove figma-codegen</code>과 <code>npx skills remove figma-build</code>를 실행하면 끝난다. 피그마 개발 모드 플러그인은 피그마 앱에서 삭제한다. npx 캐시에만 존재하므로 전역 제거 대상은 없다.</p>



<h2 class="wp-block-heading">직접 검증한 내용과 검증하지 못한 내용</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" width="1000" height="560" src="https://blog.kwt.co.kr/wp-content/uploads/2026/09/figwright-verification.jpg" alt="Figwright 격리 환경 검증 세션 출력 요약: 서버 기동, 도구 112개 조회, 릴레이 403 거부, 스킬 제거" class="wp-image-2896" style="width:640px;height:auto"/><figcaption class="wp-element-caption">격리 환경 검증 세션의 실제 출력 요약<br>2026-09-13 직접 실행한 명령과 결과를 정리한 그림</figcaption></figure></div>


<p><strong>직접 검증함 (2026-09-13, 격리 홈 디렉터리)</strong>:</p>



<ul class="wp-block-list">
<li>npm 0.5.0 타르볼 sha512 무결성이 레지스트리 메타데이터와 attestation subject와 일치</li>

<li>SLSA provenance가 GitHub 태그 v0.5.0과 release.yml 워크플로를 가리킴</li>

<li>MCP stdio 핸드셰이크로 서버 기동, <code>tools/list</code>에서 112개 도구 확인</li>

<li>릴레이(127.0.0.1:3055)에 위조 Origin 요청 → 403 거부 확인</li>

<li>DNS 리바인딩 형태의 비루프백 Host 헤더 → 403 거부 확인</li>

<li>번들 정적 검사: 외부 텔레메트리·분석 엔드포인트 없음, child_process는 ps 프로세스 상태 조사용 1회(인자 배열, 셸 미경유)</li>

<li><code>npx skills add awdr74100/figwright/skills</code> 설치 → skills.sh 보안 스캔 Safe/0 alerts/Low Risk, <code>~/.agents/skills/</code>에 2개 스킬 설치 확인</li>

<li><code>npx skills remove</code>로 스킬 2개 제거 확인</li>

<li>실제 사용자 홈의 <code>.claude.json</code>, <code>.claude/settings.json</code>, <code>.codex/config.toml</code> 해시가 검증 전후 동일</li>
</ul>



<p><strong>검증하지 못함</strong>:</p>



<ul class="wp-block-list">
<li>피그마 앱·플러그인 연동 (피그마 데스크톱 앱과 GUI가 격리 환경에 없음)</li>

<li>실제 디자인→코드, 코드→디자인 변환 품질 (양방향 실사용 미실시)</li>

<li>대규모 파일·복잡한 컴포넌트에서의 성능과 안정성</li>

<li>Reddit 스레드 점수·댓글 상세 (이 서버 IP에서 Reddit이 HTML 셸만 반환)</li>
</ul>



<h2 class="wp-block-heading">유지보수 신호</h2>



<ul class="wp-block-list">
<li>2026-06-19 v0.1.0 이후 2026-08-30 v0.5.0까지 5회 릴리스 (월 1~2회)</li>

<li>최근 커밋이 2026-09-12까지 이어짐 (의존성 갱신, 그라운딩 안정화, 문서 개선)</li>

<li>CHANGELOG에 기능 개선·버그 수정이 PR 단위로 상세히 기록됨</li>

<li>오픈 이슈 1개, 열린 PR 0개 (2026-09-13 기준)</li>

<li>CI 워크플로 배지가 있고 npm 게시가 provenance와 함께 이루어짐</li>
</ul>



<p>단일 개발자 프로젝트라 버스 팩터는 낮다. 장기 유지보수 관점에서는 이 점을 감안해야 한다.</p>



<h2 class="wp-block-heading">유용한 경우와 추천하지 않는 경우</h2>



<p><strong>유용한 경우</strong>:</p>



<ul class="wp-block-list">
<li>유료 좌석 없이 피그마 시안을 실제 컴포넌트 코드로 받고 싶은 프론트엔드 개발자</li>

<li>에이전트가 피그마에 화면을 직접 그리게 하고 싶은 경우 (프로토타입 자동 생성)</li>

<li>기존 코드베이스의 컴포넌트·디자인 토큰을 재활용하는 코드를 원하는 경우</li>
</ul>



<p><strong>추천하지 않는 경우</strong>:</p>



<ul class="wp-block-list">
<li>피그마를 디자인 소스로 쓰지 않는 백엔드·인프라 개발자</li>

<li>이미 유료 Dev/Full 좌석이 있고 공식 지원이 필요한 팀</li>

<li>검증되지 않은 서드파티 로컬 서버를 허용하지 않는 보안 정책이 있는 조직</li>

<li>피그마 파일을 로컬 도구에 연결하는 것 자체가 금지된 환경</li>
</ul>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">Figwright는 무료인가?</h3>



<p>MIT 라이선스 오픈소스고 피그마 무료 플랜에서 동작한다. 서버·스킬 모두 무료다.</p>



<h3 class="wp-block-heading">공식 Figma MCP와 동시에 쓸 수 있나?</h3>



<p>가능하다. 서버 이름을 다르게 등록하면 된다. 공식 원격 서버의 읽기와 Figwright의 쓰기를 병행하는 방식도 있다.</p>



<h3 class="wp-block-heading">API 키가 필요한가?</h3>



<p>필요 없다. 피그마 세션 자체가 인증이고, MCP 연결은 로컬 stdio다.</p>



<h3 class="wp-block-heading">내 디자인 파일이 외부로 나가나?</h3>



<p>서버·릴레이·플러그인이 모두 로컬에서 실행된다. 번들에서 외부 텔레메트리 엔드포인트를 찾지 못했다. 다만 에이전트가 대화 컨텍스트로 디자인 데이터를 모델 제공자에 보내는 것은 MCP 서버가 통제하지 않는다.</p>



<h3 class="wp-block-heading">데이터 손실 위험은 없나?</h3>



<p>쓰기 도구는 피그마 파일을 변경한다. 피그마의 버전 히스토리가 복구 수단이지만, 중요 파일은 쓰기 도구 승인을 켜고 사용하는 것이 안전하다.</p>



<h3 class="wp-block-heading">스킬 설치 없이 쓸 수 있나?</h3>



<p>가능하다. 스킬은 도구를 적절한 순간에 찾도록 돕는 라우터일 뿐, 도구 자체는 서버 연결만으로 노출된다.</p>



<p>관련 글: <a href="https://blog.kwt.co.kr/skillspector-agent-skill-security-snyk-agent-scan/">Agent Skill 설치 전 보안 검사: SkillSpector vs Snyk Agent Scan</a>, <a href="https://blog.kwt.co.kr/coop-claude-code-codex-vm-isolation-install-security/">Trail of Bits coop 설치·보안·제거 검증</a></p>



<h2 class="wp-block-heading">공식 참고자료</h2>



<ul class="wp-block-list">
<li>GitHub 저장소: https://github.com/awdr74100/figwright</li>

<li>npm 패키지: https://www.npmjs.com/package/@figwright/mcp</li>

<li>릴리스: https://github.com/awdr74100/figwright/releases</li>

<li>보안 문서: https://github.com/awdr74100/figwright/blob/main/SECURITY.md</li>

<li>Figma 공식 MCP 가이드: https://help.figma.com/hc/ko/articles/32132100833559</li>

<li>MCP 보안 모범 사례: https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices</li>
</ul>

		<div class="wpulike wpulike-robeen " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="2895"
					data-ulike-nonce="a58aa9ef39"
					data-ulike-type="post"
					data-ulike-template="wpulike-robeen"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2895"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	<p>The post <a href="https://blog.kwt.co.kr/figwright-figma-mcp-install-security-removal/">피그마 유료 좌석 없이 AI 에이전트 양방향 연결: Figwright 설치·보안·제거 직접 검증</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/figwright-figma-mcp-install-security-removal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI 에이전트 추적 실무: OpenTelemetry로 지연·토큰·도구 호출 연결하기</title>
		<link>https://blog.kwt.co.kr/ai-agent-tracing-opentelemetry-guide/</link>
					<comments>https://blog.kwt.co.kr/ai-agent-tracing-opentelemetry-guide/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Mon, 24 Aug 2026 00:07:08 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[AI 에이전트]]></category>
		<category><![CDATA[LLMOps]]></category>
		<category><![CDATA[OpenTelemetry]]></category>
		<category><![CDATA[트레이싱]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/ai-agent-tracing-opentelemetry-guide/</guid>

					<description><![CDATA[<p>AI 에이전트의 요청·모델·검색·도구 호출을 OpenTelemetry trace와 span으로 연결하는 방법을 정리했다. 최소 속성, Python 예시, 개인정보·비용·경보 체크리스트를 다룬다.</p>
<p>The post <a href="https://blog.kwt.co.kr/ai-agent-tracing-opentelemetry-guide/">AI 에이전트 추적 실무: OpenTelemetry로 지연·토큰·도구 호출 연결하기</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>AI 에이전트 장애를 제대로 추적하려면 모델 호출 로그만 모아서는 부족하다. <strong>사용자 요청 하나를 루트 trace로 만들고, 에이전트 실행·모델 호출·검색·도구 호출·최종 응답을 parent-child span으로 연결해야 한다.</strong> 그래야 느린 구간, 토큰 급증 지점, 실패한 도구와 재시도 원인을 한 화면에서 찾을 수 있다. OpenTelemetry를 공통 전송 계층으로 두면 특정 관측 제품에 종속되지 않고 시작할 수 있다.</p>



<div class="wp-block-group has-border-color has-background" style="border-color:#bfdbfe;border-width:1px;background-color:#eff6ff;padding-top:20px;padding-right:22px;padding-bottom:20px;padding-left:22px"><div class="wp-block-group__inner-container is-layout-constrained wp-container-core-group-is-layout-1 wp-block-group-is-layout-constrained">


<h2 class="wp-block-heading has-medium-font-size">핵심 요약</h2>



<ul class="wp-block-list">
<li>첫 도입 범위는 <strong>trace_id, 단계, 지연, 상태, 토큰 사용량, 도구 이름</strong>으로 제한한다. 프롬프트와 응답 원문은 기본 수집 대상에서 뺀다.</li>



<li>하나의 사용자 요청 아래에 agent·model·tool·retrieval span을 중첩해야 병목과 실패 전파 경로가 보인다.</li>



<li>운영 대시보드는 평균보다 p95 지연, 오류율, 재시도율, 요청당 토큰, 도구별 실패율을 우선한다.</li>



<li>OpenTelemetry GenAI 의미 규약은 별도 저장소로 이동해 계속 진화 중이므로 속성 이름을 코드 전역에 박지 말고 매핑 계층을 둔다.</li>
</ul>


</div></div>



<h2 class="wp-block-heading">AI 에이전트 추적은 일반 API 추적과 무엇이 다른가</h2>



<p>일반 HTTP API는 요청 하나가 몇 개의 서비스 span으로 끝나는 경우가 많다. AI 에이전트는 한 요청 안에서 모델이 계획을 세우고, 여러 도구를 호출하고, 결과가 부족하면 모델을 다시 부르는 반복 구조를 가진다. 최종 응답은 성공했어도 중간 검색이 세 번 실패했거나 불필요한 모델 재호출로 비용이 커졌을 수 있다.</p>



<p>OpenAI Agents SDK 공식 문서는 기본 trace가 runner, task, turn, agent, generation, function tool, guardrail, handoff span을 포함한다고 설명한다. 특정 SDK를 쓰지 않더라도 이 계층은 실무 설계의 좋은 기준이 된다. 핵심은 로그 줄을 시간순으로 모으는 것이 아니라 <strong>어떤 단계가 어떤 부모 작업에서 파생됐는지</strong> 보존하는 데 있다.</p>



<figure class="wp-block-table"><table><thead><tr><th>질문</th><th>로그만 있을 때</th><th>연결된 trace가 있을 때</th></tr></thead><tbody><tr><td>왜 12초가 걸렸나</td><td>타임스탬프를 수동 대조한다.</td><td>모델·검색·도구 span의 지연을 분해한다.</td></tr><tr><td>왜 토큰이 늘었나</td><td>요청별 합계만 보이기 쉽다.</td><td>모델 재호출과 단계별 토큰을 찾는다.</td></tr><tr><td>어디서 실패했나</td><td>예외 문자열을 검색한다.</td><td>오류 span과 부모 agent 실행을 함께 본다.</td></tr><tr><td>같은 대화인가</td><td>사용자 ID에 의존하기 쉽다.</td><td>가명화한 session/thread 키로 trace를 묶는다.</td></tr></tbody></table></figure>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" width="1050" height="600" src="https://blog.kwt.co.kr/wp-content/uploads/2026/08/ai-agent-trace-flow.png" alt="사용자 요청부터 에이전트 모델 도구 최종 응답까지 연결된 트레이스 구조" class="wp-image-2805" style="width:640px;height:auto"/><figcaption class="wp-element-caption">요청·에이전트·모델·도구·응답을 하나의 trace로 연결한 구조<br />출처: OpenTelemetry·OpenAI Agents SDK 공식 문서 기반 구성</figcaption></figure></div>


<h2 class="wp-block-heading">먼저 정할 최소 span 구조</h2>



<p>처음부터 모든 이벤트를 수집하면 비용과 개인정보 위험만 커진다. 아래 다섯 단계로 시작하면 대부분의 운영 질문에 답할 수 있다. 에이전트가 검색을 쓰지 않으면 retrieval span은 생략하고, 여러 도구를 병렬 실행한다면 같은 부모 아래에 형제 span으로 둔다.</p>



<figure class="wp-block-table"><table><thead><tr><th>span</th><th>부모</th><th>최소 기록값</th><th>주요 질문</th></tr></thead><tbody><tr><td>request / workflow</td><td>없음</td><td>trace_id, route, total latency, status</td><td>요청 전체가 성공했는가</td></tr><tr><td>agent run</td><td>request</td><td>agent name, iteration, handoff</td><td>몇 번 계획하고 위임했는가</td></tr><tr><td>model call</td><td>agent run</td><td>provider, model, input/output token, latency</td><td>비용과 지연이 어디서 늘었는가</td></tr><tr><td>retrieval / tool</td><td>agent run</td><td>tool name, duration, status, retry count</td><td>어떤 외부 작업이 실패했는가</td></tr><tr><td>final response</td><td>request</td><td>result status, quality signal</td><td>최종 결과가 기준을 통과했는가</td></tr></tbody></table></figure>



<p>W3C Trace Context의 <code>traceparent</code>를 서비스 경계에서 전달하면 웹 API, 작업 큐, 도구 서버가 같은 분산 trace에 참여할 수 있다. 다만 대화 전체를 하나의 무한히 긴 trace로 만들기보다 <strong>사용자 요청 단위 trace</strong>와 별도의 가명 session key를 함께 쓰는 편이 조회와 보존에 유리하다.</p>



<h2 class="wp-block-heading">속성은 표준·조직·민감정보로 나눠 관리한다</h2>



<p>OpenTelemetry 공식 사이트의 GenAI 의미 규약 페이지는 2026년 8월 현재 관련 규약이 별도 <code>semantic-conventions-genai</code> 저장소로 이동했다고 안내한다. 새 저장소에는 agent, inference, tool, retrieval 등 span 문서와 참조 시나리오가 있다. 아직 변할 수 있는 이름을 애플리케이션 곳곳에 직접 쓰면 업그레이드 비용이 커진다.</p>



<figure class="wp-block-table"><table><thead><tr><th>구분</th><th>예시</th><th>운영 원칙</th></tr></thead><tbody><tr><td>표준 후보</td><td>operation, provider, model, token usage, error type</td><td>공식 규약의 안정성 상태를 확인하고 exporter 앞에서 매핑한다.</td></tr><tr><td>조직 속성</td><td>service tier, feature flag, release, tenant class</td><td>개인 식별값 대신 운영 분류만 넣는다.</td></tr><tr><td>상관관계</td><td>trace_id, span_id, parent span, pseudonymous session</td><td>원본 사용자 ID를 그대로 넣지 않는다.</td></tr><tr><td>본문 데이터</td><td>prompt, response, tool arguments</td><td>기본 비수집, 필요 시 별도 동의·마스킹·짧은 보존을 적용한다.</td></tr></tbody></table></figure>



<p>Langfuse 공식 OpenTelemetry 문서도 GenAI 속성 규약이 진화 중이며 수신 OTel trace를 자체 데이터 모델로 매핑한다고 밝힌다. 또한 baggage는 서비스와 외부 API 경계를 따라 전파되므로 비밀번호, API 키, 개인정보를 넣지 말라고 경고한다. 검색 필터 편의를 위해 민감값을 baggage에 넣는 설계는 피해야 한다.</p>



<h2 class="wp-block-heading">Python에서 최소 추적을 붙이는 순서</h2>



<p>다음 코드는 특정 LLM 프레임워크 자동 계측에 기대지 않고 구조를 이해하기 위한 최소 예시다. OpenTelemetry Python 공식 문서의 <code>TracerProvider</code>, <code>BatchSpanProcessor</code>, current span 구조를 따른다. <code>app.*</code> 속성은 이 글의 조직 예시이며 공식 GenAI 속성으로 오해하면 안 된다.</p>



<pre class="wp-block-code"><code>from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter

provider = TracerProvider()
provider.add_span_processor(
    BatchSpanProcessor(OTLPSpanExporter())
)
trace.set_tracer_provider(provider)
tracer = trace.get_tracer(&quot;agent-service&quot;)

with tracer.start_as_current_span(&quot;agent.request&quot;) as root:
    root.set_attribute(&quot;app.route&quot;, &quot;support-agent&quot;)

    with tracer.start_as_current_span(&quot;agent.model_call&quot;) as model_span:
        model_span.set_attribute(&quot;app.model&quot;, selected_model)
        result = call_model(messages)
        model_span.set_attribute(&quot;app.input_tokens&quot;, result.input_tokens)
        model_span.set_attribute(&quot;app.output_tokens&quot;, result.output_tokens)

    with tracer.start_as_current_span(&quot;agent.tool_call&quot;) as tool_span:
        tool_span.set_attribute(&quot;app.tool&quot;, &quot;knowledge_search&quot;)
        docs = search_knowledge(result.query)</code></pre>



<ol class="wp-block-list">
<li><strong>개발 환경에서 console exporter로 구조를 먼저 확인한다.</strong> 부모·자식 관계가 끊기지 않는지 본다.</li>



<li><strong>OTLP exporter를 Collector 또는 관측 백엔드에 연결한다.</strong> 애플리케이션이 각 제품의 전용 전송 코드를 직접 갖지 않게 한다.</li>



<li><strong>모델·도구 wrapper 한 곳에서 속성을 정규화한다.</strong> 프레임워크가 바뀌어도 대시보드 키를 유지한다.</li>



<li><strong>오류와 재시도를 이벤트 또는 span 상태로 남긴다.</strong> 최종 성공만 기록하면 숨은 실패 비용을 놓친다.</li>



<li><strong>샘플링과 보존 기간을 부하 테스트로 결정한다.</strong> trace 자체가 서비스 병목이 되지 않는지 확인한다.</li>
</ol>



<h2 class="wp-block-heading">운영 대시보드는 다섯 지표부터 만든다</h2>



<p>대시보드에 모든 속성을 올리기보다 장애와 비용 결정을 직접 바꾸는 지표를 먼저 둔다. 아래 경보선은 제품 공식값이 아니라 초기 운영을 위한 예시다. 서비스의 정상 기준선을 수집한 뒤 조정해야 한다.</p>



<figure class="wp-block-table"><table><thead><tr><th>지표</th><th>보는 이유</th><th>초기 점검 조건 예시</th></tr></thead><tbody><tr><td>요청 p95 지연</td><td>느린 소수 요청이 사용자 경험을 좌우한다.</td><td>기준선 대비 2배가 15분 지속</td></tr><tr><td>모델 호출 횟수/요청</td><td>루프와 불필요한 재계획을 찾는다.</td><td>상한 초과 요청 비율 증가</td></tr><tr><td>입력·출력 토큰/요청</td><td>비용 급증과 컨텍스트 팽창을 찾는다.</td><td>배포 전후 중앙값·p95 비교</td></tr><tr><td>도구별 오류·재시도율</td><td>외부 API와 검색 장애를 분리한다.</td><td>특정 도구 오류율이 기준선 초과</td></tr><tr><td>완료율·품질 신호</td><td>빠르지만 실패한 응답을 걸러낸다.</td><td>status OK와 평가 통과를 함께 집계</td></tr></tbody></table></figure>



<p>토큰 단가를 연결할 때는 모델과 컨텍스트 구간, 캐시 읽기·쓰기, Batch 여부에 따라 가격표가 달라질 수 있다. 따라서 span에는 계산된 비용만 남기기보다 provider, model, 입력·출력·캐시 토큰을 보존하고 비용 계산기를 별도 버전으로 관리하는 편이 감사와 재계산에 유리하다.</p>



<h2 class="wp-block-heading">개인정보와 비용 때문에 실패하는 지점</h2>



<ul class="wp-block-list">
<li><strong>프롬프트 원문 기본 수집:</strong> 고객 정보, 소스코드, API 키가 trace 백엔드로 복제될 수 있다. 메타데이터 우선 원칙을 적용한다.</li>



<li><strong>모든 span 100% 장기 보존:</strong> 트래픽과 도구 호출 수가 늘면 저장·인덱싱 비용이 빠르게 커진다. 정상 요청은 head sampling, 오류·고지연은 tail sampling을 검토한다.</li>



<li><strong>비동기 경계의 context 손실:</strong> 큐 worker와 병렬 도구 실행에서 부모 context를 전달하지 않으면 trace가 여러 조각으로 갈라진다.</li>



<li><strong>속성의 무제한 cardinality:</strong> 원문 URL, 사용자 ID, 임의 오류 메시지를 인덱스 필드로 쓰면 조회 비용이 커진다. 정규화한 코드와 제한된 분류를 쓴다.</li>



<li><strong>관측 백엔드 실패의 서비스 전파:</strong> exporter는 batch와 짧은 timeout을 쓰고, 추적 전송 실패 때문에 사용자 요청까지 실패하지 않게 분리한다.</li>
</ul>



<p>OpenAI Agents SDK 문서는 추적이 기본 활성화될 수 있고, 전역 환경변수·코드·개별 실행 설정으로 끌 수 있다고 안내한다. 또한 Zero Data Retention 정책을 쓰는 조직에는 해당 trace 기능을 사용할 수 없다고 명시한다. 사용하는 SDK의 기본값과 데이터 정책을 배포 전에 반드시 확인해야 한다.</p>



<h2 class="wp-block-heading">도입 단계별 체크리스트</h2>



<figure class="wp-block-table"><table><thead><tr><th>단계</th><th>완료 조건</th><th>중단 조건</th></tr></thead><tbody><tr><td>1. 로컬 구조</td><td>요청→agent→model/tool 계층이 보인다.</td><td>부모 context가 자주 끊긴다.</td></tr><tr><td>2. 스테이징 OTLP</td><td>Collector 수신과 exporter 재시도가 확인된다.</td><td>전송이 응답 지연을 유의미하게 늘린다.</td></tr><tr><td>3. 민감정보 점검</td><td>샘플 trace에 원문·키·개인정보가 없다.</td><td>마스킹 이전 데이터가 남는다.</td></tr><tr><td>4. 제한 배포</td><td>p95·오류·토큰·도구율 대시보드가 동작한다.</td><td>cardinality와 저장량을 예측할 수 없다.</td></tr><tr><td>5. 운영 확대</td><td>장애 한 건을 trace로 재현해 원인을 찾는다.</td><td>수집은 되지만 실제 운영 질문에 답하지 못한다.</td></tr></tbody></table></figure>



<p>이미 개념과 제품 선택부터 정리해야 한다면 <a href="https://blog.kwt.co.kr/ai-agent-observability-guide/">AI 에이전트 관측성 가이드</a>와 <a href="https://blog.kwt.co.kr/ai-agent-observability-tools-comparison/">Langfuse·LangSmith·Phoenix·OpenTelemetry 비교</a>를 먼저 보는 편이 낫다. 비용 분석까지 확장하려면 <a href="https://blog.kwt.co.kr/ai-agent-cost-tracking-guide/">AI 에이전트 비용 추적 가이드</a>를 함께 연결하면 된다.</p>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">로그와 trace를 둘 다 남겨야 하나</h3>



<p>둘의 역할이 다르다. trace는 요청의 단계와 부모·자식 관계, 지연을 보여주고 로그는 상세 사건과 디버그 문맥을 제공한다. 로그에 trace_id와 span_id를 넣어 상호 이동할 수 있게 만드는 구성이 실용적이다.</p>



<h3 class="wp-block-heading">프롬프트와 응답을 저장하지 않으면 디버깅이 불가능하지 않나</h3>



<p>대부분의 운영 장애는 모델명, 지연, 토큰, 도구 입력의 분류, 상태, 오류 코드만으로도 1차 진단이 가능하다. 원문이 꼭 필요한 평가 환경은 별도 동의, 마스킹, 접근 제어, 짧은 보존 기간을 적용해 분리한다.</p>



<h3 class="wp-block-heading">OpenTelemetry만 설치하면 AI 비용도 자동으로 계산되나</h3>



<p>그렇지 않다. OpenTelemetry는 신호와 context를 수집·전송하는 기반이다. 모델별 단가와 캐시·컨텍스트 구간을 반영한 비용 계산 로직 또는 이를 지원하는 백엔드가 별도로 필요하다.</p>



<h3 class="wp-block-heading">trace는 요청마다 하나가 좋은가, 대화마다 하나가 좋은가</h3>



<p>일반적으로 사용자 요청마다 trace를 만들고 가명 session 또는 thread 키로 여러 trace를 묶는 편이 낫다. 대화 전체를 하나의 장기 trace로 만들면 크기, 시간 제한, 조회가 복잡해진다.</p>



<h3 class="wp-block-heading">가장 먼저 경보로 만들 지표는 무엇인가</h3>



<p>오류율과 요청 p95 지연을 먼저 두고, 모델 호출 횟수와 요청당 토큰을 추가하는 순서가 현실적이다. 도구가 핵심인 서비스라면 도구별 오류·재시도율도 첫 단계에 포함한다.</p>



<h2 class="wp-block-heading">참고 자료</h2>



<ul class="wp-block-list">
<li><a href="https://github.com/open-telemetry/semantic-conventions-genai">OpenTelemetry GenAI Semantic Conventions 저장소</a></li>



<li><a href="https://github.com/open-telemetry/semantic-conventions-genai/blob/main/docs/gen-ai/gen-ai-agent-spans.md">OpenTelemetry GenAI Agent Spans</a></li>



<li><a href="https://opentelemetry.io/docs/languages/python/instrumentation/">OpenTelemetry Python Instrumentation</a></li>



<li><a href="https://openai.github.io/openai-agents-python/tracing/">OpenAI Agents SDK Tracing</a></li>



<li><a href="https://langfuse.com/docs/opentelemetry/get-started">Langfuse OpenTelemetry 문서</a></li>



<li><a href="https://www.w3.org/TR/trace-context/">W3C Trace Context</a></li>
</ul>



<p>문서 확인 기준일은 2026년 8월 24일이다. OpenTelemetry GenAI 의미 규약은 진화 중이므로 실제 적용 전 저장소의 최신 상태와 사용하는 SDK·백엔드의 지원 범위를 다시 확인해야 한다.</p>



<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"로그와 trace를 둘 다 남겨야 하나","acceptedAnswer":{"@type":"Answer","text":"trace는 요청 단계와 관계·지연을, 로그는 상세 사건을 담당한다. 로그에 trace_id와 span_id를 넣어 함께 쓰는 편이 좋다."}},{"@type":"Question","name":"프롬프트와 응답을 저장하지 않으면 디버깅이 불가능하지 않나","acceptedAnswer":{"@type":"Answer","text":"메타데이터만으로 1차 진단이 가능하다. 원문은 별도 동의·마스킹·접근 제어·짧은 보존 기간을 적용한 환경에서만 수집한다."}},{"@type":"Question","name":"OpenTelemetry만 설치하면 AI 비용도 자동으로 계산되나","acceptedAnswer":{"@type":"Answer","text":"아니다. 모델별 단가와 캐시·컨텍스트 구간을 반영한 비용 계산 로직이나 백엔드가 별도로 필요하다."}},{"@type":"Question","name":"trace는 요청마다 하나가 좋은가, 대화마다 하나가 좋은가","acceptedAnswer":{"@type":"Answer","text":"요청마다 trace를 만들고 가명 session 또는 thread 키로 여러 trace를 묶는 방식이 일반적으로 관리하기 쉽다."}},{"@type":"Question","name":"가장 먼저 경보로 만들 지표는 무엇인가","acceptedAnswer":{"@type":"Answer","text":"오류율과 요청 p95 지연을 우선하고 모델 호출 횟수, 요청당 토큰, 도구 오류·재시도율을 추가한다."}}]}</script>
		<div class="wpulike wpulike-robeen " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="2806"
					data-ulike-nonce="5146e25638"
					data-ulike-type="post"
					data-ulike-template="wpulike-robeen"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2806"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	<p>The post <a href="https://blog.kwt.co.kr/ai-agent-tracing-opentelemetry-guide/">AI 에이전트 추적 실무: OpenTelemetry로 지연·토큰·도구 호출 연결하기</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/ai-agent-tracing-opentelemetry-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI 에이전트 관측 도구 비교: Langfuse vs LangSmith vs Phoenix vs OpenTelemetry</title>
		<link>https://blog.kwt.co.kr/ai-agent-observability-tools-comparison/</link>
					<comments>https://blog.kwt.co.kr/ai-agent-observability-tools-comparison/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Tue, 18 Aug 2026 00:06:45 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[AI 에이전트]]></category>
		<category><![CDATA[Arize Phoenix]]></category>
		<category><![CDATA[Langfuse]]></category>
		<category><![CDATA[LangSmith]]></category>
		<category><![CDATA[OpenTelemetry]]></category>
		<category><![CDATA[관측성]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/ai-agent-observability-tools-comparison/</guid>

					<description><![CDATA[<p>AI 에이전트 관측 도구 Langfuse, LangSmith, Phoenix, OpenTelemetry의 역할·가격·자체 호스팅·도입 기준을 실무 관점에서 비교했다.</p>
<p>The post <a href="https://blog.kwt.co.kr/ai-agent-observability-tools-comparison/">AI 에이전트 관측 도구 비교: Langfuse vs LangSmith vs Phoenix vs OpenTelemetry</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>AI 에이전트 관측 도구는 기능표보다 <strong>운영 방식과 데이터 경계</strong>로 골라야 한다. 빠른 SaaS 도입과 팀 워크플로가 우선이면 LangSmith, 오픈소스와 프롬프트·평가의 균형은 Langfuse, 로컬 분석과 OpenTelemetry 기반 실험은 Phoenix가 유리하다. OpenTelemetry는 이들과 경쟁하는 완성형 화면이 아니라 trace를 특정 제품에서 분리하는 수집 표준에 가깝다.</p>



<div class="wp-block-group summary-box has-border-color has-background" style="border-color:#dbeafe;border-width:1px;background-color:#eff6ff;margin-top:24px;margin-bottom:24px;padding-top:18px;padding-right:20px;padding-bottom:18px;padding-left:20px"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p><strong>핵심 요약</strong></p>



<ul class="wp-block-list">
<li><strong>Langfuse</strong>: 자체 호스팅과 클라우드를 모두 고려하며 관측·프롬프트 관리·평가를 한곳에 묶고 싶을 때 적합하다.</li>



<li><strong>LangSmith</strong>: SaaS로 빨리 시작하고 대시보드·알림·온라인 평가·팀 협업을 붙일 때 편하다.</li>



<li><strong>Phoenix</strong>: OTLP와 OpenInference를 중심으로 로컬 디버깅, 평가, 데이터셋 실험을 구성할 때 강하다.</li>



<li><strong>OpenTelemetry</strong>: 교체 가능한 수집 계층을 만들고 기존 APM·백엔드와 연결할 때 먼저 깔아둘 표준이다.</li>



<li>도구를 고르기 전에 trace ID, 사용자·팀, 모델, 비용, 지연, 오류, 평가 점수 속성을 먼저 정해야 한다.</li>
</ul>
</div></div>



<h2 class="wp-block-heading">네 도구의 역할은 완전히 같지 않다</h2>



<p>Langfuse·LangSmith·Phoenix는 trace를 저장하고 탐색하며 평가와 운영 화면을 제공하는 플랫폼이다. 반면 OpenTelemetry는 애플리케이션에서 span·metric·log를 만들고 OTLP로 보내기 위한 계측 규약과 SDK·Collector 생태계다. 따라서 “OpenTelemetry와 Langfuse 중 하나”보다 “OpenTelemetry로 계측하고 Langfuse나 Phoenix로 본다”는 조합이 더 자연스러울 수 있다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>선택지</th><th>가장 잘 맞는 상황</th><th>강점</th><th>먼저 확인할 제약</th></tr></thead><tbody><tr><td>Langfuse</td><td>오픈소스·자체 호스팅과 관리형 클라우드를 함께 검토</td><td>trace, prompt, eval, 비용·지연 분석을 통합</td><td>자체 호스팅 시 DB·스토리지·업그레이드 운영</td></tr><tr><td>LangSmith</td><td>소규모 팀이 SaaS로 빠르게 관측과 평가를 시작</td><td>대시보드, 알림, 자동화, 피드백 흐름</td><td>좌석·trace·저장 사용량과 데이터 반출 정책</td></tr><tr><td>Phoenix</td><td>로컬 우선 분석, RAG·에이전트 실험, OTLP 연계</td><td>OpenInference, 평가, 데이터셋·실험 기능</td><td>운영형 접근 제어·보존·백업 설계</td></tr><tr><td>OpenTelemetry</td><td>특정 관측 제품에 종속되지 않는 계측 계층</td><td>표준 속성, OTLP, Collector, 기존 APM 연계</td><td>완성형 AI 관측 UI가 아니므로 백엔드가 별도로 필요</td></tr></tbody></table><figcaption class="wp-element-caption">AI 에이전트 관측 도구의 역할과 운영 제약 비교<br />출처: 각 제품 공식 문서(2026-08-18 확인)</figcaption></figure>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img decoding="async" width="1050" height="620" src="https://blog.kwt.co.kr/wp-content/uploads/2026/08/ai-agent-observability-tool-decision.png" alt="Langfuse LangSmith Phoenix OpenTelemetry 선택 기준 구성도" class="wp-image-2782" style="width:600px;height:auto"/><figcaption class="wp-element-caption">운영 제약에 따른 AI 에이전트 관측 도구의 첫 선택 기준<br />출처: 각 제품 공식 문서 기반 자체 정리</figcaption></figure></div>


<h2 class="wp-block-heading">Langfuse: 자체 호스팅과 통합 기능의 균형</h2>



<p>Langfuse는 관측, 프롬프트 버전 관리, 평가를 같은 플랫폼에 넣는다. 공식 문서는 Python·JavaScript SDK, 다수의 프레임워크 통합, OpenTelemetry, LiteLLM 같은 게이트웨이를 통한 trace 수집을 안내한다. 세션과 사용자 단위로 비용·사용량을 묶고 에이전트 그래프와 타임라인을 보는 흐름도 갖춘다.</p>



<p>2026년 8월 18일 공식 가격표 기준 Langfuse Cloud Hobby는 월 5만 unit과 30일 데이터 접근을 포함한 무료 구간이다. Core는 월 29달러에 10만 unit과 90일 데이터 접근을 포함하며 초과분은 10만 unit당 8달러로 안내한다. Pro는 월 199달러와 3년 데이터 접근을 제시한다. unit 정의와 이벤트 크기에 따라 실제 비용이 달라지므로 “trace 개수”만으로 예산을 잡으면 안 된다.</p>



<p>자체 호스팅은 라이선스 비용을 줄일 수 있지만 무료 운영을 뜻하지 않는다. trace 본문에는 프롬프트, 검색 문서, 도구 입력·출력이 들어가므로 데이터베이스 용량, 객체 스토리지, 백업, 암호화, 버전 업그레이드 비용을 함께 계산해야 한다.</p>



<h2 class="wp-block-heading">LangSmith: SaaS로 빠르게 운영 루프를 만들 때</h2>



<p>LangSmith 공식 문서는 개별 trace 탐색뿐 아니라 대시보드, 알림, 규칙·웹훅 자동화, 온라인 평가, 사람 피드백 큐를 한 흐름으로 제공한다. LangChain 전용으로 오해하기 쉽지만 OpenAI, Anthropic, CrewAI, Vercel AI SDK, Pydantic AI 등 여러 통합을 안내한다.</p>



<p>현재 가격표의 Developer는 좌석당 0달러이며 월 5천 base trace 이후 사용량 과금 구조다. Plus는 좌석당 월 39달러에 월 1만 base trace를 포함한다. Enterprise에는 자체 호스팅·하이브리드 배포, SSO와 세분화된 권한 기능이 표시돼 있다. 팀이 빨리 시작하기는 쉽지만 trace·저장·좌석이 각각 어떤 단위로 늘어나는지 부하 테스트 데이터로 확인해야 한다.</p>



<p>데이터를 외부 SaaS로 보낼 수 없는 환경이라면 도입 속도보다 반출 정책이 우선이다. 프롬프트와 검색 결과에 개인정보나 영업 비밀이 섞일 수 있으므로 저장 전 마스킹과 payload 샘플링을 애플리케이션 계층에서 적용해야 한다.</p>



<h2 class="wp-block-heading">Phoenix: OTLP 기반 로컬 분석과 평가 실험</h2>



<p>Arize Phoenix는 OpenTelemetry 위에서 동작하며 OpenInference 계측을 사용한다. 공식 문서에 따르면 trace는 모델 호출, 검색, 도구 사용, 사용자 로직을 한 실행으로 묶는다. OTLP 수신과 함께 LlamaIndex, LangChain, DSPy, Mastra, Vercel AI SDK, OpenAI, Bedrock, Anthropic 등에 대한 자동 계측을 제공한다.</p>



<p>평가는 LLM 기반 평가자, 코드 기반 검사, 사람 라벨을 trace와 span에 붙이는 방식이다. Ragas·DeepEval 같은 외부 평가 도구도 연결할 수 있다. 로컬에서 RAG 검색 실패를 살피고 데이터셋 실험으로 이어가려는 팀에 특히 잘 맞는다. 다만 노트북에서 잘 보이는 것과 다중 사용자 운영은 다른 문제다. 인증, RBAC, 데이터 보존, 백업, 고가용성을 별도 체크리스트로 다뤄야 한다.</p>



<h2 class="wp-block-heading">OpenTelemetry: 도구 교체 비용을 줄이는 수집 계층</h2>



<p>OpenTelemetry의 Generative AI semantic conventions에는 에이전트 span, 모델·제공자별 span, 이벤트와 metric을 표현하는 항목이 정리돼 있다. 이 규약으로 계측하면 애플리케이션 코드가 특정 관측 제품의 데이터 모델에 깊게 묶이는 문제를 줄일 수 있다.</p>



<p>하지만 표준 속성을 붙였다고 운영 화면이 자동으로 생기지는 않는다. Collector의 메모리 제한, 배치 전송, 재시도, 백프레셔, 민감정보 필터, 샘플링을 설계해야 하고, 실제 저장·검색·알림을 담당할 백엔드도 필요하다. 소규모 서비스는 완성형 플랫폼으로 먼저 문제를 정의한 뒤 OTLP export를 병행하는 편이 과도한 초기 설계를 피하기 쉽다.</p>



<h2 class="wp-block-heading">도입 전에 반드시 정할 데이터 스키마</h2>



<p>도구 화면보다 먼저 “실패한 사용자 작업 하나를 어떻게 찾을 것인가”를 정해야 한다. 최상위 trace는 사용자 목표 한 건으로 잡고 모델 호출, 검색, 도구 실행, 승인 단계를 자식 span으로 둔다. 이는 기존 <a href="https://blog.kwt.co.kr/ai-agent-observability-guide/">AI 에이전트 관측성 가이드</a>와 <a href="https://blog.kwt.co.kr/ai-agent-cost-tracking-guide/">AI 에이전트 비용 추적 가이드</a>의 운영 모델을 실제 제품 선택에 연결하는 핵심이다.</p>



<ol class="wp-block-list">
<li><strong>식별자</strong>: trace_id, session_id, user_id, team_id, project_id, environment를 넣는다.</li>



<li><strong>모델 호출</strong>: provider, model, input/output token, cache read/write, latency, retry를 분리한다.</li>



<li><strong>도구 실행</strong>: tool_name, duration, status, error_type, approval 여부를 기록한다.</li>



<li><strong>품질</strong>: 정답성, 근거성, 도구 선택, 정책 위반 여부를 평가 점수로 붙인다. 평가 설계는 <a href="https://blog.kwt.co.kr/ai-evals-llm-quality-evaluation-guide/">AI Evals 실무 가이드</a>처럼 작은 대표 질문 세트부터 시작한다.</li>



<li><strong>비용</strong>: 성공 실행당 비용과 실패 비용을 분리하고 가격표 버전을 보존한다.</li>
</ol>



<h2 class="wp-block-heading">2주 파일럿 절차</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>단계</th><th>해야 할 일</th><th>통과 기준</th></tr></thead><tbody><tr><td>1. 범위</td><td>사용자 작업 한 종류와 실패 유형 세 개를 고른다.</td><td>trace 한 건으로 전체 실행을 재구성할 수 있다.</td></tr><tr><td>2. 계측</td><td>LLM·검색·도구·승인 span과 비용 속성을 넣는다.</td><td>누락 span 비율과 비용 오차를 측정한다.</td></tr><tr><td>3. 보안</td><td>프롬프트·문서·도구 결과에서 민감정보를 마스킹한다.</td><td>원문 secret과 개인정보가 저장되지 않는다.</td></tr><tr><td>4. 부하</td><td>정상·오류·대용량 payload를 포함해 1주일 수집한다.</td><td>수집 지연, 저장량, 예상 월비용을 계산한다.</td></tr><tr><td>5. 운영</td><td>실패율·p95 지연·성공 실행당 비용 알림을 만든다.</td><td>실제 장애 한 건을 대시보드에서 찾아 원인을 좁힌다.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">실패하기 쉬운 조건</h2>



<ul class="wp-block-list">
<li>모든 프롬프트와 검색 문서를 무제한 저장해 비용과 보안 위험이 함께 커진다.</li>



<li>trace 이름과 속성이 팀마다 달라 대시보드 집계가 깨진다.</li>



<li>성공률만 보고 결과 품질과 사람 승인 거부율을 측정하지 않는다.</li>



<li>LLM 비용만 기록하고 검색 API, 브라우저, 코드 샌드박스, 재시도 비용을 뺀다.</li>



<li>자체 호스팅을 선택하면서 백업·업그레이드·보존 정책의 운영 인건비를 0원으로 계산한다.</li>
</ul>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">LangChain을 쓰지 않아도 LangSmith를 쓸 수 있나?</h3>



<p>쓸 수 있다. 공식 문서는 여러 모델 제공자와 에이전트 프레임워크 통합을 안내한다. 다만 현재 코드의 계측 난이도와 필요한 SDK 변경량은 파일럿에서 확인해야 한다.</p>



<h3 class="wp-block-heading">OpenTelemetry만 설치하면 AI 에이전트 관측이 끝나나?</h3>



<p>끝나지 않는다. OpenTelemetry는 수집과 전송의 표준 계층이다. trace 검색, 비용 계산, 평가, 알림, 보존을 담당할 백엔드와 운영 규칙이 별도로 필요하다.</p>



<h3 class="wp-block-heading">처음에는 어떤 도구로 시작하는 편이 좋은가?</h3>



<p>외부 SaaS 사용이 가능하면 LangSmith나 Langfuse Cloud로 2주 파일럿을 빠르게 돌리는 편이 단순하다. 데이터 반출이 어렵거나 로컬 RAG 분석이 중심이면 Langfuse 자체 호스팅이나 Phoenix를 먼저 검토한다. 어떤 선택이든 OTLP export 가능성과 데이터 내보내기 경로를 확인해야 한다.</p>



<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"LangChain을 쓰지 않아도 LangSmith를 쓸 수 있나?","acceptedAnswer":{"@type":"Answer","text":"쓸 수 있다. LangSmith 공식 문서는 여러 모델 제공자와 에이전트 프레임워크 통합을 안내한다. 실제 계측 난이도는 파일럿에서 확인해야 한다."}},{"@type":"Question","name":"OpenTelemetry만 설치하면 AI 에이전트 관측이 끝나나?","acceptedAnswer":{"@type":"Answer","text":"끝나지 않는다. OpenTelemetry는 수집과 전송의 표준 계층이며 trace 검색, 비용 계산, 평가, 알림, 보존을 담당할 백엔드가 별도로 필요하다."}},{"@type":"Question","name":"처음에는 어떤 도구로 시작하는 편이 좋은가?","acceptedAnswer":{"@type":"Answer","text":"SaaS 사용이 가능하면 LangSmith나 Langfuse Cloud로 2주 파일럿을 돌리고, 데이터 반출이 어렵거나 로컬 분석이 중심이면 Langfuse 자체 호스팅이나 Phoenix를 먼저 검토한다."}}]}</script>



<h2 class="wp-block-heading">참고 자료</h2>



<ul class="wp-block-list">
<li><a href="https://langfuse.com/docs" target="_blank" rel="noopener">Langfuse 공식 문서</a></li>



<li><a href="https://langfuse.com/pricing" target="_blank" rel="noopener">Langfuse Cloud 공식 가격표</a></li>



<li><a href="https://docs.langchain.com/langsmith/observability" target="_blank" rel="noopener">LangSmith Observability 공식 문서</a></li>



<li><a href="https://www.langchain.com/pricing" target="_blank" rel="noopener">LangSmith 공식 가격표</a></li>



<li><a href="https://arize.com/docs/phoenix" target="_blank" rel="noopener">Arize Phoenix 공식 문서</a></li>



<li><a href="https://opentelemetry.io/docs/specs/semconv/gen-ai/" target="_blank" rel="noopener">OpenTelemetry Generative AI semantic conventions</a></li>
</ul>
		<div class="wpulike wpulike-robeen " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="2783"
					data-ulike-nonce="00ab38dca8"
					data-ulike-type="post"
					data-ulike-template="wpulike-robeen"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2783"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	<p>The post <a href="https://blog.kwt.co.kr/ai-agent-observability-tools-comparison/">AI 에이전트 관측 도구 비교: Langfuse vs LangSmith vs Phoenix vs OpenTelemetry</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/ai-agent-observability-tools-comparison/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI 에이전트 비용 추적 가이드: 토큰·캐시·도구 호출 비용을 팀별로 관리하는 법</title>
		<link>https://blog.kwt.co.kr/ai-agent-cost-tracking-guide/</link>
					<comments>https://blog.kwt.co.kr/ai-agent-cost-tracking-guide/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Thu, 30 Jul 2026 02:34:52 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[AI 에이전트]]></category>
		<category><![CDATA[Langfuse]]></category>
		<category><![CDATA[LiteLLM]]></category>
		<category><![CDATA[LLMOps]]></category>
		<category><![CDATA[OpenTelemetry]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/?p=2748</guid>

					<description><![CDATA[<p>AI 에이전트의 토큰·캐시·도구 호출·재시도 비용을 실행 단위로 계산하고 팀·프로젝트별로 배부하는 방법을 정리했다.</p>
<p>The post <a href="https://blog.kwt.co.kr/ai-agent-cost-tracking-guide/">AI 에이전트 비용 추적 가이드: 토큰·캐시·도구 호출 비용을 팀별로 관리하는 법</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>AI 에이전트 비용 추적은 모델 API 청구액을 보는 것으로 끝나지 않는다. <strong>사용자 목표 하나를 완료한 실행(run)을 기준으로 LLM 토큰, 캐시, 도구 API, 재시도, 관측 저장비를 합산하고 팀·프로젝트·기능별로 배부해야 한다.</strong> 월별 총액만 보면 어떤 에이전트가 비용을 만들었는지, 실패한 실행에 얼마를 썼는지, 캐시가 실제로 절감됐는지 알 수 없다.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>핵심 요약</strong>: 최상위 trace는 사용자 작업 1건으로 잡고, 그 아래 LLM 호출과 도구 호출을 span으로 기록한다. 모든 trace에 팀·사용자·프로젝트·환경 태그를 붙인다. 비용은 입력·출력·cache read·cache write·reasoning 토큰을 분리해 계산하고, 외부 API와 재시도 비용까지 더한다. 대시보드는 총비용보다 실행당 비용, 성공 실행당 비용, 실패 비용, 캐시 적중률을 먼저 보여줘야 한다.</p>
</blockquote>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1035" height="585" src="https://blog.kwt.co.kr/wp-content/uploads/2026/07/ai-agent-cost-tracking-breakdown-2026.png" alt="AI 에이전트 월간 비용 구성: LLM 호출 1848달러, 재시도 147.84달러, 외부 도구 API 132달러, 관측·저장 250달러" class="wp-image-2747" style="width:500px;height:auto"/><figcaption class="wp-element-caption">AI 에이전트 월간 총비용은 모델 호출비 외 재시도·도구·관측 비용까지 포함해야 한다.<br>출처: 월 44,000회 가정 자체 계산</figcaption></figure></div>


<h2 class="wp-block-heading">요청당 비용이 아니라 실행당 총원가를 봐야 한다</h2>



<p>일반 챗봇은 사용자 메시지 한 번과 모델 호출 한 번이 비교적 가깝다. AI 에이전트는 한 작업 안에서 계획을 만들고, 여러 모델을 호출하고, 검색·브라우저·데이터베이스·코드 실행 도구를 사용하고, 실패하면 다시 시도한다. 한 번의 사용자 요청이 10개의 LLM 호출과 20개의 도구 호출로 늘어날 수 있다.</p>



<p>따라서 비용의 기본 단위를 HTTP 요청이나 모델 호출로 잡으면 업무 원가를 계산하기 어렵다. 가장 실용적인 단위는 다음 세 단계다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>단위</th><th>의미</th><th>답할 수 있는 질문</th></tr></thead><tbody>
<tr><td><strong>Span</strong></td><td>LLM 호출, 도구 호출, 검색, 평가 같은 개별 작업</td><td>어느 단계에서 비용과 지연이 발생했나</td></tr>
<tr><td><strong>Trace / Run</strong></td><td>사용자 목표 하나를 처리한 전체 실행</td><td>이 작업을 완료하는 데 총 얼마가 들었나</td></tr>
<tr><td><strong>Session / Project</strong></td><td>여러 실행을 묶은 사용자 세션·팀·프로젝트</td><td>누가 어떤 기능에서 예산을 사용했나</td></tr>
</tbody></table></figure>




<p>기존 <a href="https://blog.kwt.co.kr/ai-agent-observability-guide/">AI 에이전트 관측성 가이드</a>가 trace 설계와 운영 안전성을 설명했다면, 이 글은 trace에 비용 데이터를 붙여 원가와 예산을 통제하는 방법에 집중한다.</p>



<h2 class="wp-block-heading">AI 에이전트 총비용 계산식</h2>



<p>에이전트 실행 1건의 총비용은 다음 네 항목을 합쳐 계산한다.</p>



<p><strong>실행 총비용 = LLM 비용 + 도구·검색 비용 + 재시도·낭비 비용 + 인프라·관측 비용</strong></p>



<h3 class="wp-block-heading">1. LLM 비용</h3>



<p>LLM 비용도 단순히 전체 입력 토큰에 입력 단가를 곱하면 안 된다.</p>



<ul class="wp-block-list">
<li>일반 입력 토큰</li>

<li>cache read 입력 토큰</li>

<li>cache write 또는 cache creation 토큰</li>

<li>출력 토큰</li>

<li>reasoning 출력 토큰</li>

<li>이미지·오디오·영상 입력</li>

<li>Batch·Priority·Long context 같은 별도 요율</li>
</ul>



<p>제공자마다 캐시 분류와 과금 방식이 다르므로 <code>input_tokens</code> 하나로 합쳐 저장하면 나중에 정확한 재계산이 어렵다. 모델별 최신 단가와 캐시 차이는 <a href="https://blog.kwt.co.kr/2026-h2-llm-comparison-token-cost-coding-agent/">2026년 하반기 LLM 비교</a>에서 확인할 수 있다.</p>



<h3 class="wp-block-heading">2. 도구·검색 비용</h3>



<p>에이전트가 호출하는 외부 도구도 원가에 포함한다.</p>



<ul class="wp-block-list">
<li>웹 검색 API와 크롤링 서비스</li>

<li>지도·번역·OCR·음성 API</li>

<li>벡터 데이터베이스 검색·저장</li>

<li>브라우저 실행과 샌드박스 컴퓨팅</li>

<li>코드 인터프리터·GPU 작업</li>

<li>문자·메일·결제·업무 SaaS API</li>
</ul>



<p>도구가 무료 티어에 들어가더라도 호출 횟수와 사용량은 기록해야 한다. 무료 한도를 넘는 순간 비용 구조가 바뀌고, 공급자가 요금제를 변경했을 때 과거 사용량으로 영향을 계산해야 하기 때문이다.</p>



<h3 class="wp-block-heading">3. 재시도와 낭비 비용</h3>



<p>실패 후 같은 프롬프트를 다시 호출한 비용, 잘못된 도구 인자로 반복 실행한 비용, 종료 조건 없이 루프를 돈 비용은 모델 청구서에는 정상 사용량으로 표시된다. 운영 관점에서는 별도 낭비 비용이다.</p>



<p>다음 값을 구분한다.</p>



<ul class="wp-block-list">
<li>최초 시도 비용</li>

<li>자동 재시도 비용</li>

<li>오류 복구 비용</li>

<li>사용자 취소 이후 발생한 비용</li>

<li>실패로 끝난 실행의 전체 비용</li>

<li>평가·검증 모델의 추가 비용</li>
</ul>



<h3 class="wp-block-heading">4. 인프라와 관측 비용</h3>



<p>자체 호스팅 모델의 GPU 비용뿐 아니라 trace 저장소, 로그, 객체 스토리지, 데이터 웨어하우스와 대시보드 비용도 포함한다. SaaS 관측성 도구가 이벤트 수나 보존 기간에 따라 과금된다면 에이전트 실행 원가에 배부해야 한다.</p>



<h2 class="wp-block-heading">월 44,000회 실행 비용 계산 예시</h2>



<p>다음은 특정 모델 추천이 아니라 계산 구조를 설명하기 위한 가상 단가 예시다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>조건</th><th>가정</th></tr></thead><tbody>
<tr><td>사용자</td><td>100명</td></tr>
<tr><td>사용자당 일일 실행</td><td>20회</td></tr>
<tr><td>월 근무일</td><td>22일</td></tr>
<tr><td>월 실행 수</td><td>44,000회</td></tr>
<tr><td>실행당 입력</td><td>20K 토큰</td></tr>
<tr><td>실행당 출력</td><td>2K 토큰</td></tr>
<tr><td>Cache hit</td><td>입력의 50%</td></tr>
<tr><td>1M 토큰 단가</td><td>일반 입력 $2, cache read $0.20, 출력 $10</td></tr>
<tr><td>추가 재시도</td><td>기본 LLM 비용의 8%</td></tr>
<tr><td>외부 도구 API</td><td>실행당 $0.003</td></tr>
<tr><td>관측·저장</td><td>월 $250</td></tr>
</tbody></table></figure>




<p>캐시가 없으면 실행당 LLM 비용은 $0.06, 월 $2,640이다. 입력의 절반이 cache hit라면 실행당 $0.042, 월 $1,848로 내려가 <strong>$792, 30%를 절감</strong>한다.</p>



<p>하지만 최종 원가는 여기서 끝나지 않는다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>비용 항목</th><th>월 비용</th></tr></thead><tbody>
<tr><td>캐시 반영 LLM 호출</td><td>$1,848.00</td></tr>
<tr><td>재시도·복구</td><td>$147.84</td></tr>
<tr><td>외부 도구 API</td><td>$132.00</td></tr>
<tr><td>관측·저장</td><td>$250.00</td></tr>
<tr><td><strong>합계</strong></td><td><strong>$2,377.84</strong></td></tr>
</tbody></table></figure>




<p>완료 실행 1건당 총원가는 약 <strong>$0.054</strong>다. 모델 호출비 외 항목은 $529.84로 전체의 약 <strong>22.3%</strong>다. 모델 공급자 대시보드만 봤다면 이 비용을 제품 원가에서 놓치게 된다.</p>



<h2 class="wp-block-heading">반드시 기록해야 할 비용 필드</h2>



<p>OpenTelemetry의 GenAI semantic conventions는 2026년 7월 기준 별도 <code>semantic-conventions-genai</code> 저장소로 이동했으며 상태가 <strong>Development</strong>다. 속성명은 바뀔 수 있으므로 버전을 고정하고 변경 이력을 확인해야 한다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>영역</th><th>필드 예시</th><th>용도</th></tr></thead><tbody>
<tr><td>추적 식별자</td><td><code>trace_id</code>, <code>span_id</code>, <code>run_id</code>, <code>conversation_id</code></td><td>개별 호출을 사용자 작업과 연결</td></tr>
<tr><td>조직 배부</td><td><code>tenant_id</code>, <code>team_id</code>, <code>user_id</code>, <code>project_id</code>, <code>environment</code></td><td>팀·고객·환경별 비용 집계</td></tr>
<tr><td>에이전트</td><td><code>gen_ai.agent.name</code>, <code>gen_ai.workflow.name</code>, agent version</td><td>어느 에이전트·버전이 비용을 만들었는지 확인</td></tr>
<tr><td>모델</td><td><code>gen_ai.provider.name</code>, <code>gen_ai.request.model</code>, <code>gen_ai.response.model</code></td><td>요청 모델과 실제 응답 모델·fallback 구분</td></tr>
<tr><td>토큰</td><td><code>gen_ai.usage.input_tokens</code>, <code>gen_ai.usage.output_tokens</code></td><td>기본 토큰 사용량</td></tr>
<tr><td>캐시</td><td><code>gen_ai.usage.cache_read.input_tokens</code>, <code>gen_ai.usage.cache_creation.input_tokens</code></td><td>캐시 절감·생성 비용 계산</td></tr>
<tr><td>추론</td><td><code>gen_ai.usage.reasoning.output_tokens</code></td><td>reasoning 토큰을 일반 출력과 분리</td></tr>
<tr><td>도구</td><td><code>gen_ai.tool.name</code>, tool type, 호출 상태, 외부 비용</td><td>검색·DB·브라우저·코드 실행 원가</td></tr>
<tr><td>실행 상태</td><td>iteration, retry count, error type, termination reason</td><td>재시도와 무한 루프 비용 분리</td></tr>
<tr><td>가격 기준</td><td>price version, currency, estimated/actual, billing tier</td><td>단가 변경과 청구서 대조</td></tr>
<tr><td>품질</td><td>success, user acceptance, evaluator score</td><td>싸지만 실패하는 실행 구분</td></tr>
</tbody></table></figure>




<p><code>tenant_id</code>, <code>team_id</code>, 가격과 비용 필드는 조직별 custom attribute로 설계할 수 있다. OpenTelemetry 표준 속성과 자체 속성을 구분하고 접두어 규칙을 정해야 한다.</p>



<p>프롬프트·응답 전문을 저장하지 않아도 비용 추적은 가능하다. 개인정보와 소스코드 유출이 우려되면 본문은 마스킹하거나 저장하지 않고 토큰 수, 모델, 도구명, 상태와 비용만 남긴다.</p>



<h2 class="wp-block-heading">가격표는 호출 시점에 버전으로 저장한다</h2>



<p>비용을 조회할 때 현재 가격표를 과거 토큰에 곱하면 안 된다. 모델 가격, 캐시 할인, Long context 기준과 공급자 티어는 바뀐다. 호출 시점에 다음 정보를 함께 저장하는 편이 안전하다.</p>



<ul class="wp-block-list">
<li>적용한 모델 가격표 버전과 유효일</li>

<li>요청 모델과 공급자가 반환한 실제 모델</li>

<li>Standard·Batch·Priority 같은 요금 티어</li>

<li>Short·Long context 구간</li>

<li>cache read·cache write 단가</li>

<li>통화와 환율 기준일</li>

<li>추정 비용인지 공급자 확정 비용인지</li>
</ul>



<p>실시간 대시보드는 추정 비용으로 빠르게 보여주고, 하루 한 번 공급자 usage·청구 데이터와 대조해 확정 비용을 보정할 수 있다. 둘 사이 차이는 반올림, 지연 집계, 공유 캐시, 무료 크레딧, 약정 할인과 공급자별 토큰 분류에서 발생한다.</p>



<h2 class="wp-block-heading">팀·사용자·프로젝트별 비용 배부</h2>



<p>배부 태그는 Gateway나 에이전트 진입점에서 강제로 붙여야 한다. 개발자가 각 모델 호출마다 직접 넣게 하면 누락이 생긴다.</p>



<h3 class="wp-block-heading">권장 배부 계층</h3>



<ol class="wp-block-list">
<li><strong>Tenant 또는 고객사</strong>: B2B 서비스의 고객별 원가와 마진</li>

<li><strong>Team</strong>: 부서·개발팀별 예산</li>

<li><strong>Project 또는 기능</strong>: 코드 리뷰, 문서 생성, 고객지원 같은 기능별 원가</li>

<li><strong>User</strong>: 과도한 사용과 교육 필요 사용자 식별</li>

<li><strong>Agent·Workflow·Version</strong>: 버전 변경 전후 비용 비교</li>

<li><strong>Environment</strong>: production, staging, eval 비용 분리</li>
</ol>



<p>예를 들어 같은 고객지원 에이전트라도 <code>refund-agent:v3</code>가 v2보다 성공률은 2% 높지만 실행당 비용이 40% 늘었다면 품질 개선과 원가 상승을 함께 판단할 수 있다. 총 토큰만 보면 이 의사결정이 불가능하다.</p>



<p><a href="https://blog.kwt.co.kr/ai-gateway-cloudflare-litellm-guide/">AI Gateway</a>를 통과하도록 구성하면 모델 키, 라우팅, 공통 태그와 비용 제한을 한 지점에서 적용하기 쉽다.</p>



<h2 class="wp-block-heading">도구별 역할: 하나로 모두 해결하려 하지 않는다</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>도구</th><th>주 역할</th><th>공식 비용 기능</th><th>예산 차단</th><th>배포 형태</th><th>주의점</th></tr></thead><tbody>
<tr><td><strong>Langfuse</strong></td><td>LLM·에이전트 trace, 평가, 대시보드</td><td>input·output·cached·audio·image usage와 모델 가격 기반 비용</td><td>Gateway와 별도 설계</td><td>Cloud·Self-host</td><td>신규 모델·커스텀 단가 최신화 필요</td></tr>
<tr><td><strong>LangSmith</strong></td><td>LangChain·LangGraph 중심 tracing·평가</td><td>LLM 비용과 tool·retrieval custom run 비용을 Other로 집계</td><td>evaluator 비용 제한 제공, 일반 실행 hard cap은 별도</td><td>Cloud·엔터프라이즈 Self-host</td><td>프레임워크 결합도와 데이터 보관 정책 확인</td></tr>
<tr><td><strong>Phoenix</strong></td><td>OpenTelemetry·OpenInference 기반 오픈소스 관측성</td><td>token count와 모델 가격으로 span·trace·session·project 롤업</td><td>별도 Gateway 필요</td><td>Self-host·Arize 서비스</td><td>Phoenix와 Arize AX 제품 구분 필요</td></tr>
<tr><td><strong>LiteLLM</strong></td><td>멀티 모델 Gateway와 spend control</td><td>100개 이상 모델의 key·user·team별 spend 추적</td><td>개인·팀·에이전트 budget·rate limit</td><td>Self-host 중심·Enterprise</td><td>정확한 모델 매핑과 DB 운영 필요</td></tr>
<tr><td><strong>Cloudflare AI Gateway</strong></td><td>관리형 Gateway·분석·정책</td><td>요청·토큰·캐시·오류·provider 비용 분석</td><td>Spend limits 기능 제공</td><td>Cloudflare 관리형</td><td>세부 업무 trace는 별도 관측성 도구와 연결</td></tr>
<tr><td><strong>OpenTelemetry</strong></td><td>공급자 중립 trace·metric 표준</td><td>토큰·모델·도구 속성 표준화</td><td>없음</td><td>Collector와 원하는 backend</td><td>완성 제품이 아니며 GenAI 규약이 Development 상태</td></tr>
</tbody></table></figure>




<p>선택은 “가장 많은 기능”보다 통제 위치에 따라 달라진다.</p>



<ul class="wp-block-list">
<li>모델 호출 전에 예산을 막아야 한다면 LiteLLM·Cloudflare 같은 Gateway 계층이 필요하다.</li>

<li>실행 원인과 품질을 분석하려면 Langfuse·LangSmith·Phoenix 같은 trace backend가 필요하다.</li>

<li>제품 종속을 줄이고 여러 backend로 보내려면 OpenTelemetry Collector를 중간에 둔다.</li>

<li>작은 팀은 Gateway 1개와 관측성 backend 1개로 시작하는 편이 운영 부담이 낮다.</li>
</ul>



<h2 class="wp-block-heading">비용 대시보드에 넣을 10개 패널</h2>



<p>월간 총비용만 크게 표시한 대시보드는 원인을 알려주지 않는다. 최소한 다음 패널이 필요하다.</p>



<ol class="wp-block-list">
<li>총비용과 전일·전주 대비 증감</li>

<li>성공 실행당 평균·P50·P95 비용</li>

<li>실패 실행과 취소 실행의 비용</li>

<li>팀·고객·프로젝트별 비용</li>

<li>모델·공급자·요금 티어별 비용</li>

<li>일반 입력·cache read·cache write·출력 토큰 비중</li>

<li>Cache hit 비율과 절감 추정액</li>

<li>도구별 호출 수·성공률·외부 API 비용</li>

<li>에이전트 iteration·retry 분포</li>

<li>품질 점수 대비 비용</li>
</ol>



<p>평균만 보면 소수의 폭주 실행을 놓칠 수 있다. P95 실행 비용, 하루 최대 실행 비용과 상위 20개 비싼 trace를 바로 열 수 있어야 한다.</p>



<h2 class="wp-block-heading">예산 알림과 무한 루프 차단 기준</h2>



<p>비용 통제는 월말 보고서보다 실행 중 제한이 중요하다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>통제 지점</th><th>권장 규칙 예시</th></tr></thead><tbody>
<tr><td>팀 월 예산</td><td>70% 정보 알림, 90% 경고, 100% 신규 저우선순위 작업 제한</td></tr>
<tr><td>실행당 예산</td><td>예상 비용이 상한을 넘으면 저가 모델 전환 또는 사용자 승인</td></tr>
<tr><td>반복 횟수</td><td>agent iteration·tool retry 최대값 설정</td></tr>
<tr><td>P95 비용</td><td>최근 7일 기준의 2배를 넘으면 이상 징후 알림</td></tr>
<tr><td>Cache hit</td><td>기준선 아래로 떨어지면 프롬프트 prefix 변경 검사</td></tr>
<tr><td>실패 비용</td><td>실패 실행 비용 비중이 임계값을 넘으면 배포 중단 검토</td></tr>
<tr><td>도구 비용</td><td>유료 검색·브라우저·GPU 호출 전에 남은 예산 검사</td></tr>
</tbody></table></figure>




<p>숫자는 서비스 위험도와 마진에 맞춰 정해야 한다. 결제·배포·데이터 삭제 같은 중요한 작업을 예산 때문에 중간에 강제 종료하면 더 큰 장애가 날 수 있다. hard cap은 안전하게 재개할 수 있는 작업에 적용하고, 중요한 작업은 승인·fallback·grace budget을 둔다.</p>



<h2 class="wp-block-heading">최소 비용 추적 도입 순서</h2>



<h3 class="wp-block-heading">1단계: 공통 식별자와 토큰 기록</h3>



<p>사용자 작업 하나에 <code>trace_id</code>와 <code>run_id</code>를 만들고 모든 LLM·도구 호출에 전파한다. provider, request model, response model, 입력·출력·캐시 토큰을 기록한다.</p>



<h3 class="wp-block-heading">2단계: 가격 계산기와 버전 추가</h3>



<p>모델별 가격표를 코드에 흩어놓지 않고 중앙 cost map으로 관리한다. 가격 버전, 통화, 요금 티어와 estimated cost를 span에 붙인다.</p>



<h3 class="wp-block-heading">3단계: 조직 배부 태그 강제</h3>



<p>Gateway나 공통 SDK에서 tenant, team, user, project, environment, agent version을 필수화한다. 태그가 없으면 production 호출을 거부하거나 <code>unallocated</code> 비용으로 따로 집계한다.</p>



<h3 class="wp-block-heading">4단계: 도구·재시도 비용 연결</h3>



<p>외부 API 호출 span에 단가와 사용량을 붙인다. retry count, iteration, error type과 termination reason을 기록해 실패 비용을 분리한다.</p>



<h3 class="wp-block-heading">5단계: 대시보드와 알림</h3>



<p>총비용, 성공 실행당 비용, 실패 비용, cache hit, P95 비용과 상위 고비용 trace를 먼저 만든다. 이후 팀 예산과 실행당 상한을 적용한다.</p>



<h3 class="wp-block-heading">6단계: 공급자 청구서와 대조</h3>



<p>매일 provider usage와 내부 추정 비용을 비교한다. 차이가 일정 수준을 넘으면 가격표·모델 매핑·캐시 분류·시간대 기준을 점검한다.</p>



<h2 class="wp-block-heading">운영 체크리스트</h2>



<ul class="wp-block-list">
<li>사용자 목표 1건을 하나의 trace로 묶었는가</li>

<li>모든 모델·도구 호출에 같은 run ID가 전파되는가</li>

<li>request model과 response model을 분리했는가</li>

<li>일반 입력·cache read·cache creation·출력을 구분했는가</li>

<li>reasoning·이미지·오디오 사용량을 별도로 기록하는가</li>

<li>외부 검색·브라우저·DB·GPU 비용을 포함했는가</li>

<li>retry·iteration·실패 비용을 분리했는가</li>

<li>팀·사용자·프로젝트·환경 태그가 필수인가</li>

<li>가격표 버전과 요금 티어를 저장하는가</li>

<li>실시간 추정액을 공급자 청구 데이터와 대조하는가</li>

<li>프롬프트 전문 없이도 비용 분석이 가능한가</li>

<li>실행당 budget과 무한 루프 제한이 있는가</li>
</ul>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">AI 에이전트 비용 추적과 일반 LLM 비용 추적은 무엇이 다른가?</h3>



<p>일반 LLM 비용 추적은 모델 호출별 토큰과 금액을 본다. AI 에이전트 비용 추적은 하나의 사용자 목표 아래 여러 LLM 호출, 도구 실행, 재시도, 평가와 인프라 비용을 합쳐 실행 총원가를 계산한다.</p>



<h3 class="wp-block-heading">OpenTelemetry만 도입하면 비용 계산이 끝나나?</h3>



<p>아니다. OpenTelemetry는 trace와 GenAI 속성을 표준화하지만 제품별 가격표, 조직 배부, 외부 도구 단가와 예산 차단은 별도로 구현하거나 관측성·Gateway 제품을 연결해야 한다. GenAI semantic conventions도 2026년 7월 기준 Development 상태다.</p>



<h3 class="wp-block-heading">Langfuse와 LiteLLM 중 무엇을 써야 하나?</h3>



<p>역할이 다르다. Langfuse는 trace·평가·비용 분석 backend에 가깝고 LiteLLM은 모델 Gateway와 key·user·team 예산 통제에 강하다. 비용 차단과 원인 분석이 모두 필요하면 함께 사용할 수 있다.</p>



<h3 class="wp-block-heading">프롬프트와 응답을 저장해야 비용을 계산할 수 있나?</h3>



<p>필수는 아니다. 모델, 토큰 유형별 사용량, 도구명, 상태, 재시도와 가격 버전만으로 비용을 계산할 수 있다. 민감한 프롬프트는 마스킹하거나 저장하지 않는 편이 안전하다.</p>



<h3 class="wp-block-heading">캐시 적중률이 높으면 비용도 같은 비율로 줄어드나?</h3>



<p>아니다. 캐시 할인은 캐시된 입력 부분에만 적용된다. 출력, reasoning, cache write, 도구 API와 관측 비용은 그대로 남는다. 전체 절감률은 입력 비중과 cache read 단가에 따라 달라진다.</p>



<h3 class="wp-block-heading">공급자 대시보드 금액과 내부 계산이 다른 이유는 무엇인가?</h3>



<p>시간대, 집계 지연, 반올림, 무료 크레딧, 약정 할인, 실제 응답 모델, 캐시 분류와 가격표 버전 차이 때문이다. 내부 값은 실시간 통제를 위한 추정액으로 사용하고 공급자 usage·청구 데이터로 정기 보정해야 한다.</p>



<h2 class="wp-block-heading">참고 자료</h2>



<ul class="wp-block-list">
<li><a href="https://github.com/open-telemetry/semantic-conventions-genai">OpenTelemetry GenAI Semantic Conventions Repository</a> — GenAI span·agent·tool·token 속성 표준</li>

<li><a href="https://langfuse.com/docs/observability/features/token-and-cost-tracking">Langfuse Token &amp; Cost Tracking</a> — usage 유형과 모델 가격 기반 비용 계산</li>

<li><a href="https://docs.langchain.com/langsmith/cost-tracking">LangSmith Cost Tracking</a> — LLM·tool·retrieval custom cost와 대시보드</li>

<li><a href="https://arize.com/docs/phoenix/tracing/how-to-tracing/cost-tracking">Arize Phoenix Cost Tracking</a> — span·trace·session·project 비용 롤업</li>

<li><a href="https://docs.litellm.ai/docs/proxy/cost_tracking">LiteLLM Spend Tracking</a> — key·user·team별 spend 추적</li>

<li><a href="https://docs.litellm.ai/docs/proxy/users">LiteLLM Budgets and Rate Limits</a> — 개인·팀·에이전트 예산과 실행 제한</li>

<li><a href="https://developers.cloudflare.com/ai-gateway/observability/analytics/">Cloudflare AI Gateway Analytics</a> — 요청·토큰·캐시·오류·비용 분석</li>
</ul>



<p>*제품 기능과 문서 상태는 2026년 7월 29일 확인 기준이며 이후 변경될 수 있다.*</p>




<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"AI 에이전트 비용 추적과 일반 LLM 비용 추적은 무엇이 다른가?","acceptedAnswer":{"@type":"Answer","text":"일반 LLM 비용 추적은 모델 호출별 토큰과 금액을 본다. AI 에이전트 비용 추적은 하나의 사용자 목표 아래 여러 LLM 호출, 도구 실행, 재시도, 평가와 인프라 비용을 합쳐 실행 총원가를 계산한다."}},{"@type":"Question","name":"OpenTelemetry만 도입하면 비용 계산이 끝나나?","acceptedAnswer":{"@type":"Answer","text":"아니다. OpenTelemetry는 trace와 GenAI 속성을 표준화하지만 제품별 가격표, 조직 배부, 외부 도구 단가와 예산 차단은 별도로 구현하거나 관측성·Gateway 제품을 연결해야 한다."}},{"@type":"Question","name":"Langfuse와 LiteLLM 중 무엇을 써야 하나?","acceptedAnswer":{"@type":"Answer","text":"역할이 다르다. Langfuse는 trace·평가·비용 분석 backend에 가깝고 LiteLLM은 모델 Gateway와 key·user·team 예산 통제에 강하다. 두 기능이 모두 필요하면 함께 사용할 수 있다."}},{"@type":"Question","name":"프롬프트와 응답을 저장해야 비용을 계산할 수 있나?","acceptedAnswer":{"@type":"Answer","text":"필수는 아니다. 모델, 토큰 유형별 사용량, 도구명, 상태, 재시도와 가격 버전만으로 비용을 계산할 수 있다."}},{"@type":"Question","name":"캐시 적중률이 높으면 비용도 같은 비율로 줄어드나?","acceptedAnswer":{"@type":"Answer","text":"아니다. 캐시 할인은 캐시된 입력 부분에만 적용된다. 출력, reasoning, cache write, 도구 API와 관측 비용은 그대로 남는다."}},{"@type":"Question","name":"공급자 대시보드 금액과 내부 계산이 다른 이유는 무엇인가?","acceptedAnswer":{"@type":"Answer","text":"시간대, 집계 지연, 반올림, 무료 크레딧, 약정 할인, 실제 응답 모델, 캐시 분류와 가격표 버전 차이 때문이다."}}]}</script>
		<div class="wpulike wpulike-robeen " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="2748"
					data-ulike-nonce="a83dcf23a8"
					data-ulike-type="post"
					data-ulike-template="wpulike-robeen"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2748"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	<p>The post <a href="https://blog.kwt.co.kr/ai-agent-cost-tracking-guide/">AI 에이전트 비용 추적 가이드: 토큰·캐시·도구 호출 비용을 팀별로 관리하는 법</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/ai-agent-cost-tracking-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI 에이전트 관측성 가이드: 로그만으로는 부족한 이유</title>
		<link>https://blog.kwt.co.kr/ai-agent-observability-guide/</link>
					<comments>https://blog.kwt.co.kr/ai-agent-observability-guide/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Wed, 08 Jul 2026 00:14:35 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[AI 에이전트]]></category>
		<category><![CDATA[AI 운영]]></category>
		<category><![CDATA[LLMOps]]></category>
		<category><![CDATA[OpenTelemetry]]></category>
		<category><![CDATA[관측성]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/?p=2679</guid>

					<description><![CDATA[<p>AI 에이전트 운영에서는 서버 로그만으로 부족하다. LLM 호출, 도구 실행, 비용, 승인, 실패 원인을 하나의 trace로 연결해 추적하는 관측성 설계 방법을 정리한다.</p>
<p>The post <a href="https://blog.kwt.co.kr/ai-agent-observability-guide/">AI 에이전트 관측성 가이드: 로그만으로는 부족한 이유</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>AI 에이전트 관측성</strong>은 LLM 호출, 도구 실행, 비용, 오류, 사용자 승인, 최종 산출물을 하나의 실행 흐름으로 추적하는 운영 체계다. 챗봇 응답 품질만 보는 단계에서는 없어도 버틸 수 있지만, AI 에이전트가 파일을 수정하고 터미널을 실행하고 외부 API를 호출하기 시작하면 관측성은 선택 기능이 아니라 운영 안전장치가 된다.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1400" height="788" src="https://blog.kwt.co.kr/wp-content/uploads/2026/07/ai-agent-observability-guide.jpg" alt="AI 에이전트 관측성 대시보드 개념도: LLM 호출, 도구 실행, 비용, 오류 추적" class="wp-image-2678"/><figcaption class="wp-element-caption">AI 에이전트 관측성은 LLM 호출, 도구 실행, 비용, 지연 시간, 실패 원인을 하나의 실행 흐름으로 연결해 보는 운영 체계다.</figcaption></figure>



<div style="border:1px solid #dbeafe;background:#eff6ff;padding:18px;border-radius:12px;margin:24px 0;">
<strong>핵심 요약</strong>
<ul>
<li>AI 에이전트 운영에서는 서버 로그만으로는 부족하다.</li>
<li>LLM 호출, 도구 실행, 비용, 승인, 실패 원인을 같은 trace 안에서 봐야 한다.</li>
<li>관측성 설계가 없으면 “왜 비용이 늘었는지”, “왜 파일이 바뀌었는지”, “왜 작업이 실패했는지”를 사후에 설명하기 어렵다.</li>
<li>OpenTelemetry의 Generative AI semantic conventions, OpenAI Agents SDK tracing, Claude Code usage monitoring, LangSmith 같은 도구가 이 흐름을 빠르게 표준화하고 있다.</li>
</ul>
</div>



<h2 class="wp-block-heading">왜 AI 에이전트에는 별도 관측성이 필요한가</h2>



<p>전통적인 웹 서비스 관측성은 요청, 응답 시간, 오류율, CPU, 메모리, 데이터베이스 쿼리를 중심으로 설계됐다. 그러나 AI 에이전트는 여기에 새로운 실행 단계를 추가한다. 사용자의 자연어 요청을 해석하고, 모델을 호출하고, 필요한 도구를 고르고, 파일이나 API를 조작하고, 실패하면 다시 시도한다. 같은 “요청 1건” 안에 여러 번의 LLM 호출과 여러 개의 도구 실행이 들어갈 수 있다.</p>



<p>문제는 실패 지점이 훨씬 다양해진다는 점이다. 모델이 요구사항을 잘못 이해했을 수도 있고, 도구 인자가 틀렸을 수도 있고, 권한 승인이 거절됐을 수도 있고, API rate limit에 걸렸을 수도 있고, 테스트 실패 후 복구 전략을 잘못 선택했을 수도 있다. 단순히 “500 오류가 났다”는 로그만으로는 원인을 설명하기 어렵다.</p>



<h2 class="wp-block-heading">일반 서버 로그와 AI 에이전트 관측성의 차이</h2>



<figure class="wp-block-table"><table><thead><tr><th>구분</th><th>일반 서버 로그</th><th>AI 에이전트 관측성</th></tr></thead><tbody><tr><td>기본 단위</td><td>HTTP 요청, 배치 작업, 서버 이벤트</td><td>사용자 목표, LLM 호출, 도구 실행, 산출물</td></tr><tr><td>주요 지표</td><td>응답 시간, 오류율, 리소스 사용량</td><td>토큰, 비용, 모델, 도구 성공률, 재시도, 승인 이력</td></tr><tr><td>실패 원인</td><td>예외, 네트워크, DB 오류</td><td>프롬프트 오해, 컨텍스트 누락, 도구 인자 오류, 권한 문제, 모델 불안정성</td></tr><tr><td>보안 이슈</td><td>개인정보 로그, 인증 토큰 노출</td><td>프롬프트 내 비밀 정보, 도구 권한 남용, 파일/터미널 실행 이력</td></tr><tr><td>분석 목표</td><td>장애 복구와 성능 개선</td><td>장애 복구, 비용 통제, 품질 평가, 감사 가능성 확보</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">반드시 추적해야 할 9가지 항목</h2>



<ol class="wp-block-list">
<li><strong>작업 목표</strong>: 사용자가 무엇을 요청했는지, 에이전트가 어떤 목표로 해석했는지 기록한다.</li>

<li><strong>모델명과 버전</strong>: 같은 프롬프트라도 모델과 버전에 따라 결과가 달라진다.</li>

<li><strong>토큰 사용량과 비용</strong>: 입력 토큰, 출력 토큰, 캐시 사용량, 모델별 단가를 추적한다.</li>

<li><strong>도구 호출 이력</strong>: 파일 읽기, 파일 수정, 터미널 실행, 브라우저 조작, API 호출을 span 단위로 남긴다.</li>

<li><strong>도구 인자와 결과</strong>: 어떤 명령이나 API 파라미터가 실행됐고 어떤 결과가 돌아왔는지 확인 가능해야 한다.</li>

<li><strong>사용자 승인 이력</strong>: 위험한 명령, 외부 전송, 배포, 결제성 작업은 승인 여부와 시점을 남긴다.</li>

<li><strong>재시도와 복구 경로</strong>: 실패 후 같은 방식을 반복했는지, 다른 전략으로 전환했는지 확인한다.</li>

<li><strong>최종 산출물</strong>: 생성된 PR, 파일, 문서, 배포 URL, 테스트 결과를 trace와 연결한다.</li>

<li><strong>민감정보 처리 상태</strong>: 프롬프트와 응답에 개인정보, API 키, 내부 문서가 포함됐는지 마스킹 여부를 남긴다.</li>
</ol>



<h2 class="wp-block-heading">AI 에이전트 trace는 어떻게 설계해야 하나</h2>



<p>가장 실용적인 방식은 사용자 요청 하나를 최상위 trace로 보고, 그 아래에 LLM 호출과 도구 실행을 span으로 나누는 구조다. OpenTelemetry는 trace, metric, log를 함께 다루는 관측성 표준이며, 최근에는 Generative AI semantic conventions를 통해 모델명, 토큰 사용량, 프롬프트 관련 이벤트, 응답 관련 속성을 표현하는 방향을 제시한다.</p>



<div style="border:1px solid #e5e7eb;background:#f9fafb;padding:16px;border-radius:10px;margin:22px 0;font-family:monospace;white-space:pre-wrap;">user_task trace
├─ llm.call: intent 분석
├─ tool.call: 파일 검색
├─ llm.call: 수정 계획 생성
├─ tool.call: 파일 수정
├─ tool.call: 테스트 실행
├─ llm.call: 실패 원인 분석
└─ final_artifact: PR 또는 문서 생성</div>



<p>이 구조를 쓰면 “작업이 실패했다”가 아니라 “테스트 실행 span에서 실패했고, 이후 모델이 원인을 잘못 추론해 같은 명령을 반복했다”처럼 설명할 수 있다. 운영자는 모델 품질 문제, 도구 문제, 권한 문제, 외부 API 문제를 분리해 볼 수 있다.</p>



<h2 class="wp-block-heading">비용 관측성은 별도 대시보드로 봐야 한다</h2>



<p>AI 에이전트 비용은 사용자가 체감하기 전에 급격히 늘 수 있다. 특히 장기 작업, 대용량 컨텍스트, 반복 테스트, 멀티 에이전트 작업에서는 요청 1건이 여러 모델 호출로 쪼개진다. 그래서 단순 월별 API 청구액보다 작업 단위 비용을 보는 것이 중요하다.</p>



<figure class="wp-block-table"><table><thead><tr><th>비용 항목</th><th>확인할 질문</th><th>운영 기준 예시</th></tr></thead><tbody><tr><td>입력 토큰</td><td>불필요한 파일이나 로그가 매번 들어가는가</td><td>프로젝트 문서 요약 캐시 사용</td></tr><tr><td>출력 토큰</td><td>모델이 과도하게 긴 설명을 반복하는가</td><td>작업별 응답 길이 제한</td></tr><tr><td>재시도 비용</td><td>같은 실패를 반복하는가</td><td>동일 오류 2회 후 사람 승인 필요</td></tr><tr><td>고급 모델 사용</td><td>모든 단계에 최고가 모델이 필요한가</td><td>계획/검토/실행 모델 분리</td></tr><tr><td>도구 실행 비용</td><td>외부 API나 검색 호출이 과도한가</td><td>도메인별 rate limit 설정</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">보안 관측성: 무엇을 남기고 무엇을 지울 것인가</h2>



<p>AI 에이전트 관측성에서 가장 위험한 함정은 “모든 프롬프트와 응답을 그대로 저장하면 디버깅이 쉬워진다”는 생각이다. 실제 운영 환경에서는 프롬프트 안에 고객 정보, 내부 코드, API 키, 장애 로그, 사내 문서가 섞일 수 있다. 관측성은 감사 가능성을 높여야 하지만, 동시에 새로운 정보 유출 경로가 되면 안 된다.</p>



<ul class="wp-block-list">
<li>API 키, 토큰, 비밀번호 패턴은 저장 전에 마스킹한다.</li>

<li>원문 프롬프트 저장은 기본값이 아니라 옵션으로 둔다.</li>

<li>고위험 도구 호출은 인자 전체보다 요약과 해시를 저장하는 방식을 검토한다.</li>

<li>trace 접근 권한은 개발자 전체가 아니라 운영상 필요한 인원으로 제한한다.</li>

<li>보관 기간을 정하고 오래된 원문 로그는 삭제하거나 비식별화한다.</li>
</ul>



<h2 class="wp-block-heading">운영 성숙도별 도입 순서</h2>



<figure class="wp-block-table"><table><thead><tr><th>단계</th><th>해야 할 일</th><th>목표</th></tr></thead><tbody><tr><td>1단계</td><td>LLM 호출 횟수, 토큰, 비용 기록</td><td>비용 폭증 방지</td></tr><tr><td>2단계</td><td>도구 호출과 오류를 작업 trace로 연결</td><td>실패 원인 분석</td></tr><tr><td>3단계</td><td>승인 이력과 파일 변경 이력 연결</td><td>감사 가능성 확보</td></tr><tr><td>4단계</td><td>모델별 성공률과 재시도율 비교</td><td>모델 라우팅 최적화</td></tr><tr><td>5단계</td><td>품질 평가와 산출물 리뷰 결과 연결</td><td>에이전트 개선 루프 구축</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">개인 AI 에이전트 서버에도 필요한 이유</h2>



<p>개인 맥미니나 홈서버에서 OpenClaw 같은 AI 에이전트 서버를 운영할 때도 관측성은 필요하다. 개인 환경에서는 대규모 SRE 조직이 없기 때문에 오히려 기록이 더 중요하다. 언제 어떤 모델이 어떤 파일을 읽고 수정했는지, 어떤 명령이 실패했는지, 비용이 어느 작업에서 늘었는지 알 수 없으면 문제를 재현하기 어렵다.</p>



<p>처음부터 복잡한 대시보드를 만들 필요는 없다. 작업 ID, 모델명, 토큰, 도구 호출, 오류, 최종 산출물 링크만 JSON 로그로 남겨도 출발점으로 충분하다. 이후 필요해지면 OpenTelemetry collector, Grafana, LangSmith, 자체 대시보드 같은 도구로 확장할 수 있다.</p>



<h2 class="wp-block-heading">AI 에이전트 관측성 체크리스트</h2>



<ul class="wp-block-list">
<li>사용자 요청 하나에 고유한 작업 ID가 붙는가</li>

<li>LLM 호출마다 모델명, 입력/출력 토큰, 비용이 남는가</li>

<li>도구 호출 인자와 결과가 trace 안에 연결되는가</li>

<li>파일 수정, 터미널 실행, 외부 API 호출은 별도 span으로 남는가</li>

<li>사용자 승인 여부와 승인 시점이 기록되는가</li>

<li>프롬프트와 응답 원문 저장 정책이 정해져 있는가</li>

<li>민감정보 마스킹이 저장 전에 적용되는가</li>

<li>실패 후 재시도 횟수와 복구 전략을 볼 수 있는가</li>

<li>최종 산출물과 테스트 결과가 작업 기록에 연결되는가</li>
</ul>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">AI 에이전트 관측성이 일반 로그와 다른 점은 무엇인가?</h3>



<p>일반 로그가 서버 요청과 오류를 남기는 데 초점을 둔다면 AI 에이전트 관측성은 LLM 호출, 프롬프트, 도구 실행, 권한 승인, 비용, 재시도, 최종 산출물을 하나의 작업 흐름으로 연결해 추적한다.</p>



<h3 class="wp-block-heading">AI 에이전트 운영에서 반드시 기록해야 할 지표는 무엇인가?</h3>



<p>최소한 모델명, 토큰 사용량, 비용, 지연 시간, 도구 호출 성공률, 재시도 횟수, 사용자 승인 이력, 오류 원인, 최종 산출물 링크를 기록해야 한다.</p>



<h3 class="wp-block-heading">프롬프트와 응답을 모두 저장해도 되는가?</h3>



<p>항상 저장하면 위험하다. 개인정보, API 키, 내부 문서, 고객 데이터가 포함될 수 있으므로 마스킹, 샘플링, 보관 기간, 접근 권한을 먼저 정해야 한다.</p>



<h3 class="wp-block-heading">OpenTelemetry만 쓰면 AI 에이전트 관측성이 완성되는가?</h3>



<p>아니다. OpenTelemetry는 공통 추적 포맷과 파이프라인을 제공하지만, 어떤 이벤트를 남기고 어떤 실패를 경보로 볼지는 서비스 정책과 평가 기준으로 별도 설계해야 한다.</p>



<h3 class="wp-block-heading">개인 AI 에이전트 서버에도 관측성이 필요한가?</h3>



<p>필요하다. 개인 서버라도 모델 비용, 파일 수정 이력, 도구 호출 실패, 장기 작업 중단 원인을 확인할 수 없으면 운영과 디버깅이 어려워진다.</p>



<h2 class="wp-block-heading">참고 자료</h2>



<ul class="wp-block-list">
<li><a href="https://opentelemetry.io/docs/concepts/observability-primer/" target="_blank" rel="noreferrer noopener">OpenTelemetry Observability Primer</a></li>

<li><a href="https://opentelemetry.io/docs/specs/semconv/gen-ai/" target="_blank" rel="noreferrer noopener">OpenTelemetry Generative AI Semantic Conventions</a></li>

<li><a href="https://openai.github.io/openai-agents-python/tracing/" target="_blank" rel="noreferrer noopener">OpenAI Agents SDK Tracing</a></li>

<li><a href="https://docs.anthropic.com/en/docs/claude-code/monitoring-usage" target="_blank" rel="noreferrer noopener">Anthropic Claude Code Monitoring Usage</a></li>

<li><a href="https://docs.langchain.com/langsmith/observability" target="_blank" rel="noreferrer noopener">LangSmith Observability</a></li>
</ul>



<script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "AI 에이전트 관측성이 일반 로그와 다른 점은 무엇인가?", "acceptedAnswer": {"@type": "Answer", "text": "일반 로그가 서버 요청과 오류를 남기는 데 초점을 둔다면 AI 에이전트 관측성은 LLM 호출, 프롬프트, 도구 실행, 권한 승인, 비용, 재시도, 최종 산출물을 하나의 작업 흐름으로 연결해 추적한다."}}, {"@type": "Question", "name": "AI 에이전트 운영에서 반드시 기록해야 할 지표는 무엇인가?", "acceptedAnswer": {"@type": "Answer", "text": "최소한 모델명, 토큰 사용량, 비용, 지연 시간, 도구 호출 성공률, 재시도 횟수, 사용자 승인 이력, 오류 원인, 최종 산출물 링크를 기록해야 한다."}}, {"@type": "Question", "name": "프롬프트와 응답을 모두 저장해도 되는가?", "acceptedAnswer": {"@type": "Answer", "text": "항상 저장하면 위험하다. 개인정보, API 키, 내부 문서, 고객 데이터가 포함될 수 있으므로 마스킹, 샘플링, 보관 기간, 접근 권한을 먼저 정해야 한다."}}, {"@type": "Question", "name": "OpenTelemetry만 쓰면 AI 에이전트 관측성이 완성되는가?", "acceptedAnswer": {"@type": "Answer", "text": "아니다. OpenTelemetry는 공통 추적 포맷과 파이프라인을 제공하지만, 어떤 이벤트를 남기고 어떤 실패를 경보로 볼지는 서비스 정책과 평가 기준으로 별도 설계해야 한다."}}, {"@type": "Question", "name": "개인 AI 에이전트 서버에도 관측성이 필요한가?", "acceptedAnswer": {"@type": "Answer", "text": "필요하다. 개인 서버라도 모델 비용, 파일 수정 이력, 도구 호출 실패, 장기 작업 중단 원인을 확인할 수 없으면 운영과 디버깅이 어려워진다."}}]}</script>

		<div class="wpulike wpulike-robeen " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="2679"
					data-ulike-nonce="e3e86a684a"
					data-ulike-type="post"
					data-ulike-template="wpulike-robeen"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2679"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	<p>The post <a href="https://blog.kwt.co.kr/ai-agent-observability-guide/">AI 에이전트 관측성 가이드: 로그만으로는 부족한 이유</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/ai-agent-observability-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>OpenClaw 설치 가이드 2026: 맥미니로 개인 AI 에이전트 서버 구축하기</title>
		<link>https://blog.kwt.co.kr/openclaw-install-guide-mac-mini-ai-agent-server/</link>
					<comments>https://blog.kwt.co.kr/openclaw-install-guide-mac-mini-ai-agent-server/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Mon, 06 Jul 2026 01:25:51 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI 에이전트]]></category>
		<category><![CDATA[Hermes Agent]]></category>
		<category><![CDATA[OpenClaw]]></category>
		<category><![CDATA[개인 AI 서버]]></category>
		<category><![CDATA[맥미니]]></category>
		<category><![CDATA[설치 가이드]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/?p=2667</guid>

					<description><![CDATA[<p>OpenClaw 설치 가이드 2026.9.5 기준이다. 맥미니 공식 설치 스크립트, Node.js 24.16+/26.1+ 요구사항, npm allow-scripts 조건, GPT-6 Astra 기본 모델, 보안 설정을 정리한다.</p>
<p>The post <a href="https://blog.kwt.co.kr/openclaw-install-guide-mac-mini-ai-agent-server/">OpenClaw 설치 가이드 2026: 맥미니로 개인 AI 에이전트 서버 구축하기</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>2026년 9월 22일 기준 OpenClaw를 맥미니에 설치할 때는 <strong>공식 설치 스크립트로 시작하는 방법이 가장 단순하다.</strong> 스크립트가 필요한 Node.js를 준비하고 온보딩까지 이어 주기 때문이다. 다만 상시 운영하려면 메신저 채널과 Gateway, 모델 인증, skills, 보안 정책, 자동 시작, 로그도 함께 설계해야 한다.</p>



<p><em>갱신 이력: 2026-09-22 — OpenClaw 2026.9.5 기준으로 Node.js 요구사항(24.16+/26.1+), 기본 모델(GPT-6 Astra), 원자적 업데이트 내용을 공식 문서와 대조해 반영했다.</em></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2400" height="1350" src="https://blog.kwt.co.kr/wp-content/uploads/2026/07/image.png" alt="맥미니에서 OpenClaw Gateway와 메신저 채널을 연결해 개인 AI 에이전트 서버를 구성하는 개념 이미지" class="wp-image-2676"/></figure>



<div class="wp-block-group" style="border:1px solid #dbeafe;background:#eff6ff;padding:20px;border-radius:14px"><p><strong>핵심 요약</strong></p><ul><li>맥미니에서는 <code>curl -fsSL https://openclaw.ai/install.sh | bash</code>가 공식 권장 설치 경로다.</li><li>Node.js를 직접 관리한다면 24.16+ 또는 26.1+가 지원되며(Node 26 권장) npm 버전에 따라 설치 옵션이 달라진다.</li><li>OpenClaw 2026.9.5의 빠른 시작은 기존 Claude Code·Codex 로그인과 API 키를 찾아 검증한 뒤 대시보드를 연다.</li><li>설치 후에는 채널 연결보다 먼저 접근 권한, pairing·allowlist, 로그, 자동 시작 정책을 잡아야 한다.</li></ul></div>



<h2 class="wp-block-heading">OpenClaw를 맥미니에 설치하면 무엇이 달라지나</h2>



<p>OpenClaw를 맥미니에 설치하면 집이나 사무실에 항상 켜져 있는 개인 AI 에이전트 서버를 둘 수 있다. 단순한 챗봇과 달리 Gateway, 메신저 채널, skills, 모델 인증, 파일 접근 권한이 함께 움직이기 때문에 설치 직후부터 운영과 보안을 같이 설계해야 한다.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="980" src="https://blog.kwt.co.kr/wp-content/uploads/2026/07/openclaw-google-trends-kr-with-dates.jpg" alt="OpenClaw Hermes Agent AI agent vibe coding의 한국 Google Trends 상대 관심도와 x축 연월일이 표시된 차트" class="wp-image-2671"/><figcaption class="wp-element-caption">Google Trends 비공식 조회 기준 OpenClaw, Hermes Agent, AI agent, vibe coding의 최근 12개월 한국 검색 관심도를 연월일 축과 함께 비교한 차트.</figcaption></figure>



<p>Google Trends 값은 절대 검색량이 아니라 상대 지수다. 다만 최근 12개월 흐름을 보면 AI agent는 꾸준한 큰 흐름이고, OpenClaw와 Hermes Agent에도 docs, install, skills, memory 같은 실사용 관련 관심이 붙어 있다.</p>



<h2 class="wp-block-heading">OpenClaw를 한 줄로 정리하면</h2>



<p>OpenClaw는 로컬 또는 개인 서버에서 실행되며 여러 메신저 채널을 통해 명령을 받고, 파일·터미널·브라우저·도구·skills를 연결해 작업하는 개인 AI assistant다. 공식 README 기준으로 WhatsApp, Telegram, Slack, Discord, Google Chat, Signal, iMessage, Microsoft Teams, Matrix, LINE, WeChat 등 여러 채널을 언급한다.</p>



<p>중요한 점은 Gateway가 단순 챗봇 서버가 아니라 control plane 역할을 한다는 것이다. 메시지를 받고, 어떤 agent와 tool을 사용할지 결정하고, 권한 정책과 session 상태를 관리한다. 그래서 설치 글에는 보안과 운영 항목이 반드시 들어가야 한다.</p>



<h2 class="wp-block-heading">설치 전 준비물</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>항목</th><th>권장 기준</th><th>이유</th></tr></thead><tbody><tr><td>맥미니</td><td>M2/M4, 16GB 이상 권장</td><td>상시 구동과 여러 도구 실행 여유</td></tr><tr><td>네트워크</td><td>가능하면 유선 LAN</td><td>Gateway와 메신저 연결 안정성</td></tr><tr><td>Node.js</td><td>24.16+ 또는 26.1+(Node 26 권장)</td><td>공식 설치 스크립트는 macOS에서 필요할 때 Node 26을 준비한다</td></tr><tr><td>모델 인증</td><td>API 키, OpenAI/Codex OAuth, Claude CLI 로그인, OpenRouter OAuth, GitHub Copilot device flow 중 선택</td><td>요금제와 사용 목적에 맞게 비용·한도·정책을 분리</td></tr><tr><td>메신저 채널</td><td>Telegram 또는 Discord부터 시작</td><td>봇 토큰, 접근 제어, 테스트가 비교적 명확</td></tr><tr><td>전용 계정</td><td>macOS 별도 사용자 권장</td><td>파일 접근 범위와 보안 경계 분리</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">모델 인증 방식: OAuth와 API 키 중 무엇을 쓸까</h2>



<p>OpenClaw에서 모델을 연결하는 방식은 크게 구독 계정 기반 인증과 API 키 기반 인증으로 나눌 수 있다. 개인 사용자는 ChatGPT/Codex OAuth, GitHub Copilot device flow, Claude Code CLI 로그인처럼 이미 쓰는 구독 계정을 연결하는 방식이 편하다. 반대로 장시간 자동화, 팀 공유, 비용 통제, 서버 운영처럼 예측 가능한 과금과 권한 관리가 중요하면 API 키 방식이 더 단순하다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>방식</th><th>대표 경로</th><th>추천 상황</th><th>확인할 점</th></tr></thead><tbody><tr><td>OAuth / 구독 계정</td><td>OpenAI/Codex OAuth, GitHub Copilot device flow, OpenRouter OAuth</td><td>개인 맥미니에서 이미 쓰는 ChatGPT, Codex, Copilot 계정을 연결해 빠르게 시작할 때</td><td>구독 한도, 조직 정책, token refresh, device-code 로그인을 확인</td></tr><tr><td>Claude Code CLI 로그인</td><td>같은 Mac에 로그인된 Claude Code CLI를 OpenClaw runtime에서 재사용</td><td>Claude Pro/Max 또는 Team/Enterprise 계정을 개인 작업에 활용할 때</td><td>Anthropic의 Claude Code·Agent SDK 과금 정책은 변경될 수 있어 최신 문서 확인 필요</td></tr><tr><td>API 키</td><td>Anthropic API key, OpenAI Platform API key, OpenRouter API key 등</td><td>장시간 Gateway, 공유 자동화, 서버 운영, 비용 추적, 권한 분리가 필요할 때</td><td>구독 요금제와 별도 과금인 경우가 많으므로 사용량 제한과 알림 설정 필요</td></tr><tr><td>혼합 구성</td><td>OAuth를 기본으로 쓰고 API 키를 backup으로 두거나 provider fallback 사용</td><td>구독 한도에 걸렸을 때 자동으로 다른 인증/모델로 넘기고 싶을 때</td><td>auth order와 fallback 정책을 명시하고, 원치 않는 비용 발생을 막아야 함</td></tr></tbody></table></figure>



<p>OpenClaw 2026.9.5의 빠른 시작은 같은 기기에 있는 Claude Code·Codex 로그인과 API 키 후보를 찾아 실제로 검증하고 기본 모델 선택으로 이어 준다. 기본 모델을 고르지 않은 새 OpenAI 설정은 GPT-6 Astra로 시작하며, 계정에서 제공하지 않으면 설정 중 사용 가능한 모델을 고른다. 개인 실험은 이 경로가 편하지만, 장시간 자동화나 팀 공유 환경은 API 키 기반 과금과 권한 관리가 더 명확한 경우가 많다.</p>



<pre class="wp-block-code"><code># 1. 개인 사용자는 OAuth/device-code 방식으로 먼저 시작
openclaw models auth login --provider openai
openclaw models auth login --provider openai --device-code

# 2. OpenRouter도 OAuth 또는 API 키 방식 선택 가능
openclaw models auth login --provider openrouter --method oauth
openclaw models auth login --provider openrouter --method api-key

# 3. 인증 후 기본 모델 선택(2026년 9월 기준 새 설정 기본값은 GPT-6 Astra)
openclaw models set openai/gpt-6-astra</code></pre>



<h2 class="wp-block-heading">OpenClaw 설치 기본 흐름</h2>



<p>공식 설치 문서는 macOS에서 설치 스크립트를 우선 권장한다. 이 스크립트는 운영체제를 확인하고, 필요한 경우 지원되는 Node.js를 설치한 뒤 OpenClaw 설치와 온보딩을 이어 간다. 아래 첫 번째 흐름이 일반 사용자용이고, 이미 Node.js를 직접 관리할 때만 npm 대안을 쓰면 된다.</p>



<pre class="wp-block-code"><code># 권장: macOS 설치 스크립트
curl -fsSL https://openclaw.ai/install.sh | bash

# 설치 확인
openclaw --version
openclaw doctor
openclaw gateway status
openclaw dashboard

# 대안: Node.js를 직접 관리하고 npm 12 또는 npm 11.16+를 쓸 때
npm install -g openclaw@latest --allow-scripts=openclaw
openclaw onboard --install-daemon

# npm 11.15 이하에서는 --allow-scripts 옵션을 빼야 한다</code></pre>



<p>공식 문서의 현재 요구사항은 Node.js 24.16+ 또는 26.1+(Node 26 권장)이다. 설치 스크립트는 Node가 없을 때 macOS에서는 Node 26을, Linux에서는 Node 24 LTS를 준비한다. npm 12 또는 11.16+는 패키지 생명주기 스크립트를 허용하기 위해 <code>--allow-scripts=openclaw</code>가 필요하고, npm 11.15 이하는 이 옵션 자체를 지원하지 않으므로 빼야 한다. 설치 뒤에는 <code>openclaw doctor</code>와 Gateway 상태, 대시보드 접속을 확인한다.</p>



<h2 class="wp-block-heading">맥미니에서 먼저 잡아야 할 운영 설정</h2>



<ul class="wp-block-list">
<li>절전 모드와 자동 잠자기 설정을 꺼서 Gateway가 끊기지 않게 한다.</li>



<li>전용 macOS 사용자 계정을 만들고, OpenClaw가 접근할 폴더 범위를 제한한다.</li>



<li>SSH 또는 화면 공유는 필요할 때만 열고, 강한 인증과 방화벽을 적용한다.</li>



<li>launchd 또는 OpenClaw daemon 설치로 재부팅 후 자동 시작을 확인한다.</li>



<li>OpenClaw 2026.9.5부터는 원자적 업데이트가 다음 버전을 검증한 뒤 전환한다. 상시 운영 서버는 <code>openclaw update --channel stable</code>로 버전을 올린다.</li>



<li>로그 위치와 에러 확인 명령을 문서화한다.</li>



<li>API 키는 셸 히스토리, README, 스크립트에 남기지 않는다.</li>
</ul>



<h2 class="wp-block-heading">많이 함께 볼 만한 플러그인·skills·편의 도구</h2>



<p>OpenClaw 자체 설치보다 중요한 것은 “무엇을 붙여서 실제로 편하게 쓸 것인가”다. GitHub와 ClawHub 주변 생태계를 보면 memory, skills, UI manager, VPS panel, web search MCP가 반복적으로 나타난다. 아래 항목은 모든 사용자에게 필수는 아니지만, 개인 AI 에이전트 서버를 오래 운영할 때 편의성을 크게 높이는 도구들이다.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1400" height="920" src="https://blog.kwt.co.kr/wp-content/uploads/2026/07/openclaw-ecosystem-github-card.jpg" alt="OpenClaw와 함께 볼 만한 skills memory UI 운영 패널 GitHub 생태계 카드" class="wp-image-2666"/><figcaption class="wp-element-caption">GitHub REST API 기준 OpenClaw 주변의 스킬, 메모리, UI, 운영 패널, 웹 검색 MCP 관련 저장소를 정리한 이미지.</figcaption></figure>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>도구/범주</th><th>용도</th><th>추천 상황</th><th>주의점</th></tr></thead><tbody><tr><td>ClawHub / awesome-openclaw-skills</td><td>OpenClaw skills 탐색·설치</td><td>GitHub, Slack, Gmail, SEO, 리서치 등 작업을 확장할 때</td><td>publisher와 권한을 확인하고 owner-qualified ref를 선호</td></tr><tr><td>Claude-Mem</td><td>세션 간 persistent memory</td><td>장기 프로젝트 맥락을 계속 이어가고 싶을 때</td><td>민감 정보 제외 태그와 저장 범위 정책 필요</td></tr><tr><td>CC Switch</td><td>여러 AI CLI/agent의 provider, MCP, skills 관리</td><td>Claude Code, Codex, Gemini, OpenClaw, Hermes를 같이 쓸 때</td><td>공식 사이트와 배포 출처를 확인</td></tr><tr><td>AionUi</td><td>로컬 24/7 cowork UI, remote access, multi-agent</td><td>CLI보다 UI로 agent를 관리하고 싶을 때</td><td>원격 접근을 열기 전 인증·방화벽 확인</td></tr><tr><td>1Panel</td><td>VPS/컨테이너/백업/보안 관리 패널</td><td>맥미니 외 VPS에 OpenClaw나 Ollama를 함께 운영할 때</td><td>홈 서버에는 과할 수 있으며 외부 노출 보안 필요</td></tr><tr><td>Kindly Web Search MCP</td><td>웹 검색과 문서 검색 MCP</td><td>최신 API 문서와 패키지 정보를 agent가 찾아야 할 때</td><td>검색 API 키와 외부 전송 데이터 범위 확인</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">처음 설치할 때 추천 조합</h2>



<h3 class="wp-block-heading">1단계: 최소 안정 조합</h3>



<ul class="wp-block-list">
<li>OpenClaw Gateway</li>



<li>모델 인증 한 가지(API 키, OAuth, Claude CLI 로그인 중 선택)</li>



<li>Telegram 또는 Discord 한 채널</li>



<li>전용 macOS 계정</li>



<li>자동 시작과 로그 확인</li>
</ul>



<p>처음부터 모든 플러그인을 넣지 않는 것이 좋다. 먼저 Gateway와 채널 연결, 선택한 모델 인증과 기본 모델 호출, 재부팅 후 자동 시작만 검증한다. 이 상태에서 하루 정도 실제 메시지와 간단한 파일 작업을 테스트한다.</p>



<h3 class="wp-block-heading">2단계: 생산성 조합</h3>



<ul class="wp-block-list">
<li>ClawHub skills에서 자주 쓰는 작업 skill 설치</li>



<li>Claude-Mem 같은 memory 계열 도구 검토</li>



<li>웹 검색 MCP 또는 공식 문서 검색 도구 추가</li>



<li>모델 failover 또는 provider fallback 설정</li>
</ul>



<p>이 단계에서는 “매번 반복하는 작업”을 skills로 뽑아내는 것이 핵심이다. 예를 들어 블로그 리서치, 서버 상태 확인, GitHub 이슈 요약, 캘린더 브리핑처럼 자주 쓰는 일을 먼저 자동화한다.</p>



<h3 class="wp-block-heading">3단계: 운영 조합</h3>



<ul class="wp-block-list">
<li>로그와 health check</li>



<li>비용 알림과 API 사용량 제한</li>



<li>백업과 설정 파일 버전 관리</li>



<li>원격 접근 보안 정책</li>



<li>Gateway exposure runbook 확인</li>
</ul>



<p>메신저로 컴퓨터를 조작하는 도구는 편하지만 위험하다. 공식 문서도 inbound DM을 untrusted input으로 다루라고 안내한다. 그룹 채팅이나 외부 네트워크에 열기 전에는 allowlist, pairing policy, channel별 권한을 반드시 확인해야 한다.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1400" height="788" src="https://blog.kwt.co.kr/wp-content/uploads/2026/07/openclaw-mac-mini-ai-agent-featured.jpg" alt="맥미니에서 OpenClaw 개인 AI 에이전트 서버를 운영하는 모습을 표현한 대표 이미지" class="wp-image-2664"/><figcaption class="wp-element-caption">맥미니를 개인 AI 에이전트 서버로 활용하고 OpenClaw Gateway와 메신저 채널, 보안 설정을 연결하는 개념 이미지.</figcaption></figure>



<h2 class="wp-block-heading">보안 체크리스트</h2>



<div class="wp-block-group" style="border-left:4px solid #2563eb;background:#f8fafc;padding:18px"><p><strong>OpenClaw 운영 전 보안 체크</strong></p><ul><li>OpenClaw 전용 macOS 사용자 계정을 사용한다.</li><li>DM pairing과 group allowlist를 분리해 확인한다.</li><li>Telegram/Discord 그룹에 넣기 전 개인 DM에서만 테스트한다.</li><li>API 키, OAuth token, Claude CLI credential, bot token은 시크릿 파일 또는 OS credential store로 관리한다.</li><li>파일 접근 범위를 필요한 workspace로 제한한다.</li><li>민감 폴더, 브라우저 프로필, 키체인 접근은 기본 차단한다.</li><li>원격 웹 UI나 Gateway를 공개할 때는 reverse proxy, 인증, IP 제한을 둔다.</li><li>설치한 skills와 plugins의 publisher, 권한, 업데이트 출처를 확인한다.</li></ul></div>



<h2 class="wp-block-heading">설치 후 다음에 점검할 것</h2>



<p>OpenClaw 설치가 끝나면 바로 여러 채널과 플러그인을 한꺼번에 붙이기보다 하루 정도 최소 구성으로 운영해 보는 것이 좋다. 이 기간에는 Gateway 재시작, 메신저 응답 지연, API 비용, 로그 크기, 파일 접근 범위를 확인한다. 문제가 없으면 memory, skills, 웹 검색 MCP, UI 관리 도구를 순서대로 추가한다.</p>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">OpenClaw는 맥미니에서만 써야 하나?</h3>



<p>아니다. OpenClaw는 macOS, Linux, Windows를 지원한다. 다만 맥미니는 저전력 상시 구동, 조용한 운영, macOS 자동화와 음성 기능 활용 측면에서 개인 AI 에이전트 서버 용도로 잘 맞는다.</p>



<h3 class="wp-block-heading">OpenClaw 설치 후 가장 먼저 연결할 채널은 무엇이 좋은가?</h3>



<p>처음에는 Telegram이나 Discord처럼 봇 토큰과 접근 제어가 비교적 명확한 채널이 좋다. 그룹 채팅에 열기 전에는 allowlist와 DM 접근 정책을 먼저 확인해야 한다.</p>



<h3 class="wp-block-heading">OpenClaw에 꼭 추가할 만한 도구는 무엇인가?</h3>



<p>모든 사람에게 필수인 도구는 없다. 다만 장기 운영에는 persistent memory 계열 도구, ClawHub skills, 웹 검색 MCP, UI 관리 도구, 비용·모델 전환 도구가 편의성을 크게 높인다.</p>



<h2 class="wp-block-heading">참고 자료</h2>



<ul><li><a href="https://github.com/openclaw/openclaw" target="_blank" rel="noopener">OpenClaw GitHub repository</a></li><li><a href="https://github.com/openclaw/openclaw/releases/tag/v2026.9.5" target="_blank" rel="noopener">OpenClaw 2026.9.5 release notes</a></li><li><a href="https://docs.openclaw.ai/install" target="_blank" rel="noopener">OpenClaw Install</a></li><li><a href="https://docs.openclaw.ai/start/getting-started" target="_blank" rel="noopener">OpenClaw Getting Started</a></li><li><a href="https://docs.openclaw.ai/start/wizard" target="_blank" rel="noopener">OpenClaw Onboarding CLI</a></li><li><a href="https://docs.openclaw.ai/gateway/security" target="_blank" rel="noopener">OpenClaw Gateway Security</a></li><li><a href="https://docs.openclaw.ai/tools/skills" target="_blank" rel="noopener">OpenClaw Skills</a></li><li><a href="https://docs.openclaw.ai/providers/openai" target="_blank" rel="noopener">OpenClaw OpenAI provider</a></li><li><a href="https://docs.openclaw.ai/providers/anthropic" target="_blank" rel="noopener">OpenClaw Anthropic provider</a></li><li><a href="https://docs.openclaw.ai/concepts/oauth" target="_blank" rel="noopener">OpenClaw OAuth concepts</a></li><li><a href="https://docs.openclaw.ai/concepts/model-providers" target="_blank" rel="noopener">OpenClaw Model providers</a></li><li><a href="https://docs.openclaw.ai/providers/github-copilot" target="_blank" rel="noopener">OpenClaw GitHub Copilot provider</a></li><li><a href="https://docs.openclaw.ai/providers/openrouter" target="_blank" rel="noopener">OpenClaw OpenRouter provider</a></li><li><a href="https://github.com/VoltAgent/awesome-openclaw-skills" target="_blank" rel="noopener">Awesome OpenClaw Skills</a></li><li><a href="https://github.com/thedotmack/claude-mem" target="_blank" rel="noopener">Claude-Mem</a></li><li><a href="https://github.com/farion1231/cc-switch" target="_blank" rel="noopener">CC Switch</a></li><li><a href="https://github.com/iOfficeAI/AionUi" target="_blank" rel="noopener">AionUi</a></li><li><a href="https://github.com/1Panel-dev/1Panel" target="_blank" rel="noopener">1Panel</a></li><li><a href="https://github.com/Shelpuk-AI-Technology-Consulting/kindly-web-search-mcp-server" target="_blank" rel="noopener">Kindly Web Search MCP Server</a></li></ul>



<h2 class="wp-block-heading">함께 읽으면 좋은 글</h2>



<ul><li><a href="https://blog.kwt.co.kr/vibe-coding-developer-productionization/">바이브코딩 시대 개발자의 생존 전략</a></li><li><a href="https://blog.kwt.co.kr/ai-coding-agent-guide/">AI 코딩 에이전트 선택 기준 7가지</a></li></ul>



<script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "OpenClaw는 맥미니에서만 써야 하나?", "acceptedAnswer": {"@type": "Answer", "text": "아니다. OpenClaw는 macOS, Linux, Windows를 지원한다. 다만 맥미니는 저전력 상시 구동, 조용한 운영, macOS 자동화와 음성 기능 활용 측면에서 개인 AI 에이전트 서버 용도로 잘 맞는다."}}, {"@type": "Question", "name": "OpenClaw 설치 후 가장 먼저 연결할 채널은 무엇이 좋은가?", "acceptedAnswer": {"@type": "Answer", "text": "처음에는 Telegram이나 Discord처럼 봇 토큰과 접근 제어가 비교적 명확한 채널이 좋다. 그룹 채팅에 열기 전에는 allowlist와 DM 접근 정책을 먼저 확인해야 한다."}}, {"@type": "Question", "name": "OpenClaw에 꼭 추가할 만한 도구는 무엇인가?", "acceptedAnswer": {"@type": "Answer", "text": "모든 사람에게 필수인 도구는 없다. 다만 장기 운영에는 persistent memory 계열 도구, ClawHub skills, 웹 검색 MCP, UI 관리 도구, 비용·모델 전환 도구가 편의성을 크게 높인다."}}]}</script>
		<div class="wpulike wpulike-robeen " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="2667"
					data-ulike-nonce="1d8d621238"
					data-ulike-type="post"
					data-ulike-template="wpulike-robeen"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2667"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	<p>The post <a href="https://blog.kwt.co.kr/openclaw-install-guide-mac-mini-ai-agent-server/">OpenClaw 설치 가이드 2026: 맥미니로 개인 AI 에이전트 서버 구축하기</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/openclaw-install-guide-mac-mini-ai-agent-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI 에이전트 도구 레지스트리 시대: 앱스토어 다음은 Agent Registry인가</title>
		<link>https://blog.kwt.co.kr/ai-agent-tool-registry-era/</link>
					<comments>https://blog.kwt.co.kr/ai-agent-tool-registry-era/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Tue, 30 Jun 2026 06:37:25 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[Agent Registry]]></category>
		<category><![CDATA[AI 도구]]></category>
		<category><![CDATA[AI 에이전트]]></category>
		<category><![CDATA[ARD]]></category>
		<category><![CDATA[GEO]]></category>
		<category><![CDATA[MCP]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/?p=2620</guid>

					<description><![CDATA[<p>AI 에이전트 도구 레지스트리는 앱스토어처럼 도구·스킬·MCP 서버·API를 발견하고 검증하는 계층이다. Agent Registry가 왜 중요한지 정리한다.</p>
<p>The post <a href="https://blog.kwt.co.kr/ai-agent-tool-registry-era/">AI 에이전트 도구 레지스트리 시대: 앱스토어 다음은 Agent Registry인가</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>AI 에이전트 도구 레지스트리는 에이전트 시대의 앱스토어에 가까운 역할을 하게 된다.</strong> 사람은 앱스토어에서 앱을 찾고 설치하지만, AI 에이전트는 레지스트리에서 도구, 스킬, MCP 서버, API, 다른 에이전트를 찾고 검증한 뒤 실제 작업에 연결한다. Agent Registry가 중요한 이유는 단순히 도구 목록을 모아두기 때문이 아니라, “에이전트가 무엇을 쓸 수 있는가”를 검색 가능하고 관리 가능한 구조로 바꾸기 때문이다.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="900" src="https://blog.kwt.co.kr/wp-content/uploads/2026/06/ai-agent-tool-registry-era-1.png" alt="AI 에이전트 도구 레지스트리 시대를 앱스토어와 비교한 다이어그램: 사용자는 앱스토어에서 앱을 찾고 에이전트는 Agent Registry에서 도구를 찾는다" class="wp-image-2619"/><figcaption class="wp-element-caption">사람이 앱스토어에서 앱을 찾듯, AI 에이전트는 레지스트리에서 도구·스킬·MCP 서버·API를 발견하고 검증할 수 있다.</figcaption></figure>



<div style="border:1px solid #ccfbf1;background:#f0fdfa;border-radius:12px;padding:18px;margin:24px 0;">
<strong>빠른 결론</strong>
<ul>
<li>AI 에이전트가 많아질수록 “도구를 어떻게 찾고 믿을 것인가”가 병목이 된다.</li>
<li>Agent Registry는 앱스토어처럼 발견, 검색, 메타데이터, 신뢰, 거버넌스 문제를 다룬다.</li>
<li>다만 앱스토어와 달리 실행 런타임이 아니라 호출 전 발견 계층에 가깝다.</li>
<li>MCP, A2A, OpenAPI는 실행·연결 방식이고, 레지스트리는 그 대상을 찾는 계층이다.</li>
<li>기업에서는 사내 도구, 권한, 정책, 감사 로그를 묶는 인프라로 커질 가능성이 있다.</li>
</ul>
</div>



<h2 class="wp-block-heading">왜 지금 도구 레지스트리가 중요해지나</h2>



<p>초기 AI 에이전트는 미리 등록된 몇 개의 도구만 사용했다. 웹 검색, 파일 읽기, 이메일 전송, 캘린더 수정처럼 에이전트 런타임에 이미 들어 있는 도구 목록 안에서 LLM이 하나를 고르는 구조다. 도구 수가 적을 때는 이 방식이 단순하고 효과적이다.</p>



<p>문제는 에이전트가 실제 업무 환경으로 들어가면서 생긴다. 회사에는 HR 시스템, 결재 API, 데이터웨어하우스, Jira, GitHub, Slack, CRM, 회계 시스템, 사내 문서 검색, 배포 파이프라인 같은 수많은 도구가 있다. 모든 도구를 에이전트 설정에 수동으로 등록하고, 모든 도구 설명을 매번 LLM 컨텍스트에 넣는 방식은 오래 버티기 어렵다.</p>



<p>여기서 도구 레지스트리의 필요성이 나온다. 에이전트가 처음부터 모든 도구를 들고 있는 것이 아니라, 필요한 순간에 “이 작업에 맞는 능력이 어디에 있는가”를 검색하고, 검증하고, 선택 후보로 가져오는 구조가 필요하다.</p>



<h2 class="wp-block-heading">앱스토어 비유가 유용한 이유</h2>



<p>스마트폰 앱 생태계에서 앱스토어는 단순 파일 저장소가 아니다. 사용자는 앱스토어에서 앱을 검색하고, 설명과 리뷰를 보고, 권한을 확인하고, 설치한다. 개발자는 앱을 등록하고, 버전을 관리하고, 배포 채널을 얻는다. 플랫폼은 정책, 결제, 보안, 심사, 업데이트를 관리한다.</p>



<p>AI 에이전트 도구 레지스트리도 비슷한 문제를 다룬다. 다만 사용자가 사람이 아니라 에이전트라는 점이 다르다. 에이전트는 앱 아이콘이나 마케팅 문구보다 기계가 읽을 수 있는 메타데이터가 필요하다. 어떤 작업에 적합한지, 호출 방식은 무엇인지, 누가 제공하는지, 신뢰할 수 있는지, 어떤 권한이 필요한지를 구조화된 형태로 받아야 한다.</p>



<figure class="wp-block-table"><table><thead><tr><th>구분</th><th>앱스토어</th><th>AI 에이전트 도구 레지스트리</th></tr></thead><tbody><tr><td>주 사용자</td><td>사람</td><td>AI 에이전트, 오케스트레이터, 개발자</td></tr><tr><td>대상</td><td>모바일/데스크톱 앱</td><td>도구, 스킬, MCP 서버, API, 워크플로, 다른 에이전트</td></tr><tr><td>핵심 기능</td><td>검색, 설치, 리뷰, 업데이트</td><td>발견, 메타데이터, 신뢰 검증, 권한·정책 확인</td></tr><tr><td>선택 기준</td><td>평점, 가격, 설명, 브랜드</td><td>대표 질의, capability, 스키마, 제공자, trust metadata</td></tr><tr><td>실행 방식</td><td>앱을 설치해 실행</td><td>MCP, A2A, OpenAPI, 자체 API 등 원래 프로토콜로 호출</td></tr><tr><td>기업 관점</td><td>모바일 앱 관리, 보안 정책</td><td>사내 도구 거버넌스, 접근 제어, 감사, 에이전트 egress 정책</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Agent Registry는 무엇을 저장하나</h2>



<p>레지스트리가 저장하거나 색인하는 것은 “코드 전체”가 아닐 수 있다. 더 중요한 것은 에이전트가 판단할 수 있는 설명과 연결 정보다. 예를 들어 어떤 MCP 서버가 있다면, 레지스트리는 그 서버가 어떤 기능을 제공하는지, 어떤 자연어 요청에 적합한지, 어떤 URL이나 엔드포인트로 연결되는지, 누가 게시했는지, 어떤 인증이 필요한지 같은 정보를 다룬다.</p>



<p>Google Developers Blog가 소개한 <a href="https://developers.googleblog.com/announcing-the-agentic-resource-discovery-specification/" target="_blank" rel="noopener">Agentic Resource Discovery, ARD</a>는 이 문제를 표준 명세 관점에서 다룬다. ARD 공식 문서는 이를 “AI 클라이언트가 이 작업에 무엇을 사용할 수 있는가를 물으면, 발견 서비스가 맞는 리소스를 돌려주는 개방형 발견 프로토콜”로 설명한다. 또한 ARD는 호출 런타임이 아니라 호출 전 발견 계층이라고 못박는다.</p>



<p>Google Cloud 문서의 <a href="https://docs.cloud.google.com/agent-registry/overview" target="_blank" rel="noopener">Agent Registry</a>도 같은 흐름을 제품 인프라 관점에서 보여준다. 문서 목차만 봐도 agents, endpoints, MCP servers, tools, discovery, search, access control 같은 항목이 함께 등장한다. 즉, 레지스트리는 단순 목록 페이지가 아니라 에이전트와 도구를 운영하는 관리 계층으로 확장된다.</p>



<h2 class="wp-block-heading">도구 레지스트리가 해결하려는 5가지 문제</h2>



<h3 class="wp-block-heading">1. 에이전트가 모든 도구를 미리 알 필요가 없다</h3>



<p>현재 방식에서는 도구를 쓰려면 에이전트 설정이나 코드에 먼저 등록해야 한다. 레지스트리 방식에서는 필요한 능력을 검색해 후보를 가져올 수 있다. 이는 도구가 수십 개에서 수백 개로 늘어날 때 특히 중요하다.</p>



<h3 class="wp-block-heading">2. LLM 컨텍스트에 모든 도구 설명을 넣지 않아도 된다</h3>



<p>도구 설명이 많아질수록 컨텍스트 비용과 선택 오류가 커진다. 레지스트리는 전체 도구 목록을 매번 LLM에 주는 대신, 검색으로 소수 후보를 좁히는 역할을 할 수 있다. LLM은 모든 도구가 아니라 관련 후보 안에서 선택한다.</p>



<h3 class="wp-block-heading">3. 신뢰와 출처를 기계적으로 확인할 수 있다</h3>



<p>에이전트가 런타임에 도구를 찾는다면 피싱 도구나 잘못된 엔드포인트를 피해야 한다. 도메인 기반 카탈로그, 게시자 정보, trust metadata, 조직 정책은 “이 도구를 믿고 연결해도 되는가”라는 질문에 답하기 위한 장치다.</p>



<h3 class="wp-block-heading">4. 기업 내부 도구 거버넌스가 가능해진다</h3>



<p>기업에서는 공개 웹보다 사내 레지스트리가 먼저 중요해질 수 있다. 어떤 에이전트가 어떤 도구를 호출할 수 있는지, 민감 데이터가 외부로 나가지 않는지, 승인된 MCP 서버만 쓰는지, 감사 로그가 남는지 같은 문제가 실제 운영 병목이 되기 때문이다.</p>



<h3 class="wp-block-heading">5. 도구 생태계가 플랫폼을 넘어 연결된다</h3>



<p>한 회사의 에이전트 플랫폼 안에서만 도구를 찾는 구조는 폐쇄적이다. ARD 문서가 강조하듯, 공개 웹과 기업 내부에는 여러 발견 서비스가 존재할 수 있다. 이는 하나의 중앙 앱스토어가 아니라, 여러 레지스트리가 서로 다른 커뮤니티와 정책에 맞게 색인하는 구조에 가깝다.</p>



<h2 class="wp-block-heading">MCP, A2A, ARD와의 관계</h2>



<p>이 주제에서 가장 흔한 혼동은 레지스트리와 실행 프로토콜을 섞는 것이다. MCP는 도구를 연결하고 호출하는 방식이다. A2A는 에이전트 간 협업 방식이다. OpenAPI는 HTTP API를 설명하고 호출하는 방식이다. 반면 Agent Registry와 ARD는 그런 리소스를 “어디서 찾고 어떻게 믿을 것인가”에 초점을 둔다.</p>



<figure class="wp-block-table"><table><thead><tr><th>개념</th><th>핵심 질문</th><th>레지스트리와의 관계</th></tr></thead><tbody><tr><td>MCP</td><td>도구를 어떻게 연결하고 호출할 것인가</td><td>레지스트리가 MCP 서버를 발견 대상으로 다룰 수 있다.</td></tr><tr><td>A2A</td><td>에이전트끼리 어떻게 협업할 것인가</td><td>레지스트리가 A2A 에이전트 카드를 색인할 수 있다.</td></tr><tr><td>OpenAPI</td><td>HTTP API를 어떤 스키마로 설명할 것인가</td><td>레지스트리가 API 엔드포인트와 스키마를 연결 정보로 제공할 수 있다.</td></tr><tr><td>ARD</td><td>에이전트 리소스를 어떻게 발견하고 검증할 것인가</td><td>Agent Registry의 개방형 발견 표준 후보 중 하나다.</td></tr><tr><td>Agent Registry</td><td>에이전트가 쓸 리소스를 어디서 검색하고 관리할 것인가</td><td>발견, 검색, 검증, 거버넌스의 운영 계층이다.</td></tr></tbody></table></figure>



<p>따라서 Agent Registry는 MCP의 경쟁자가 아니다. 오히려 MCP 서버가 많아질수록 “좋은 MCP 서버를 어떻게 찾고, 공식 제공자인지 어떻게 확인하고, 우리 조직 정책상 호출 가능한지 어떻게 판단할 것인가”라는 문제가 생긴다. 레지스트리는 이 질문을 다루는 계층이다.</p>



<h2 class="wp-block-heading">개발자와 운영자가 지금 준비할 것</h2>



<ol class="wp-block-list">
<li><strong>도구 인벤토리를 만든다.</strong> 사내 API, MCP 서버, 자동화 스크립트, 워크플로, 데이터 조회 기능을 “에이전트가 호출 가능한 리소스” 관점으로 정리한다.</li>
<li><strong>사람용 문서와 기계용 메타데이터를 분리한다.</strong> 블로그 글이나 README만으로는 부족하다. 대표 질의, capability, 입력/출력, 권한, 제한사항이 구조화되어야 한다.</li>
<li><strong>공개 리소스와 내부 리소스를 나눈다.</strong> 공개 웹에서 발견되어도 되는 도구와 사내 에이전트만 써야 하는 도구는 레지스트리 정책이 달라야 한다.</li>
<li><strong>신뢰 모델을 설계한다.</strong> 도메인 소유권, 게시자 검증, 승인된 엔드포인트, 버전 고정, 감사 로그가 필요하다.</li>
<li><strong>LLM에게 모든 도구를 주지 않는 구조를 고려한다.</strong> 검색, 후보 축소, 정책 필터링, 최종 선택의 단계를 나누면 비용과 오류를 줄일 수 있다.</li>
</ol>



<h2 class="wp-block-heading">앱스토어 다음은 정말 Agent Registry인가</h2>



<p>비유로는 그렇다. 사람 중심 컴퓨팅에서 앱스토어가 앱 발견과 유통의 중심이었다면, 에이전트 중심 컴퓨팅에서는 레지스트리가 도구 발견과 거버넌스의 중심이 될 가능성이 있다. 다만 수익 배분, 리뷰, 설치 같은 소비자 앱스토어 모델이 그대로 복제된다고 보기는 어렵다.</p>



<p>더 현실적인 모습은 세 가지가 공존하는 구조다. 공개 웹에는 여러 오픈 레지스트리가 생기고, 클라우드 플랫폼은 관리형 Agent Registry를 제공하며, 기업 내부에는 사내 도구만 색인하는 프라이빗 레지스트리가 생긴다. 에이전트는 작업에 따라 이 중 하나 또는 여러 발견 계층을 사용한다.</p>



<p>이 변화가 중요한 이유는 에이전트의 능력이 모델 크기만으로 결정되지 않기 때문이다. 어떤 도구를 찾을 수 있는지, 어떤 데이터를 안전하게 조회할 수 있는지, 어떤 워크플로를 신뢰하고 실행할 수 있는지가 실제 업무 성능을 좌우한다. 모델이 두뇌라면, 레지스트리는 외부 세계와 연결되는 주소록이자 검증된 도구 상자다.</p>



<h2 class="wp-block-heading">짧은 결론</h2>



<p>AI 에이전트 도구 레지스트리는 단순한 목록 서비스가 아니다. 에이전트가 사용할 수 있는 능력을 발견하고, 설명하고, 검증하고, 정책에 맞게 연결하는 인프라다. ARD, Agent Registry, MCP 서버 검색, 사내 도구 카탈로그는 모두 같은 방향을 가리킨다. 앞으로의 질문은 “어떤 모델을 쓰는가”뿐 아니라 “그 모델이 어떤 검증된 도구 생태계에 접근할 수 있는가”가 된다.</p>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">AI 에이전트 도구 레지스트리는 무엇인가</h3>



<p>AI 에이전트가 사용할 수 있는 도구, 스킬, MCP 서버, API, 워크플로, 다른 에이전트를 검색하고 검증하기 위한 카탈로그 또는 검색 계층이다.</p>



<h3 class="wp-block-heading">Agent Registry는 앱스토어와 같은가</h3>



<p>비유로는 비슷하지만 완전히 같지는 않다. 앱스토어는 사람이 앱을 찾고 설치하는 유통 채널이고, Agent Registry는 에이전트가 호출 가능한 리소스를 발견하고 신뢰 정보를 확인하는 기술 계층에 가깝다.</p>



<h3 class="wp-block-heading">Agent Registry가 MCP를 대체하나</h3>



<p>대체하지 않는다. MCP는 발견된 도구를 실제로 연결하고 호출하는 방식 중 하나다. 레지스트리는 MCP 서버를 어디서 찾고 어떻게 신뢰할지 다룬다.</p>



<h3 class="wp-block-heading">기업은 왜 자체 레지스트리가 필요할 수 있나</h3>



<p>기업 내부 도구와 데이터는 권한, 감사, 정책, 보안 요구사항이 강하다. 공개 레지스트리만으로는 부족하기 때문에 사내 도구를 색인하고 승인된 에이전트만 접근하게 하는 프라이빗 레지스트리가 필요할 수 있다.</p>



<h2 class="wp-block-heading">공식 출처와 같이 읽을 글</h2>



<ul class="wp-block-list">
<li><a href="https://developers.googleblog.com/announcing-the-agentic-resource-discovery-specification/" target="_blank" rel="noopener">Google Developers Blog: Announcing the Agentic Resource Discovery specification</a></li>
<li><a href="https://agenticresourcediscovery.org/" target="_blank" rel="noopener">Agentic Resource Discovery 공식 문서</a></li>
<li><a href="https://agenticresourcediscovery.org/how_to_publish/" target="_blank" rel="noopener">ARD How to publish 가이드</a></li>
<li><a href="https://docs.cloud.google.com/agent-registry/overview" target="_blank" rel="noopener">Google Cloud Agent Registry overview</a></li>
<li><a href="https://blog.kwt.co.kr/agentic-resource-discovery-ard/">Agentic Resource Discovery란? AI 에이전트가 도구를 직접 찾는 검색 표준</a></li>
<li><a href="https://blog.kwt.co.kr/llms-txt-best-practices-2026/">llms.txt 작성 방법 Best Practice</a></li>
<li><a href="https://blog.kwt.co.kr/ai-search-geo-optimization-2026/">AI 검색 최적화 GEO란?</a></li>
</ul>



<script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "AI 에이전트 도구 레지스트리는 무엇인가?", "acceptedAnswer": {"@type": "Answer", "text": "AI 에이전트가 사용할 수 있는 도구, 스킬, MCP 서버, API, 다른 에이전트를 검색하고 검증하기 위한 카탈로그 또는 검색 계층이다."}}, {"@type": "Question", "name": "Agent Registry는 앱스토어와 같은가?", "acceptedAnswer": {"@type": "Answer", "text": "비유로는 비슷하지만 완전히 같지는 않다. 앱스토어는 사람이 앱을 설치하고 결제하는 유통 채널이고, Agent Registry는 에이전트가 호출 가능한 리소스를 발견하고 신뢰 정보를 확인하는 기술 계층에 가깝다."}}, {"@type": "Question", "name": "Agent Registry가 MCP를 대체하나?", "acceptedAnswer": {"@type": "Answer", "text": "대체하지 않는다. 레지스트리는 도구를 찾고 검증하는 역할이고, MCP는 발견된 도구를 실제로 연결하거나 호출하는 방식 중 하나다."}}, {"@type": "Question", "name": "기업이 Agent Registry를 봐야 하는 이유는 무엇인가?", "acceptedAnswer": {"@type": "Answer", "text": "기업 내부 도구가 많아질수록 에이전트가 어떤 도구를 쓸 수 있는지, 누가 제공하는지, 어떤 권한으로 호출해야 하는지를 관리하는 문제가 커지기 때문이다."}}]}</script>
		<div class="wpulike wpulike-robeen " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="2620"
					data-ulike-nonce="698021a392"
					data-ulike-type="post"
					data-ulike-template="wpulike-robeen"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2620"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	<p>The post <a href="https://blog.kwt.co.kr/ai-agent-tool-registry-era/">AI 에이전트 도구 레지스트리 시대: 앱스토어 다음은 Agent Registry인가</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/ai-agent-tool-registry-era/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Agentic Resource Discovery란? AI 에이전트가 도구를 직접 찾는 검색 표준</title>
		<link>https://blog.kwt.co.kr/agentic-resource-discovery-ard/</link>
					<comments>https://blog.kwt.co.kr/agentic-resource-discovery-ard/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Tue, 30 Jun 2026 05:24:48 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[Agentic Resource Discovery]]></category>
		<category><![CDATA[AI 에이전트]]></category>
		<category><![CDATA[ARD]]></category>
		<category><![CDATA[GEO]]></category>
		<category><![CDATA[MCP]]></category>
		<guid isPermaLink="false">https://blog.kwt.co.kr/?p=2610</guid>

					<description><![CDATA[<p>Agentic Resource Discovery, ARD는 AI 에이전트가 도구·스킬·API·다른 에이전트를 찾고 검증하기 위한 개방형 발견 표준이다.</p>
<p>The post <a href="https://blog.kwt.co.kr/agentic-resource-discovery-ard/">Agentic Resource Discovery란? AI 에이전트가 도구를 직접 찾는 검색 표준</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>Agentic Resource Discovery, 줄여서 ARD는 AI 에이전트가 필요한 도구·스킬·API·다른 에이전트를 웹에서 찾고, 게시자를 검증한 뒤, 각 도구의 원래 방식으로 연결하게 돕는 개방형 발견 표준이다.</strong> 쉽게 말하면 “AI 에이전트용 검색 엔진과 사이트맵 사이의 표준”에 가깝다. Google Developers Blog는 2026년 6월 17일 <a href="https://developers.googleblog.com/announcing-the-agentic-resource-discovery-specification/" target="_blank" rel="noopener">Announcing the Agentic Resource Discovery specification</a> 글에서 이 명세를 소개했다.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1400" height="788" src="https://blog.kwt.co.kr/wp-content/uploads/2026/06/ard-agentic-resource-discovery-hero-1.jpg" alt="AI 에이전트가 ARD 카탈로그와 레지스트리에서 도구를 발견하고 검증하는 개념도" class="wp-image-2609"/><figcaption class="wp-element-caption">ARD는 AI 에이전트가 도구를 호출하기 전에 “무엇을 쓸 수 있는지” 찾고 검증하는 발견 계층이다.</figcaption></figure>



<div style="border:1px solid #dbeafe;background:#eff6ff;border-radius:12px;padding:18px;margin:24px 0;">
<strong>핵심 요약</strong>
<ul>
<li>ARD는 AI 에이전트가 외부 능력을 찾는 <strong>발견(discovery) 표준</strong>이다.</li>
<li>MCP, A2A, OpenAPI 같은 실행·연결 방식 자체를 대체하지 않는다.</li>
<li>조직은 <code>ai-catalog.json</code>으로 자신이 제공하는 에이전트형 리소스를 설명한다.</li>
<li>레지스트리는 여러 카탈로그를 크롤링·색인해 에이전트가 검색할 수 있게 만든다.</li>
<li>핵심 가치는 검색, 검증, 신뢰, 거버넌스를 런타임 연결 전 단계에 붙이는 데 있다.</li>
</ul>
</div>



<h2 class="wp-block-heading">왜 ARD가 필요한가</h2>



<p>지금의 AI 에이전트는 혼자 모든 일을 처리하지 않는다. 코드를 고치려면 GitHub나 CI 도구를 부르고, 회사 데이터를 보려면 내부 API를 찾고, 일정이나 문서를 처리하려면 별도 서비스에 연결한다. 문제는 에이전트가 “어떤 도구가 있는지”, “그 도구가 내가 원하는 작업에 맞는지”, “연결해도 안전한지”를 공통 방식으로 알기 어렵다는 점이다.</p>



<p>사람은 검색엔진, 문서, 마켓플레이스, 사내 위키를 뒤져서 도구를 고른다. 반면 에이전트는 런타임에 기계가 읽을 수 있는 설명과 신뢰 정보를 받아야 한다. ARD는 이 빈칸을 메우려는 시도다. Google의 설명처럼 에이전트 생태계가 커지려면 “필요한 능력은 어디에 있는가, 무엇을 써야 하는가, 안전하게 연결해도 되는가”라는 질문에 안정적으로 답해야 한다.</p>



<h2 class="wp-block-heading">현재 도구 사용 방식과 ARD 방식의 차이</h2>



<p>ARD를 이해할 때 가장 중요한 지점은 “LLM이 도구를 고른다”는 사실이 바뀌는 것이 아니라는 점이다. 차이는 LLM이나 에이전트가 선택할 <strong>도구 후보를 어디서 가져오느냐</strong>에 있다. 현재 방식은 미리 등록된 도구 목록 안에서 고르고, ARD 방식은 필요한 능력을 검색해 후보 도구를 동적으로 가져온다.</p>



<figure class="wp-block-table"><table><thead><tr><th>단계</th><th>현재 방식</th><th>ARD 도입 후</th></tr></thead><tbody><tr><td>1. 사용자 요청</td><td>사용자가 에이전트에게 작업을 요청한다.</td><td>동일하게 사용자가 에이전트에게 작업을 요청한다.</td></tr><tr><td>2. 도구 후보 준비</td><td>에이전트에 미리 등록된 고정 도구 목록만 사용한다.</td><td>현재 도구로 부족하면 ARD 레지스트리에서 필요한 능력을 검색한다.</td></tr><tr><td>3. 후보 범위</td><td>web_search, calendar, email처럼 설정에 들어 있는 도구로 제한된다.</td><td>MCP 서버, A2A 에이전트, API, Skill, 워크플로까지 후보로 찾을 수 있다.</td></tr><tr><td>4. 신뢰 확인</td><td>운영자가 수동으로 신뢰한 도구를 config/code에 넣는 방식이다.</td><td>도메인 기반 카탈로그, 게시자 정보, trust metadata를 보고 검증할 수 있다.</td></tr><tr><td>5. LLM 역할</td><td>고정 도구 목록 중 어떤 도구를 쓸지 판단한다.</td><td>ARD가 찾은 소수 후보까지 포함해 어떤 도구를 쓸지 판단한다.</td></tr><tr><td>6. 실제 실행</td><td>선택된 기존 도구를 에이전트 런타임이 실행한다.</td><td>선택된 리소스를 MCP, A2A, OpenAPI, 자체 API 등 원래 방식으로 호출한다.</td></tr><tr><td>핵심 한계/효과</td><td>도구가 없으면 사람이 직접 등록해야 한다.</td><td>필요한 도구를 런타임에 발견하고 후보에 추가할 수 있다.</td></tr></tbody></table></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1800" height="1180" src="https://blog.kwt.co.kr/wp-content/uploads/2026/06/ard-current-vs-ard-tool-flow-v2.png" alt="현재 AI 에이전트의 고정 도구 목록 방식과 ARD의 동적 도구 발견 방식을 두 개의 가로 흐름으로 비교한 다이어그램" class="wp-image-2615"/><figcaption class="wp-element-caption">현재 방식은 고정 도구 목록 안에서 LLM이 선택하고, ARD 방식은 필요한 도구를 검색·검증한 뒤 LLM 선택 후보에 추가한다.</figcaption></figure>



<h2 class="wp-block-heading">ARD를 한 문장으로 이해하기</h2>



<p>ARD는 <strong>AI 에이전트가 호출할 수 있는 리소스를 웹에 게시하고, 검색하고, 검증하기 위한 표준화된 발견 계층</strong>이다. 여기서 리소스는 단순한 웹페이지가 아니라 에이전트가 실제로 사용할 수 있는 능력이다. MCP 서버, A2A 에이전트 카드, 스킬, 플러그인, API, 워크플로가 모두 후보가 된다.</p>



<p>중요한 점은 ARD가 실행 런타임이 아니라는 사실이다. ARD는 “무엇을 찾을지”와 “어떻게 신뢰할지”를 다룬다. 실제 호출은 MCP면 MCP 방식으로, OpenAPI면 HTTP API 방식으로, A2A면 A2A 방식으로 이루어진다.</p>



<h2 class="wp-block-heading">구성 요소: 카탈로그와 레지스트리</h2>



<figure class="wp-block-table"><table><thead><tr><th>구성 요소</th><th>역할</th><th>웹에 비유하면</th></tr></thead><tbody><tr><td>Catalog</td><td>조직이 제공하는 도구·에이전트·API 목록을 기계가 읽을 수 있게 설명한다.</td><td>sitemap.xml, llms.txt, API 문서의 중간 지점</td></tr><tr><td>Registry</td><td>여러 카탈로그를 수집·색인하고 에이전트의 검색 요청에 맞는 후보를 돌려준다.</td><td>검색엔진 또는 사내 검색 인덱스</td></tr><tr><td>Trust metadata</td><td>게시자와 리소스의 신뢰성을 확인하기 위한 메타데이터를 제공한다.</td><td>도메인 소유권, 서명, 출처 검증</td></tr><tr><td>Native invocation</td><td>발견 이후에는 각 도구의 원래 프로토콜로 호출한다.</td><td>MCP, A2A, OpenAPI, 자체 API</td></tr></tbody></table></figure>



<p>공식 문서의 게시 가이드는 가장 단순한 시작점으로 <code>/.well-known/ai-catalog.json</code> 경로를 제시한다. 이 파일 안에는 호스트 정보와 리소스 목록이 들어간다. 각 리소스는 식별자, 표시 이름, 타입, URL, 기능, 설명, 대표 질의 같은 검색·매칭용 정보를 갖는다.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="900" src="https://blog.kwt.co.kr/wp-content/uploads/2026/06/ard-discovery-flow-diagram.png" alt="Agentic Resource Discovery ARD 동작 흐름 다이어그램: AI 에이전트가 레지스트리에서 카탈로그를 검색하고 신뢰 검증 후 MCP A2A OpenAPI로 연결하는 과정" class="wp-image-2611"/><figcaption class="wp-element-caption">ARD 동작 흐름: 에이전트는 레지스트리에서 후보 리소스를 찾고, 신뢰 정보를 검증한 뒤, MCP·A2A·OpenAPI 등 원래 방식으로 연결한다.</figcaption></figure>



<h2 class="wp-block-heading">ai-catalog.json은 어떤 역할을 하나</h2>



<p><code>ai-catalog.json</code>은 사람이 읽는 소개 페이지가 아니라 에이전트와 레지스트리가 읽는 매니페스트다. 예를 들어 어떤 회사가 날씨 MCP 서버를 제공한다면 “이 서버는 날씨 조회와 예보 기능을 제공하고, 이런 자연어 질문에 적합하며, 이 URL에서 연결할 수 있다”는 정보를 JSON으로 공개한다.</p>



<pre class="wp-block-code"><code>{
  "specVersion": "1.0",
  "host": {
    "displayName": "Acme Dev Tools",
    "identifier": "did:web:acme.com"
  },
  "entries": &#91;
    {
      "identifier": "urn:air:acme.com:server:weather",
      "displayName": "Acme Weather Telemetry Server",
      "type": "application/mcp-server+json",
      "url": "https://api.acme.com/mcp/weather.json",
      "capabilities": &#91;"WeatherTool", "ForecastTool"],
      "description": "Live weather telemetry MCP server",
      "representativeQueries": &#91;
        "what is the current wind speed in Chicago",
        "get the 5-day forecast for Seattle"
      ]
    }
  ]
}</code></pre>



<p>이 예시는 공식 게시 가이드의 구조를 단순화한 것이다. 핵심은 대표 질의다. 검색엔진이 웹페이지의 제목과 본문을 색인하듯, ARD 레지스트리는 리소스 설명과 대표 질의를 이용해 “이 작업에는 어떤 능력이 맞는가”를 판단할 수 있다.</p>



<h3 class="wp-block-heading">예제의 url은 최종 API endpoint가 아니다</h3>



<p>위 예제에서 <code>"url": "https://api.acme.com/mcp/weather.json"</code>은 날씨 데이터를 바로 반환하는 최종 실행 API라고 보기보다, 해당 MCP 서버를 설명하는 <strong>artifact document</strong>의 위치로 보는 것이 정확하다. 에이전트나 레지스트리는 이 URL에서 <code>weather.json</code>을 가져와 실제 transport endpoint, tool schema, 인증 방식, 권한 범위 같은 연결 정보를 확인한다.</p>



<p>즉 ARD catalog entry의 <code>url</code>은 “이 도구를 실행하라”는 버튼이 아니라 “이 도구를 자세히 설명하는 문서를 여기서 가져가라”는 참조에 가깝다. 실제 호출은 그 문서 안에 정의된 MCP endpoint, A2A endpoint, OpenAPI servers와 paths, Skill package location 같은 정보를 따라 이루어진다.</p>



<figure class="wp-block-table"><table><thead><tr><th>구분</th><th>역할</th><th>예시</th></tr></thead><tbody><tr><td><code>ai-catalog.json</code></td><td>검색·발견용 상위 catalog</td><td><code>/.well-known/ai-catalog.json</code></td></tr><tr><td>catalog entry의 <code>url</code></td><td>상세 artifact document 위치</td><td><code>https://api.acme.com/mcp/weather.json</code></td></tr><tr><td>artifact document</td><td>실제 연결 방식, schema, auth 설명</td><td>MCP server card, OpenAPI spec, A2A agent card</td></tr><tr><td>실제 실행 endpoint</td><td>에이전트 런타임이 호출하는 대상</td><td><code>https://api.acme.com/mcp/weather</code>, OpenAPI path 등</td></tr></tbody></table></figure>



<p>OpenAPI 도구라면 catalog entry의 <code>url</code>은 보통 <code>openapi.json</code>을 가리키고, 실제 호출 경로는 그 문서 안의 <code>servers</code>와 <code>paths</code>에 정의된다. MCP 도구라면 <code>url</code>이 MCP 서버 카드나 descriptor를 가리키고, 실제 MCP 연결 endpoint는 그 descriptor 안에서 확인하는 구조가 된다.</p>



<h2 class="wp-block-heading">MCP, A2A, llms.txt와 무엇이 다른가</h2>



<figure class="wp-block-table"><table><thead><tr><th>개념</th><th>주요 질문</th><th>ARD와의 관계</th></tr></thead><tbody><tr><td>MCP</td><td>도구를 어떤 프로토콜로 호출할 것인가</td><td>ARD가 MCP 서버를 발견할 수 있다. MCP 자체를 대체하지 않는다.</td></tr><tr><td>A2A</td><td>에이전트끼리 어떻게 협업할 것인가</td><td>ARD가 A2A 에이전트 카드를 발견 대상으로 다룰 수 있다.</td></tr><tr><td>llms.txt</td><td>LLM에게 사이트의 핵심 문서와 읽을거리를 어떻게 안내할 것인가</td><td>둘 다 AI가 읽기 좋은 공개 메타데이터라는 흐름을 공유한다.</td></tr><tr><td>ARD</td><td>에이전트가 사용할 수 있는 능력은 어디에 있고, 신뢰할 수 있는가</td><td>실행 전 발견·검색·검증 계층이다.</td></tr></tbody></table></figure>



<p>따라서 ARD를 “MCP 다음 버전”으로 보면 헷갈린다. 더 정확한 비유는 “MCP 서버와 여러 에이전트형 리소스를 검색 가능하게 만드는 발견 표준”이다. MCP가 전원 플러그와 콘센트의 규격이라면, ARD는 “어느 방에 어떤 콘센트가 있고, 누가 관리하며, 안전한가”를 알려주는 지도에 가깝다.</p>



<p>이 관점은 기존에 다룬 <a href="https://blog.kwt.co.kr/llms-txt-best-practices-2026/">llms.txt 작성 방법</a>, <a href="https://blog.kwt.co.kr/ai-search-geo-optimization-2026/">AI 검색 최적화 GEO</a>, <a href="https://blog.kwt.co.kr/ai-coding-agent-guide/">AI 코딩 에이전트 선택 기준</a>과도 이어진다. 웹이 사람을 위한 페이지 중심에서 AI가 직접 읽고 호출하는 리소스 중심으로 확장되는 흐름이다.</p>



<h2 class="wp-block-heading">개발자와 사이트 운영자는 무엇을 봐야 하나</h2>



<ol class="wp-block-list">
<li><strong>내 사이트가 제공하는 능력을 목록화한다.</strong> 단순 글이 아니라 API, 계산기, MCP 서버, 워크플로, 자동화 기능처럼 에이전트가 호출할 수 있는 것을 정리한다.</li>



<li><strong>기계가 읽을 설명을 준비한다.</strong> 이름, 타입, URL, 기능, 대표 질의, 제한사항을 사람용 마케팅 문구가 아니라 검색·매칭용 메타데이터로 쓴다.</li>



<li><strong>도메인 기반 신뢰를 설계한다.</strong> 공식 도메인 아래에 카탈로그를 두면 “누가 이 리소스를 게시했는가”를 확인하기 쉬워진다.</li>



<li><strong>호출 프로토콜을 분리해서 생각한다.</strong> ARD는 찾는 표준이고, MCP·A2A·OpenAPI는 연결하거나 호출하는 방식이다.</li>



<li><strong>공개 웹과 사내망을 나눠 설계한다.</strong> 공개 검색 가능한 리소스와 사내 에이전트만 써야 하는 리소스는 서로 다른 레지스트리 정책이 필요하다.</li>
</ol>



<h2 class="wp-block-heading">GEO 관점에서 ARD가 중요한 이유</h2>



<p>GEO, 즉 생성형 검색 최적화는 AI가 사이트의 내용을 이해하고 인용하거나 추천할 수 있게 만드는 작업이다. ARD는 전통적인 글 인용보다 한 단계 더 나아간다. AI가 문서를 읽는 데서 끝나는 것이 아니라, 실제 기능을 발견하고 연결할 수 있는 구조를 다루기 때문이다.</p>



<p>물론 ARD 파일을 둔다고 Google AI Overview나 ChatGPT에 바로 노출되는 것은 아니다. 공식 문서도 특정 레지스트리가 반드시 색인한다고 보장하지 않는다. 다만 방향성은 분명하다. 앞으로의 웹에서는 “사람이 읽는 본문”, “검색엔진이 읽는 구조화 데이터”, “LLM이 읽는 안내 파일”, “에이전트가 호출 가능한 리소스 카탈로그”가 함께 필요해질 가능성이 높다.</p>



<h2 class="wp-block-heading">ARD의 현재 상태와 한계</h2>



<p>GitHub 저장소 기준 ARD 명세는 v0.9 초안 상태다. Apache 2.0 라이선스로 공개되어 있고, AI Catalog 데이터 모델 위에 구축된다. 이는 지금 당장 모든 사이트가 필수로 도입해야 하는 완성 표준이라는 뜻이 아니다. 오히려 에이전트 생태계가 어떤 방향으로 표준화될지 보여주는 초기 신호로 보는 편이 적절하다.</p>



<p>또 하나의 한계는 중앙 검색엔진이 하나로 정해지는 구조가 아니라는 점이다. ARD 문서는 여러 발견 서비스가 각자 다른 리소스를 색인하고, 각자의 신뢰·랭킹·접근 정책을 적용할 수 있다고 설명한다. 공개 웹에는 여러 검색엔진이 있고, 회사 내부에는 사내 검색이 따로 있는 것과 비슷하다.</p>



<h2 class="wp-block-heading">짧은 결론</h2>



<p>ARD는 “AI 에이전트가 도구를 어떻게 호출하느냐”보다 “AI 에이전트가 쓸 만한 도구를 어떻게 찾고 믿느냐”에 초점을 둔 표준이다. MCP, A2A, OpenAPI가 에이전트 생태계의 연결 규격이라면, ARD는 그 연결 대상을 발견하는 검색·검증 계층이다. 아직 초안 단계지만 AI 검색, GEO, MCP, 에이전트 플랫폼을 다루는 개발자라면 지금부터 개념을 잡아둘 만하다.</p>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">Agentic Resource Discovery는 무엇인가</h3>



<p>AI 에이전트가 사용할 수 있는 도구, 스킬, MCP 서버, API, 다른 에이전트를 찾고 검증하기 위한 개방형 발견 명세다.</p>



<h3 class="wp-block-heading">ARD는 MCP를 대체하나</h3>



<p>대체하지 않는다. MCP는 호출·연결 프로토콜이고, ARD는 호출 전에 리소스를 찾고 검증하는 발견 계층이다.</p>



<h3 class="wp-block-heading">ARD를 적용하려면 무엇부터 해야 하나</h3>



<p>공개하거나 내부에서 검색 가능하게 만들 리소스를 정리하고, <code>ai-catalog.json</code> 매니페스트로 설명하는 것부터 시작한다. 공개 웹에서는 <code>/.well-known/ai-catalog.json</code> 경로가 기본 출발점이다.</p>



<h3 class="wp-block-heading">ARD가 SEO 순위에 직접 영향을 주나</h3>



<p>현재 기준으로 직접적인 SEO 순위 요소라고 볼 근거는 부족하다. 다만 AI가 사이트의 리소스와 기능을 이해하는 표준화 흐름이라는 점에서 GEO 전략과 함께 볼 가치가 있다.</p>



<h2 class="wp-block-heading">공식 출처와 참고 링크</h2>



<ul class="wp-block-list">
<li><a href="https://developers.googleblog.com/announcing-the-agentic-resource-discovery-specification/" target="_blank" rel="noopener">Google Developers Blog: Announcing the Agentic Resource Discovery specification</a></li>
<li><a href="https://agenticresourcediscovery.org/" target="_blank" rel="noopener">Agentic Resource Discovery 공식 문서</a></li>
<li><a href="https://agenticresourcediscovery.org/how_to_publish/" target="_blank" rel="noopener">ARD How to publish 가이드</a></li>
<li><a href="https://github.com/ards-project/ard-spec" target="_blank" rel="noopener">ards-project/ard-spec GitHub 저장소</a></li>
<li><a href="https://github.com/Agent-Card/ai-catalog" target="_blank" rel="noopener">AI Catalog GitHub 저장소</a></li>
</ul>



<script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Agentic Resource Discovery는 무엇인가?", "acceptedAnswer": {"@type": "Answer", "text": "Agentic Resource Discovery, 줄여서 ARD는 AI 에이전트가 웹과 조직 내부에서 사용할 수 있는 도구, 스킬, MCP 서버, API, 다른 에이전트를 찾고 검증하기 위한 개방형 발견 명세다."}}, {"@type": "Question", "name": "ARD는 MCP를 대체하는가?", "acceptedAnswer": {"@type": "Answer", "text": "대체하지 않는다. MCP는 도구를 호출하는 실행·연결 프로토콜에 가깝고, ARD는 호출 전에 어떤 도구가 어디에 있는지 찾는 발견 계층이다."}}, {"@type": "Question", "name": "ARD를 적용하려면 무엇을 준비해야 하는가?", "acceptedAnswer": {"@type": "Answer", "text": "공개 도메인에 ai-catalog.json 매니페스트를 만들고, 가능하면 /.well-known/ai-catalog.json 경로로 제공한다. 각 리소스에는 식별자, 설명, 타입, URL, 대표 질의 같은 검색용 메타데이터를 넣는다."}}, {"@type": "Question", "name": "ARD가 SEO나 GEO와 관련 있는가?", "acceptedAnswer": {"@type": "Answer", "text": "직접적인 검색 순위 보장 장치는 아니다. 다만 AI 에이전트와 AI 검색 시스템이 사이트의 기능과 리소스를 이해하는 방식을 표준화하려는 흐름이라는 점에서 GEO와 연결된다."}}]}</script>
		<div class="wpulike wpulike-robeen " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="2610"
					data-ulike-nonce="6b68f27a3c"
					data-ulike-type="post"
					data-ulike-template="wpulike-robeen"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2610"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	<p>The post <a href="https://blog.kwt.co.kr/agentic-resource-discovery-ard/">Agentic Resource Discovery란? AI 에이전트가 도구를 직접 찾는 검색 표준</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/agentic-resource-discovery-ard/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
