8P by jeikei 11시간전 | ★ favorite | 댓글과 토론

안녕하세요.
장시간 자율 실행이 가능한 AI coding agent harness인 Tenet을 만들고 있어서 공유해봅니다.

AI 코딩 에이전트를 써보면 짧은 작업은 꽤 잘 되는데, 몇 시간 이상 가는 구현으로 넘어가면 금방 불안해질 때가 많았습니다.
스펙이 흐려지거나, 테스트는 돌아가는데 충분한지 모르겠고, 중간에 방향을 바꾸기도 애매하고, 세션이 끊기면 맥락도 같이 날아가고요.

Tenet은 그 문제를 줄이려고 만든 하네스입니다.
그냥 “오래 돌리는 에이전트”라기보다, 오래 돌려도 방향과 품질을 유지하게 하는 구조 쪽에 더 가깝습니다.

대략 이런 흐름으로 동작합니다.

  1. Interview

    • 먼저 요구사항을 인터뷰로 구체화합니다.
    • 필요한 경우 기술 조사도 같이 합니다.
  2. Visuals / Architecture

    • 아키텍처 다이어그램이나 UI mockup을 만듭니다.
    • UI 작업이면 variation을 여러 개 만들고, 어떤 방향으로 갈지 먼저 고를 수 있게 했습니다.
  3. Spec / Harness / Scenarios

    • 구현 spec, 테스트/검증 harness, scenario를 문서로 남깁니다.
    • “무엇을 만들지”뿐 아니라 “무엇으로 통과로 볼지”도 같이 고정합니다.
  4. DAG decomposition

    • 작업을 dependency graph로 쪼갭니다.
    • 독립적인 job은 병렬로 실행할 수 있습니다.
  5. Autonomous execution loop

    • 각 job을 실행하고, 끝나면 평가를 붙입니다.
    • 이 루프를 오래 돌릴 수 있게 설계했습니다.

평가 방식

각 job은 끝났다고 바로 다음으로 넘어가지 않고, 3개의 critic을 통과해야 합니다.

  • code critic: 구현이 spec 의도와 맞는지
  • test critic: 지금 있는 테스트가 정말 이 job을 검증하기에 충분한지
  • Playwright e2e eval: 실제 사용자 관점에서 동작하는지

중요하게 본 건, 이 critic들이 가능한 한 작성자 맥락과 분리된 fresh context에서 보도록 한 점입니다.
코드 쓴 에이전트가 자기 결과물을 너무 쉽게 통과시키는 걸 줄이고 싶었습니다.

README에도 적어뒀지만, 특히 test 쪽은 “테스트가 있냐”보다 테스트가 제대로 검증하고 있냐가 더 중요하다고 봤습니다.

중간 steer

장시간 돌리다 보면 사람이 중간에 방향을 조금 바꾸고 싶을 때가 있습니다.

Tenet에서는 그때 실행을 처음부터 다시 설명하는 대신,
그냥 steer message를 던지면 저장해두고 이후 관련 job에서 반영하도록 했습니다.

즉,

  • 지금 당장 루프를 다 끊지 않아도 되고
  • 관련 있는 단계에서 다시 pickup 하게 하는 방식입니다.

문서와 흔적을 남기는 쪽을 중요하게 봤습니다

제가 이걸 만들면서 특히 중요하게 본 건,
결과만 남기지 않고 의사결정과 작업 흔적도 같이 남기는 것이었습니다.

.tenet/ 아래에 이런 것들이 남습니다.

  • interview
  • spec
  • harness
  • visuals
  • knowledge
  • journal
  • steer
  • status
  • SQLite state

그래서 한 번 실행하고 끝나는 세션형 에이전트라기보다,
다음 작업에서도 다시 참고할 수 있는 개발 기록을 계속 쌓는 구조를 지향하고 있습니다.

느낌으로는
“프리랜서나 외주에게 일을 넘길 때 필요한 문서화/검증/핸드오프 구조”를
AI agent 쪽으로 가져오려는 시도에 더 가깝습니다.

현재 상태

아직 초기 단계입니다.
그래도 기본적인 흐름은 이미 구현되어 있고, 현재는 다음 같은 것들이 들어 있습니다.

  • Claude Code / OpenCode / Codex 어댑터
  • MCP 서버 + CLI
  • DAG 기반 job orchestration
  • SQLite + WAL 기반 persistent state
  • orphan job recovery
  • 3-critic evaluation pipeline
  • steer message 처리
  • .tenet/ 문서 구조

실제로 이걸 사용해 꽤 오래 돌려봤고,
*6시간 넘게 사람 개입 없이 실행한 뒤 즉시 사용 가능한 결과가 나오는걸 확인했습니다.
지금 제가 매일 쓰는 구현물 중 하나도 tenet을 사용해 나온 결과입니다.

초기 단계 프로젝트라 거친 부분이 많습니다.
어떠한 피드백도 편하게 주시면 감사하겠습니다.