eve: 파일시스템을 저작 인터페이스로 삼는 AI 에이전트 프레임워크 프로젝트 (feat. Vercel)

eve 소개

eve는 Vercel이 공개한, 지속성 있는(durable) AI 에이전트를 위한 파일시스템 우선(filesystem-first) 프레임워크입니다. 에이전트를 코드 깊숙한 곳의 추상화로 숨기는 대신, 에이전트의 핵심 능력을 약속된 위치의 평범한 파일과 폴더로 표현합니다. 그 결과 프로젝트를 들여다보고, 확장하고, 운영하기가 쉬워집니다.

eve의 핵심 발상은 "파일시스템이 곧 저작 인터페이스(authoring interface)"라는 것입니다. 시스템 프롬프트는 instructions.md에, 모델이 호출하는 함수는 tools/에, 필요할 때 불러오는 절차는 skills/에 두는 식으로, 에이전트의 행동을 결정하는 요소가 모두 디렉토리 구조 안에 드러납니다. 덕분에 사람은 물론 코딩 에이전트도 프로젝트를 그대로 읽어 이해할 수 있습니다.

eve는 npm 패키지(eve)로 배포되며, 새 프로젝트를 만들면 의존성 설치와 Git 초기화까지 한 번에 처리하고 대화형 터미널 UI를 띄웁니다. 다만 현재 베타 단계로 Vercel 베타 약관이 적용되며, 정식 출시 전까지 프레임워크와 API, 동작이 바뀔 수 있습니다. 본 게시물에서는 eve의 파일시스템 기반 구조, 첫 에이전트를 만드는 과정, 그리고 채널·스케줄 같은 확장 방법을 정리합니다.

eve의 파일시스템 기반 에이전트 구조

eve 에이전트는 agent/ 디렉토리 하나에 모든 구성요소를 담습니다. 전형적인 구조는 다음과 같습니다.

my-agent/
└── agent/
    ├── agent.ts            # 선택: 모델과 런타임 설정
    ├── instructions.md     # 필수: 항상 켜진 시스템 프롬프트
    ├── tools/              # 선택: 모델이 호출하는 타입 있는 함수
    │   └── get_weather.ts
    ├── skills/             # 선택: 필요할 때 로드되는 절차
    │   └── plan_a_trip.md
    ├── channels/           # 선택: 메시지 채널 (HTTP, Slack, Discord)
    │   └── slack.ts
    └── schedules/          # 선택: 반복 실행되는 크론 작업
        └── weekly_recap.ts

각 디렉토리의 역할은 분명합니다. instructions.md는 항상 적용되는 시스템 프롬프트이고, tools/에는 모델이 호출할 수 있는 타입 있는 함수를, skills/에는 그때그때 로드되는 절차를 둡니다. channels/는 HTTP·Slack·Discord 같은 메시지 채널을, schedules/는 주기적으로 실행되는 크론 작업을 담습니다. 모델과 런타임 설정은 선택 사항인 agent.ts에 적습니다.

eve 설치 및 첫 에이전트 만들기

eve는 npx로 새 에이전트 프로젝트를 만드는 것에서 시작합니다. 이 명령은 my-agent 디렉토리를 만들고 의존성을 설치한 뒤 Git을 초기화하고 대화형 터미널 UI를 띄웁니다.

npx eve@latest init my-agent

기존 프로젝트에 추가하려면 경로를 넘깁니다(npx eve@latest init .). 생성된 프로젝트에는 agent 디렉토리가 들어 있습니다. agent/instructions.md에 시스템 프롬프트를 적고, agent/tools/get_weather.ts에 도구를 정의합니다.

import { defineTool } from "eve/tools";
import { z } from "zod";

export default defineTool({
  description: "Return mock weather data for a city.",
  inputSchema: z.object({ city: z.string().min(1) }),
  async execute({ city }) {
    return { city, condition: "Sunny", temperatureF: 72 };
  },
});

모델은 agent/agent.ts에서 고릅니다.

import { defineAgent } from "eve";

export default defineAgent({
  model: "anthropic/claude-sonnet-4.6",
});

이후 npm run dev로 에이전트를 실행하면 동작하는 에이전트가 완성됩니다. eve 패키지에는 전체 문서가 함께 포함되어 있어, 코딩 에이전트가 node_modules/eve/docs에서 문서를 로컬로 읽을 수 있습니다.

eve로 에이전트를 확장하기

기본 에이전트가 동작한 뒤에는 agent/ 아래에 폴더를 추가하는 방식으로 기능을 넓힙니다. channels/에 채널 정의를 추가하면 HTTP뿐 아니라 Slack·Discord 같은 메시지 채널로 에이전트를 노출할 수 있고, schedules/에 크론 작업을 두면 정해진 주기로 에이전트를 실행할 수 있습니다. 이 밖에도 사람이 중간에 개입하는 휴먼인더루프(human-in-the-loop) 프롬프트와 하위 에이전트(subagent)를 필요에 따라 더할 수 있습니다. 모든 확장이 새로운 파일과 폴더를 추가하는 형태로 이뤄지므로, 에이전트가 커져도 구조가 그대로 드러난다는 점이 eve의 일관된 특징입니다.

eve의 라이선스

eve는 Apache License 2.0으로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:books: eve 공식 문서 사이트

:house: eve 공식 홈페이지

:github: eve 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: