# attention-span — 첫 줄을 굵게 시킨 쪽지, 그리고 그 숫자의 정체

> Claude 의 답을 짧고 앞머리가 선명하게 만드는 말투 쪽지 세 장입니다. README 의 숫자를 원자료로 다시 세어 보니 분량 43% 는 맞았고, 「첫 줄에 답이 있다 3%→75%」는 첫 줄이 굵은 글씨로 시작했는지를 센 숫자였습니다.

- 수치: 분량 −43% · 첫줄 3→75%
- 사람이 보는 화면: https://aitryed.com/ko/teardowns/harness/attention-span/
- 반대 언어: https://aitryed.com/en/teardowns/harness/attention-span/index.md
- 저장소: https://github.com/alexgreensh/attention-span
- 이 사이트 안내(AI용): https://aitryed.com/ko/llms.txt

---

**attention-span 은 코딩하는 AI 비서(Claude Code)의 말투를 바꾸는 쪽지 세 장입니다.** 「답부터 말하고, 짧게, 정말 중요한 것만 길게」 — 그렇게 적어 둔 글일 뿐 프로그램이 아닙니다. 코드를 짜는 방식은 건드리지 않고 **말하는 방식만** 바꿉니다. 원본은 [github.com/alexgreensh/attention-span](https://github.com/alexgreensh/attention-span) 입니다.

> **[도판]** 실행되는 코드가 아니라 읽히는 글을 배포하는 레포입니다. 그래서 배포 틀이 제품의 절반입니다.
>
> attention-span 의 구조. 왼쪽에 말투 쪽지 세 장을 한 군데에 쓴다. 가운데에서 스크립트가 스킬 사본을 만들고 어긋나면 릴리스를 멈춘다. 오른쪽에서 Claude Code 출력 스타일, 채팅 앱의 슬래시 스킬, 다른 에이전트의 규칙 파일 세 곳에 쓰인다.

## 쪽지는 세 장이고, 말투가 서로 다릅니다

| 이름 | 한 줄 요약 |
|---|---|
| Attention-kind | 결론을 첫 줄에, 짧게, **굵은 글씨만 읽어도** 답이 되게 |
| Spartan | 같은 틀에서 따뜻한 말을 빼고 딱딱하게 |
| Rundown | 맨 위에 한 줄 요약, 상태를 ✅🟡⬜❔ 목록으로, 다음 선택지에 번호 |

곁가지로 스타일을 바꿔 주는 `/style` 명령과, 남이 쓴 긴 글을 요약해 주는 `/tldr` 가 붙어 있습니다.

## 자랑하는 숫자 둘을 원자료로 다시 세어 봤습니다

README 가 내세우는 숫자는 크게 둘입니다. 하나는 **분량이 43% 줄었다**는 것, 다른 하나는 **답의 첫 줄에 결론이 있는 비율이 3% 에서 75% 로 올랐다**는 것입니다.

레포에 원자료(질문 24개, 질문마다 세 번씩 받은 답)가 그대로 들어 있어서 제가 직접 다시 셌습니다.

- **분량**은 맞았습니다. 글자 수를 모두 합쳐 **42.9% 감소**.
- **첫 줄**은 뜻이 달랐습니다. 이 숫자를 낸 코드를 열어 보니 「첫 줄이 굵은 글씨(`**`)로 시작하는가」를 세고 있었습니다.

그런데 이 쪽지가 하는 일이 바로 「첫 줄을 굵게 시작하라」입니다. **시킨 대로 했는지**를 센 겁니다. 시험지에 「이름을 맨 위에 크게 쓰시오」라고 적어 놓고 「이름을 크게 쓴 학생이 3% 에서 75% 로 늘었다」고 자랑하는 것과 같습니다. 규칙을 따랐다는 증거는 되지만, 답이 더 잘 읽힌다는 증거는 아닙니다.

반례도 원자료에 있습니다. 「모노레포로 가세요. 웹 앱 하나에…」처럼 **첫 줄에 결론을 쓰고도 굵게 안 쓴** 답은 0점이었습니다.

## 「일은 그대로」라는 숫자는 범위가 좁습니다

두 번째 자랑은 **코딩 실력은 그대로**라는 것이었습니다. 코딩 문제 12개를 풀게 하고 숨겨 둔 시험으로 채점해, 스타일을 켠 쪽과 끈 쪽이 똑같이 35/36 을 맞혔습니다.

채점 전에 한 가지 일이 일어납니다. 답에서 **글은 버리고 코드만 남깁니다.** 그러면 「짧게 말하라」는 말이 비서를 **일을 덜 하게** 만들었는지는 구조상 보이지 않습니다.

실제로 그런 일이 보고됐습니다. 쓰던 사람이 이슈로 올린 내용은 이렇습니다 — 비서가 확인 안 한 추측을 정리해 올리고 멈추더라, 짧게 보고하라는 규칙을 「일도 짧게」로 읽은 것 같다. 만든 이는 이를 받아들여 두 문장을 고쳐 넣었습니다. 벤치마크가 통과한 8월 11일로부터 **26일 뒤**(9월 6일)의 일입니다.

## 비용 표기는 세 배 커지기 전의 값이었습니다

README 는 「이 쪽지를 켜면 처음에 약 650토큰이 든다」고 적습니다. 그 문장은 8월 5일에 들어갔고, 그때 Attention-kind 는 **439단어**였습니다. 지금은 **1,327단어** — 3배입니다. 문장은 그대로입니다. 지금 토큰으로 환산하면 1,900쯤이 됩니다(추정치입니다. 토크나이저로 잰 값이 아닙니다).

## 내 환경에 대봤습니다 — 지금은 켜지 않습니다

- 제 출력 스타일은 **기본값**입니다. 바꾼 적이 없습니다.
- 이 레포의 측정은 **전부 영어**입니다. 저는 한국어로 대화합니다. 쪽지 안에도 영어 문체 규칙(「대시 금지」, 「it's not X, it's Y 금지」)이 들어 있어서 한국어에서 같은 효과가 나는지는 모릅니다.
- 제 규칙과 **부딪히는 곳이 둘** 있습니다. 질문을 받으면 질문을 한 줄로 되짚고 결론을 쓰는 규칙이 있는데, 쪽지는 「다시 말하지 마라, 첫 줄이 결론」입니다.
- 「모든 답에 형식을 강제하는 방식」은 잡담까지 양식이 붙는다는 이유로 제가 한 번 접은 적이 있습니다.
- 반대로 이 레포의 좋은 규칙 두 개 — 「막힌 질문은 맨 끝에」, 「모르는 상태는 모른다고 표시」 — 는 이미 제 규칙에 있었습니다.

판정은 **보류**입니다. 한 줄이면 켜고 한 줄이면 끄는 것이라 해 보는 비용은 싼데, 켜 보려면 규칙 충돌부터 정해야 하고 한국어로 잴 길이 없으면 「좋아진 느낌」만 남기 때문입니다. 가져온 것은 쪽지가 아니라 **측정 구조 하나**입니다 — 일을 재는 쪽과 말투를 재는 쪽을 따로 둔다는 것. 이 레포가 둘을 분리한 덕분에 어느 숫자가 약한지가 보였습니다.

## 아직 모르는 것

- **한국어로 켰을 때의 분량**을 못 쟀습니다. 영어 질문 24개의 결과를 옮길 근거가 없습니다.
- 앱에 이미 들어 있는 **Concise 스타일**은 이름만 확인하고 안 읽었습니다. 「굳이 외부 쪽지가 필요한가」에는 답이 없습니다.
- 이 편은 레포의 가치 판정이 아니라 **숫자가 무엇을 센 숫자였는지**에 대한 기록입니다.

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

**분량 43% 는 원자료로 재현되고, 「첫 줄에 답 3%→75%」는 첫 줄이 굵게 시작하는 비율이었습니다.** attention-span 은 Claude Code 의 출력 스타일 세 종(Attention-kind·Spartan·Rundown)과 `/style`·`/tldr` 를 배포하는 AGPL-3.0 레포입니다. 생성 2026-08-04, 마지막 푸시 2026-10-21, 별 1,484. 여섯 가지 주장을 확인했습니다 — 분량, 첫 줄 지표, 훑어보기 지표, 작업 불변, 비용 표기, 벤치마크 이력. 근거는 지표 구현 코드와 원자료, 이슈와 PR, 커밋 이력입니다. 판정은 **상시 적용 보류, 측정 구조만 수확**입니다.

## 무엇을 하는 물건인가

**Claude Code 의 `output-styles` 기능에 얹는 마크다운 파일 세 개입니다.** 파일 첫머리의 `keep-coding-instructions: true` 는 「코딩 지침은 그대로 두라」는 표시입니다.

| 구성 | 크기(영어 단어) | 하는 일 |
|---|---|---|
| Attention-kind | 1,327 | 결론 첫 줄, 기본은 짧게, 중요한 것만 확장, 굵은 글씨만 읽어도 답이 되게 `→` 표지 |
| Spartan | 618 | 같은 틀에서 온기·완충 제거, 명령형 |
| Rundown | 460 | 한 줄 요약 + 상태 목록 + 번호 붙은 선택지 |
| `/style` | — | 설정의 `outputStyle` 한 키만 수정. 쓰기 권한을 `settings.json` 두 곳으로 제한 |
| `/tldr` | — | 남의 글을 한 줄 요약 + 요점 3~7 + 할 일로 압축. 「새 주장 금지」 |

## 대표 기법

| 기법 | 어떤 조건에서만 성립하나 |
|---|---|
| **답 먼저, 길이로 신호** | 읽는 사람이 끝까지 안 읽는다는 전제. 주의가 끊긴 뒤의 내용은 「전달 안 됨」으로 센다 |
| **굵은 글씨만 읽어도 답이 되게** | 마크다운이 렌더링되는 화면에서 훑어 읽는 사람 |
| **깊이 요청하면 간결 규칙 해제** | 「짧게」가 정보 누락으로 번지는 걸 막는 안전판 |
| **막힌 질문은 맨 끝 블록** | 알림·훑어 읽기에서 질문이 묻히면 작업이 멈춘 걸 모르는 상황 |
| **완성물은 포장 없이** | 메일·커밋 메시지처럼 그대로 붙여 쓸 결과물 요청 |
| **정본 한 벌 + 생성기 + 릴리스 검사** | 사본이 어긋나면 안 되는 배포. 태그·`VERSION`·본문 표식·사본 바이트 동일성이 다르면 릴리스가 멈춘다 |
| **다른 에이전트로 이식** | 머리말이 Claude Code 전용이라 `body-start` 표식 뒤만 `sed` 로 잘라 붙인다 |

정본↔사본 동일성 게이트는 [anti-slop 편](/ko/teardowns/harness/anti-slop/index.md)에서 본 것과 같은 모양입니다. 이쪽은 훨씬 작고 단순한 형태입니다.

전체 성립 조건은 넷입니다. 영어로 답하는 상황, 질문 하나에 답 하나인 대화, 메인 대화에만 적용(하위 에이전트에는 안 걸린다고 README 에 적혀 있음), 지침문이 세션마다 입력으로 실리는 구조.

## 깨본 결과 — 여섯 군데를 열어 봤다

> **[도판]** 두 숫자 모두 거짓은 아닙니다. 다만 이름이 가리키는 것과 실제로 센 것이 다릅니다.
>
> 두 가지 대조. 위: 답의 첫 줄이 굵은 글씨로 시작하는 비율은 스타일을 끄면 3퍼센트, 켜면 75퍼센트다. 아래: Attention-kind 지침문의 길이는 8월 5일판 439단어에서 10월 21일판 1,327단어로 3배가 되었지만 README 의 650토큰 표기는 그대로다.

| # | 주장 | 확인한 것 | 판정 |
|---|---|---|---|
| 1 | 분량 ~43%·중앙값 41% 감소 | `gen2.jsonl` 24문항×3회를 다시 셌다 — 합산 **42.9%**, 문항별 평균 40.9%, 중앙값 40.6%, 범위 7.2~71.2%. 조회형(52%)·설명형(46%)이 크고 **글쓰기(26%)** 가 작다 | 재현됨 |
| 2 | 첫 줄에 답 75% 대 3% | 지표(`answer_first`)는 첫 줄이 `**` 로 시작하는지. 54/72 대 2/72 는 재현되지만 규칙 준수율이다. 「6단어 대 40단어」도 같은 지표(`words_to_emphasis`)이고 **중앙값은 0.0 대 26.0** | 모양 지표 |
| 3 | 훑어보기 좋다 | 같은 파일의 자기 수치: 100단어당 앵커 **6.9 → 5.7(감소)**, 평균 문단 **35.9 → 32.6 단어(거의 불변)**. 줄어든 건 가장 긴 덩어리(37 → 15) | 절반만 지지 |
| 4 | 작업 불변 97% 대 97% | 평가 전 `extract_code` 가 산문을 버리고 코드만 남긴다. 말투가 작업량에 주는 영향은 구조상 안 보임. 이슈/PR #7(9-06 병합)이 반례 | 범위 밖 반례 |
| 5 | 비용 ~650토큰 | 문구는 2026-08-05 커밋(439단어), 지금 1,327단어. 환산 ~1,900토큰 [추정] | 낡은 값 |
| 6 | 벤치마크의 이력 | 첫 벤치마크는 「Claude 가 생성하고 Claude 가 채점, 기준이 스타일 규칙의 재진술」이라는 비판(이슈 #4)을 받았다. 작성자는 8-11 에 숨은 테스트·무판정 지표로 새로 짰다. 8-12 커밋은 옛 결과 문서 5개를 공개 파일에서 지웠다(git 이력에는 남음) | 사실 |

만든 이의 대응은 좋았습니다. 비판을 받고 **판정자 없는 지표**로 다시 짰고, 한계 절에 소표본과 코딩 한정을 스스로 적었습니다. 이 편이 지적하는 건 대응의 부실이 아니라, 새 지표 가운데 일부가 **다시 규칙을 따랐는지의 모양**으로 돌아왔다는 점입니다.

[이 분류에서 되풀이된 결론](/ko/teardowns/harness/index.md)이 여기서도 나옵니다 — 이름이 센 것과 실제로 센 것이 갈린다는 것. [eli5 편](/ko/teardowns/harness/eli5/index.md)의 「944 대 1」과 같은 종류입니다.

## 내 환경에 대봤다 → 수확 → 판정

| 기법 | 적용처 | 판정 | 이득 | 도입비용 | 되돌리기 | 신뢰도 |
|---|---|---|---|---|---|---|
| Attention-kind 상시 적용 | 설정 `outputStyle` 한 줄 | **보류** | 분량 −10~−45% [추정, 영어 문항별 범위의 중간 대역] | 한 줄 + 규칙 충돌 둘 정리 | 한 줄 | 낮음(한국어 미측정) |
| **일과 말투를 따로 재는 측정 설계** | 응답 규칙을 바꾼 뒤 효과 점검 | **수확** | 「좋아졌나」를 느낌 아닌 숫자로 | 스크립트 반나절 [추정] | 0 | 중간 — 말투 지표는 규칙을 따르면 오르므로 일 쪽 지표를 반드시 따로 |
| 수동 전용 스킬 숨기기 (`disable-model-invocation`) | 스킬 2개 | **보류** | 설명문 29,405자 중 1,052자(3.6%) | 한 줄씩 | 한 줄 | 높음(공식 문서). 단 말로 켜지는 길이 사라진다 |
| 막힌 질문 끝 · 모르면 ❔ | 기존 규칙 | **기각 — 이미 해결** | 0 | — | — | 높음 |
| 정본·사본 검사 | (이 PC 에 사본 폴더 없음) | **기각 — 적용처 없음** | 0 | — | — | 높음 |

**다시 여는 조건.** 한국어 질문 10~20개로 기본/스타일 분량을 재서 −20% 이상이고, 두괄식 규칙과 충돌을 정리했고, 잡담 턴에 형식이 안 붙는 게 확인되면 다시 봅니다. 앱 내장 Concise 와 나란히 재 본 뒤여도 됩니다.

## 못 한 것

- **한국어 응답 측정.** 스타일을 켜고 같은 질문을 받아 보는 실험을 안 했습니다. 자식 프로세스로 돌리면 제 개인 설정이 같이 실려 대조가 오염됩니다.
- **앱 내장 Concise 본문**은 열어 보지 않았습니다.
- **독립 렌즈 적대 검증**(반증·이미 해결됨·성립 조건 위반을 결론을 안 보여 주고 각각 돌리는 것)과 「남는 원리」 단계는 안 돌렸습니다. 기본 깊이입니다.
- 토큰 1,900 은 환산이고, 스킬 설명문 합계는 각 파일의 설명 첫 줄만 센 값이라 여러 줄 설명은 덜 잡혔을 수 있습니다.
- 위 판정은 **이 한 PC 한 사람**의 환경 기준입니다.
