무인 감시 AI 에이전트를 안정적으로 유지하는 10가지 스킬
요약
본 글은 GitHub Actions 기반의 자율 에이전트 aeon과 그 스킬들을 소개하며, 이들이 단순히 새로운 능력을 추가한 것이 아니라 '거부'를 통해 진화했음을 설명합니다. 핵심은 대화형 도구 세션을 상태 기계로 재해석하고, 변경된 코드를 실제로 실행하여 증거(receipt)를 남기는 데 있습니다.
핵심 포인트
- 에이전트의 발전은 새로운 능력 추가보다 '무엇을 거부하는가'에서 온다.
- 대화형 도구 세션은 본질적으로 상태 기계이며, 이를 명시적으로 관리해야 한다.
- create-prove 스킬은 변경된 코드를 실제로 실행하고 그 결과를 PR에 증거로 남긴다.
개요
aeon은 GitHub Actions 위에서 작동하는 자율(autonomous) 에이전트이며, 내부적으로는 Claude Code가 구동하고 있습니다. catalog에 있는 skill들은 각각 단일 markdown 파일입니다. schedule이나 dispatch를 통해 시작되어 맡은 작업을 처리하고 종료합니다. 최근 몇 주 동안 이 중 10개의 skill에 대해 각각 공개 기사가 작성되었습니다. 본 글은 그 10가지 지도를 담고 있습니다.
10개를 나란히 읽어보면 하나의 패턴이 떠오릅니다. 엄밀히 말해, 이들 중 어느 것도 '새로운 능력'을 추가한 것은 아닙니다. API를 호출하거나, PR(Pull Request)을 열거나, USDC를 움직이는 것 — 에이전트는 원래 모두 할 수 있었습니다. 각 skill이 기여하는 바는 거부입니다. 각각은 '기본 워크플로우라면 버려버릴 것'인 무언가(단계의 상태, 영수증, 판정, 인간 승인 게이트)를 명시하고, 그것을 버리지 않는 것을 업무 전체로 삼고 있습니다. 아래는 '무엇을 거부했는지'에 따라 10개를 그룹화한 투어입니다.
사람이 있다는 전제 하의 도구 조작
arc-studio는 Arc 테스트넷상의 컨트랙트 개발 환경인 Circle Arc Studio를 키보드 앞에 아무도 없는 runner로부터 조작합니다. Arc Studio는 대화(conversation)로 설계되었지만, GitHub Actions의 runner가 할 수 있는 것은 음성 사서함에 메시지를 남기는 것뿐입니다. 이 skill은 한 가지 대화 세션을 각각 1회의 headless 실행에 들어맞는 3가지 동사(start, poll, answer)로 분할하고, 단계의 상태를 memory/arc-studio.json에 저장하여 실행 간에 유지합니다. 즉, 세션의 실체는 단말기가 아니라 상태 파일 자체에 있었다는 것입니다. 턴의 시작과 끝에 각각 notify가 한 번씩 들어갑니다. 그리고 '토큰의 소수점 아래는 몇 자리로 할까요?'와 같은 질문은 오퍼레이터가 커피를 마시며 답할 때까지 단계 파일 안에서 기다립니다.
이러한 재해석은 Arc 외부에도 일반화됩니다. 대화형 도구 세션은 모두 상태 기계(state machine)이며, 단지 그것이 대부분 단말기 창 안에 숨겨져 있을 뿐입니다. 단계에 이름을 붙이고 영속화시켜 버리면, 단말기는 선택 사항이 됩니다.
분위기가 아닌 증거
'보기엔 문제없어 보여요'는 증거가 아닙니다 — 이 한 점을 위해 존재하는 skill이 3가지 있습니다.
create-prove가 목표로 하는 것은 에이전트 개발에서 가장 느슨한 부분입니다. 어떤 skill을 변경한 PR이 읽히고, lint를 통과하고, 병합됩니다. 그 사이 아무도 변경된 skill이 실제로 실행되는 것을 보지 못합니다. 이 skill은 특정 commit SHA에 고정된 타겟을 받아 리포지토리 자체의 aeon.yml workflow를 통해 변경된 skill을 실제로 실행하고, 기계가 읽을 수 있는 영수증(receipt)을 PR에 되돌려 씁니다. run의 URL, 출력 발췌본, SHA를 한 줄의 JSON에 녹여낸 것입니다. 게이트는 모두 fail-closed입니다. 증명하는 동안 헤드가 움직이면 PROVE_STALE, 안전한 실제 호출이 존재하지 않으면 PROVE_UNSAFE, 래퍼는 초록색이지만 출력이 비어 있으면 PROVE_MISSING_EVIDENCE. 증명이 결과물이 되는 순간, '증거가 없는 것' 역시 보이게 됩니다.
sc-audit는 vuln-scanner에서 분리된, Solidity 심층 감사 담당입니다. 가장 먼저 할 일은 스펙(spec)을 작성하는 것입니다. 액터(actor), 신뢰 경계(trust boundary), 그리고 모든 도달 가능한 경로에서 성립해야 하는 불변 조건(invariant)의 짧은 목록이 그것입니다. 다음으로 그중 하나를 깨는 경로를 찾고, 이어서 입장을 바꿔 살아남은 지적 사항을 하나씩 반증하려고 시도하며, 가능한 것은 property fuzzer로 검증합니다. 게다가 그 fuzzer의 하네스(harness)는 '테스트하고 있다고 주장하는 코드에 실제로 도달하고 있다'는 것을 먼저 증명해야 합니다. 온체인 모드에서는 검증된 소스(verified source)를 가져와 프록시(proxy)를 따라 구현(implementation)에 도달하고, vendor 하위의 의존성을 하나씩 실제 업스트림과 SHA로 비교합니다. 익스플로러의 'verified' 배지가 증명하는 것은 소스와 바이트코드의 일치일 뿐이며, 소스와 업스트림의 일치에 대해서는 아무것도 증명하지 못하기 때문입니다. 확인된 지적 사항은 책임 공개(responsible disclosure) 경로를 거치며, 그 지적 사항이 건드리는 금액이 커질수록 인간 게이트가 더 강력해집니다.
rightstack은 같은 회의론을 '조언'에 적용합니다. Web3 기술 선정 어드바이저인 RightStack에게 핀 고정된 버전과 엄격한 스키마(schema) 라인 아래로 문의(recommend, inspect, compare, explain, migrate)하고, 돌아온 답변을 역으로 추궁합니다. 그 워크플로우가 체인과 맞는지. 커스터디 모델과 맞는지. 사용자와 맞는지. 모든 간략 보고서(brief)는 usable / usable-with-corrections / looks-wrong 중 하나의 판정을 붙여 출하되며, 그 판정이야말로 결과물입니다. 잘못된 질문에 대한 자신만만한 답변은 '맞는지'를 확인해야 비로소 포착할 수 있습니다. 답을 읽어보는 것만으로는 절대 잡을 수 없습니다.
입금/출금과 루프 속의 인간
USDC를 다루는 skill이 4가지 있으며, 모두 동일한 분할 위에 구축되어 있습니다 — 읽기는 무료이고 쓰기는 게이트가 있습니다.
cortx-reliability는 x402 결제가 발생하기 전에 실행됩니다. x402 구매는 7단계 파이프라인이며, USDC가 지갑을 떠난 후에 실패하는 단계(delivery, parse, schema)는 바로 업타임 모니터링이 절대적으로 필수적인 단계입니다. 특정 엔드포인트가 비용이 들지 않는 모든 체크를 통과하면서도 돈이 드는 모든 체크에 실패할 수 있습니다. 이 skill은 Base 상의 실제 USDC로 x402 엔드포인트를 종단 간(end-to-end) 모니터링하는 CORTX에게 문의하고, 그 기록을 proceed / warn / block이라는 명확한 판단으로 변환합니다. 1시간보다 오래된 데이터는 '데이터 없음'으로 처리됩니다. 신선한 타임스탬프를 동반하지 않은 신뢰성 수치는 제복을 입은 추측에 불과하기 때문입니다.
taskmarket-delegate는 에이전트를 TaskMarket — 에이전트의 노동 시장 — 에 연결합니다. 바운티(bounty) 열람은 무료이고 무제한이지만, 태스크 생성이나 작업 제출은 취소할 수 없는 유료 액션입니다. 따라서 실행하는 액션은 dispatch 변수로 명시적으로 전달되어야 하며, 오퍼레이터는 가격이 붙은 1줄 미리보기를 보게 되고, 명확한 '예'가 없으면 아무것도 움직이지 않습니다. 이 skill은 조용한 경제적 전환을 기록하고 있습니다. 에이전트 자체의 추론은 가격과 품질 곡선을 가진 공급자 중 하나에 불과하며, 특정 태스크에서의 확신도 부족은 그 작업을 정말로 잘하는 상대에게 라우팅하라는 가격 신호입니다.
compute-resell은 시장의 반대편을 다룹니다. 활동하는 프로바이더들의 크레딧(Bankr, Bedrock, Vertex)을 Surplus Intelligence 마켓플레이스에서 판매하는 쪽입니다. 강점은 오더북을 정확하게 읽는 데 있습니다. 호가는 공개되어 있지만, 그 대부분은 죽은 물건들입니다. 건강하지 못한 오퍼, 신뢰할 수 없는 셀러, 거래량이 없는 게시물들이죠. 이 skill 파일이 가져오는 실제 스냅샷에서는, 특정 모델의 239개 오퍼 중 1위부터 66위까지가 죽어 있었고, 실제 청산 가격은 67위에 있었습니다. 엔진은 호가를 '실제로 구매자에게 제공할 수 있는 셀러'로 걸러내고, 살아남은 것들 중 최저가를 바닥값으로 삼아 그 99%에서 출품합니다. 가격 책정은 설정 항목이 아니라, 매번 실행될 때 도출되는 읽기(readout)입니다.
submit-hook은 '배포됨(deployed)'과 '발견 가능(discoverable)' 사이의 간극을 메웁니다. mainnet에서 작동하지만 어디에도 게시되지 않은 Uniswap v4 hook은, 한 번도 배포된 적 없는 hook과 구별할 수 없습니다. 이 skill은 인스턴스 자체의 deploy ledger를 공개 큐로 읽고, 각 레코드의 유효성을 확인하며(hook의 flags는 해당 주소의 하위 14비트와 일치해야 함), deploy brief에서 이름, 카테고리, 평이한 말로 된 규칙을 도출하여 공개 레지스트리 aeonfun/univ4-hooks에 PR을 엽니다. 설계상 공집합(idempotent)입니다. 이미 게시된 경우 안전한 no-op이며, '이게 결국 공개되었나?'라는 질문은 조사(investigation)가 아니라 단 한 번의 재실행으로 격하됩니다.
agent는 자신 자신의 유지보수 담당이자 홍보 담당입니다.
feedback-builder는 agent 자신이 작성한 백로그를 소화합니다. 잘 만들어진 서비스는 /feedback 엔드포인트를 통해 agent로부터 버그 보고나 기능 요청을 기록하며, 기본 워크플로우가 바로 그곳에서 멈춥니다. 이 skill은 보고서를 가져와 모든 항목을 신뢰할 수 없는 데이터로 취급하고, 같은 변경을 요구하는 것들을 클러스터링하여, 각 주장을 실제 코드와 대조해 검증한 후, 채택된 클러스터 중 가장 좋은 단 하나만을 작은 PR 형태로 구축합니다. 코드 내 위치를 특정하지 못한 버그는 NEEDS-INFO이며, BUILD가 되지 않습니다. 승인은 머지(merge)라는 형태로 인간이 수행하며, 이 skill 자체는 결코 머지하지 않습니다. 즉, 그 의견함은 실은 처음부터 투표수가 붙은 기계 생성 백로그였던 셈입니다.
skill-article은 메타적인 항목이며, 나머지 9개에 공개 기사가 존재하는 이유 그 자체입니다. 인스턴스 내의 임의 skill을 대상으로 하면, 증거로부터 발표를 구성합니다. run 로그와 출력 디렉토리를 파헤쳐 제목으로 쓸 수 있는 실제 데이터를 찾고, 숫자가 존재하지 않으면 시스템 설명으로 회피하며, 조작된 통계와 '사례 연구를 가장한 가정 이야기'를 규칙으로 금지합니다. 기사 끝에는 완전한 SKILL.md가 그대로 포함되어 배포되므로, 그 게시물은 판매와 다운로드를 동시에 겸합니다. 통찰력을 팔고 파일을 제공하는 것이죠.
공통적인 '거절'
10개를 쌓아 올리면 공통된 움직임이 보입니다. arc-studio의 페이즈 파일, create-prove의 영수증, rightstack의 판정, cortx-reliability의 배포 성공률, taskmarket-delegate의 프리뷰와 yes, sc-audit의 불변량 목록. 이들은 모두 '워크플로우의 게으른 버전이라면 버려질 상태'의 단면이며, 버리는 이유는 단순히 그쪽이 더 쉽기 때문이라는 점입니다. 자율 agent에게는 그런 게으름을 부릴 자격이 없습니다. 무인 감시로 돌아가야 하므로, 평소라면 인간의 주의력에 맡겨 처리했을 것을 기록하고, 검증하며, 게이트를 거치는 형태로 대체할 수밖에 없는 것입니다.
이것이 aeon skill의 실체입니다. 기능(feature)이 아니라, 마크다운 파일 1장에 담길 정도의 작은 규율입니다.
사용해 보기
10개의 스킬은 모두 www.aeon.fun의 공식 aeon catalog과 github.com/aeonfun/aeon 리포지토리에 있으며, 각각 개별 설명 기사와 바로 사용할 수 있는 완벽한 skill 파일이 첨부되어 있습니다. aeon의 skill 목록을 확인하거나 → 리포지토리를 fork하고 → 자신의 agent에 부족한 규율을 선택하는 순서입니다.
로컬에서 실행하려면 다음 한 줄을 자신의 coding agent에 붙여넣습니다.
read aeon.fun/skills/aeon.md and follow the instructions to set up your aeon agent
지원되는 harness는 Claude Code, Codex, Hermes, OpenClaw 등입니다. 클론이나 터미널을 사용하지 않고 브라우저 상에서도 작동할 수 있습니다.
10개 skill 목록 (원문・영어)
skill 1개 = SKILL.md 1 파일이므로, 링크된 곳이 곧 구현 전체입니다. 아래 링크들은 모두 2026년 10월 12일에 접속 확인되었습니다.
| skill | 한 줄 요약 | 소스 | 공개 포스트 |
|---|---|---|---|
| arc-studio | 대화 세션을 영속화할 수 있는 단계로 분할하고, 무인 runner에서 조작합니다. | SKILL.md | X |
| create-prove | 변경된 skill을 실제로 실행하여 레시트를 PR에 되돌립니다. | SKILL.md | X |
| sc-audit | 먼저 invariant를 작성하고, 이를 깨는 경로를 찾은 다음, 스스로 반증합니다. | SKILL.md | X |
| rightstack | 기술 선택 조언을 '일관성이 있는지'로 추궁하며 판단을 내립니다. | SKILL.md | X |
| cortx-reliability | 결제 전의 엔드투엔드 신뢰성 게이트입니다. 오래된 데이터는 '없음'과 같습니다. | SKILL.md | X |
| taskmarket-delegate | 확신도 부족을 가격 시그널로 외부 위임합니다 (쓰기는 인간이 승인). | SKILL.md | X |
| compute-resell | 판에서 죽은 짐을 제거하고, 가격 책정을 매번의 읽기로 바꿉니다. | SKILL.md | X |
| submit-hook | deploy ledger를 공개 큐로 읽고, Uniswap v4 hook을 공효적으로 등록합니다. | SKILL.md | X |
| feedback-builder | agent가 작성한 요구사항을 클러스터화/검증하여 작은 PR로 만듭니다 (병합은 인간). | SKILL.md | X |
| skill-article | run 로그에서 실질적인 내용을 파헤쳐 공지글을 작성하고, 통계 조작을 금지합니다. | SKILL.md | X |
번역자 코멘트:
코드만 보고 싶은 사람에게 가장 빠른 경로는 리포지토리의 skills/ 디렉토리를 직접 읽는 것입니다. skill 1개 = SKILL.md 1 파일로, 프레임워크의 보일러플레이트도, 미리 이해해야 할 클래스 계층도 없습니다. 열어보는 순간 약속된 모든 것이 거기에 있습니다. 현재 다루고 있는 과제와 가장 가까운 것을 하나 읽어보고, 그것이 aeon.yml에서 어떻게 실행되는지 확인하면 대략 파악할 수 있습니다.
리포지토리: github.com/aeonfun/aeon (MIT License, Aeon Inc) 원문: Ten Skills That Keep an Unsupervised AI Agent Honest
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기