๐ Harness Engineering for coding agents
On this page
0/ Harness Engineering

Harness๋ ๋ชจ๋ธ์ ๋๋ฌ์ผ ๋ชจ๋ ์ธ๋ถ ํ๊ฒฝ์ผ๋ก, ์์คํ ํ๋กํํธ, ํ์ผ ์์คํ , ๋ชจ๋ธ ๋ผ์ฐํ , ์ธ๋ถ ๋๊ตฌ ๋ฑ ๋ชจ๋ธ ๋ฐ๊นฅ์์ ๋์ํ๋ ์์คํ ์ ์ฒด๋ฅผ ์๋ฏธํ๋ค. (๋ชจ๋ธ์ด ๐ดย ๋ง์ด๋ฉด harness๋ ๋ง์ด ๋ง์ฐจ๋ฅผ ์ ๋ ์ ์๋๋ก ์ฌ์ฉํ๋ ๋ง๊ตฌ.)
2026๋ 2์, Mitchell Hashimoto๊ฐ ์์ ์ ๋ธ๋ก๊ทธ ๊ธ์์ agent๊ฐ ์ค์ํ ๋๋ง๋ค ๊ฐ์ ์ค์๋ฅผ ํ์ง ์๋๋ก ์์คํ ์ ์ค๊ณํ๋ ์์ ์ โHarness Engineeringโ๋ผ ๋ถ๋ฅธ๋ค๊ณ ํ๊ณ , ์ด์ด์ OpenAI๊ฐ โHarness engineering: leveraging Codex in an agent-first worldโ ๊ณต์ ๊ธ์ ๊ณต๊ฐํ๋ฉด์ (+ Claude Code ๋ด๋ถ ์ฝ๋๊ฐ ์ ์ถ๋๋ฉด์) Harness Engineering ์ฉ์ด๊ฐ ๋น ๋ฅด๊ฒ ๋์คํ๋์๋ค.

โAgent = Model + Harnessโ ๋ผ๊ณ ํํํ ์ ๋๋ก Harness์ ์ค์์ฑ์ด ๋ฌด์ฒ ๊ฐ์กฐ๋๊ณ ์๋ค.
์ค์ ๋ก LangChain์์ terminal ๊ธฐ๋ฐ ์์ด์ ํธ ํ๊ฐ ๋ฒค์น๋งํฌ์ธ Terminal-Bench 2.0์์ ๋ชจ๋ธ(GPT-5.2-Codex)์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ณ , ๋ชจ๋ธ์ ๊ฐ์ธ๋ ํ๊ฒฝ์ธ Harness๋ง ๊ฐ์ ํ๋๋ ๋น์ ๋ฆฌ๋๋ณด๋ ์์๊ฐ 30์๊ถ์์ 5์๊น์ง ์ฌ๋ผ๊ฐ์๋ค.
์ด์ ๊ฐ์ด, ๋จ์ํ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ๋์ด Harness๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ค๊ณํ๋์ง, ์ด๋ฅธ๋ฐHarness Engineering์ด agent์ ์ฑ๋ฅ์ ์ข์ฐํ๋ค๊ณ ํ ์ ์๋ค.
1/ Harness > Context > Prompt

Harness Engineering์ Prompt Engineering, Context Engineering๋ณด๋ค ๋ ํฐ ๊ฐ๋ ์ด๋ค.
Prompt Engineering์ ์ํ๋ ์๋ต์ ์ป๊ธฐ ์ํด ๋ชจ๋ธ์๊ฒ ๋ฌด์์, ์ด๋ป๊ฒ ์ง์ํ ๊ฒ์ธ์ง์ ๊ดํ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋! ๋จ์ ์ง์์๋ต์ ๋์ด, ๋ ๋ณต์กํ ์์ ์ ์ํํ๊ฒ ๋๋ฉด์ ๋จ์ํ ์ต์ ํ๋ prompt๋ง์ผ๋ก๋ ์ถฉ๋ถ์น ์๊ฒ ๋์๋ค. ๋ชจ๋ธ์ด ํ์ฌ ์์ ์ ์ํํ๋ ๋ฐ ํ์ํ ์ธ๋ถ ๋๊ตฌ, ํ์ผ, ๊ฐ๋๋ ์ผ ๋ฑ์ ์ผ๋ง๋ ์ ๋ฌ๋ฐ๊ณ , ์ดํดํ๋๋๊ฐ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ผ์น๋ฉด์, Context Engineering์ด ์ค์ํด์ก๋ค.
๋ ๊ทธ๋ฌ๋! ๋ณต์กํ ์ฅ๊ธฐ ๊ณผ์ ์์ ์์ ์ด ํ ๋ฒ์ session์ด ์๋๋ผ ์ฌ๋ฌ session์ ๊ฑฐ์ณ ์ํ๋๋ฉด์ context๋ง์ผ๋ก๋ ํ๊ณ๊ฐ ์๊ธด ๊ฒ์ด๋ค. ์ session์ด ์์๋๋ฉด, ๋ณดํต ์ด์ session์ ์ํ๋ ์์ ๋งฅ๋ฝ์ด ์์ ํ๊ฒ ์ด์ด์ง์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๊ทธ๋์ session์ด ๊ณ์ ๋ฐ๋ณตํด์ ๋ค์ ์์ํ๊ฒ ๋๋ฉด, ์ด์ ์ ๋ฌด์์ ํ๋์ง, ์ด๋๊น์ง ์งํํ๋์ง, ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง, ๋ค์์๋ ๋ฌด์์ ํด์ผ ํ๋์ง๋ฅผ ์ ํํ ํ์ ํ๊ธฐ ์ด๋ ค์์ง๋ค.
์ด ๋๋ฌธ์ ๋จ์ผ session ์์์์ ์ ๋ณด ๋งฅ๋ฝ ๊ตฌ์ฑ๋ง์ผ๋ก๋ ๋ถ์กฑํด ์ฌ๋ฌ session์ ๊ฑธ์ณ ์์ ์ ์คํํ ์ ์๋๋ก ํ๋ ์์คํ ์ ์ฒด๊ฐ ์ค์ํด์ง๋ค. ์ด๋ฅผ ๋ค๋ฃจ๋ ๊ฒ Harness Engineering์ด๋ค.
์ฆ, Context Engineering์ ์ฃผ๋ก ๋จ์ผ session ์์์ ๋ชจ๋ธ์๊ฒ ํ์ํ ์ ์ ํ ์ ๋ณด์ ๋๊ตฌ๋ฅผ ์ด๋ป๊ฒ ์ ๊ณตํ ๊ฒ์ธ์ง๋ผ๋ฉด, Harness Engineering์ ๋ชจ๋ session์์ ์ผ์ด๋๋ ์ ์ฒด ํ๊ฒฝ์ ์ด๋ป๊ฒ ์ค๊ณํ ๊ฒ์ธ์ง๋ฅผ ๋ค๋ฃฌ๋ค.
Prompt < Context < Harness์ ๋ํด ๋ค์ ์ ๋ฆฌํ์๋ฉด, Prompt Engineering์ ๋ชจ๋ธ์๊ฒ ์ง๋ฌธ์ ์ํ๋ ๊ธฐ์ , Context Engineering์ Prompt์ ๋งฅ๋ฝ์ ํจ๊ป ์ฃผ๋ ๊ฒ์ผ๋ก, โ์ฌํ์ง๋ฅผ ์ถ์ฒํด์คโ ๋ผ๋ ํ๋กฌํํธ์ ์ฌ์ฉ์์ ์ค์ผ์ฅด, ํ์์ ์ทจํฅ, ํ์ฌ ์ธ๊ธฐ ์๋ ์ฌํ์ง ์ ๋ณด ๋ฑ ๋งฅ๋ฝ๊ณผ ํจ๊ป ํ์ฌ ๋ ์ ํฉํ ์ฌํ์ง๋ฅผ ์ถ์ฒํ ์ ์๋ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ, ์ด๋ ๊ฒ ๋งฅ๋ฝ ์ ๋ณด์ ๋๊ตฌ ๋ฑ์ด ๋ง์์ง๋๊น ์ฐ๋ฆฌ๊ฐ ํ๊ณ ๊ฐ์ผํ๋ ๋ง์ธ ๋ชจ๋ธ์ด ํ๋ค์ด ํ๋ค. ๊ทธ๋์ Harness๋ก ๋ชจ๋ธ์ด ์ ๋ฌ๋ฆด ์ ์๋ ํ๊ฒฝ ์์ฒด๋ฅผ ์ค๊ณํ๋ ๊ฒ์ด Harness Engineering์ด๋ค.
2/ Coding Agent๊ฐ ๊ฐ๊ณ ์๋ ๋ฌธ์
๋ฌธ์ 1๏ธโฃย Context Anxiety ๐ซจ
์ฅ์๊ฐ ์์ ์์๋ ๋ง์ ์์ context window๊ฐ ํ์ํด์ง ์๋ฐ์ ์๋ค. ์ด๋ context window๊ฐ ๊ฝ ์ฐจ๋ฉด์, ์ผ๊ด์ฑ์ ์๊ณ , ์์ ์ ์ ๋๋ก ์งํํ์ง ๋ชปํ๋ Context Anxiety ํ์์ ๋ณด์ธ๋ค. (์ฐ๋ฆฌ๋ ๋๋ฌด ์ผ์ด ๋ง์์ง๋ฉด, ์ด๋ค ์ผ์ ๋จผ์ ์์ํด์ผํ๋์ง, ๋ฌด์จ ์ผ์ ํด์ผํ๋์ง ํผ๋์ค๋ฌ์ด ๊ฒ์ฒ๋ผ ๋ชจ๋ธ๋ ๋ง์ฐฌ๊ฐ์ง๋ค.)
โ ย Context Rest
Context Anxiety ํ์์ ์ํํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก, context window๋ฅผ ์์ ํ ์ง์ด ๋ค, ๋ค์ ์๋กญ๊ฒ ์์ํ๋ ๊ฒ์ด๋ค. ์ฆ, ๋จธ๋ฆฌ๋ฅผ ๋น์ฐ๊ณ ๋ค์ ์์ํ๋ ๊ฒ์ด๋ค.
context rest๋ compaction๊ณผ ๋ค๋ฅธ ๋ฐฉ์์ด๋ค. compaction์ ๋ํ์ ์๋ถ๋ถ๋ฅผ ์งง๊ฒ ์์ฝํด ๊ฐ์ agent๊ฐ ๊ณ์ ์์ ์ ์ฐ์์ ์ผ๋ก ์งํํ ์ ์๋๋ก ํ๋ค. ํ์ง๋ง ์์ฝํ๋ค๊ณ ํด๋ ์ด์ ๋ํ์ ํ์ ์ ๋จ์ ์๊ณ , agent๋ฅผ clean state๋ก ์๋กญ๊ฒ ์์ํ๋ ๊ฒ ์๋๋ฏ๋ก, compaction ๋ฐฉ์์์๋ context anxiety๊ฐ ์ฌ์ ํ ์กด์ฌํ ์ ์๋ค.
๋ฐ๋ฉด, context rest๋ ๋ค์ agent๊ฐ ์์ ํ ์๋กญ๊ฒ ์์ํ๋ ๋ฐฉ์์ด๋ฉฐ, ์ด์ ๋ํ์ ํ์ ์ ๋จ๊ธฐ์ง ์๋๋ค. ๋์ , ์์ ์ ์ด์ด ๋ฐ์ ์ ์๋๋ก handoff artifact์ ์ง๊ธ๊น์ง์ ํต์ฌ ์ํ๋ง ์ ๋ฆฌํด๋๋ค. ๊ทธ๋์ ์ด์ ๋ํ์ ํ์ ์ ์์ผ๋ฉด์ ํต์ฌ ์ ๋ณด๋ง ๋๊ฒจ ๋ฐ์ ์์ ์ ์ด์ด ์ํํ ์ ์๋ค.
๋ฌธ์ 2๏ธโฃย Do too much at once
์ฒ์๋ถํฐ ๋ชจ๋ ์ง์์ฌํญ์ ๋ฃ์ผ๋ฉด ์ ๋ ์๋๋ ์ด์ ๊ฐ ๋ฐ๋ก agent๊ฐ ๋๋ฌด ๋ง์ ์ผ์ํ ๋ฒ์ ๋ค ํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ด๋ค. (๋ชจ๋ธ์ ์ฑ๋ฅ์ด ์ข์์ง๋ฉด ๋์์ง๊ฒ ์ง๋ง, ์์ง์ ๋ฌธ์ ๊ฐ ๋จ์ ์๋ ๊ฒ ๊ฐ๋ค.)
โ ย Incremental Progress
๊ทธ๋์ Anthropic์์๋ โ์ ์ง์ ๊ณต๊ฐโ ๋ฐฉ์ (Incremental Progress)์ผ๋ก ์ง์์ฌํญ์ ํ ๋ฒ์ ๋ค ์ฃผ์ง ์๊ณ , ํ ๋ฒ์ ํ๋์ ๊ธฐ๋ฅ๋ง ์ ์ง์ ์ผ๋ก ๊ตฌํํ๋๋ก ํ๋ค. ๊ฐ ๋จ๊ณ๊ฐ ๋๋ ๋๋ง๋ค git commit messages๋ฅผ ๋จ๊ธฐ๊ณ , ์ด ๊ณผ์ ์ ์์ฝํ progress file๋ฅผ ํ์ฉํด ์ฝ๋ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํด์ก๊ณ , next agent๊ฐ ์์ ์ ์ด๋์๋ถํฐ ์์ํด์ผํ ์ง ์ถ์ธกํ ํ์๊ฐ ์์ด์ง๊ฒ ๋์๋ค.
๋ฌธ์ 3๏ธโฃย Self-Evaluation ๐
์์ด์ ํธ๊ฐ ์๊ธฐ๊ฐ ํ ์์ ์ ๊ด๋ํ๊ฒ ํ๊ฐํ๋ self-evaluation ๋ฌธ์ ๊ฐ ์๋ค. (์ฌ๋๋ ์๊ธฐ๊ฐ ํ ์ผ์ ๋์ด ํ๊ฐํ๋ ๊ฒ๊ณผ ์ ๋ง ๋น์ทํ ๊ฒ ๊ฐ๋ค..)
ํนํ ๋์์ธ๊ณผ ๊ฐ์ด ์ ๋ต์ด ๋ช ํํ๊ฒ ์๋ ์ฃผ๊ด์ ์ธ ์์ ๊ฐ์ ๊ฒฝ์ฐ์ ํ๊ฐ๊ฐ ๋ ๊ด๋ํ ํธ์ด์๋ค๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด, UI ๋์์ธ์ด ํ๋ฒํด๋ ๋๋ฌด ์ข๋ค๊ณ ๋งํ๋ ํธ์ธ ๊ฒ์ด๋ค.
โ ย Generator, Evaluator ๋ถ๋ฆฌ
GAN๊ณผ ๊ฐ์ด, ๋ง๋๋ ์์ด์ ํธ์ ํ๊ฐํ๋ ์์ด์ ํธ๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด๋ค.
generator๋ ์ค์ ์์ ์ ์ํํ๋ agent์ด๊ณ , evaluator๋ generator์ ์์ ์ ํ๊ฐํ๋ agent๋ค. ์๊ธฐ๊ฐ ํ ๊ฒฐ๊ณผ๊ฐ ์๋๊ธฐ์ ์กฐ๊ธ ๋ ๊ฐ๊ด์ ์ผ๋ก ํ๊ฐํ์ง ์์๊น? ๋ผ๋ ์์ด๋์ด์์ ๋น๋กฏ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ evaluator๋ ๊ฒฐ๊ตญ ๋ชจ๋ธ์ด๊ธฐ์, ์์ ํ ๊ฐ๊ด์ ์ธ ํ๊ฐ๋ฅผ ํ์ง ๋ชปํ๋ ์ ์ ๋จ์ ์๋ค. ๊ทธ๋๋ ์ญํ ์ ๋ถ๋ฆฌํด์ evaluator๋ฅผ ๋นํ์ , ํ์์ ์ผ๋ก ํ๋ํ๋ค๋ฉด ์ด์ ๋ณด๋ค ๋ ๋์ ํ๊ฐ๊ฐ ์ด๋ค์ง๋ค๊ณ ๋ณด๊ณ ์๋ค.
3/ Harness ๊ตฌ์ฑ ์์
Claude Code๋ฅผ ์ค์ฌ์ผ๋ก ๊ฐ๋ตํ๊ฒ Harness์ ์ฃผ์ ๊ตฌ์ฑ ์์๋ฅผ ์ดํด ๋ณด์.
1๏ธโฃย CLAUDE.md
CLAUDE.md๋ agent๋ฅผ ์ํ ํ๋ก์ ํธ ์ง์นจ ํ์ผ์ด๋ค. ์ฝ๊ฒ ๋งํ์๋ฉด ์จ๋ณด๋ฉ ๋ฌธ์๋ก, ์ฒ์ ํ๋ก์ ํธ๋ฅผ ์ ํ๋๋ผ๋, ํ๋ก์ ํธ๋ฅผ ๋น ๋ฅด๊ฒ ์ดํดํ๊ณ ์ ์ํ๋ ๋ฐ ๋์์ ์ฃผ๋ ๊ฒ์ด๋ค. ํ๋ก์ ํธ ์ ์ฒด์ ์์ด ์ค์ํ ํ๋ก์ ํธ ๊ตฌ์กฐ, ๋ค์ด๋ฐ ์ปจ๋ฒค์ ๋ฑ์ ๋ณดํธ์ ์ผ๋ก ์ง์ผ์ผํ๋ ๊ฒ์ ์ฃผ๋ก ํฌํจ์ํจ๋ค.
๊ท์น์ ๋ง์์ง๋ฉด ๋ชจ๋ธ์ด ํผ๋์ค๋ฌ์ํ๋ฏ๋ก, ์ ๋ง ์ค์ํ ๊ท์น 3-5๊ฐ (๋ฐ๋์ ์ง์ผ์ ธ์ผ ํ๋ constitution), ํด๋น ํ๋ก์ ํธ๋ ์ด๋ค ์ธ์ด๋ฅผ ์ฌ์ฉํ๋์ง ๋ฑ workspace ๊ท์น ์์ฃผ๋ก ์ ๋ ๊ฒ์ด ์ข๋ค.
๋ํ, ์ฐ์ ์์๋ฅผ ๋ช ํํ๊ฒ ํด ์ค์ํ ๊ท์น์ด ์ถฉ๋ํ ๊ฒฝ์ฐ ์ด๋ค ๊ท์น์ ๋จผ์ ๋ฐ๋ผ์ผํ๋์ง ๋ช ์ํ๋ ๊ฒ์ด ์ข๋ค.
์ ๋๋ก ๊ตฌ๊ตฌ์ ์ ์ค๋ช ๋ฌธ์ด ์๋๋ผ, ํ๋ก์ ํธ๋ฅผ ์ ํ์ ํ ์ ์๋ ๐บ๏ธย map์ด์ด์ผ ํ๋ค.
2๏ธโฃย Skills
Skills๋ SKILL.md ํ์ผ๋ก ์ ์๋๋๋ฐ, ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ์์ ์ ์ฝ๊ฒ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
Anthropic์์๋ skills๋ ๋จ์ํ ๋งํฌ๋ค์ด ํ์ผ์ด ์๋๋ผ, scripts, assets, data ๋ฑ์ ํฌํจํ ์ ์๋ ์์ ํ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ํ๋ค.
์ ๋ง๋ skill์ ๋ช ํํ๋ฉฐ, ํผ๋์ค๋ฝ์ง ์๋ค๊ณ ํ๋ค. ์ฆ ํ๋์ skill์๋ ํ๋์ ์ญํ ์ด ๋ด๊ฒจ ์์ด์ผ ํ๋ค.
๐ย Skills๋ฅผ ์ ์์ฑํ๋ ๋ฒ์ **Lessons from Building Claude Code: How We Use Skills** ๊ธ์ ๋ณด๊ธธ ๋ฐ๋๋ค.

๊ฐ๋จํ ์์ฝํ๋ฉด,
๋ชจ๋ธ์ด ์ด๋ฏธ ์๊ณ ์์ ๊ฒ ๊ฐ์, ๋น์ฐํ๊ณ ๋ปํ ๋ง์ ์ฐ์ง ๋ง๊ธฐ.
## Gotchas์น์ ์ ์ ํ์ฉํ๊ธฐ. (๋ชจ๋ธ์ด ๋ฐ๋ณต์ ์ผ๋ก ์คํจํ๋ ์ฃ์ง ์ผ์ด์ค๋ฅผ ํ์ ํ๊ณ , ๊ธฐ๋กํ๊ธฐ)
skill์ ๋จ์ํ ๋งํฌ๋ค์ด โํ์ผโ์ด ์๋๋ผ โํด๋โ ๊ตฌ์กฐ๋ผ๊ณ ๋งํ ๊ฒ๊ณผ ๊ฐ์ด, ์ด ํด๋ ๊ตฌ์กฐ๋ฅผ ์ ํ์ฉํ๊ธฐ. (๋จ์ํ skill๋ฅผ ๋งํฌ๋ค์ด ํ๋์ ํต์งธ๋ก ๋ฃ๋ ๊ฒ ์๋๋ผ, ์ฌ๋ฌ ํ์ผ๋ก ๋ถ๋ฆฌํด์ ์ฌ์ฉํ๋ ๋ฑ)

skill์ ๋๋ฌด ๊ตฌ์ฒด์ ์ผ๋ก ์ฐ์ง ๋ง๊ธฐ. ๋๋ฌด ๊ตฌ์ฒด์ ์ด๋ฉด, ์ํฉ์ ๋ง๊ฒ ์ ์ฐํ๊ฒ ํ๋ํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋จ.

setup ์ธํ ํ๊ธฐ. skills ํด๋์ config.json ํ์ผ์ ํ์ฉํด setup ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ. ์๋ฅผ ๋ค์ด, Slack์ ํฌ์คํ ํ๋ skill ๊ฐ์ ๊ฒฝ์ฐ, ์ด๋ค slack channel์ ํฌ์คํ ํ ์ง setup ์ ๋ณด๋ฅผ ์ ๋ฆฌํ๋ ๊ฒ.
์ฌ๋ฌ ์ ํ์ง๋ฅผ ์ ์ํ๊ธธ ์ํ๋ค๋ฉด Claude Code์ AskUserQuestion Tool ์ ์ ํ ํ์ฉํ๊ธฐ.

description ํ๋๋ ๋ชจ๋ธ์ ์ํ ๊ฒ.

description์ ๋จ์ํ โ์์ฝโ์ด ์๋๋ผ โ๋ชจ๋ธ์ด ์ธ์ ์ด skill์ ์ฌ์ฉํด์ผํ๋์งโ๋ฅผ ํ๋จํ๊ธฐ ์ํ ๋ชจ๋ธ์ ์ํ ํ๋์ด๋ค.
์ด๋ค skill์ ๋ฐ์ดํฐ๋ฅผ memory๋ก ํ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ์ด๋ ํ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ skill ํด๋์ ์ ์ฅํ์ง ๋ง๊ณ ,
${CLAUDE_PLUGIN_DATA}์ ๊ฐ์ ์ ์ ์ธ ํด๋์ ์ ์ฅํ ๊ฒ. (skill ์ ๊ทธ๋ ์ด๋ํ๋ฉด skill ํด๋ ์์ ์๋ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋ ๊ฐ๋ฅ์ฑ์ด ์์.)
script ์ ์ฅํ๊ณ , ์ฝ๋ ์์ฑํ๊ธฐ. ์ฌ์ฉํด์ผํ๋ script์ library๋ฅผ ์ ๊ณตํด๋๋ฉด, ์ฝ๋ ์์ฑํ๋ ๋ฐ์๋ง ์์ ์ง์คํ๊ฒ ๋จ. ๋ชจ๋ธ์๊ฒ ๋ ์ด๋ ค์ด ์์ ์ ๋งก๊ธฐ๋๋ก ํ์.

3๏ธโฃย MCP (Model Context Protocol)
MCP๋ Agent์ ์ธ๋ถ ๊ฐ ์ฐ๊ฒฐ์ ํตํฉํด ๋ ์ฝ๊ฒ ์ธ๋ถ ๋๊ตฌ์ ์ ๊ทผํ๊ณ ํ์ฉํ ์ ์๋๋ก ํ๋ ํ๋กํ ์ฝ์ด๋ค.
ํญ์ ์ ๋ง ํ์ํ MCP๋ถํฐ ์ฐ๊ฒฐํ๋ ๊ฒ์ด ์ค์ํ๋ค. ์ธ๋ฐ์์ด ๋ง์ MCP๋ฅผ ์ฐ๊ฒฐํ๋ค๋ฉด, token ์ฌ์ฉ๋์ด ๋ง์์ง๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฃผ๊ธฐ์ ์ผ๋ก ์ฌ์ฉํ์ง ์์ MCP๊ฐ ์๋์ง ํ์ธํ ํ์๊ฐ ์๋ค.
4๏ธโฃย Hook
Hook์ event ๊ธฐ๋ฐ์ผ๋ก ํน์ ์์ ์ ์ฝ๋๋ฅผ ์คํํด์ฃผ๋ ์๋ํ ํธ๋ฆฌ๊ฑฐ๋ค.
- Event: Hook์ด ์ธ์ ์คํ๋ ์ง ์ด๋ฒคํธ.
- Session ๋จ์:
SessionStart,SessionEnd - Turn ๋จ์:
UserPromptSubmit,Stop,StopFailure - Tool ํธ์ถ๋ง๋ค:
PreToolUse(ํด ์คํ ์ ),PostToolUse(ํด ์คํ ํ)
- Session ๋จ์:
- Matcher: ์ด๋ค ๊ฒฝ์ฐ์๋ง ์คํํ ์ง ํํฐ๋ง
- Action: ์ค์ ์คํํ command ๋๋ script ๋ฑ.
*Turn์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ๋ ํ๋์ ๋จ์์ด๊ณ , Session์ ์ ์ฒด ์์ ๋จ์ (Claude Code ํ๋ก์ธ์ค ์์๊ณผ ๋)
๐ย Hook ํ์ฉ ์์
- Claude๊ฐ ํ์ผ ์์ ํ ๋๋ง๋ค ์๋ ํฌ๋งคํ
โก๏ธ
PostToolUseprettier ์คํ rm -rf๊ฐ์ ์ํ ๋ช ๋ น ์ฐจ๋จ โก๏ธPreToolUseexit 2๋ก ๋ธ๋กํน.envํ์ผ ์์ ์ ๋น๋ฐํค ๋ ธ์ถ ๊ฐ์ง โก๏ธPreToolUseํจํด ๋งค์นญ ๊ฒ์ฌ- ์ธ์
์์ ์ ํ๊ฒฝ๋ณ์ ์๋ ์ฃผ์
โก๏ธ
SessionStart์ปจํ ์คํธ ์ธํ
๊ผญ ์คํ๋์ด์ผ ํ๋ ๊ท์น์ด๋ผ๋ฉด, CLAUDE.md ๊ฐ์ prompt ๊ธฐ๋ฐ ์ค์ ๋์ Hook์ ์ฌ์ฉํ๊ธธ ๊ถํ๋ค. Prompt๊ฐ โ๋ชจ๋ธ์๊ฒ ๋ถํโํ๋ ๊ฒ์ด๋ผ๋ฉด, Hook๋ โ๋ฐ๋์ ๊ท์น์ด ์คํ๋๋๋กโํ๊ธฐ ๋๋ฌธ์ด๋ค.
4/ Harness ์ค๊ณ ์ด๋ป๊ฒ ํด์ผํ ๊น?
๊ฐ๋จ๋ช ๋ฃํ๊ฒ ๋งํ์๋ฉด, Harness๋ ๋ชจ๋ธ์ด ํผ์์ ๋ชปํ๋ ๊ฒ์ ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก Harness๋ฅผ ์ค๊ณํ ๋, ๋ชจ๋ธ์ด ๋ฌด์์ ๋ชปํ๋์ง, ์ด๋ ๋ถ๋ถ์์ ์ค์ํ๋์ง ๊ด์ฐฐํ๊ณ , ์ด๋ฅผ ํ ์ ์๋๋ก ๋์์ค์ผ ํ๋ค.
๋ํ, ๋ชจ๋ธ์ด ๋ฐ์ ํ๋ค๋ฉด Harness ๋ํ ์ฌ๊ฒํ ํ๊ณ , ๊ทธ์ ๋ง์ถฐ ๊ฐ์ ํด์ผ ํ๋ค. ๋ชจ๋ธ์ด ํผ์์๋ ๋ ์ํ ์ ์๋๊ฒ ๋ง์์ง๋ค๋ฉด, ๊ตณ์ด Harness๊ฐ ๋์์ค ํ์ ์๋ ๊ฒ์ด๋ค.
Reference
- Effective Harnesses for Long-Running Agents
- Harness Design for Long-Running Apps
- Autonomous Coding
- Improving Deep Agents with Harness Engineering
- Agentic Harness Engineering
- ํ๋ค์ค ์์ง๋์ด๋ง์ด ๋ญ๋ฐ? Anthropic์ด ์ง์ ๊ณต๊ฐํ AI ์ฑ๋ฅ์ ์ง์ง ๋น๋ฐ
- Harness engineering
- Threads post by @choi.openai
- Lessons from Building Claude Code: How We Use Skills