Seed: 자기 수정이 가능한 최소한의 에이전트 하네스
Seed는 프레임워크 없이 단 하나의 도구(bash 실행)와 자기 자신이 수정할 수 있는 시스템 프롬프트만으로 시작하는 초경량 AI 에이전트 하네스입니다. 도구, 메모리, 스킬 등 프레임워크가 제공하던 모든 것을 에이전트가 세션을 거듭하며 self/ 디렉터리에 스스로 '성장'시켜야 한다는 점에서, 에이전트 자율성과 자기 개선(self-modification) 접근법을 실험해보려는 개발자에게 흥미로운 오픈소스 프로젝트입니다.
Seed — 씨앗 에이전트: 에이전트가 자라날 수 있는 가장 작은 시작점. 여기엔 프레임워크가 없습니다. 동결된(frozen) 계층 전체가 seed.py라는 작은 루프로, 언어 모델을 단 하나의 도구(bash를 실행하는 exec)에 연결하고, 시스템 프롬프트를 에이전트 자신이 소유하고 다시 쓸 수 있는 파일에서 불러옵니다. 에이전트가 보통 프레임워크에서 얻는 모든 것 — 도구, 메모리, 스킬, 관례 — 은 대신 에이전트가 세션마다 self/ 디렉터리 안에 스스로 길러내야 합니다.
씨앗 심기:
mkdir my-agent && cd my-agent uvx --from git+https://github.com/vivekhaldar/seed.git seed
첫 실행 시 seed.py와 run_seed.sh를 이 디렉터리에 복사하고(이미 존재하는 파일은 절대 덮어쓰지 않음), self/SELF.md를 발아(germinate)시키고, 이 파일들을 이곳의 새 git 저장소에 함께 커밋합니다 — 이 루프 자체가 self/만이 아니라 이 개체(individual)의 역사 일부가 됩니다. 그다음 REPL로 진입합니다. 대화를 시작하면 됩니다. 에이전트가 유지하고 싶은 모든 것은 self/에 기록되어야 합니다 — 세션은 휘발성이며 그 외에는 아무것도 남지 않습니다.
같은 에이전트로 돌아올 때는 로컬 러너를 사용하면 되고 다시 uvx할 필요가 없습니다:
./run_seed.sh ./run_seed.sh -m gemini-2.5-pro
모든 세션의 축어적 기록(verbatim transcript)은 self/sessions/*.json에 기록됩니다(매 턴마다 갱신). 이것은 메모리가 아니라 블랙박스(flight recorder)입니다 — 에이전트는 부팅 시 이를 절대 불러오지 않지만, 당신은 읽을 수 있고, 에이전트는 자신의 과거를 연구하는 도구를 스스로 길러낼 수도 있습니다.
하나의 씨앗, 많은 개체: 씨앗을 심은 각 디렉터리는 서로 다른 에이전트로 자라나며, 겪는 경험에 따라 갈라집니다.
설정
모델과 키는 전적으로 llm(Simon Willison의 라이브러리)이 처리합니다. 기본 모델은 openai-codex/gpt-5.6-sol로, Codex CLI의 ChatGPT 로그인을 사용합니다:
codex login # 기기당 1회 ./run_seed.sh # openai-codex/gpt-5.6-sol 사용 ./run_seed.sh -m gemini-2.5-pro # 또는 한 세션만 다른 모델로 재정의
포함된 프로바이더: Codex 구독 또는 API 키를 통한 OpenAI, Anthropic, Gemini, 그리고 OpenRouter(하나의 OpenRouter 키로 수백 개 모델 사용 가능).
설계
이런 구조를 갖춘 이유 — 매카시의 메타서큘러 eval(metacircular eval), 호모아이코니시티(homoiconicity), 선행 연구, 그리고 우리가 의식적으로 수용한 위험들 — 에 대해서는 docs/DESIGN.md를 참고하세요.