본문으로 건너뛰기

INDEPENDENT PRODUCT STUDIO

라이브러리

oh-my-fable

didrod205/oh-my-fable

긴 작업을 하는 AI 에이전트가 도중에 죽어도 이어서 하게 만드는 TypeScript 하네스예요.

didrod205/oh-my-fable 저장소 카드

설치

npm i oh-my-fable

무엇을 하나요

oh-my-fable은 긴 작업을 맡은 AI 에이전트가 중간에 죽어도 처음부터 다시 하지 않게 해주는 TypeScript 하네스예요. 실행 상태 전부가 RunContext 하나에 들어가고 매 단계마다 저장되기 때문에, 프로세스가 꺼져도 resume()으로 죽은 지점에서 그대로 이어집니다. 계획을 먼저 세우고 매 단계 스스로 점검하며, 정해둔 한도를 넘으면 일한 것을 남긴 채 멈춥니다. 의존성이 하나도 없고 어떤 모델이든 붙일 수 있어요.

이런 걸 막아줘요

  • 60단계 중 47단계에서 프로세스가 죽어 처음부터 다시 시작하는 것
  • 같은 단계에서 같은 방법으로 무한히 반복하는 것
  • 40개짜리 대화 기록 속에서 계획을 잃어버리는 것
  • 목표를 못 이뤘는데 단계가 끝났다고 성공을 선언하는 것
  • 한도 없이 토큰과 시간을 태우는 것

어떤 모델이든 붙어요

AnthropicProviderOpenAICompatProvider를 기본으로 넣어 뒀어요. OpenAI, Ollama, LM Studio, OpenRouter, Groq처럼 OpenAI 호환 서버면 다 붙습니다. ScriptedProvider를 쓰면 네트워크 없이 에이전트 루프 전체를 결정적으로 테스트할 수 있어요.

Node 18 이상이 필요해요.

어떻게 쓰나요

설치 없이 먼저 보기

npx oh-my-fable demo

API 키도 설정도 없이 죽었다가 이어지는 과정을 10초 만에 볼 수 있어요.

코드에서 쓰기

npm i oh-my-fable
import { run, AnthropicProvider } from "oh-my-fable";

const result = await run(
  {
    description: "Research the top 3 Rust web frameworks and write a comparison table",
    successCriteria: ["a markdown table comparing 3 frameworks exists"],
    constraints: ["only use information you can verify"],
  },
  { provider: new AnthropicProvider() },
);

console.log(result.status); // "done" | "halted" | "failed"

터미널에서 쓰기

이미 Claude Code를 쓰고 있다면 별도 API 키 없이 그 로그인을 그대로 씁니다.

npx oh-my-fable run "refactor utils.ts and run the tests" --provider claude --cli-tools

로컬 모델도 됩니다.

npx oh-my-fable run "outline a talk on durable agents" --provider ollama --model llama3.1

저장된 실행을 다루는 명령이에요.

npx oh-my-fable list                 # 저장된 실행 목록
npx oh-my-fable show  run_abc123     # 계획·단계·예산을 시간순으로
npx oh-my-fable resume run_abc123    # 체크포인트에서 이어하기

주제

  • agent
  • agent-framework
  • ai-agent
  • anthropic
  • autonomous-agent
  • checkpoint
  • crash-recovery
  • fable-5
  • fable5
  • llm
  • mindset
  • model-agnostic
  • plan-and-execute
  • planner
  • reasoning
  • reflection
  • resumable
  • self-correcting
  • typescript
  • zero-dependency