minssam.
Published on

claude plugin eval: ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฐ€์น˜๋ฅผ ์ˆซ์ž๋กœ ์ฆ๋ช…ํ•˜๋Š” ์‹œ๋Œ€

ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ์น˜์ž. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ •๋ง Claude๋ฅผ ๋” ์ž˜ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋Š”๊ฐ€? ์ถ”์ธก์ด ์•„๋‹ˆ๋ผ ์ˆซ์ž๋กœ ๋ณด๊ณ  ์‹ถ๋‹ค. ์ด์ œ ๊ทธ๊ฒŒ ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค.

2026๋…„ 9์›” 11์ผ, Anthropic์ด Claude Code v2.1.269์— claude plugin eval ๋ช…๋ น์–ด๋ฅผ ๊ณต๊ฐœํ–ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‹ค์ œ๋กœ ์–ผ๋งˆ๋‚˜ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ์ธก์ •ํ•˜๋Š” ์ „์šฉ eval ํ•˜๋„ค์Šค๋‹ค.


ํ•ต์‹ฌ ์•„์ด๋””์–ด: "ํ”Œ๋Ÿฌ๊ทธ์ธ ์žˆ์„ ๋•Œ vs ์—†์„ ๋•Œ"

ฮ”(๋ธํƒ€)์˜ ์˜๋ฏธ

claude plugin eval์˜ ํ•ต์‹ฌ ์„ค๊ณ„๋Š” ๋‹จ์ˆœํ•˜๋‹ค. ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋‘ ๋ฒˆ ์‹คํ–‰ํ•œ๋‹ค:

  • with-arm: ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋กœ๋“œ๋œ ์ƒํƒœ
  • without-arm: ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์—†๋Š” ๊ธฐ๋ณธ ์ƒํƒœ

๋‘ ๊ฒฐ๊ณผ์˜ ์ฐจ์ด, **ฮ”(๋ธํƒ€)**๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์‹ค์ œ ๊ธฐ์—ฌ๊ฐ’์ด๋‹ค. ์ ์ˆ˜๊ฐ€ ์˜ฌ๋ž์œผ๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ธฐ์—ฌํ•œ ๊ฒƒ์ด๊ณ , ๋–จ์–ด์กŒ์œผ๋ฉด ์˜คํžˆ๋ ค ๋ฐฉํ•ด๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค.

๊ธฐ์กด์—๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด "์ž˜ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค"๋Š” ์ง๊ด€์— ์˜์กดํ–ˆ๋‹ค. ์ด์ œ๋Š” ฮ” = +0.23์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.


6๊ฐ€์ง€ ๊ทธ๋ ˆ์ด๋” ํƒ€์ž…

Anthropic์€ 6๊ฐ€์ง€ ๊ทธ๋ ˆ์ด๋”๋ฅผ ์ œ๊ณตํ•œ๋‹ค. 4๊ฐ€์ง€๋Š” ๋ฌด๋ฃŒ, 2๊ฐ€์ง€๋Š” ์œ ๋ฃŒ(LLM ํ˜ธ์ถœ ๊ธฐ๋ฐ˜)๋‹ค.

๋ฌด๋ฃŒ ๊ทธ๋ ˆ์ด๋” (ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธยทํŒŒ์ผ ๊ธฐ๋ฐ˜)

๊ทธ๋ ˆ์ด๋”์ธก์ • ๋Œ€์ƒ
regex์ถœ๋ ฅ ํ…์ŠคํŠธ์—์„œ ํŒจํ„ด ์กด์žฌ ์—ฌ๋ถ€
tool_usedํŠน์ • ๋„๊ตฌ๊ฐ€ ํ˜ธ์ถœ๋๋Š”์ง€ ์—ฌ๋ถ€
tool_order๋„๊ตฌ๊ฐ€ ์ •ํ•ด์ง„ ์ˆœ์„œ๋กœ ํ˜ธ์ถœ๋๋Š”์ง€
file_existsํŠน์ • ํŒŒ์ผ์ด ์ƒ์„ฑ๋๋Š”์ง€ ์—ฌ๋ถ€

์œ ๋ฃŒ ๊ทธ๋ ˆ์ด๋” (LLM ํ˜ธ์ถœ)

  • llm: LLM์ด ์ถœ๋ ฅ์„ ์ฝ๊ณ  ํ’ˆ์งˆ์„ ํ‰๊ฐ€
  • baseline: with-arm๊ณผ without-arm ์ถœ๋ ฅ์„ ์ง์ ‘ ๋น„๊ตํ•ด ๋” ๋‚˜์€ ์ชฝ์„ ์„ ํƒ

CI ํŒŒ์ดํ”„๋ผ์ธ์— ํ†ตํ•ฉํ•˜๊ธฐ

ํ•ต์‹ฌ ํ”Œ๋ž˜๊ทธ

claude plugin eval --threshold 0.8 --max-cost-usd 20
  • --threshold 0.8: ์ด์ ์ด 0.8 ๋ฏธ๋งŒ์ด๋ฉด ๋นŒ๋“œ ์‹คํŒจ
  • --max-cost-usd 20: LLM ๊ทธ๋ ˆ์ด๋” ๋น„์šฉ์ด $20 ์ดˆ๊ณผ ์‹œ ์ค‘๋‹จ

์ด ๋‘ ํ”Œ๋ž˜๊ทธ๋ฅผ GitHub Actions๋‚˜ CI ํŒŒ์ดํ”„๋ผ์ธ์— ์ถ”๊ฐ€ํ•˜๋ฉด, ํ”Œ๋Ÿฌ๊ทธ์ธ ์ ์ˆ˜๊ฐ€ ๊ธฐ์ค€ ์ดํ•˜๋กœ ๋–จ์–ด์ง€๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

๋ฆฌํฌํŠธ ํ˜•์‹

์‹คํ–‰ ํ›„ JSON + HTML ๋ฆฌํฌํŠธ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. HTML ๋ฆฌํฌํŠธ์—์„œ๋Š” ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ณ„ with/without ๊ฒฐ๊ณผ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.


ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ

์ด ๊ธฐ๋Šฅ์ด ๋“ฑ์žฅํ•˜๊ธฐ ์ „, ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐœ๋ฐœ์˜ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๋Š” ๊ธธ์—ˆ๋‹ค: ๋งŒ๋“ค๊ณ  โ†’ ์ง์ ‘ ์จ๋ณด๊ณ  โ†’ "๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™๋‹ค"๋Š” ๋А๋‚Œ์œผ๋กœ ๋ฐฐํฌ. ์ด์ œ๋Š”:

  1. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ
  2. claude plugin eval ์‹คํ–‰
  3. ฮ” ํ™•์ธ
  4. ์ ์ˆ˜ ๋‚ฎ์€ ์ผ€์ด์Šค ๊ฐœ์„ 
  5. CI์— ์ž„๊ณ„๊ฐ’ ํ†ตํ•ฉ

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ฝ”๋“œ์ฒ˜๋Ÿผ ํ’ˆ์งˆ ๊ด€๋ฆฌ๋˜๋Š” ์‹œ๋Œ€๊ฐ€ ๋๋‹ค. ์„ค๋ช…์„œ ์—†์ด "์จ๋ณด๋ฉด ์•Œ์•„์š”"๋กœ ๋ฐฐํฌํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ "ฮ” = +0.31, ์ •ํ™•๋„ 87%"๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ์„ ํƒํ•˜๊ฒ ๋Š”๊ฐ€.


๊ต์œก ๋„๊ตฌ ๊ฐœ๋ฐœ์—์„œ์˜ ์‹œ์‚ฌ์ 

์—๋“€ํ…Œํฌ ๊ด€์ ์—์„œ ์ด ๊ธฐ๋Šฅ์€ ์ค‘์š”ํ•œ ๋ณ€๊ณก์ ์ด๋‹ค. ๊ต์œก ํŠนํ™” Claude ํ”Œ๋Ÿฌ๊ทธ์ธ(ํ•™์ƒ ์–ธ์–ด ์ˆ˜์ค€ ์กฐ์ •, ๊ต์‚ฌ ์ˆ˜์—… ์„ค๊ณ„ ์ง€์›, ์˜ค๋‹ต ํ”ผ๋“œ๋ฐฑ ์ƒ์„ฑ ๋“ฑ)์„ ๋งŒ๋“œ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์ด์ œ "์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ต์œก ๋งฅ๋ฝ์—์„œ ๋” ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋Š”๊ฐ€"๋ฅผ ์ˆ˜์น˜๋กœ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.


ํ™œ์šฉ ํŒ

  • ์ฒซ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” 5๊ฐœ๋กœ ์‹œ์ž‘: ๋ฒ”์œ„๋ฅผ ์ขํ˜€ ํŒŒ์ดํ”„๋ผ์ธ ๋™์ž‘์„ ๋จผ์ € ํ™•์ธํ•œ๋‹ค.
  • regex ๊ทธ๋ ˆ์ด๋”๋กœ ๋น„์šฉ ์—†์ด ์‹œ์ž‘: ๋ฌด๋ฃŒ ๊ทธ๋ ˆ์ด๋”๋กœ ๊ธฐ๋ณธ ๋™์ž‘์„ ๊ฒ€์ฆํ•œ ๋’ค ์œ ๋ฃŒ llm ๊ทธ๋ ˆ์ด๋”๋กœ ํ’ˆ์งˆ์„ ์‹ฌํ™” ํ‰๊ฐ€ํ•œ๋‹ค.
  • --max-cost-usd ์„ค์ • ํ•„์ˆ˜: LLM ๊ทธ๋ ˆ์ด๋” ๋น„์šฉ์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜์— ๋”ฐ๋ผ ๊ธ‰์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.

Sources:

claude plugin eval: ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฐ€์น˜๋ฅผ ์ˆซ์ž๋กœ ์ฆ๋ช…ํ•˜๋Š” ์‹œ๋Œ€ | MINSSAM.COM