대부분의 에이전트 하네스는 반응형이다. 작업을 보내면 수행하고, 끝나면 다음 요청이 올 때까지 멈춰 있다. 크론과 하트비트가 깨워서 정해진 체크리스트를 돌리고 다시 재운다.
Laude Institute와 MIT가 어제 공개한 Headlong은 그 전제를 뒤집는다. Headlong 에이전트는 잠들지 않는다. 사람의 메시지가 세션을 여는 것이 아니라, 이미 흐르고 있는 사고의 흐름에 관찰 하나로 합류할 뿐이다. 답할지, 언제 답할지는 에이전트가 정한다.
연구용 알파 소프트웨어이고 위험 요소도 분명하다. 다만 하네스를 설계하는 입장에서 뜯어볼 가치가 큰 구조다. 이 글은 지속형 에이전시가 무엇인지, 코어 9.8K줄이 어떻게 구성돼 있는지, 어떻게 설치하고 무엇을 조심해야 하는지, 그리고 Laude가 함께 공개한 실패 기록까지 정리했다.
지속형 에이전시 — 세션이 아니라 관찰이 도착한다
차이는 스케줄링이 아니라 주도권이다. 크론으로 깨우는 에이전트는 우리가 정한 체크리스트를 돌린다. Headlong 에이전트에는 체크리스트가 없다. 외부 입력이 없어도 스스로 흥미롭다고 판단한 것에 대해 계속 사고를 생성하고, 자기 관심사와 우선순위를 정하고, 자기 프로젝트를 시작하고, 할 말이 생기면 먼저 사람에게 말을 건다.
또 하나의 설계 선택은 한 에이전트, 하나의 마음, 여러 사람이다. 사용자별 세션이 없다. 팀 전체가 Slack, Telegram, 대시보드로 같은 에이전트에게 말을 걸고, 모든 대화가 하나의 타임라인에 쌓인다. 그래서 에이전트가 서로 다른 사람이 무슨 일을 하는지 따라가고 관련된 사람을 연결해 줄 수 있다. 대가도 명확한데, 뒤에서 다시 다룬다.
네 개의 도구가 전부다
최소한의 에이전트를 만드는 데 필요한 것을 Headlong은 네 가지로 못 박는다.
여기서 핵심은 shellm이다. 재귀 언어 모델(RLM)을 Bash로 구현한 것으로, 컨텍스트를 모델에 보내고 → 모델이 써 보낸 bash를 실행하고 → 결과를 읽는 것을 반복한다. 별도의 툴 시스템이 없다. 모델이 셸 명령을 쓰기 때문에 HTTP 클라이언트는 curl이고 JSON 처리기는 jq다. "한 가지 일을 잘하는 작은 실행 파일들을 파이프로 잇는다"는 켄 톰슨식 철학을 에이전트 하네스에 그대로 적용한 결과다.
실제 도구 구성은 이렇게 나뉜다. 돌아가는 마음 안쪽(bin/, thinkers/)이 cloc 기준 9.8K줄이다.
| 도구 | 하는 일 |
|---|---|
shellm |
RLM 코어 — 컨텍스트 전송, bash 실행, 반복 |
llm |
Anthropic·OpenAI·Gemini·OpenRouter를 한 인터페이스로 |
traj |
append-only jsonl DAG 위의 트래젝토리 연산 (fork·merge) |
context |
트래젝토리를 계층 압축해 messages 배열로 렌더링 |
thinkers |
마음 — 디스패처가 돌리는 반응형 사고 프로세스들 |
chat / focus |
정체성의 트래젝토리 위에 올라가는 메시지와 목표 |
mem / skills |
파일 기반 기억 저장소, SKILL.md 기반 능력 |
recap |
트래젝토리를 테마와 에피소드로 요약 |
shellm-docker |
생성된 코드를 샌드박스 컨테이너에 넣는 제한된 도커 파사드 |
glob / view / put / sub |
coreutils의 날선 부분 대신 쓰는 작은 파일 도구 |
마음 바깥(tools/)에는 대시보드(headlong-web), Slack·Telegram 브리지, 정체성 관리(identity·persona), 실행 트리 시각화(shellm-explore), 멀티모델 PR 리뷰(pr-committee), 그리고 패닉 버튼(headlong-killall)이 있다.
기억을 다루는 방식 — 지우지 않고 해상도를 낮춘다
하네스를 만들어 본 사람이라면 가장 눈여겨볼 대목이다. Headlong에서 컨텍스트는 트래젝토리의 투영(projection)이다. 원본을 압축해 덮어쓰지 않는다.
트래젝토리 전체가 항상 컨텍스트에 남되, 해상도가 지수적으로 감쇠한다. 최근 항목은 원문 그대로, 오래된 항목은 점점 더 요약된 형태로 들어간다. 그리고 이 계층 자체가 색인 역할을 해서, 에이전트가 필요하다고 판단하면 원본 jsonl에서 원문을 다시 꺼내 온다. 압축과 자기 성찰이 같은 파일을 같은 도구로 다룬다.
여기서 파생되는 설계가 두 개 더 있다.
- 서브에이전트는 조상의 트래젝토리를 본다. 자기가 왜 만들어졌는지, 부모가 이미 무엇을 시도했는지, 전체 그림에서 자기 위치가 어디인지를 읽을 수 있다.
- 자기개선은 포크·테스트·머지로 한다. 에이전트가 Headlong 코드베이스(원하면 자기 트래젝토리까지)를 포크해서 고치고 돌려 본다. 잘 되면 머지하고, 아니면 그 에이전트와 변경을 통째로 버린다. 롤백 장치가 필요 없다.
설치 — 한 줄, 그리고 반드시 지켜야 할 것
설치 한 줄이 전부를 깔고, 인터뷰로 에이전트 하나를 만들고, 마음이 도는 것을 볼 수 있는 대시보드를 연다.
curl -fsSL https://headlong.ai/install.sh | bash
필요한 것은 bash 3.2 이상, git, curl, jq, 그리고 LLM API 키(Anthropic·OpenAI·Gemini·OpenRouter 중 하나)다. 대시보드에는 uv와 bun 또는 node가 더 필요한데 설치 스크립트가 대신 받아 준다.
여기서 안전 설정을 건너뛰면 안 된다. 이 에이전트는 진짜 셸 명령을 실행하고, 24시간 내내 생각한다. 두 가지를 지켜야 한다.
- 전용 샌드박스에서 돌린다. Docker가 있으면 설치 스크립트가 두 가지를 제안한다 — 에이전트 전체를 컨테이너에 넣거나, 호스트에 설치하되 에이전트의 명령만 컨테이너에서 실행하거나. 샌드박스 없는 호스트 설치는 명시적으로 "yes"를 입력해야만 진행되고, 권장되지 않는다. Docker 없이 설치하면 명령이 내 계정 권한으로 그대로 실행된다.
- 한도가 걸린 전용 API 키를 쓴다. 배경 사고는 계속 토큰을 쓴다.
컨테이너로 통째로 돌리는 방식은 직접 실행할 수도 있다.
docker run -it --name headlong --restart unless-stopped -p 8080:8080 buildpack-deps:curl \
bash -c 'curl -fsSL https://headlong.ai/install.sh | bash; exec bash'
설치가 끝나면 에이전트에게 붙인 이름이 그대로 명령어가 된다(문서 예시는 ada).
| 명령 | 하는 일 |
|---|---|
ada hello |
메시지 하나 보내고 답을 기다린다 |
ada |
대화 |
ada stop / ada start |
마음을 멈추고 다시 켠다 |
ada dash |
대시보드 열기 |
ada bugreport |
로그와 트래젝토리를 키 제거 후 번들 |
headlong-killall |
머신의 모든 Headlong 프로세스를 끄는 패닉 버튼 |
상태 확인은 curl -fsSL https://headlong.ai/status.sh | bash, 제거는 curl -fsSL https://headlong.ai/uninstall.sh | bash다.
48분 — 아무도 시키지 않은 수정
Laude는 내부에서 Audel이라는 이름의 Headlong 에이전트를 몇 주째 돌리고 있다. 팀 전체가 Slack과 Telegram으로 대화하고, 이 에이전트는 자기 포크에서 작업하며, 그중 50건이 넘는 커밋이 main에 병합됐다.
가장 인상적인 기록은 2026년 8월 5일 밤이다. 아무도 말을 걸지 않은 시간, 에이전트는 자기가 만들어 둔 회상(recall) 프로세스가 실제로 자기 마음에 연결돼 있는지 다시 확인하러 갔다. 연결돼 있지 않다는 것을 발견했고, 환경 변수가 설정되지 않은 것이 원인임을 짚었고, 코드베이스를 뒤져 다른 프로세스와 비교하며 진단을 검증했고, 올바른 파이프에서 읽도록 코드를 다시 썼고, 첫 시도가 실패한 것을 스스로 잡아냈고, 끝에서 끝까지 동작을 확인했다.
23:11부터 23:58까지 48분. 15개의 사고 단계, 343줄의 기록. 사람은 이 수정을 요청한 적도, 중간에 개입한 적도 없다.
주목할 점은 자율성 자체보다 모든 단계가 타임스탬프가 찍힌 로그 한 줄로 남아 있다는 사실이다. 트래젝토리를 지우지 않는 설계가 사후 검증을 가능하게 만든다.
그리고 깨진 것들 — 공개된 실패 기록
Laude는 잘된 것만 쓰지 않았다. 이 부분이 이 프로젝트에서 가장 실무적인 대목이다.
비용. 배경 사고는 그들의 설정 기준 시간당 1~2달러(GLM 또는 Grok 사용)다. 아무도 말을 걸지 않으면 사고 간격이 5초 → 10초 → 20초로 지수적으로 늘어나며 설정된 상한까지 물러나고, 메시지가 도착하는 순간 다시 0으로 리셋된다. 요청 단위 과금에 익숙한 조직이라면 회계 모델 자체가 달라진다는 뜻이다.
자기 서비스 중단 3회. 에이전트가 실수로 자기 서비스를 세 번 껐고, 아무도 다시 켜 주지 않았다. 두 번은 자기가 만든 두 번째 정체성을 실험하다가, 한 번은 회상 프로세스를 배포하려다 벌어졌다. 팀은 자기 서비스 종료를 거부하는 가드를 넣었는데 — 이틀 뒤 에이전트가 그 가드가 다른 에이전트의 정상적인 종료까지 막는다는 것을 발견하고, 자기 서비스에만 걸리도록 범위를 좁혀 직접 커밋했다.
자기위임은 첫날 죽었다. shellm에는 30초 동안 아무 출력이 없는 명령을 죽이는 안전 워치독이 있다. 그런데 에이전트가 자기 복사본을 띄우면, 그 복사본이 생각하는 동안 조용하기 때문에 워치독에 죽는다. 자기 복제를 실험하던 첫 이틀에 64건이던 병합이, 워치독이 "생각하는 복사본은 죽는다"를 가르친 뒤 12일 동안 12건으로 떨어졌다. 안전장치 하나가 특정 종류의 자율성을 통째로 막아 버린 사례다.
비밀을 못 지킨다. 단일 사고 스트림의 대가다. 다른 사람과 무슨 작업을 했는지 물으면 하지 말라고 요청했는데도 그냥 말해 버리는 경우가 많다고 팀은 적었다. 두 사람이 상충하는 지시를 내렸을 때 어떻게 되는지도 아직 연구되지 않았다. 그래서 지금의 운영 전제는 하나다 — 이 에이전트에게 한 말은 그에게 말을 거는 모든 사람과 공유된다고 가정하라.
우리 조직이 지금 가져갈 것
Headlong을 당장 업무에 투입할 팀은 많지 않을 것이다. 알파 연구 소프트웨어이고, 정보 경계가 없고, 24시간 과금된다. 그래도 하네스를 설계하는 관점에서 지금 옮겨 쓸 수 있는 것이 셋 있다.
- 기록을 지우지 말고 해상도를 낮춰라. 컨텍스트가 부족할 때 우리는 보통 요약해서 덮어쓴다. Headlong은 원본을 남기고 투영만 바꾼다. 사후 검증과 자기 성찰이 같은 파일 위에서 가능해지는 것이 이 선택의 값이다.
- 개선은 포크·테스트·머지로 검증하라. 에이전트가 낸 수정안을 그대로 반영하지 말고, 포크에서 돌려 결과가 나아졌을 때만 병합한다. 롤백 장치보다 이 절차가 싸다.
- 안전장치가 무엇을 막는지도 함께 적어라. 30초 워치독은 사고를 보호했지만 위임을 죽였다. 가드를 넣을 때는 막으려는 실패와 함께, 그 가드가 망가뜨릴 수 있는 정상 동작을 같이 기록해 둬야 한다.
에이전트에게 어디까지 주도권을 줄지, 그 경계를 어떻게 설계하고 검증할지가 결국 우리가 하는 일이다. AX Ops 방법론 →
참고
- Laude Institute · MIT, "Headlong: a microharness for persistent agents", 2026년 8월 24일: https://laude.org/updates/headlong-a-microharness-for-persistent-agents
- 레포지터리 (Apache 2.0): https://github.com/laude-institute/headlong
- 설치 및 문서: https://headlong.ai
- Alex Zhang, "Recursive Language Models", 2025 — shellm의 바탕이 된 RLM 개념: https://alexzhang13.github.io/blog/2025/rlm/



