AI 에이전트를 위한 신원 시스템 구축: AgentCard 및 작업 기록
요약
AI 에이전트의 익명성 문제를 해결하기 위해 신원, 워크스페이스, 책임성을 부여하는 오픈 소스 프로젝트 Octo를 소개합니다. AgentCard와 작업 기록을 통해 에이전트의 역량과 성과를 구조화하여 관리하는 인프라 구축 방안을 다룹니다.
핵심 포인트
- AI 에이전트에게 지속적인 신원(Identity)과 문맥(Context) 부여 필요
- Octo 프로젝트: AgentCard를 통한 에이전트 역량 구조화
- 작업 기록(Work history)을 통한 에이전트 성능 프로필 구축
- 생성자 결합을 통해 에이전트의 권한과 책임을 명확히 정의
엔지니어링 팀에서 매일 일어나는 다음과 같은 시나리오가 있습니다. 코드를 분석하기 위해 AI 도구와 대화를 시작하고, 유용한 응답을 얻은 뒤, 결과물을 복사하여 붙여넣고 탭을 닫습니다. 한 시간 후, 후속 분석이 필요해졌지만 당신은 처음부터 다시 시작해야 합니다. 문맥(Context)도, 기록(History)도, 연속성(Continuity)도 없습니다.
이제 이를 병렬로 실행되는 5개의 도구로 확장해 보십시오. 초안 작성을 위한 ChatGPT, 분석을 위한 Claude, 코딩을 위한 Copilot, 민감한 데이터를 위한 로컬 모델(Local model), 그리고 아마도 도메인 특화 작업을 위한 커스텀 에이전트(Custom agent)까지 말입니다. 결과물들은 브라우저 탭, Slack 스레드, 클립보드 기록 등에 흩어져 있습니다. 아무것도 연결되어 있지 않습니다.
AI 도구 자체는 충분히 유능합니다. 부족한 것은 이들을 정체성(Identity), 워크스페이스(Workspace), 그리고 책임(Accountability)을 가진 실제 팀 구성원으로 취급할 수 있는 인프라입니다.
신원 문제 (The Identity Problem)
오늘날의 모든 AI 상호작용은 익명입니다. 당신은 "모델"과 대화하고, 모델은 응답하며, 세션은 종료됩니다. 지속적인 신원(Persistent identity), 축적된 문맥(Accumulated context), 수행 기록(Track record)이 없습니다.
일회성 질문에는 이 방식이 괜찮습니다. 하지만 AI가 지속적인 워크플로우(Workflow)에 참여해야 하는 순간, 즉 누가, 언제, 무엇을, 얼마나 잘 수행했는지 알아야 하는 순간에는 이 방식이 무너집니다.
우리는 AI 에이전트에게 적절한 신원 시스템을 부여함으로써 이 문제에 접근하는 Octo (Apache 2.0, GitHub)라는 오픈 소스 프로젝트를 구축해 왔습니다. Octo에서 각 AI 에이전트는 Bot입니다. 즉, 이름, 생성자, 역량 카드(Capability card), 그리고 작업 기록(Work history)을 가진 일급 엔티티(First-class entity)입니다.
Bot은 단순한 챗봇 래퍼(Chatbot wrapper)가 아닙니다. 그것은 구조화된 신원(Structured identity)입니다:
- Creator binding (생성자 결합): 모든 Bot은 인간 사용자에 의해 생성되며, 해당 사용자의 권한 중 범위가 제한된 일부를 상속받습니다. Bot은 자율적으로 행동하는 것이 아니라 생성자를 대신하여 행동합니다.
- AgentCard: 구조화된 역량 선언문입니다. Bot이 무엇을 할 수 있는지(코딩, 분석, 번역, 디자인), 어느 정도 수준인지, 어떤 도메인에서 수행하는지, 그리고 어떤 제약 조건이 있는지를 나타냅니다. 다른 팀원들이 작업을 할당하기 전에 검토할 수 있는 이력서라고 생각하면 됩니다.
- Work history (작업 기록): Bot이 참여하는 모든 작업은 완료 상태, 품질 점수, 거부 횟수, 전달 시간 등이 기록됩니다. 시간이 흐름에 따라 이는 향후 작업 할당의 근거가 되는 성능 프로필을 구축합니다.
에이전트에게 성과 검토가 필요한 이유
기업적인 용어처럼 들릴 수 있지만, 이는 실질적인 문제입니다. AI 에이전트에게 작업을 할당할 때, 그 결과물은 어떻게 됩니까?
대부분의 설정에서는 다음과 같습니다: 채팅창에서 응답을 받고, 머릿속으로 이를 평가하며, 아마 한두 번 정도 반복(iterate)한 뒤, 결과를 다른 곳으로 복사합니다. 공식적인 인수인계(handoff)도, 승인 단계도 없으며, 무엇이 효과적이었고 무엇이 그렇지 않았는지에 대한 기록도 없습니다.
그 결과, AI의 품질은 귀하의 팀을 위해 결코 개선되지 않습니다. 모델 자체는 전체적으로 좋아지고 있을지 모르지만, 귀하만의 구체적인 표준, 선호도, 피드백은 포착되거나 다시 반영되지 않습니다.
Octo는 대화에서 자연스럽게 발생하는 작업 단위인 Matter를 통해 이 문제를 해결합니다. 채널(Channel)에서의 논의가 작업 내용이 명확해지는 지점에 도달하면, 시스템은 Matter를 생성합니다:
- Brief (브리프): 대화에서 추출하여 정제된 작업 설명
- Assignee (담당자): 인간 또는 Bot이며, 그중 한 명이 리더(Leader)로 지정됨
- Deliverables (산출물): 코드, 문서, 분석 보고서 등 — Matter에 직접 첨부됨
- Acceptance (승인): 생성자가 결과물을 검토하며, 피드백과 함께 승인하거나 거부할 수 있음
- Timeline (타임라인): 논의부터 전달까지의 전체 이력, 검색 및 감사(auditable) 가능
모든 승인과 거절은 하나의 데이터 포인트가 됩니다. 시간이 흐름에 따라 이러한 데이터 포인트들은 **선호도 카드 (Preference Cards)**로 정제됩니다. 이는 팀이 무엇을 좋은 작업으로 간주하는지, 무엇이 거절되었는지, 그리고 그 이유가 무엇인지에 대한 구조화된 기록입니다. 봇(Bot)들은 이후의 작업에서 이 카드들을 참조하며, 이를 통해 행동을 반복적으로 개선합니다.
봇이 협업할 수 있는 여섯 가지 방법
여러 봇이 동일한 작업에 참여할 때, 봇들 사이의 정보 흐름은 매우 중요합니다. 브레인스토밍 작업은 순차적 파이프라인(sequential pipeline)과는 다른 토폴로지(topology)를 필요로 합니다.
Octo는 정보 가시성(visibility)을 기반으로 여섯 가지 협업 모드를 정의합니다:
| 모드 | 가시성 | 흐름 | 사용 사례 |
|---|---|---|---|
| Solo (솔로) | — | — | 하나의 봇, 단순 작업 |
| ... |
핵심 통찰: 이러한 모드들은 역할극(role-playing)에 관한 것이 아닙니다. 이는 정보 토폴로지 (information topology), 즉 각 봇이 무엇을 언제 볼 수 있는지를 제어하는 것에 관한 것입니다. 리뷰어가 실행자의 추론 과정(reasoning process)을 볼 수 없는 크리틱(Critic) 모드는 진정으로 독립적인 리뷰를 생성합니다. 모든 구성원이 모든 것을 보는 라운드테이블(Roundtable) 모드는 더 풍부한 교차 수분(cross-pollination)을 만들어냅니다.
리더 에이전트(Leader Agent)는 모드 선택, 작업 분해(task decomposition), 그리고 결과 합성(result synthesis)을 조율합니다. 각 모드는 시스템 수준에서 정보 흐름을 강제하므로, 봇이 실수로 봐서는 안 될 정보를 볼 수 없습니다.
아키텍처
Octo의 기술 스택:
- 백엔드 (Backend): Go (octo-server) — 봇 관리, 권한 계산, Matter 생명주기 처리
- 메시징 (Messaging): WuKongIM — 채널 내 인간과 봇 사이의 실시간 메시지 라우팅
- 스토리지 (Storage): MySQL (구조화된 데이터) + Redis (캐싱, 온라인 상태) + MinIO (파일 객체)
- 클라이언트 (Clients): React/TypeScript 웹 + Electron 데스크톱, 네이티브 iOS, 네이티브 Android, CLI, 브라우저 확장 프로그램
권한 모델은 "권한 마스크 (permission mask)" 접근 방식을 사용합니다. 봇의 유효 권한 = 생성자의 권한 ∩ 할당된 범위 - 명시적 거부입니다. 이를 통해 봇이 생성자의 액세스 권한을 절대 초과할 수 없도록 보장하는 동시에, 봇이 접근할 수 있는 리소스에 대해 세밀한 제어(fine-grained control)를 허용합니다.
모든 데이터는 귀하의 자체 인프라에 머뭅니다. Octo는 Docker Compose 또는 Kubernetes를 통한 프라이빗 배포(private deployment)를 지원하며, 데이터가 네트워크 경계를 벗어나지 않습니다.
개방형 생태계 (An Open Ecosystem)
Octo는 특정 AI 제공업체에 귀하를 종속시키지 않습니다. 봇(Bot)은 다음과 같은 다양한 에이전트 런타임(Agent runtimes)에 연결할 수 있습니다:
- OpenClaw: 오픈 소스 에이전트 프레임워크 (Open-source agent framework)
- Hermes: 로컬 모델 오케스트레이션 (Local model orchestration)
- Codex: 코드 생성 및 리뷰 (Code generation and review)
- Claude Code: Anthropic의 코딩 에이전트 (coding agent)
각 런타임은 고유한 AgentCard를 가진 봇(Bot)으로서 연결됩니다. 봇(Bot) 추상화 덕분에 워크플로 구조를 변경하지 않고도 기반이 되는 AI를 교체할 수 있습니다.
브라우저 확장 프로그램도 별도로 언급할 가치가 있습니다. 이를 통해 어떤 웹페이지에서든 Octo의 채널(Channel) 시스템을 호출할 수 있으며, 컨텍스트 스위칭(context-switching) 없이 기존 도구에 AI 협업 기능을 가져올 수 있습니다.
코드 (The Code)
Octo는 Apache 2.0 라이선스 하에 완전히 오픈 소스로 제공됩니다. 총 9개의 리포지토리(repositories)가 전체 스택을 구성합니다:
octo-server— Go 백엔드, 봇(Bot) 관리, 오케스트레이션 (orchestration)octo-web— React + TypeScript 웹/데스크톱 클라이언트octo-matter— Matter (작업) 마이크로서비스 (microservice)octo-ios/octo-android— 네이티브 모바일 클라이언트octo-admin— 관리자 콘솔 (Admin console)octo-adapters— 제3자 통합 (Third-party integrations)octo-lib— 공유 Go 라이브러리 (Shared Go library)
팀을 위한 AI 워크플로를 구축하면서 동일한 파편화(fragmentation) 및 연속성 문제를 겪고 있다면, 확인해 보시기 바랍니다. 스타(Stars)와 기여(contributions)를 환영합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기