# 에이전트 하네스

> 에이전트를 무엇 위에서 돌릴 것인가. 스물한 건을 뜯었고 실제로 들인 도구는 하나입니다.

- 수치: 21편 · 도구 1
- 사람이 보는 화면: https://aitryed.com/ko/teardowns/harness/
- 반대 언어: https://aitryed.com/en/teardowns/harness/index.md
- 이 사이트 안내(AI용): https://aitryed.com/ko/llms.txt

---

**AI에게 일을 시키는 «판»을 다루는 것들을 뜯어본 칸입니다. 스물한 편을 뜯었고, 실제로 들여온 도구는 하나입니다.**

## 먼저 — 「하네스」가 뭔가요

말 그대로는 <strong>마구(馬具)</strong>입니다. 말에 씌우는 장비 말입니다.

AI에게 일을 시킬 때도 비슷한 게 필요합니다. AI 자체는 그냥 말을 주고받는 물건인데, **실제로 일을 시키려면 그 주위에 장치가 붙어야** 합니다.

- 어떤 규칙을 지킬지 알려 주는 것
- 어떤 도구를 쓸 수 있게 해 주는 것
- 위험한 일을 할 때 사람에게 물어보게 하는 것
- 일이 끝나면 확인하게 하는 것

이 장치 묶음을 **하네스**라고 부릅니다. **AI가 말이라면 하네스는 고삐와 안장**입니다.

## 여기가 제일 큰 칸입니다

뜯은 것 전체 중 **절반이 여기** 있습니다. 분류를 먼저 만들고 채운 게 아니라, **채워 놓고 세어 보니 그랬습니다.**

**제 시간이 어디로 갔는지가 이 숫자입니다.**

## 스물한 편에서 도구는 하나 들어왔습니다

결과부터 말씀드립니다.

| | 개수 |
|---|---|
| 뜯어본 것 | **21** |
| 실제로 제 환경에 들인 것 | **1** |

그리고 그 하나도 **「효율이 좋아서」 들인 게 아닙니다.** 그냥 쓰고 싶어서 넣었습니다. 그 사실을 해당 편에 적어 뒀습니다 — **나중에 기억이 「효율 때문에 넣었다」로 바뀌기 때문**입니다.

기억은 자기가 한 선택을 합리적으로 고쳐 씁니다. 그래서 **당시 이유를 그 자리에 적어 두는 것**이 유일한 방어입니다.

## 그러면 스물이 왜 안 들어왔나 — 이유가 한 가지가 아니었습니다

처음엔 「좋은 게 없어서」라고 생각했는데 아니었습니다. 기각 사유가 여러 종류였습니다.

| 사유 | 무슨 뜻인가 |
|---|---|
| **이미 갖고 있었다** | 제 환경에 같은 게 이미 있었음 |
| **끼울 자리가 없다** | 좋은데 제 환경에 나사 구멍이 없음 |
| **설치 자체가 안 된다** | 받아서 깔아 보니 안 돌아감 |
| **자기 자료가 자기를 반증** | 홍보 문구를 그 회사 자기 표가 뒤집음 |

세 번째와 네 번째가 특히 자주 나왔습니다.

## 자주 나온 결론 — 「갖고 있는데 한 번도 안 켰다」

여섯 편일 때는 「도구를 안 들인다」 하나만 보였습니다. 스무 편이 되니 **더 자주 나오는 결론**이 따로 있었습니다.

처음엔 <strong>「내가 이미 갖고 있었다」</strong>로 읽었습니다. 그런데 한 겹이 더 있었습니다.

> **「갖고 있었다」가 아니라 「갖고 있는데 한 번도 안 켰다」였습니다.**

둘은 완전히 다릅니다. 갖고 있으면 문제가 없고, **안 켰으면 없는 것과 같습니다.** 그런데 **파일 목록만 보면 둘이 똑같이 생겼습니다.**

## 그래서 이 칸은 읽는 방식이 다릅니다

다른 칸은 <strong>「무엇을 가져올까」</strong>로 읽습니다.

여기는 <strong>「내가 이미 쓰고 있는 것을 남의 눈으로 다시 보기」</strong>에 가깝습니다. 남의 하네스를 열어 보면, 제 하네스에서 **당연하게 여겨서 안 보이던 것**이 보입니다.

## 그리고 한 가지 패턴이 여덟 번 반복됐습니다

제일 재미있는 발견입니다.

**판정을 뒤집은 결정적 증거가, 비판하는 글이 아니라 «대상 자신의 자료» 안에 있었던 편이 여덟입니다.**

| 어디에 있었나 |
|---|
| 홍보 자료 **자신의 표** |
| **자기가 만든 규칙** — 그대로 따랐더니 멈추라고 나옴 |
| **자기 변경 기록** — 다운로드 페이지엔 없는 내용이 적혀 있음 |
| **같은 발표의 두 번째 표** — 제목의 전제를 뒤집음 |
| **자기 문서 둘이 서로 어긋남** |
| **자기 소스 코드** — 자기 규칙을 자기가 어김 |
| **같은 창고가 서로 다른 숫자 셋**을 동시에 들고 있음 |
| **자기 검사 장치** — 직접 돌려 보니 자기 것을 못 잡음 |

→ 배운 것: **반증을 찾으려고 비판 글을 뒤질 필요가 별로 없습니다.** 대상이 낸 자료를 **끝까지 읽기만 해도** 대개 그 안에 있습니다. 홍보는 앞장에 있고 한계는 뒷장에 있는데, **사람들이 앞장만 읽습니다.**

## 마지막 다섯 편은 제가 고른 게 아닙니다

열다섯까지는 제가 손으로 골랐습니다. **스물로 늘린 다섯은 기계가 매일 긁어 오는 소식 목록에서 왔습니다.**

제가 만들어 둔 수집기가 하루 두 번 여섯 군데를 돌며 쌓아 둔 것 중에서, **순서대로 전수로** 뜯었습니다. 골라내지 않았습니다.

이 경로가 실제로 쓰인 건 그때가 처음이었습니다. **만들어 놓고 안 쓰던 것을 처음 켠 셈**입니다 — 이 칸에서 제일 자주 나온 결론이 제게도 그대로 해당됐습니다.

## 그리고 스물한 번째는 남의 창고가 아니라 제 창고였습니다

마지막 편이 특이합니다. **제가 21일 전에 직접 깔아 놓고 한 번도 안 쓴 것**을 뜯었습니다.

앞의 스무 건은 전부 남이 만든 걸 열어 본 기록이고, 판정이 「안 들인다」 아니면 「이미 있다」였습니다. **스물한 번째만 대상이 제 것이었습니다.**

## 여기부터는 자세한 기록입니다

에이전트를 돌리는 **판**을 다루는 것들. 룰셋, 스킬 디렉터리, 자기개선 하네스, 훅 디스패처, 모델 게이트웨이. 남이 만든 운영 체계를 열어 보고 내 것과 대본 자리다.

여기가 제일 큽니다 — **뜯은 것 마흔둘 중 스물하나. 딱 절반입니다.** 분류를 먼저 짓고 채운 게 아니라 채워 놓고 세어 보니 그랬습니다. 제 시간이 어디로 갔는지가 이 숫자입니다.

## 스물한 편에서 도구는 하나 들어왔다

| 대상 | 도구 | 남은 것 |
|---|---|---|
| [ECC](/ko/teardowns/harness/ecc/index.md) | 채택했는데 내 환경에서 안 돌았다 | 훅을 이진이 아니라 **강도 등급**으로 관리한다는 발상 |
| [mattpocock/skills](/ko/teardowns/harness/mattpocock-skills/index.md) | 설치 안 함 — 레포 자신의 논리 때문에 | 비용이 두 종류라는 것. 기계의 컨텍스트 부하와 **사람의 인지 부하**는 다르게 다룬다 |
| [Prime Agent](/ko/teardowns/harness/prime-agent/index.md) | 기각 — 승인 게이트가 0 | 작업물이 안 바뀌었으면 실패 게이트를 재실행하지 않는다 |
| [Clawd on Desk](/ko/teardowns/harness/clawd-on-desk/index.md) | **채택** — 유일하게 실제로 들어왔다 | 설치기가 **회수기를 같이 심는다** · 덧붙이되 덮어쓰지 않는다 |
| [Odysseus](/ko/teardowns/harness/odysseus/index.md) | 비권장 | 신뢰불가 텍스트를 감쌀 때 **구분자 리터럴을 먼저 이스케이프한다** |
| [ponytail](/ko/teardowns/harness/ponytail/index.md) | 통짜 기각 · 한 줄만 | **"모든 호출부를 grep하라"** — 뜻이 아니라 문장의 형태가 옮겼다 |
| [OmniRoute](/ko/teardowns/harness/omniroute/index.md) | 차단 — 수확 기법 7종까지 같이 기각 | **경계는 조각이 아니라 레포 단위로 긋는다** |
| [세션 간 메시징](/ko/teardowns/harness/session-messaging/index.md) | 안 만듦 — 이미 켜져 있었다 | 실전 실패 모드는 보안이 아니라 **발신자가 자기를 잘못 식별하는 것** |
| [Buzz 그룹챗](/ko/teardowns/harness/buzz-groupchat/index.md) | 보류 — 플랫폼 미지원 | 다중 검증은 **페르소나가 아니라 모델을 갈라야** 일치가 정보량을 가진다 |
| [플러그인 4종 추천](/ko/teardowns/harness/four-plugins/index.md) | 넷 중 둘은 이미 기각한 것 | **반례는 비판 글이 아니라 홍보 자료 자신의 표 안에 있다** |
| [메타 프롬프팅](/ko/teardowns/harness/meta-prompting/index.md) | 절차는 이미 함 · 한 줄만 | 질문 유도의 본체는 좋은 프롬프트가 아니라 **내 컨텍스트의 구멍을 보는 것** |
| [Fable 현장 가이드](/ko/teardowns/harness/fable-field-guide/index.md) | 기법 6 중 3 | **멈추지 않으면서 흔적을 남기는 셋째 길** — 벗어난 지점을 기록하고 계속 간다 |
| [obra/superpowers](/ko/teardowns/harness/superpowers/index.md) | 기각 — 수확도 3에서 1로 | **대조군 없이 내 것만 재면 이미 믿던 것이 확인된다** |
| [ASIDE](/ko/teardowns/harness/aside/index.md) | 기각 — 설치 자체가 안 된다 | **「없다」를 다운로드 페이지에서 볼지 체인지로그에서 볼지** |
| [스킬 하나로 광고 이미지](/ko/teardowns/harness/payg-image-routing/index.md) | 수확 1 · 그것도 추정 | **좋은 설계와 좋은 결론은 한 덩어리로 오지 않는다** |
| [DeepSeek Harness](/ko/teardowns/harness/deepseek-harness/index.md) | 기각 — 설치가 300초 침묵 끝에 죽었다 | 없던 것은 도구가 아니라 **실행 이력**이었다 |
| [ip-as-logo](/ko/teardowns/harness/ip-as-logo-skill/index.md) | 기각 — 부를 곳이 없다 | **에이전트가 안 읽는 파일에 적힌 규칙은 런타임 효과가 0이다** |
| [anti-slop](/ko/teardowns/harness/anti-slop/index.md) | 27건 잡고 한 건도 안 고침 | **게이트는 존재가 아니라 실행으로 센다** |
| [DSH better-sidebar](/ko/teardowns/harness/dsh-better-sidebar/index.md) | 기각 · 수확 4 → 1 | 남의 수치를 의심하는 도구부터 **내 저장소에 실려 있는지** 본다 |
| [cumora](/ko/teardowns/harness/cumora/index.md) | **보류** — 여기서 유일하다 | 일치하는 두 숫자가 **같은 것을 보고 있는지**부터 본다 |
| [eli5](/ko/teardowns/harness/eli5/index.md) | 이미 깔려 있었다 — 바꾼 건 부르는 경로 | **설치했는가와 켰는가 사이에 「부를 생각이 났는가」가 있다** |

**스물하나 중 스물이 도구를 안 들였고, 하나 들어온 것도 생산성 근거로는 정당화되지 않았습니다.** 그 하나에 대해서는 "쓰고 싶어서 설치한 것이 맞다"고 페이지에 적어 뒀습니다 — 나중에 "효율 때문에 넣었다"로 기억이 바뀌기 때문입니다.

우연이 아닌 것 같습니다. 하네스는 이미 쓰고 있는 것을 통째로 갈아야 하는 물건이라, 갈아탈 값어치가 기법 하나보다 커야 하는데 그 문턱이 아주 높습니다.

## 스물한 번째는 남의 창고가 아니라 제 창고였다

[eli5](/ko/teardowns/harness/eli5/index.md) 는 이 분류에서 처음으로 **제가 이미 설치해 둔 것**을 뜯은 편입니다. 앞의 스무 건은 전부 남이 만든 것을 열어 본 기록이고 판정은 「안 들인다」 아니면 「이미 갖고 있다」였는데, 스물한 번째는 21일 전에 **제 손으로 깔아 놓고 한 번도 안 쓴 것**이었습니다.

그래서 이 편의 수치는 대상의 성능이 아니라 제 사용 기록입니다 — 세션 기록 944개가 이름을 싣고 다니는 동안 실행은 1건이었습니다. <strong>「도구 1」이라는 이 분류의 숫자는 그대로입니다.</strong> eli5 는 뜯어서 들인 것이 아니라 이미 들어와 있던 것이고, 이번에 바뀐 건 도입 여부가 아니라 **부르는 경로**입니다. 그 둘을 같은 칸에 적으면 도입률이 조용히 부풀어 오릅니다.

## 두 번째 줄 — 「내가 이미 갖고 있었다」

여섯 편일 때는 "도구를 안 들인다" 하나만 보였습니다. 여섯이 더 늘고 나니 **더 자주 나오는 결론이 따로 있었습니다 — "내가 이미 갖고 있었다".**

세션 간 메시징이 그 극단입니다. 영상이 판 기전은 제 OS에 아예 없었는데, **정작 원하던 기능은 이미 켜져 있었습니다.** ECC는 남의 레포가 아니라 제 설정의 상류였고, ponytail 조사는 남의 룰셋이 아니라 **제 룰셋의 자기모순 세 건**을 찾아냈습니다. OmniRoute에서 수확 기법 7종을 전부 기각한 이유도 결국 같은 축입니다 — 조각을 뽑아 오려면 원본을 계속 열어야 하고, **제게 이미 있는 것으로 되는 일이면 그럴 이유가 없습니다.**

그래서 이 분류에서 제일 자주 하는 일은 남의 것을 평가하는 게 아니라 **제 것의 재고를 확인하는 것**입니다.

### 스무 편이 되고 나서, 이 줄에 한 겹이 더 생겼다

**「갖고 있었다」가 아니라 「갖고 있는데 한 번도 안 켰다」입니다.**

별 181,170개짜리 하네스에서 기법 다섯을 수확하려고 했는데, 다섯이 전부 **제 폴더에 이미 깔려 있으면서 실행 이력이 0인 스킬 두 개**에 부딪혀 죽었습니다. 한쪽은 반년 치 기록 어디에도 산출물이 없고, 다른 한쪽은 자기가 만들라고 지시한 로그 파일과 휴지통 폴더가 **둘 다 존재하지 않습니다.** 안 돌았다는 뜻입니다.

그리고 이건 우연이 아니었습니다. [컨텍스트 예산 편](/ko/teardowns/memory/dsh-anchored-standard/index.md)에서 같은 스킬이 다시 나왔습니다 — 설치한 지 24일, 실행 0회. **두 조사가 서로 모르는 채로 같은 물건을 가리켰습니다.**

재고 확인의 단위가 틀렸던 겁니다. **「무엇을 갖고 있나」로만 세면 창고에 있는 물건을 밖에서 사 오자는 결론이 나옵니다.** 세어야 하는 것은 목록이 아니라 **마지막으로 켠 날짜**입니다.

## 그래서 여기서 배우는 방식이 다르다

다른 분류는 "무엇을 가져올까"로 읽습니다. 여기는 <strong>"내가 이미 쓰고 있는 것을 남의 눈으로 다시 보기"</strong>에 가깝습니다.

ECC가 그 극단입니다. 남의 레포가 아니라 **제 설정의 상류**였습니다 — 반년 전 파일로 복사해 왔고 그 뒤로 갈라진 것을 처음 대본 자리였습니다.

그리고 두 편이 같은 자리로 되돌아왔습니다. Odysseus에서는 **문서에 적힌 규율 다섯 중 코드가 강제하는 건 하나**였고, ponytail에서는 조사가 남의 룰셋이 아니라 **제 룰셋의 자기모순 세 건**을 찾아냈습니다. 남의 운영 체계를 열면 대개 제 것이 먼저 보입니다.

## 세 번째 줄 — 깨는 도구를 대상이 들고 있었다

열다섯이 되고 나서 새로 보인 게 하나 더 있습니다. **판정을 뒤집은 결정적 증거가 비판 글이 아니라 대상 자신의 자료 안에 있었던 편이 넷이었습니다.** 새로 넣은 다섯 중 넷이 또 그랬으니 이제 **여덟**입니다.

| 대상 | 결정적 증거가 있던 곳 |
|---|---|
| [플러그인 4종](/ko/teardowns/harness/four-plugins/index.md) | 홍보 자료 **자신의 표** |
| [obra/superpowers](/ko/teardowns/harness/superpowers/index.md) | **저들 자신의 규칙** — "대조군이 실패를 안 보이면 멈춰라". 그대로 멈췄습니다 |
| [ASIDE](/ko/teardowns/harness/aside/index.md) | **자기 체인지로그** — 다운로드 페이지엔 없는 것이 세 번 나옵니다 |
| [스킬 하나로 광고 이미지](/ko/teardowns/harness/payg-image-routing/index.md) | **같은 발표의 두 번째 표** — 제목의 전제를 뒤집습니다 |
| [ip-as-logo](/ko/teardowns/harness/ip-as-logo-skill/index.md) | **자기 문서 둘이 어긋납니다** — 간판 규칙이 README 에만 있고 실행 파일엔 없습니다 |
| [anti-slop](/ko/teardowns/harness/anti-slop/index.md) | **자기 소스 21줄** — 자기 규칙 넷을 자기 코드가 어깁니다 |
| [DSH better-sidebar](/ko/teardowns/harness/dsh-better-sidebar/index.md) | **같은 저장소가 세 개의 다른 숫자**를 동시에 들고 있습니다 |
| [cumora](/ko/teardowns/harness/cumora/index.md) | **자기 CI 가드** — 직접 호출해 보니 자기 관용구를 하나도 못 잡습니다 |

예외가 하나 있습니다. [DeepSeek Harness](/ko/teardowns/harness/deepseek-harness/index.md)만 결정적 증거가 밖에 있었습니다 — 패키지 레지스트리의 404 와 커뮤니티 보고였습니다. 다만 그것도 **비판 글은 아니었습니다.** 남이 논평한 것이 아니라 기계가 답한 것입니다.

**외부 비판을 찾으러 갈 필요가 없었습니다.** 오히려 외부 비판 쪽이 두 번 틀렸습니다 — 인용된 수치가 8개월 낡았고, 활동 정체라던 판정은 브랜치 구조를 안 본 것이었습니다.

그래서 이 분류의 적대검증은 순서가 정해졌습니다. **남이 뭐라 했는지 찾기 전에, 대상이 자기 입으로 한 말들끼리 맞는지부터 봅니다.**

## 다섯 편이 한꺼번에 늘었고, 이번엔 고른 사람이 제가 아닙니다

열다섯까지는 제가 링크 라이브러리에서 손으로 골랐습니다. **스무 편으로 늘린 다섯은 기계가 매일 긁어 오는 피드에서 왔습니다** — [「나온 것」](/ko/ai-issue/)이 하루 두 번 여섯 군데를 돌아 쌓아 둔 것 중 깃허브 항목만 순서대로 전수로 뜯었습니다. 이 경로가 실제로 쓰인 것은 이번이 처음입니다.

고르는 주체가 바뀌니 **표본의 성격이 바뀌었습니다.** 제가 고를 때는 "내 문제에 닿을 것 같은 것"을 골랐고, 그래서 판정이 「이미 갖고 있다」로 수렴했습니다. 피드가 고르니 **제 문제와 상관없는 것이 섞여 들어왔고** — 여덟 중 하나는 애플 전용이라 제 환경에서 실행 자체가 불가능해 [올리지 않았습니다](/ko/teardowns/) — 대신 **제가 안 열어 봤을 자리**가 열렸습니다. 다섯 중 셋은 제 것의 결함을 찾아 줬고, 그 셋은 전부 제가 고를 이유가 없던 대상이었습니다.

그리고 판정은 오히려 더 짰습니다. **다섯 중 채택 0, 보류 1, 기각 4.** 별이 많다고 쓸모가 따라오지는 않습니다 — 다섯의 별을 다 더하면 19만이 넘는데 들어온 도구는 0개입니다.

그리고 원장에 안 잡히는 것이 하나 있습니다. **Prime Agent는 리포트가 둘입니다** — 깃허브 분석과 영상. 원장은 파일이 아니라 대상을 세니 한 줄이고, 위 글은 코드를 읽고 쓴 것이라 **영상 쪽 내용은 아직 안 들어가 있습니다.** 표가 못 담는 종류의 사실이라 여기 적어 둡니다.
