본문으로 바로가기
리옵트 핸드북
리옵트 핸드북
엔터프라이즈 Eve 에이전트 개발

기초 아키텍처

Ch1. Eve 멘탈 모델Ch2. 소스 코드 지도Ch3. 프로젝트 레이아웃과 DiscoveryCh4. Compiler와 Runtime Graph

에이전트 품질 설계

Ch5. agent.ts, 모델, 컴팩션Ch6. Context, Skills, Dynamic CapabilitiesCh7. Tools, Approval, ConnectionsCh8. Sandbox 보안 런타임

운영 런타임

Ch9. Channels, Auth, StreamingCh10. Subagents, Workflows, Remote AgentsCh11. Schedules, State, HooksCh12. Evals와 품질 게이트

프로덕션 운영

Ch13. Observability와 DeploymentCh14. Enterprise PatternsCh15. Migration과 Governance

부록

공식 문서 대조표검증 리포트업데이트 내역
핸드북›엔터프라이즈 Eve 에이전트›Ch6. Context, Skills, Dynamic Capabilities
한국어English

Ch6. Context, Skills, Dynamic Capabilities

Eve의 컨텍스트 제어 원칙과 skills, dynamic tools, dynamic instructions를 활용한 고급 에이전트 설계를 정리한다.

핵심 요약

  • 고품질 Eve 에이전트는 모든 정보를 prompt에 넣지 않고 instructions, skills, dynamic capabilities로 분해합니다.
  • Skill description은 모델의 routing contract이므로 짧고 구체적이어야 합니다.
  • dynamic tools/instructions/skills는 권한을 좁히고 테넌트별로 기능을 노출하는 데 유용하지만, 이름과 이벤트 순서는 운영 기준으로 관리해야 합니다.

에이전트 품질은 모델보다 컨텍스트 설계에 더 자주 좌우됩니다. Eve는 컨텍스트를 한 prompt에 다 붙이지 않고 always-on instructions, on-demand skills, dynamic capabilities, sandbox workspace로 나눕니다.

컨텍스트 레버

레버모델에게 보이는 시점사용 기준
instructions.md모든 turn정체성, 안전 원칙, 답변 기본 규칙
instructions.tsbuild-time 생성 후 모든 turntyped helper로 prompt 조립
skills/모델이 load_skill 호출 후긴 절차, 플레이북, 참고 자료
tools/tool descriptor는 항상 또는 동적으로실행 가능한 capability
sandbox/workspace모델이 파일 도구로 읽을 때데이터/스크립트/artifact
subagentparent가 delegation할 때별도 role/tool surface
defineDynamicsession/turn/step event 후사용자/테넌트/상태별 capability

좋은 Eve 에이전트는 “항상 보이는 prompt”를 줄이고 “필요할 때 드러나는 지식/도구”를 늘립니다.

Instructions는 짧고 안정적으로

instructions.md에는 변하지 않는 계약만 넣습니다.

좋은 예:

agent/instructions.md
You are an internal operations agent.
Verify facts before taking action.
For destructive or external side-effecting actions, explain the planned action and wait for approval.
Use available skills when a task matches their description.

나쁜 예:

  • 모든 업무 절차를 instructions에 붙인다.
  • 팀별 정책을 하나의 prompt에 모두 넣는다.
  • 자주 바뀌는 가격/조직/권한 정보를 prompt에 하드코딩한다.

자주 바뀌는 정보는 dynamic instructions 또는 tool/connection으로 가져와야 합니다.

Skills는 procedure memory다

Eve skill은 “새 실행 능력”이 아니라 “모델이 로드하는 절차”입니다. tool은 skill을 로드하기 전에도 보일 수 있습니다. 여기를 헷갈리면 skill을 보안 경계로 오해합니다.

필요SkillTool
릴리즈 절차를 설명적합부적합
GitHub release 생성부적합적합
사고 대응 체크리스트적합부적합
PagerDuty incident 생성부적합적합

Packaged skill은 sibling files를 가질 수 있습니다.

agent/skills/incident-response/
├── SKILL.md
├── references/severity-matrix.md
└── scripts/render-report.ts

모델은 load_skill로 SKILL.md를 prompt에 추가하고, 필요하면 sandbox file tools로 sibling files를 읽습니다.

Skill description은 routing contract다

description은 “무엇인지”보다 “언제 써야 하는지”를 적습니다.

약한 설명좋은 설명
Release checklistUse when planning, validating, or rolling back a production release.
SQL guideUse when writing read-only warehouse queries or validating metric definitions.
Incident docsUse when triaging severity, assigning incident roles, or writing postmortems.

Eve는 skill description을 모델에게 광고합니다. 설명이 약하면 모델은 skill을 로드하지 않습니다.

Dynamic tools

defineDynamic을 agent/tools/*.ts에서 사용하면 session/turn/step event에 따라 tool set을 생성할 수 있습니다.

대표 시나리오:

시나리오event
tenant별 warehouse table tool 생성session.started
turn별 화면/route context에 맞는 UI action 제공turn.started
직전 tool result에 따라 임시 repair tool 제공step.started

여기서 한 가지 주의할 점이 있습니다. dynamic tool의 execute는 inline function이어야 합니다. Eve bundler transform은 inline execute closure를 step boundary 이후에도 복원하도록 처리합니다. execute: myFn 형태로 쓰면 replay/resume 안정성이 깨질 수 있습니다.

Dynamic naming

Dynamic tool map을 반환하면 tool name은 <fileSlug>__<key>가 됩니다.

agent/tools/query.ts
export default defineDynamic({
  events: {
    "session.started": async () => ({
      orders: defineTool({ /* query__orders */ }),
      users: defineTool({ /* query__users */ }),
    }),
  },
});

이 naming은 운영 로그와 eval에 그대로 남습니다. key가 tenant data에서 온다면 sanitize하고, 이름이 흔들리지 않게 유지해야 합니다.

Dynamic skills와 instructions

팀/역할/요금제별 컨텍스트는 dynamic skills/instructions가 적합합니다.

agent/instructions/tenant.ts
import { defineDynamic, defineInstructions } from "eve/instructions";

export default defineDynamic({
  events: {
    "session.started": (_event, ctx) => {
      const plan = ctx.session.auth.current?.attributes.plan ?? "unknown";
      return defineInstructions({
        markdown: `The caller plan is ${plan}. Apply the matching support policy.`,
      });
    },
  },
});

보안상 중요한 점:

  • dynamic resolver는 ctx.session.auth를 기준으로 capability를 제한할 수 있다.
  • 제한된 capability가 prompt에 노출되기 전에 route auth가 정확해야 한다.
  • channel metadata도 resolver 입력이 되므로, channel은 신뢰할 수 있는 metadata만 project해야 한다.

Event 순서

Eve의 stream event 처리 순서는 구조적입니다.

  1. channel adapter handler가 실행된다.
  2. channel metadata projection이 갱신된다.
  3. hooks가 실행된다.
  4. dynamic tool/skill/instruction resolver가 실행된다.

그래서 dynamic resolver는 갱신된 channel metadata를 읽습니다. 예를 들어 channel event handler가 Slack thread state를 업데이트하면, dynamic skill resolver가 그 thread의 team/playbook을 고릅니다.

컨텍스트 오염 방지 패턴

위험대응
모든 정책이 always-on prompt에 들어감skills로 분리
tenant A의 플레이북이 tenant B에게 보임dynamic skills + route auth + eval
tool output이 과도하게 모델 history에 남음toModelOutput으로 축약
파일/문서 전체를 prompt에 붙임sandbox workspace + read_file
subagent에 불필요한 root 권한 전달declared subagent로 별도 surface 구성

평가 기준

컨텍스트 설계는 eval로 검증해야 합니다.

Eval기대
skill routing관련 task에서 load_skill 호출
least context무관 task에서 skill 미호출
tenant isolation다른 principal로 접근 시 dynamic skill/tool 미노출
prompt compactnesslong session에서 compaction 이후 핵심 state 유지
tool output minimizationmodel reply에 secret/PII가 섞이지 않음

Eve의 progressive disclosure는 고급 기능이지만 품질을 저절로 보장하지는 않습니다. description, routing eval, dynamic resolver의 auth 기준이 함께 갖춰져야 합니다.

관련 문서

Ch9. Channels, Auth, Streaming

Eve channel이 세션 생성, continuation token, route auth, NDJSON stream을 어떻게 책임지는지 분석한다.

Ch15. Migration과 Governance

기존 에이전트와 자동화 시스템을 Eve로 전환하고 운영 거버넌스를 세우는 방법을 정리한다.

Cmd. /workflows

Claude Code 명령어 마스터 · dynamic workflow의 실행 상태를 확인하고 일시정지·재개·저장으로 제어하는 명령

Cmd. /skills

Claude Code 명령어 마스터 · 사용 가능한 skill 목록을 보고, 토큰 기준으로 정렬하거나 특정 skill을 숨기는 명령

Skills와 커스텀 명령어 가이드

Claude Code 명령어 마스터 · 팀/개인 워크플로우를 slash command와 skill로 설계하고 운영하는 방법

Ch5. agent.ts, 모델, 컴팩션

defineAgent 설정을 모델 라우팅, 출력 스키마, 컴팩션, experimental flag 관점에서 운영 기준으로 해석한다.

Ch7. Tools, Approval, Connections

Eve 도구 실행, 사람 승인, MCP/OpenAPI 연결, OAuth 흐름을 엔터프라이즈 보안 경계로 설계한다.

On this page

컨텍스트 레버Instructions는 짧고 안정적으로Skills는 procedure memory다Skill description은 routing contract다Dynamic toolsDynamic namingDynamic skills와 instructionsEvent 순서컨텍스트 오염 방지 패턴평가 기준