claude-token-saver 3.16.0 โ†’ 3.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.en.md CHANGED
@@ -6,9 +6,7 @@
6
6
 
7
7
  ## ๐Ÿ”€ Routing saved โ€” the reason this tool exists
8
8
 
9
- ```
10
- ๐Ÿ”€ Routing saved $2.09 | fableโ†’sonnet 1ร— $0.72 ยท opusโ†’haiku 1ร— $0.57 ยท fableโ†’haiku 1ร— $0.51 ยท opusโ†’sonnet 2ร— $0.29
11
- ```
9
+ ![statusline example โ€” routing savings on row 1, diagnostics on row 2](./docs/statusline.png)
12
10
 
13
11
  **That figure on the first statusline row is the whole product.** It is money actually saved by moving the easy work your expensive model kept repeating onto cheaper ones โ€” and right beside it is which model that money moved off, and onto what.
14
12
 
@@ -40,8 +38,6 @@ By run (newest first):
40
38
  npm i -g claude-token-saver # postinstall auto-registers the statusline + Skill
41
39
  ```
42
40
 
43
- ![statusline example](./docs/statusline.png)
44
-
45
41
  ---
46
42
 
47
43
  ## โšก Why โ€” the 30-second pitch
@@ -62,7 +58,15 @@ It never intercepts a request in realtime.
62
58
  kept handling, and promotes them into rules so a cheaper model takes them **from the next session
63
59
  onward**. Rules are scoped global or per-project.
64
60
 
65
- Never switching models mid-session is the point. Prompt caches are per-model, so a mid-session switch throws away everything accumulated. This tool only ever delegates to **subagents**, leaving the main session's cache intact.
61
+ ### Why realtime model routing can cost more, not less
62
+
63
+ Never switching models mid-session is the point of this design.
64
+
65
+ Prompt caches are **kept per model.** Switch to a cheaper model mid-session and it starts from a cold cache, re-reading the whole conversation at full input price. A cache hit costs about a tenth of that, so past roughly 20k tokens of history **one switch can erase everything the cheaper model was going to save.** You moved the work down a tier and the bill went up: the central paradox of realtime routing.
66
+
67
+ Teams shipping routing products have turned the feature off for exactly this reason: [LLM ๋ผ์šฐํ„ฐ๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ๋“ค์ด ์ง์ ‘ ๊ป์Šต๋‹ˆ๋‹ค #Shorts](https://www.youtube.com/shorts/SK-GoAABjbg) (Korean).
68
+
69
+ So this tool never touches the main session's model. It delegates to **subagents only**, which leaves the main session's cache intact and runs the delegated work on a cheap model in its own context. That is why the savings are not cancelled out by cache loss.
66
70
 
67
71
  ```bash
68
72
  npm i -g claude-token-saver@latest
@@ -87,6 +91,8 @@ npm i -g claude-token-saver
87
91
 
88
92
  The statusline appears at the bottom of Claude Code right away. If auto-registration was skipped (`--ignore-scripts`, sudo, sandboxed installs), run `claude-token-saver install`.
89
93
 
94
+ One install sets up everything: **statusline, Skill, SessionStart hook, the ๐Ÿ…ท Harness (5 principles), and a first route-scan.** The harness is **appended** to `~/.claude/CLAUDE.md` as a marked block (your existing content is backed up and preserved) and is left alone if one is already there. Skip it with `CTS_NO_HARNESS=1 npm i -g claude-token-saver`; undo it with `claude-token-saver harness uninit --global`.
95
+
90
96
  > โš ๏ธ Avoid `sudo` global installs โ€” the Skill lands in root's `~/.claude` instead of yours. Use nvm/fnm/Volta or `npm config set prefix ~/.npm-global`.
91
97
 
92
98
  ## Reading the statusline
@@ -339,6 +345,14 @@ Also update `statusLine.command` in `~/.claude/settings.json` to `claude-token-s
339
345
 
340
346
  ## Release notes
341
347
 
348
+ ### v3.18.0 (2026-08-22)
349
+ - **Korean documentation rewritten for clarity** โ€” full sentences with explicit predicates, and em dashes replaced by colons and conjunctions where they were compressing too much meaning.
350
+ - **Added why realtime model routing can cost more** โ€” prompt caches are per-model, so a mid-session switch cancels the savings via cache loss; this is why the tool delegates to subagents only.
351
+
352
+ ### v3.17.0 (2026-08-22)
353
+ - **One install now sets up the ๐Ÿ…ท Harness too** โ€” until now `harness init` was a separate step, without which the ๐Ÿ…ท score and ratchet-rule delivery did nothing. The install **appends** the 5-principle block to `~/.claude/CLAUDE.md` (existing content backed up and preserved; an existing block is left alone). Skip with `CTS_NO_HARNESS=1`, undo with `harness uninit --global`.
354
+ - **The README leads with the real statusline screenshot** โ€” the capture replaces the code block at the top, and the duplicate image further down was removed.
355
+
342
356
  ### v3.16.0 (2026-08-22)
343
357
  - **README restructured around routing savings** โ€” `๐Ÿ”€ Routing saved` now opens the page, with how the figure is derived (before / after / gap) and the real `route-scan savings` output alongside it. Channel and homepage badges moved to a "Who makes this" section at the bottom.
344
358
  - **Statusline screenshot refreshed to the current two-row layout** โ€” captured from real output rather than mocked up. Regenerate with `npm run docs:statusline` (headless Chrome; no dependencies added).
package/README.md CHANGED
@@ -4,21 +4,19 @@
4
4
 
5
5
  # claude-token-saver
6
6
 
7
- ## ๐Ÿ”€ Routing saved โ€” ์ด ๋„๊ตฌ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ 
7
+ ## ๐Ÿ”€ Routing saved: ์ด ๋„๊ตฌ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ 
8
8
 
9
- ```
10
- ๐Ÿ”€ Routing saved $2.09 | fableโ†’sonnet 1ร— $0.72 ยท opusโ†’haiku 1ร— $0.57 ยท fableโ†’haiku 1ร— $0.51 ยท opusโ†’sonnet 2ร— $0.29
11
- ```
9
+ ![statusline ์˜ˆ์‹œ. ์ฒซ์งธ ์ค„์€ ๋ผ์šฐํŒ… ์ ˆ๊ฐ์•ก์ด๊ณ  ๋‘˜์งธ ์ค„์€ ์ง„๋‹จ ์นฉ์ž…๋‹ˆ๋‹ค](./docs/statusline.png)
12
10
 
13
- **statusline ์ฒซ ์ค„์— ๋œจ๋Š” ์ด ๊ธˆ์•ก์ด ์ „๋ถ€์ž…๋‹ˆ๋‹ค.** ๋น„์‹ผ ๋ชจ๋ธ์ด ๋ฐ˜๋ณต ์ฒ˜๋ฆฌํ•ด ์˜จ ์‰ฌ์šด ์ž‘์—…์„ ๋” ์‹ผ ๋ชจ๋ธ๋กœ ๋‚ด๋ ค๋ณด๋‚ด์„œ **์‹ค์ œ๋กœ ์•„๋‚€ ๋ˆ**์ด๊ณ , ์˜†์—๋Š” ๊ทธ ๋ˆ์ด ์–ด๋А ๋ชจ๋ธ์—์„œ ์–ด๋А ๋ชจ๋ธ๋กœ ์˜ฎ๊ฒจ์„œ ์ƒ๊ฒผ๋Š”์ง€๊ฐ€ ๊ทธ๋Œ€๋กœ ๋ถ™์Šต๋‹ˆ๋‹ค.
11
+ **statusline ์ฒซ์งธ ์ค„์— ํ‘œ์‹œ๋˜๋Š” ์ด ๊ธˆ์•ก์ด ์ด ๋„๊ตฌ์˜ ์ „๋ถ€์ž…๋‹ˆ๋‹ค.** ๋น„์‹ผ ๋ชจ๋ธ์ด ๋ฐ˜๋ณตํ•ด์„œ ์ฒ˜๋ฆฌํ•ด ์˜จ ์‰ฌ์šด ์ž‘์—…์„ ๋” ์‹ผ ๋ชจ๋ธ์— ๋„˜๊ฒจ์„œ **์‹ค์ œ๋กœ ์ ˆ๊ฐํ•œ ๋น„์šฉ**์ด๋ฉฐ, ๊ทธ ์˜†์—๋Š” ์–ด๋А ๋ชจ๋ธ์—์„œ ์–ด๋А ๋ชจ๋ธ๋กœ ์ž‘์—…์ด ์˜ฎ๊ฒจ ๊ฐ€๋ฉด์„œ ๊ทธ ๊ธˆ์•ก์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€๊ฐ€ ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
14
12
 
15
- ์ด ์ˆซ์ž๋Š” ์ถ”์ •์น˜๋‚˜ ํ™๋ณด ๋ฌธ๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ **์›์žฅ(ledger)์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค.** ์œ„์ž„๋œ ์„œ๋ธŒ์—์ด์ „ํŠธ ์‹คํ–‰ ํ•˜๋‚˜ํ•˜๋‚˜์— ๋Œ€ํ•ด
13
+ ์ด ์ˆซ์ž๋Š” ์ถ”์ •์น˜๋‚˜ ํ™๋ณด ๋ฌธ๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ **์›์žฅ(ledger)์— ๊ธฐ๋ก๋œ ์‹ค์ธก๊ฐ’์ž…๋‹ˆ๋‹ค.** ์œ„์ž„๋œ ์„œ๋ธŒ์—์ด์ „ํŠธ ์‹คํ–‰ ํ•˜๋‚˜ํ•˜๋‚˜๋งˆ๋‹ค ๋‹ค์Œ ์„ธ ๊ฐ€์ง€๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
16
14
 
17
- - **๊ธฐ์ค€(before)** โ€” ๋ฃฐ ์Šน๊ฒฉ ์ „ ๊ทธ ์œ ํ˜•์„ ์‹ค์ œ๋กœ ์ฒ˜๋ฆฌํ•˜๋˜ ๋ชจ๋ธ
18
- - **๊ฒฐ๊ณผ(after)** โ€” ์‹ค์ œ๋กœ ๊ทธ ์ผ์„ ์ฒ˜๋ฆฌํ•œ ๋ชจ๋ธ
19
- - **์ฐจ์•ก** โ€” ๊ฐ™์€ ํ† ํฐ๋Ÿ‰์— ๋‘ ๋ชจ๋ธ์˜ ๊ฐ€๊ฒฉํ‘œ๋ฅผ ๊ฐ๊ฐ ์ ์šฉํ•œ ๊ฐ’
15
+ - **๊ธฐ์ค€ ๋ชจ๋ธ(before):** ๋ฃฐ์„ ์Šน๊ฒฉํ•˜๊ธฐ ์ „์— ๊ทธ ์œ ํ˜•์„ ์‹ค์ œ๋กœ ์ฒ˜๋ฆฌํ•˜๋˜ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.
16
+ - **์‹คํ–‰ ๋ชจ๋ธ(after):** ๊ทธ ์ž‘์—…์„ ์‹ค์ œ๋กœ ์ฒ˜๋ฆฌํ•œ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.
17
+ - **์ฐจ์•ก:** ๋™์ผํ•œ ํ† ํฐ๋Ÿ‰์— ๋‘ ๋ชจ๋ธ์˜ ๊ฐ€๊ฒฉํ‘œ๋ฅผ ๊ฐ๊ฐ ์ ์šฉํ•ด ๊ณ„์‚ฐํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.
20
18
 
21
- ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ `route-scan savings` ํ•œ ์ค„์ด๋ฉด **๋ชจ๋“  ๊ธˆ์•ก์„ ๋ฃฐ ๋‹จ์œ„๊นŒ์ง€ ๋˜์งš์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.**
19
+ ๊ทธ๋ž˜์„œ `route-scan savings` ๋ช…๋ น ํ•œ ๋ฒˆ์ด๋ฉด **๋ชจ๋“  ๊ธˆ์•ก์„ ์–ด๋–ค ๋ฃฐ์ด ๋งŒ๋“ค์–ด ๋ƒˆ๋Š”์ง€๊นŒ์ง€ ๊ฑฐ์Šฌ๋Ÿฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.**
22
20
 
23
21
  ```bash
24
22
  $ claude-token-saver route-scan savings
@@ -34,44 +32,50 @@ $ claude-token-saver route-scan savings
34
32
  ๋ฃฐ: T2|paste|-Users-me-projects-my-app
35
33
  ```
36
34
 
37
- **์ •์งํ•˜๊ฒŒ ์„ธ๋Š” ๊ฒƒ์ด ์„ค๊ณ„ ์›์น™์ž…๋‹ˆ๋‹ค.** ๋“ฑ๋ก๋œ ๋ฃฐ์ด ์ปค๋ฒ„ํ•˜์ง€ ์•Š๋Š” ์œ„์ž„(`Explore`, ์ง์ ‘ ๋งŒ๋“  ์—์ด์ „ํŠธ, ํ”Œ๋Ÿฌ๊ทธ์ธ ์—์ด์ „ํŠธ)์€ ์ด ๋„๊ตฌ๊ฐ€ ๋ผ์šฐํŒ…ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ **๊ธˆ์•ก์—์„œ ์ œ์™ธ**ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ๋ช…์„ ๊ฐ€๊ฒฉํ‘œ๊ฐ€ ์•Œ์•„๋ณด์ง€ ๋ชปํ•˜๋ฉด ํ‹€๋ฆฐ ๊ธˆ์•ก์„ ๋‚ด๋†“๋Š” ๋Œ€์‹  ๊ทธ ์‹คํ–‰์„ **๋นผ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค**. ์ž‘๊ฒŒ ๋‚˜์˜ค๋”๋ผ๋„ ์‹ค์ œ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.
35
+ **์ •์งํ•˜๊ฒŒ ์ง‘๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์ด ๋„๊ตฌ์˜ ์„ค๊ณ„ ์›์น™์ž…๋‹ˆ๋‹ค.** ๋“ฑ๋ก๋œ ๋ฃฐ์ด ๋‹ด๋‹นํ•˜์ง€ ์•Š๋Š” ์œ„์ž„(`Explore`, ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋งŒ๋“  ์—์ด์ „ํŠธ, ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ œ๊ณตํ•˜๋Š” ์—์ด์ „ํŠธ)์€ ์ด ๋„๊ตฌ๊ฐ€ ๋ผ์šฐํŒ…ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ **๊ธˆ์•ก์—์„œ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.** ๊ฐ€๊ฒฉํ‘œ๊ฐ€ ๋ชจ๋ธ๋ช…์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ํ‹€๋ฆฐ ๊ธˆ์•ก์„ ํ‘œ์‹œํ•˜๋Š” ๋Œ€์‹  **๊ทธ ์‹คํ–‰์„ ์ง‘๊ณ„์—์„œ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.** ๊ทธ๋ž˜์„œ ๊ธˆ์•ก์ด ์ž‘๊ฒŒ ๋‚˜์˜ฌ ์ˆ˜๋Š” ์žˆ์–ด๋„, ํ‘œ์‹œ๋˜๋Š” ๊ฐ’์€ ์–ธ์ œ๋‚˜ ์‹ค์ œ๋กœ ์ ˆ๊ฐํ•œ ๊ธˆ์•ก์ž…๋‹ˆ๋‹ค.
38
36
 
39
37
  ```bash
40
38
  npm i -g claude-token-saver # postinstall์ด statusline + Skill ์ž๋™ ๋“ฑ๋ก
41
39
  ```
42
40
 
43
- ![statusline ์˜ˆ์‹œ](./docs/statusline.png)
44
-
45
41
  ---
46
42
 
47
- ## โšก ์™œ ์“ฐ๋‚˜ โ€” 30์ดˆ ์š”์•ฝ
43
+ ## โšก ์™œ ์“ฐ๋Š”๊ฐ€: 30์ดˆ ์š”์•ฝ
48
44
 
49
45
  | | |
50
46
  |---|---|
51
- | ๐Ÿ”€ **๋ผ์šฐํŒ… ์ ˆ๊ฐ ์‹ค์ธก** | ์œ„์ž„์œผ๋กœ ์•„๋‚€ ๊ธˆ์•ก์„ ์›์žฅ์— ์‹คํ–‰ ๋‹จ์œ„๋กœ ๊ธฐ๋ก โ†’ statusline 1์ค„์งธ์— ๋ˆ„์  + ๋ชจ๋ธ ์ด๋™ ๋‚ด์—ญ (`route-scan savings`๋กœ ์ „์ˆ˜ ์ถ”์ ) |
52
- | ๐ŸŽฏ **๋ชจ๋ธ ํ”ผํŒ… ์œ„์ž„** | ์ƒ์œ„ ๋ชจ๋ธ(opus/fable)์ด ๋ฐ˜๋ณต ์ฒ˜๋ฆฌํ•ด ์˜จ easy ์ž‘์—…์„ ํ‹ฐ์–ด(T0/T1/T2)๋กœ ๋ถ„๋ฅ˜ โ†’ haiku/sonnet ์œ„์ž„ ๋ฃฐ๋กœ ์Šน๊ฒฉ, ๋‹ค์Œ ์„ธ์…˜๋ถ€ํ„ฐ ์ž๋™ ์ ์šฉ |
53
- | ๐Ÿ’ธ **๋น„์šฉ ์‹ค์ธก โˆ’18.6%** | harness+ratchet ๋„์ž… ์ „ํ›„, ์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€๋‹น ๋น„์šฉ $2.35 โ†’ $1.91 (์ €์ž ๋กœ๊ทธ, [์ƒ์„ธ](#์‹ค์ œ-ํšจ๊ณผ--๋„์ž…-์ „ํ›„-๋ฆฌํฌํŠธ)) |
54
- | ๐Ÿšจ **ํ•œ๋„ ์ดˆ๊ณผ ์˜ˆ๋ฐฉ** | 5H/7D rate-limit ์œˆ๋„ 90% ๋„๋‹ฌ ์‹œ ์ฆ‰์‹œ ๊ฒฝ๊ณ  + `handoff`๋กœ ์ž‘์—… ๋ฐฑ์—… |
55
- | ๐Ÿง  **์บ์‹œ ๋‚ญ๋น„ ๊ฐ์ง€** | ํžˆํŠธ์œจยทTTL ์นด์šดํŠธ๋‹ค์šดยท1M ์ปจํ…์ŠคํŠธ ์ž๋™ ๊ฐ์ง€ โ€” ํ† ํฐ ๊ธ‰์ฆ ์›์ธ์„ ์ฝ”๋“œ๋กœ ์ง„๋‹จ |
56
- | ๐Ÿ…ท **๊ฐ™์€ ์‹ค์ˆ˜ ์ฐจ๋‹จ** | ๋ฐ˜๋ณต ์—๋Ÿฌ๋ฅผ ๊ฐ์ง€ํ•ด ratchet ๋ฃฐ๋กœ ์Šน๊ฒฉ โ€” ๋‹ค์Œ ์„ธ์…˜๋ถ€ํ„ฐ ์ž๋™ ์ ์šฉ |
47
+ | ๐Ÿ”€ **๋ผ์šฐํŒ… ์ ˆ๊ฐ์•ก ์‹ค์ธก** | ์œ„์ž„์œผ๋กœ ์ ˆ๊ฐํ•œ ๊ธˆ์•ก์„ ์‹คํ–‰ ๋‹จ์œ„๋กœ ์›์žฅ์— ๊ธฐ๋กํ•˜๊ณ , statusline ์ฒซ์งธ ์ค„์— ๋ˆ„์ ์•ก๊ณผ ๋ชจ๋ธ ์ด๋™ ๋‚ด์—ญ์„ ํ•จ๊ป˜ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค (`route-scan savings`๋กœ ์ „์ˆ˜ ํ™•์ธ) |
48
+ | ๐ŸŽฏ **๋ชจ๋ธ ํ”ผํŒ… ์œ„์ž„** | ์ƒ์œ„ ๋ชจ๋ธ(opusยทfable)์ด ๋ฐ˜๋ณต ์ฒ˜๋ฆฌํ•ด ์˜จ ์‰ฌ์šด ์ž‘์—…์„ ํ‹ฐ์–ด(T0/T1/T2)๋กœ ๋ถ„๋ฅ˜ํ•œ ๋’ค haikuยทsonnet ์œ„์ž„ ๋ฃฐ๋กœ ์Šน๊ฒฉํ•˜๊ณ , ๋‹ค์Œ ์„ธ์…˜๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค |
49
+ | ๐Ÿ’ธ **๋น„์šฉ ์‹ค์ธก โˆ’18.6%** | harness์™€ ratchet์„ ๋„์ž…ํ•˜๊ธฐ ์ „ํ›„๋กœ ์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€๋‹น ๋น„์šฉ์ด $2.35์—์„œ $1.91๋กœ ์ค„์—ˆ์Šต๋‹ˆ๋‹ค (์ €์ž์˜ ์‹ค์‚ฌ์šฉ ๋กœ๊ทธ, [์ƒ์„ธ](#์‹ค์ œ-ํšจ๊ณผ-๋„์ž…-์ „ํ›„-๋ฆฌํฌํŠธ)) |
50
+ | ๐Ÿšจ **ํ•œ๋„ ์ดˆ๊ณผ ์˜ˆ๋ฐฉ** | 5์‹œ๊ฐ„ยท7์ผ rate-limit ์œˆ๋„๊ฐ€ 90%์— ๋„๋‹ฌํ•˜๋ฉด ์ฆ‰์‹œ ๊ฒฝ๊ณ ํ•˜๊ณ , `handoff`๋กœ ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—…์„ ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค |
51
+ | ๐Ÿง  **์บ์‹œ ๋‚ญ๋น„ ๊ฐ์ง€** | ํžˆํŠธ์œจ๊ณผ TTL ์นด์šดํŠธ๋‹ค์šด, 1M ์ปจํ…์ŠคํŠธ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•ด ํ† ํฐ์ด ๊ธ‰์ฆํ•œ ์›์ธ์„ ์ฝ”๋“œ๋กœ ์ง„๋‹จํ•ฉ๋‹ˆ๋‹ค |
52
+ | ๐Ÿ…ท **๊ฐ™์€ ์‹ค์ˆ˜ ์ฐจ๋‹จ** | ๋ฐ˜๋ณต๋˜๋Š” ์—๋Ÿฌ๋ฅผ ๊ฐ์ง€ํ•ด ratchet ๋ฃฐ๋กœ ์Šน๊ฒฉํ•˜๊ณ , ๋‹ค์Œ ์„ธ์…˜๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค |
53
+
54
+ ## ๋ผ์šฐํ„ฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค: 60์ดˆ ์„ค๋ช…
55
+
56
+ ์ด ๋„๊ตฌ๋Š” ์š”์ฒญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ€๋กœ์ฑ„์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
57
+ **์„ธ์…˜์ด ๋๋‚œ ๋’ค์—** ๋กœ์ปฌ ๊ธฐ๋ก์„ ์ฝ์–ด์„œ ๋น„์‹ผ ๋ชจ๋ธ์ด ๋ฐ˜๋ณตํ•ด์„œ ์ฒ˜๋ฆฌํ•ด ์˜จ ์‰ฌ์šด ์œ ํ˜•์„ ์ฐพ์•„๋‚ด๊ณ ,
58
+ ๊ทธ ์œ ํ˜•์€ **๋‹ค์Œ ์„ธ์…˜๋ถ€ํ„ฐ** ๋” ์‹ผ ๋ชจ๋ธ์ด ๋งก๋„๋ก ๋ฃฐ๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ๋ฃฐ์˜ ์ ์šฉ ๋ฒ”์œ„๋Š” ๊ธ€๋กœ๋ฒŒ๊ณผ ํ”„๋กœ์ ํŠธ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
57
59
 
58
- ## ๋ผ์šฐํ„ฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค โ€” 60์ดˆ
60
+ ### ์‹ค์‹œ๊ฐ„ ๋ชจ๋ธ ๋ผ์šฐํŒ…์ด ์˜คํžˆ๋ ค ๋น„์šฉ์„ ํ‚ค์šฐ๋Š” ์ด์œ 
59
61
 
60
- ์š”์ฒญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ€๋กœ์ฑ„์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
61
- **์„ธ์…˜์ด ๋๋‚œ ๋’ค** ๋กœ์ปฌ ๊ธฐ๋ก์„ ์ฝ์–ด์„œ, ๋น„์‹ผ ๋ชจ๋ธ์ด ๋ฐ˜๋ณตํ•ด์„œ ์ฒ˜๋ฆฌํ•ด ์˜จ ์‰ฌ์šด ์œ ํ˜•์„ ๋ฝ‘๊ณ ,
62
- ๊ทธ ์œ ํ˜•์€ **๋‹ค์Œ ์„ธ์…˜๋ถ€ํ„ฐ** ์‹ผ ๋ชจ๋ธ์ด ๋งก๋„๋ก ๋ฃฐ๋กœ ๊ฒ๋‹ˆ๋‹ค. ๋ฃฐ์€ ๊ธ€๋กœ๋ฒŒยทํ”„๋กœ์ ํŠธ๋กœ ๋ฒ”์œ„๊ฐ€ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
62
+ ์„ธ์…˜ ๋„์ค‘์— ๋ชจ๋ธ์„ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด ์ด ๋„๊ตฌ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.
63
63
 
64
- ์„ธ์…˜ ์ค‘๊ฐ„์— ๋ชจ๋ธ์„ ๋ฐ”๊พธ์ง€ ์•Š๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ํ”„๋กฌํ”„ํŠธ ์บ์‹œ๋Š” ๋ชจ๋ธ๋ณ„์ด๋ผ ์ค‘๊ฐ„ ์ „ํ™˜์€ ๋ˆ„์  ์บ์‹œ๋ฅผ ํ†ต์งธ๋กœ ๋‚ ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” **์„œ๋ธŒ์—์ด์ „ํŠธ ์œ„์ž„**๋งŒ ์“ฐ๋ฏ€๋กœ ๋ฉ”์ธ ์„ธ์…˜์˜ ์บ์‹œ๊ฐ€ ๊นจ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
64
+ ํ”„๋กฌํ”„ํŠธ ์บ์‹œ๋Š” **๋ชจ๋ธ๋ณ„๋กœ ๋”ฐ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.** ๊ทธ๋ž˜์„œ ์„ธ์…˜ ์ค‘๊ฐ„์— ๋” ์‹ผ ๋ชจ๋ธ๋กœ ์ „ํ™˜ํ•˜๋ฉด ์ƒˆ ๋ชจ๋ธ์€ ๋นˆ ์บ์‹œ์—์„œ ์‹œ์ž‘ํ•˜๊ณ , ๊ทธ๋•Œ๊นŒ์ง€ ์Œ“์ธ ๋Œ€ํ™” ์ „์ฒด๋ฅผ ์ •๊ฐ€๋กœ ๋‹ค์‹œ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์บ์‹œ ํžˆํŠธ๋Š” ์›๋ž˜ ์ž…๋ ฅ๊ฐ€์˜ 10๋ถ„์˜ 1 ์ˆ˜์ค€์ด๋ฏ€๋กœ, ๋Œ€ํ™”๊ฐ€ 2๋งŒ ํ† ํฐ๋งŒ ๋„˜์–ด๊ฐ€๋„ **์ „ํ™˜ ํ•œ ๋ฒˆ์— ๊ทธ๋‚  ์•„๋‚€ ๊ธˆ์•ก์ด ํ†ต์งธ๋กœ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.** ์‹ผ ๋ชจ๋ธ๋กœ ์˜ฎ๊ฒผ๋Š”๋ฐ ์ฒญ๊ตฌ์„œ๋Š” ๋” ์ปค์ง€๋Š”, ์‹ค์‹œ๊ฐ„ ๋ผ์šฐํŒ…์˜ ๋Œ€ํ‘œ์ ์ธ ์—ญ์„ค์ž…๋‹ˆ๋‹ค.
65
+
66
+ ์‹ค์ œ๋กœ ๋ผ์šฐํŒ… ์ œํ’ˆ์„ ๋งŒ๋“ค๋˜ ํŒ€๋“ค์ด ๊ฐ™์€ ์ด์œ ๋กœ ๊ธฐ๋Šฅ์„ ๊ป์Šต๋‹ˆ๋‹ค: [LLM ๋ผ์šฐํ„ฐ๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ๋“ค์ด ์ง์ ‘ ๊ป์Šต๋‹ˆ๋‹ค #Shorts](https://www.youtube.com/shorts/SK-GoAABjbg)
67
+
68
+ ์ด ๋„๊ตฌ๋Š” ๊ทธ๋ž˜์„œ ๋ฉ”์ธ ์„ธ์…˜์˜ ๋ชจ๋ธ์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. **์„œ๋ธŒ์—์ด์ „ํŠธ ์œ„์ž„๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ** ๋ฉ”์ธ ์„ธ์…˜์˜ ์บ์‹œ๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๊ณ , ์œ„์ž„๋œ ์ž‘์—…๋งŒ ๋ณ„๋„ ์ปจํ…์ŠคํŠธ์—์„œ ์‹ผ ๋ชจ๋ธ์ด ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ ˆ๊ฐ์•ก์ด ์บ์‹œ ์†์‹ค๋กœ ์ƒ์‡„๋˜์ง€ ์•Š๋Š” ์ด์œ ๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.
65
69
 
66
70
  ```bash
67
71
  npm i -g claude-token-saver@latest
68
- claude-token-saver route-scan # ๋‚ด ์ง€๋‚œ ์„ธ์…˜์—์„œ ์œ„์ž„ ํ›„๋ณด ๋ฝ‘๊ธฐ (LLM ํ˜ธ์ถœ 0)
72
+ claude-token-saver route-scan # ์ง€๋‚œ ์„ธ์…˜์—์„œ ์œ„์ž„ ํ›„๋ณด ์ถ”์ถœ (LLM ํ˜ธ์ถœ ์—†์Œ)
69
73
  claude-token-saver route-scan rules # ์Šน๊ฒฉ๋œ ๋ฃฐ ํ™•์ธ ยท rm <N> ์œผ๋กœ ์‚ญ์ œ
70
- claude-token-saver route-scan savings # ์œ„์ž„์œผ๋กœ ์•„๋‚€ ๊ธˆ์•ก์˜ ๊ทผ๊ฑฐ ์ „์ˆ˜ ํ™•์ธ
74
+ claude-token-saver route-scan savings # ์œ„์ž„์œผ๋กœ ์ ˆ๊ฐํ•œ ๊ธˆ์•ก์˜ ๊ทผ๊ฑฐ๋ฅผ ์ „์ˆ˜ ํ™•์ธ
71
75
  ```
72
76
 
73
- ๊ธฐ์ค€์„ ์€ ๋‚จ์˜ ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์•„๋‹ˆ๋ผ **๋‚ด ์ตœ๊ทผ 14์ผ ๋ถ„ํฌ(p25/p75)** ๋กœ ์žก์Šต๋‹ˆ๋‹ค.
74
- ๋„˜๊ธด ๋’ค ์‹ค์ œ๋กœ ์ž˜ ๋๋Š”์ง€๊นŒ์ง€ ์žฌ๋Š” ์‹ค์ธก rule-health๋Š” [v3.9.0](#v390-2026-08-01)์— ๋“ค์–ด๊ฐ”์Šต๋‹ˆ๋‹ค.
77
+ ํŒ์ • ๊ธฐ์ค€์„ ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์•„๋‹ˆ๋ผ **์‚ฌ์šฉ์ž ๋ณธ์ธ์˜ ์ตœ๊ทผ 14์ผ ๋ถ„ํฌ(p25/p75)** ๋กœ ์žก์Šต๋‹ˆ๋‹ค.
78
+ ์œ„์ž„ํ•œ ๋’ค์— ์‹ค์ œ๋กœ ์„ฑ๊ณตํ–ˆ๋Š”์ง€๊นŒ์ง€ ์ธก์ •ํ•˜๋Š” rule-health๋Š” [v3.9.0](#v390-2026-08-01)์— ๋“ค์–ด๊ฐ”์Šต๋‹ˆ๋‹ค.
75
79
 
76
80
  ---
77
81
 
@@ -84,43 +88,45 @@ npm uninstall -g claude-cache-monitor # (๊ตฌ ํŒจํ‚ค์ง€ ์‚ฌ์šฉ์ž๋งŒ)
84
88
  npm i -g claude-token-saver
85
89
  ```
86
90
 
87
- ์„ค์น˜ ์ฆ‰์‹œ Claude Code ํ•˜๋‹จ์— statusline์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. `--ignore-scripts`/sudo ๋“ฑ์œผ๋กœ ์ž๋™ ๋“ฑ๋ก์ด ์•ˆ ๋๋‹ค๋ฉด `claude-token-saver install`๋กœ ์ˆ˜๋™ ๋“ฑ๋กํ•˜์„ธ์š”.
91
+ ์„ค์น˜ํ•˜๋ฉด Claude Code ํ™”๋ฉด ํ•˜๋‹จ์— statusline์ด ๊ณง๋ฐ”๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. `--ignore-scripts` ์˜ต์…˜์ด๋‚˜ sudo ์‚ฌ์šฉ ๋“ฑ์œผ๋กœ ์ž๋™ ๋“ฑ๋ก์ด ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด `claude-token-saver install`์„ ์‹คํ–‰ํ•ด ์ง์ ‘ ๋“ฑ๋กํ•˜์‹ญ์‹œ์˜ค.
92
+
93
+ ์„ค์น˜ ํ•œ ๋ฒˆ์œผ๋กœ **statusline๊ณผ Skill, SessionStart ํ›…, ๐Ÿ…ท Harness(5์›์น™), ์ตœ์ดˆ route-scan์ด** ๋ชจ๋‘ ์ค€๋น„๋ฉ๋‹ˆ๋‹ค. Harness๋Š” `~/.claude/CLAUDE.md`์— ํ‘œ์‹œ๊ฐ€ ๋ถ™์€ ๋ธ”๋ก์œผ๋กœ **์ถ”๊ฐ€๋˜๋ฉฐ**, ๊ธฐ์กด์— ์ž‘์„ฑํ•ด ๋‘” ๋‚ด์šฉ์€ ๋ฐฑ์—…ํ•œ ๋’ค ๊ทธ๋Œ€๋กœ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž๋™ ์„ค์ •์„ ์›ํ•˜์ง€ ์•Š์œผ๋ฉด `CTS_NO_HARNESS=1 npm i -g claude-token-saver`๋กœ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ๊ณ , ์ด๋ฏธ ์ ์šฉํ•œ ์„ค์ •์„ ๋˜๋Œ๋ฆฌ๋ ค๋ฉด `claude-token-saver harness uninit --global`์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.
88
94
 
89
- > โš ๏ธ sudo ๊ธ€๋กœ๋ฒŒ ์„ค์น˜๋Š” Skill์ด root์˜ `~/.claude`์— ๋“ฑ๋ก๋˜๋Š” ํ•จ์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค โ€” nvm/fnm/Volta๋กœ ์‚ฌ์šฉ์ž ์˜์—ญ ์„ค์น˜๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
95
+ > โš ๏ธ sudo๋กœ ๊ธ€๋กœ๋ฒŒ ์„ค์น˜๋ฅผ ํ•˜๋ฉด Skill์ด ์‚ฌ์šฉ์ž ๊ณ„์ •์ด ์•„๋‹ˆ๋ผ root์˜ `~/.claude`์— ๋“ฑ๋ก๋˜๋Š” ํ•จ์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. nvm์ด๋‚˜ fnm, Volta๋ฅผ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž ์˜์—ญ์— ์„ค์น˜ํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
90
96
 
91
97
  ## statusline ์ฝ๋Š” ๋ฒ•
92
98
 
93
- ์ ˆ๊ฐ ์›์žฅ์— ๊ธฐ๋ก์ด ์Œ“์ด๋ฉด **๋‘ ์ค„**๋กœ ๋‚˜์˜ต๋‹ˆ๋‹ค. 1์ค„์งธ๋Š” ๋ผ์šฐํŒ… ์ ˆ๊ฐ๋งŒ, 2์ค„์งธ๋Š” ์ง„๋‹จ ์นฉ์ž…๋‹ˆ๋‹ค.
99
+ ์ ˆ๊ฐ ์›์žฅ์— ๊ธฐ๋ก์ด ์Œ“์ด๋ฉด statusline์ด **๋‘ ์ค„๋กœ** ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ ์ค„์—๋Š” ๋ผ์šฐํŒ… ์ ˆ๊ฐ์•ก๋งŒ ํ‘œ์‹œํ•˜๊ณ , ๋‘˜์งธ ์ค„์—๋Š” ์ง„๋‹จ ์นฉ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
94
100
 
95
101
  ```
96
102
  ๐Ÿ”€ Routing saved $2.09 | fableโ†’sonnet 1ร— $0.72 ยท opusโ†’haiku 1ร— $0.57
97
103
  โš  Ctx 200k+ ยท ๐Ÿ…ท 5/5 ยท ๐Ÿค– Opus 5 ยท ๐Ÿง  Cache hit 98.8% ยท โณ Cache expires 59:46 ยท โœฆ current โ–ˆโ–ˆโ–ˆโ–“โ–‘โ–‘ 62% ๐Ÿ”„ 21:33 ยท ๐Ÿ“… weekly โ–ˆโ–ˆโ–’โ–‘โ–‘โ–‘ 38% ๐Ÿ”„ Tue 19:33 ยท ๐Ÿ“ฆ Ctx 47% of 1M ยท ๐Ÿ’ฐ Cache saved $1.0K ยท last 1d
98
104
  ```
99
105
 
100
- ์›์žฅ์ด ๋น„์–ด ์žˆ์œผ๋ฉด(์•„์ง ์œ„์ž„ ์‹ค์ธก์ด ์—†์œผ๋ฉด) 1์ค„์งธ๋Š” ๊ทธ๋ฆฌ์ง€ ์•Š๊ณ  ์ข…์ „์ฒ˜๋Ÿผ ํ•œ ์ค„๋กœ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ™˜๊ฒฝ(macOS ๊ตฌ๋ฒ„์ „ Claude Code)์—์„œ ์ฒซ ์ค„๋งŒ ๋ Œ๋”๋œ๋‹ค๋ฉด `--single-line`์œผ๋กœ ํ•œ ์ค„ ๋ ˆ์ด์•„์›ƒ์„ ์œ ์ง€ํ•˜์„ธ์š”.
106
+ ์›์žฅ์ด ๋น„์–ด ์žˆ์œผ๋ฉด, ๋‹ค์‹œ ๋งํ•ด ์•„์ง ์‹ค์ธก๋œ ์œ„์ž„์ด ์—†์œผ๋ฉด ์ฒซ์งธ ์ค„์„ ๊ทธ๋ฆฌ์ง€ ์•Š๊ณ  ์ข…์ „์ฒ˜๋Ÿผ ํ•œ ์ค„๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ™˜๊ฒฝ(๊ตฌ๋ฒ„์ „ macOS Claude Code)์—์„œ ์ฒซ์งธ ์ค„๋งŒ ํ‘œ์‹œ๋œ๋‹ค๋ฉด `--single-line` ์˜ต์…˜์œผ๋กœ ํ•œ ์ค„ ๋ ˆ์ด์•„์›ƒ์„ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค.
101
107
 
102
108
  | ์„ธ๊ทธ๋จผํŠธ | ์˜๋ฏธ |
103
109
  |---|---|
104
- | `๐Ÿ”€` **1์ค„์งธ** | **๋ผ์šฐํŒ…์œผ๋กœ ์•„๋‚€ ๋ˆ„์  ๊ธˆ์•ก + ๋ชจ๋ธ ์ด๋™ ๋‚ด์—ญ.** ๊ธˆ์•ก์ด ๋…น์ƒ‰, ๋‚ด์—ญ์€ ํšŒ์ƒ‰์ž…๋‹ˆ๋‹ค. ๋‚ด์—ญ์˜ ํ•ฉ์€ ๋ˆ„์ ๊ณผ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋ฉฐ(์ „๋ถ€ ํ‘œ์‹œ, ์ž˜๋ผ๋‚ด์ง€ ์•Š์Œ), ๋ฒ„์ „ ์ˆซ์ž๋Š” ๊ณ„์† ๋ฐ”๋€Œ๋ฏ€๋กœ ๊ณ„์—ด๋ช…๋งŒ ๋‚จ๊น๋‹ˆ๋‹ค(`claude-opus-4-5-โ€ฆ` โ†’ `opus`). ๊ทผ๊ฑฐ ์ „์ˆ˜๋Š” `route-scan savings` |
110
+ | `๐Ÿ”€` **์ฒซ์งธ ์ค„** | **๋ผ์šฐํŒ…์œผ๋กœ ์ ˆ๊ฐํ•œ ๋ˆ„์  ๊ธˆ์•ก๊ณผ ๋ชจ๋ธ ์ด๋™ ๋‚ด์—ญ์ž…๋‹ˆ๋‹ค.** ๋ˆ„์  ๊ธˆ์•ก์€ ๋…น์ƒ‰์œผ๋กœ, ๋‚ด์—ญ์€ ํšŒ์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‚ด์—ญ์„ ๋ชจ๋‘ ๋”ํ•˜๋ฉด ๋ˆ„์  ๊ธˆ์•ก๊ณผ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋ฉฐ(์ž˜๋ผ๋‚ด์ง€ ์•Š๊ณ  ์ „๋ถ€ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค), ๋ฒ„์ „ ์ˆซ์ž๋Š” ๊ณ„์† ๋ฐ”๋€Œ๋ฏ€๋กœ ๊ณ„์—ด๋ช…๋งŒ ๋‚จ๊น๋‹ˆ๋‹ค(`claude-opus-4-5-โ€ฆ` โ†’ `opus`). ๊ทผ๊ฑฐ๋ฅผ ์ „๋ถ€ ํ™•์ธํ•˜๋ ค๋ฉด `route-scan savings`๋ฅผ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค |
105
111
  | `๐Ÿค–` | ํ˜„์žฌ ๋ชจ๋ธ |
106
112
  | `๐Ÿ…ท 5/5` | harness ์›์น™ ์ ์ˆ˜ ([Harness ๋ชจ๋“œ](#-harness-๋ชจ๋“œ)) |
107
113
  | `๐Ÿง ` | ์บ์‹œ ํžˆํŠธ์œจ (85%+ ๋…น์ƒ‰) |
108
- | `โณ` | ์บ์‹œ TTL ์นด์šดํŠธ๋‹ค์šด โ€” ๋งŒ๋ฃŒ ์ „์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด ์บ์‹œ ์œ ์ง€ |
114
+ | `โณ` | ์บ์‹œ TTL ์นด์šดํŠธ๋‹ค์šด์ž…๋‹ˆ๋‹ค. ๋งŒ๋ฃŒ๋˜๊ธฐ ์ „์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด ์บ์‹œ๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค |
109
115
  | `โœฆ current` / `๐Ÿ“… weekly` | 5์‹œ๊ฐ„ / 7์ผ rate-limit ์œˆ๋„ ์‚ฌ์šฉ๋ฅ  + ๋ฆฌ์…‹ ์‹œ๊ฐ |
110
- | `๐Ÿ“ฆ` | ์ปจํ…์ŠคํŠธ ์‚ฌ์šฉ๋ฅ  (์˜ˆ: `Ctx 68% of 1M`) โ€” ์‚ฌ์šฉ๋ฅ  ๊ธฐ์ค€ ๋…น/ํ™ฉ/์ . ํ˜„์žฌ ๋ชจ๋ธ์€ 1M์ด ๊ธฐ๋ณธยทํ”„๋ฆฌ๋ฏธ์—„ ์—†์Œ์ด์ง€๋งŒ, ํ† ํฐ๋Ÿ‰ ์ž์ฒด๊ฐ€ ํ„ด๋‹น ๋น„์šฉ๊ณผ 5H/7D ํ•œ๋„๋ฅผ ํƒœ์›๋‹ˆ๋‹ค |
111
- | `๐Ÿ’ฐ` | ํ”„๋กฌํ”„ํŠธ ์บ์‹œ๊ฐ€ ์ ˆ์•ฝํ•ด์ค€ ๋ˆ„์  ๊ธˆ์•ก โ€” 1์ค„์งธ `๐Ÿ”€`(๋ชจ๋ธ ๋ผ์šฐํŒ… ์ ˆ๊ฐ)์™€๋Š” **๋‹ค๋ฅธ ์ˆ˜์น˜**์ž…๋‹ˆ๋‹ค |
116
+ | `๐Ÿ“ฆ` | ์ปจํ…์ŠคํŠธ ์‚ฌ์šฉ๋ฅ ์ž…๋‹ˆ๋‹ค(์˜ˆ: `Ctx 68% of 1M`). ์‚ฌ์šฉ๋ฅ ์— ๋”ฐ๋ผ ๋…น์ƒ‰ยท๋…ธ๋ž€์ƒ‰ยท๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ชจ๋ธ์€ 1M ์ปจํ…์ŠคํŠธ๊ฐ€ ๊ธฐ๋ณธ์ด๊ณ  ๋ณ„๋„ ์š”๊ธˆ์ด ๋ถ™์ง€ ์•Š์ง€๋งŒ, ํ† ํฐ๋Ÿ‰ ์ž์ฒด๊ฐ€ ํ„ด๋‹น ๋น„์šฉ๊ณผ 5์‹œ๊ฐ„ยท7์ผ ํ•œ๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ์†Œ๋ชจ์‹œํ‚ต๋‹ˆ๋‹ค |
117
+ | `๐Ÿ’ฐ` | ํ”„๋กฌํ”„ํŠธ ์บ์‹œ๊ฐ€ ์ ˆ์•ฝํ•ด ์ค€ ๋ˆ„์  ๊ธˆ์•ก์ž…๋‹ˆ๋‹ค. ์ฒซ์งธ ์ค„์˜ `๐Ÿ”€`(๋ชจ๋ธ ๋ผ์šฐํŒ… ์ ˆ๊ฐ์•ก)์™€๋Š” **์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜์น˜์ž…๋‹ˆ๋‹ค** |
112
118
 
113
- ๋ฌธ์ œ๊ฐ€ ๊ฐ์ง€๋˜๋ฉด **๊ฒฝ๊ณ  ์นฉ์ด ๋งจ ์•ž์—** ๋ถ™์Šต๋‹ˆ๋‹ค:
119
+ ๋ฌธ์ œ๊ฐ€ ๊ฐ์ง€๋˜๋ฉด **๊ฒฝ๊ณ  ์นฉ์„ ์ค„ ๋งจ ์•ž์—** ๋ถ™์ž…๋‹ˆ๋‹ค.
114
120
 
115
121
  ```
116
122
  ๐Ÿšจ 5H โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–“ 94% ๐Ÿ”„ 12:36 ยท ๐Ÿ…ท 5/5 ยท ๐Ÿค– Opus 4.8 ยท ๐Ÿง  Cache hit 72.1% ยท โš  Cache miss ยท ๐Ÿ“… weekly โ–“โ–‘โ–‘โ–‘โ–‘โ–‘ 12% ๐Ÿ”„ Sun 14:26 ยท ๐Ÿ“ฆ Ctx 200k ยท last 1d
117
123
  ```
118
124
 
119
- ์นฉ ์ข…๋ฅ˜ โ€” `๐Ÿšจ 5H/7D NN%`(์บก ์ž„๋ฐ•) ยท `โš  Ctx 200k+`(๋‹จ์ผ ์š”์ฒญ์ด ์‹ค์ œ๋กœ 200k ์ดˆ๊ณผ) ยท `โš  Cache miss` ยท `โš  Input spike` ยท `โš  Output heavy` ยท `โš  Call surge` ยท `โš  Rebuild churn` ยท `โš  5m TTL`. ๋‘ ์œˆ๋„๊ฐ€ ๋™์‹œ์— 90%+๋ฉด ๋ฆฌ์…‹์ด ์ž„๋ฐ•ํ•œ ์ชฝ์ด ๐Ÿšจ๋กœ ์Šน๊ฒฉ๋˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋นจ๊ฐ„ ์„ธ๊ทธ๋จผํŠธ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค (v2.16.0+).
125
+ ์นฉ์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. `๐Ÿšจ 5H/7D NN%`(ํ•œ๋„ ์ž„๋ฐ•) ยท `โš  Ctx 200k+`(๋‹จ์ผ ์š”์ฒญ์ด ์‹ค์ œ๋กœ 200k๋ฅผ ์ดˆ๊ณผ) ยท `โš  Cache miss` ยท `โš  Input spike` ยท `โš  Output heavy` ยท `โš  Call surge` ยท `โš  Rebuild churn` ยท `โš  5m TTL`. ๋‘ ์œˆ๋„๊ฐ€ ๋™์‹œ์— 90%๋ฅผ ๋„˜์œผ๋ฉด ๋ฆฌ์…‹์ด ๋” ์ž„๋ฐ•ํ•œ ์ชฝ์„ ๐Ÿšจ๋กœ ์˜ฌ๋ฆฌ๊ณ , ๋‚˜๋จธ์ง€ ํ•˜๋‚˜๋Š” ๋นจ๊ฐ„ ์„ธ๊ทธ๋จผํŠธ๋กœ ๊ณ„์† ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค (v2.16.0 ์ด์ƒ).
120
126
 
121
127
  ### ๊ฒฝ๊ณ  ์นฉ์ด ๋–ด์„ ๋•Œ
122
128
 
123
- Claude ์•ˆ์—์„œ `/claude-token-saver` Skill์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์นฉ ๋ฌธ๊ตฌ๋ฅผ ๊ทธ๋Œ€๋กœ ๋งํ•˜๋ฉด("5H cap ๋–ด์–ด", "cache miss") Skill์ด ์ž๋™ ํ™œ์„ฑํ™”๋˜์–ด **์›์ธ ์ฝ”๋“œ + ๋‹จ๊ณ„๋ณ„ ํ•ด๊ฒฐ ๋ช…๋ น**์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์บก ์ž„๋ฐ• ์‹œ์—๋Š” `claude-token-saver handoff`๋กœ ํ˜„์žฌ ์ž‘์—…์„ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ฐฑ์—…ํ•œ ๋’ค ์ƒˆ ์„ธ์…˜์—์„œ ์ด์–ด๊ฐ€๋Š” ์›Œํฌํ”Œ๋กœ๋ฅผ ๊ถŒํ•ฉ๋‹ˆ๋‹ค.
129
+ Claude Code ์•ˆ์—์„œ `/claude-token-saver` Skill์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜, ์นฉ์— ์ ํžŒ ๋ฌธ๊ตฌ๋ฅผ ๊ทธ๋Œ€๋กœ ๋งํ•˜๊ธฐ๋งŒ ํ•ด๋„("5H cap ๋–ด์–ด", "cache miss") Skill์ด ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด **์›์ธ ์ฝ”๋“œ์™€ ๋‹จ๊ณ„๋ณ„ ํ•ด๊ฒฐ ๋ช…๋ น์„** ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค. ํ•œ๋„๊ฐ€ ์ž„๋ฐ•ํ•œ ์ƒํ™ฉ์—์„œ๋Š” `claude-token-saver handoff`๋กœ ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—…์„ ๋งˆํฌ๋‹ค์šด ํŒŒ์ผ์— ๋ฐฑ์—…ํ•œ ๋’ค ์ƒˆ ์„ธ์…˜์—์„œ ์ด์–ด๊ฐ€๋Š” ๋ฐฉ์‹์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
124
130
 
125
131
  ## ์ฃผ์š” ๋ช…๋ น
126
132
 
@@ -134,12 +140,12 @@ Claude ์•ˆ์—์„œ `/claude-token-saver` Skill์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์นฉ ๋ฌธ๊ตฌ๋ฅผ
134
140
  | `claude-token-saver handoff` | ์ž‘์—… ์ƒํƒœ๋ฅผ `HANDOFF-*.md`๋กœ ๋ฐฑ์—… (์บก ์ž„๋ฐ• ์‹œ) |
135
141
  | `claude-token-saver mode [keywords...]` | ์ถœ๋ ฅ ์„ค์ • (`icon`/`text`, `ko`/`en`, `1h`~`30d` ์œˆ๋„ ๋“ฑ) |
136
142
  | `claude-token-saver harness ...` | ๐Ÿ…ท Harness ๊ด€๋ฆฌ (์•„๋ž˜ ์ฐธ๊ณ ) |
137
- | `claude-token-saver route-scan` | ์ƒ์œ„ ๋ชจ๋ธ์ด ๋ฐ˜๋ณต ์ฒ˜๋ฆฌํ•œ easy ์ž‘์—… ๊ฐ์ง€ โ†’ haiku ์œ„์ž„ ๋žซ์ณ‡ ๋ฃฐ ์ œ์•ˆ (์•„๋ž˜ ์ฐธ๊ณ ) |
138
- | `claude-token-saver route-scan savings` | ๋ผ์šฐํŒ… ์ ˆ๊ฐ ์›์žฅ โ€” ๋ชจ๋ธ ์ด๋™๋ณ„ ํ•ฉ๊ณ„ + ์‹คํ–‰๋ณ„ ๋‚ด์—ญ (๊ธˆ์•ก์˜ ๊ทผ๊ฑฐ) |
139
- | `claude-token-saver compact-window` | 1M ์ปจํ…์ŠคํŠธ์ธ๋ฐ ์ž๋™ ์••์ถ• ์ฐฝ์ด ์•ˆ ์žกํ˜€ ์žˆ์œผ๋ฉด ๊ฒฝ๊ณ  โ†’ `set`์œผ๋กœ 40๋งŒ ๊ณ ์ • (์•„๋ž˜ ์ฐธ๊ณ ) |
143
+ | `claude-token-saver route-scan` | ์ƒ์œ„ ๋ชจ๋ธ์ด ๋ฐ˜๋ณต ์ฒ˜๋ฆฌํ•œ ์‰ฌ์šด ์ž‘์—…์„ ๊ฐ์ง€ํ•ด haiku ์œ„์ž„ ๋žซ์ณ‡ ๋ฃฐ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค (์•„๋ž˜ ์ฐธ๊ณ ) |
144
+ | `claude-token-saver route-scan savings` | ๋ผ์šฐํŒ… ์ ˆ๊ฐ ์›์žฅ์ž…๋‹ˆ๋‹ค. ๋ชจ๋ธ ์ด๋™๋ณ„ ํ•ฉ๊ณ„์™€ ์‹คํ–‰๋ณ„ ๋‚ด์—ญ์„ ํ•จ๊ป˜ ๋ณด์—ฌ ์ฃผ๋ฉฐ, ํ‘œ์‹œ๋˜๋Š” ๊ธˆ์•ก์˜ ๊ทผ๊ฑฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค |
145
+ | `claude-token-saver compact-window` | 1M ์ปจํ…์ŠคํŠธ๋ฅผ ์“ฐ๋ฉด์„œ ์ž๋™ ์••์ถ• ์ฐฝ์ด ์„ค์ •๋˜์ง€ ์•Š์•˜์œผ๋ฉด ๊ฒฝ๊ณ ํ•˜๊ณ , `set`์œผ๋กœ 40๋งŒ์— ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค (์•„๋ž˜ ์ฐธ๊ณ ) |
140
146
  | `claude-token-saver install` | Skillยทstatusline ์ˆ˜๋™ ๋“ฑ๋ก |
141
147
 
142
- ์ถœ๋ ฅ ์–ธ์–ด๋Š” `mode ko` / `mode en`์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค (๊ธฐ๋ณธ ์˜์–ด, statusline ์นฉ์€ ํ•ญ์ƒ ๊ธฐํ˜ธ). ์ „์ฒด ์˜ต์…˜์€ [์˜๋ฌธ README](./README.en.md#options) ์ฐธ๊ณ .
148
+ ์ถœ๋ ฅ ์–ธ์–ด๋Š” `mode ko`์™€ `mode en`์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ์˜์–ด์ด๋ฉฐ, statusline์˜ ์นฉ์€ ์–ธ์ œ๋‚˜ ๊ธฐํ˜ธ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์˜ต์…˜์€ [์˜๋ฌธ README](./README.en.md#options)๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.
143
149
 
144
150
  ## ๐Ÿ…ท Harness ๋ชจ๋“œ
145
151
 
@@ -147,7 +153,7 @@ Claude ์•ˆ์—์„œ `/claude-token-saver` Skill์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์นฉ ๋ฌธ๊ตฌ๋ฅผ
147
153
 
148
154
  ```bash
149
155
  claude-token-saver harness init # ์ด ํ”„๋กœ์ ํŠธ์— ์…‹์—…
150
- claude-token-saver harness init --global # ~/.claude/CLAUDE.md โ€” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ์ ์šฉ
156
+ claude-token-saver harness init --global # ~/.claude/CLAUDE.md, ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ์ ์šฉ
151
157
  claude-token-saver harness check # ํ˜„์žฌ ์ ์ˆ˜ (๊ธ€๋กœ๋ฒŒ fallback ์ธ์ •)
152
158
  claude-token-saver harness promote <N> --project|--global # ๊ฒฝ๊ณ  #N โ†’ ratchet ๋ฃฐ (์Šค์ฝ”ํ”„ ํ•„์ˆ˜)
153
159
  claude-token-saver harness promote "<๋ฃฐ ํ…์ŠคํŠธ>" --project|--global # ๋‚ด๊ฐ€ ์ง์ ‘ ์ •์˜ํ•œ ๋ฃฐ๋„ ๊ฐ™์€ ๋ช…๋ น์œผ๋กœ ๋“ฑ๋ก
@@ -156,12 +162,12 @@ claude-token-saver harness list / rm <N> # ๋ฃฐ ์กฐํšŒ / ์‚ญ์ œ (์ž๋™ .ba
156
162
  claude-token-saver harness off | on # ๐Ÿ…ท ํ‘œ์‹œ ํ† ๊ธ€
157
163
  ```
158
164
 
159
- - `promote`๋Š” non-TTY(์Šคํฌ๋ฆฝํŠธยทLLM ํ˜ธ์ถœ)์—์„œ `--project`/`--global` ํ”Œ๋ž˜๊ทธ๊ฐ€ **ํ•„์ˆ˜** โ€” ์Šค์ฝ”ํ”„๊ฐ€ ๋ฌป์ง€ ์•Š๊ณ  ๊ฒฐ์ •๋˜๋Š” ์‚ฌ๊ณ ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•œ ์„ค๊ณ„์ž…๋‹ˆ๋‹ค.
165
+ - `promote`๋Š” non-TTY ํ™˜๊ฒฝ(์Šคํฌ๋ฆฝํŠธ๋‚˜ LLM ํ˜ธ์ถœ)์—์„œ `--project` ๋˜๋Š” `--global` ํ”Œ๋ž˜๊ทธ๊ฐ€ **๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.** ์ ์šฉ ๋ฒ”์œ„๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌป์ง€ ์•Š์€ ์ฑ„ ๊ฒฐ์ •๋˜๋Š” ์‚ฌ๊ณ ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•œ ์„ค๊ณ„์ž…๋‹ˆ๋‹ค.
160
166
  - `pull`์€ ํŒจํ‚ค์ง€์— ๋™๋ด‰๋œ **์ œ์ž‘์ž ํ๋ ˆ์ด์…˜ ๋žซ์ณ‡ ๋ฃฐ**(`presets/ratchet-rules.md` โ€” ์‹ค์ œ ๋ฐ˜๋ณต ์‚ฌ๊ณ ์—์„œ ์Šน๊ฒฉ๋œ ๋ฒ”์šฉ ๋ฃฐ๋งŒ)์„ ๋‚ด ๊ธ€๋กœ๋ฒŒ ๋žซ์ณ‡(`~/.claude/ratchet.md`)์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜(`install`)๋‚˜ `init`์€ ์•„๋ฌด๊ฒƒ๋„ ์ž๋™ ์ฃผ์ž…ํ•˜์ง€ ์•Š์œผ๋ฉฐ, `pull`์€ ํ•ญ์ƒ opt-in์ด๊ณ  ์žฌ์‹คํ–‰ํ•ด๋„ ์ค‘๋ณต์ด ์—†์Šต๋‹ˆ๋‹ค(๋ฉฑ๋“ฑ). ๋งˆ์Œ์— ์•ˆ ๋“œ๋Š” ๋ฃฐ์€ `harness rm`์œผ๋กœ ์ œ๊ฑฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
161
167
  - ๐Ÿ…ทโš  ๋Ÿฐํƒ€์ž„ ๊ฒฝ๊ณ (`ratchet?` `no-evidence` `PEV-skip`)๋Š” 30๋ถ„ ํ›„ ์ž๋™ ๋งŒ๋ฃŒ๋˜๊ณ , ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ ์„ธ์…˜๋„ ํ”„๋กœ์ ํŠธ์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋งค์นญ๋ฉ๋‹ˆ๋‹ค. PEV-skip์€ ๋ณ€๊ฒฝ์„ฑ ๋„๊ตฌ(Edit/Write/Bash)๋งŒ ์นด์šดํŠธํ•ด ์ฝ๊ธฐ ์œ„์ฃผ ์„ธ์…˜์—์„œ๋Š” ๋ฐœ๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (v2.16.0+).
162
168
 
163
169
  <details>
164
- <summary>โš ๏ธ <code>harness rm</code>์€ ์‹ ์ค‘ํ•˜๊ฒŒ โ€” ์‚ญ์ œ ์ „ ์ฒดํฌ๋ฆฌ์ŠคํŠธ</summary>
170
+ <summary>โš ๏ธ <code>harness rm</code>์€ ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค: ์‚ญ์ œ ์ „ ํ™•์ธ ์‚ฌํ•ญ</summary>
165
171
 
166
172
  ratchet์˜ ๊ฐ€์น˜๋Š” **ํ•œ ๋ฐฉํ–ฅ ๋ˆ„์ **์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฃฐ์„ ๊ฐ€๋ณ๊ฒŒ ์ง€์šฐ๋ฉด ๊ฐ™์€ ์‹ค์ˆ˜๊ฐ€ ๋‹ค์‹œ ์ƒˆ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
167
173
 
@@ -173,13 +179,13 @@ ratchet์˜ ๊ฐ€์น˜๋Š” **ํ•œ ๋ฐฉํ–ฅ ๋ˆ„์ **์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฃฐ์„ ๊ฐ€๋ณ๊ฒŒ ์ง€
173
179
  </details>
174
180
 
175
181
 
176
- ## ๐Ÿ“ฆ compact-window โ€” 1M ์ปจํ…์ŠคํŠธ์˜ ์ž๋™ ์••์ถ• ์ง€์  ๊ณ ์ •
182
+ ## ๐Ÿ“ฆ compact-window: 1M ์ปจํ…์ŠคํŠธ์˜ ์ž๋™ ์••์ถ• ์ง€์  ๊ณ ์ •
177
183
 
178
184
  Claude Code๋Š” `min(autoCompactWindow, ๋ชจ๋ธ ์ตœ๋Œ€ ์ฐฝ)`์— ๊ฐ€๊นŒ์›Œ์ง€๋ฉด ๋Œ€ํ™”๋ฅผ ์ž๋™ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค. 1M ์ฐฝ์„ ์“ฐ๋ฉด ์ด ๊ฐ’์ด ์žกํ˜€ ์žˆ์ง€ ์•Š์€ ํ•œ 80๋งŒ ํ† ํฐ ๊ทผ์ฒ˜๊นŒ์ง€ ๊ฐ€์„œ์•ผ ์••์ถ•์ด ๊ฑธ๋ฆฌ๊ณ , ๊ทธ์ „๊นŒ์ง€ ๋ชจ๋“  ์š”์ฒญ์ด ์ „์ฒด ์ปจํ…์ŠคํŠธ๋ฅผ ํ†ต์งธ๋กœ ์žฌ๊ณผ๊ธˆํ•ฉ๋‹ˆ๋‹ค. **1M์€ ๋„ˆ๋ฌด ํฌ๋‹ˆ 40๋งŒ~70๋งŒ ๋ฒ”์œ„๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค** โ€” ํฐ ๋ถ™์—ฌ๋„ฃ๊ธฐ์šฉ ์—ฌ์œ ๋Š” 200k ์„ธ์…˜์˜ 2~3.5๋ฐฐ๋กœ ๋‚จ๊ธฐ๋ฉด์„œ ๊ผฌ๋ฆฌ๋งŒ ์ž˜๋ผ๋ƒ…๋‹ˆ๋‹ค.
179
185
 
180
186
  **๊ถŒ์žฅ ๋ฒ”์œ„ ์•ˆ์ด๋ฉด ๊ฒฝ๊ณ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.** 40๋งŒ์€ ์ ˆ๊ฐ์ด ์••์ถ• ํšŸ์ˆ˜๋ฅผ ์ด๊ธฐ๋Š” ํ•˜ํ•œ์ด๊ณ , ๊ธด ์„ธ์…˜์€ ๊ทธ๋ณด๋‹ค ์—ฌ์œ ๊ฐ€ ๋” ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋ฏธ์„ค์ •์ด๊ฑฐ๋‚˜ 70๋งŒ์„ ๋„˜์„ ๋•Œ๋งŒ ์•Œ๋ฆฝ๋‹ˆ๋‹ค(๊ทธ๋ณด๋‹ค ๋‚ฎ๊ฒŒ ์žก์€ ๊ฑด ๋” ๊ณต๊ฒฉ์ ์œผ๋กœ ์•„๋ผ๊ฒ ๋‹ค๋Š” ์„ ํƒ์ด๋ผ ๊ทธ๋ƒฅ ๋‘ก๋‹ˆ๋‹ค).
181
187
 
182
- **200k ์ปจํ…์ŠคํŠธ๋Š” ๊ฒฝ๊ณ  ๋Œ€์ƒ์ด ์•„๋‹™๋‹ˆ๋‹ค** โ€” ์ฐฝ์ด ์ด๋ฏธ 200k ์ดํ•˜๋ผ ์ด ์„ค์ •์ด ๋ฐ”๊ฟ€ ๊ฒŒ ์—†์Šต๋‹ˆ๋‹ค.
188
+ **200k ์ปจํ…์ŠคํŠธ๋Š” ๊ฒฝ๊ณ  ๋Œ€์ƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.** ์ฐฝ์ด ์ด๋ฏธ 200k ์ดํ•˜์ด๋ฏ€๋กœ ์ด ์„ค์ •์œผ๋กœ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
183
189
 
184
190
  ```bash
185
191
  claude-token-saver compact-window # ํ˜„์žฌ ์ƒํƒœ (๋ชจ๋ธยท์ฐฝยท์„ค์ •๊ฐ’ยท์ถœ์ฒ˜)
@@ -190,29 +196,29 @@ claude-token-saver compact-window off | on # ๊ฒฝ๊ณ  ํ‘œ์‹œ ํ† ๊ธ€
190
196
  ```
191
197
 
192
198
  - 1M ๋ชจ๋ธ์ธ๋ฐ ๋ฏธ์„ค์ •์ด๊ฑฐ๋‚˜ 40๋งŒ์„ ๋„˜์œผ๋ฉด statusline์— `๐Ÿ…ทโš  compact-window?`๊ฐ€ ๋œจ๊ณ , ์„ธ์…˜ ๋ธŒ๋ฆฌํ•‘์ด ๋“ฑ๋ก ๋ช…๋ น๊นŒ์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
193
- - ์Šค์ฝ”ํ”„(`--global`/`--project`)๋Š” `set`์—์„œ **ํ•„์ˆ˜** โ€” ๊ธ€๋กœ๋ฒŒ ์„ค์ • ํŒŒ์ผ์„ ๋ฌป์ง€ ์•Š๊ณ  ๊ณ ์น˜์ง€ ์•Š๊ธฐ ์œ„ํ•œ ์„ค๊ณ„์ž…๋‹ˆ๋‹ค.
199
+ - ์ ์šฉ ๋ฒ”์œ„(`--global` ๋˜๋Š” `--project`)๋Š” `set`์—์„œ **๋ฐ˜๋“œ์‹œ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.** ๊ธ€๋กœ๋ฒŒ ์„ค์ • ํŒŒ์ผ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌป์ง€ ์•Š๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์ผ์„ ๋ง‰๊ธฐ ์œ„ํ•œ ์„ค๊ณ„์ž…๋‹ˆ๋‹ค.
194
200
  - ๊ธฐ์กด `settings.json`์˜ ๋‹ค๋ฅธ ํ‚ค๋Š” ๊ทธ๋Œ€๋กœ ๋ณด์กดํ•˜๊ณ  `.bak`์„ ๋‚จ๊น๋‹ˆ๋‹ค. JSON์ด ๊นจ์ ธ ์žˆ์œผ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ์“ฐ์ง€ ์•Š๊ณ  ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.
195
201
  - ์…ธ์— `CLAUDE_CODE_AUTO_COMPACT_WINDOW`๊ฐ€ export๋ผ ์žˆ์œผ๋ฉด ๊ทธ์ชฝ์ด settings.json๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค (`set`์ด ์ด ๊ฒฝ์šฐ๋ฅผ ๊ฐ์ง€ํ•ด ์•Œ๋ ค์ค๋‹ˆ๋‹ค).
196
202
 
197
- ## ๐Ÿ”€ route-scan โ€” "์ด ๋ฐ˜๋ณต ์ž‘์—…, ๋” ์‹ผ ํ‹ฐ์–ด๋กœ ๋‚ด๋ ค๋„ ๋ฉ๋‹ˆ๋‹ค"
203
+ ## ๐Ÿ”€ route-scan: "์ด ๋ฐ˜๋ณต ์ž‘์—…์€ ๋” ์‹ผ ํ‹ฐ์–ด๋กœ ๋‚ด๋ ค๋„ ๋ฉ๋‹ˆ๋‹ค"
198
204
 
199
205
  ์„ธ์…˜ ๋กœ๊ทธ์—์„œ ์ƒ์œ„ ๋ชจ๋ธ(opus/fable)์ด ๋ฐ˜๋ณต ์ฒ˜๋ฆฌํ•ด ์˜จ ์‰ฌ์šด ์ž‘์—…์„ ์ฐพ์•„ **haiku/sonnet ์œ„์ž„ ๋ฃฐ๋กœ ์Šน๊ฒฉ**์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ „ ๊ณผ์ • ๋กœ์ปฌ, ํ† ํฐ ๋น„์šฉ 0.
200
206
 
201
- - **T2 โ†’ haiku**: ํƒ์ƒ‰ยท์กฐํšŒยท๋‹จ์ˆœ ์‹คํ–‰ โ€” ์—๋Ÿฌ 0, ๋ณ€๊ฒฝ ๊ฑฐ์˜ ์—†์Œ
202
- - **T1 โ†’ sonnet**: ๋นŒ๋“œยท์ƒํƒœ ์ ๊ฒ€ โ€” ๋ณ€๊ฒฝ ์†Œ์ˆ˜, ์—๋Ÿฌ โ‰ค1
203
- - **T0 ์œ ์ง€**: ์—๋Ÿฌ ๋ฐ˜๋ณตยท๋Œ€๋Ÿ‰ ๋ณ€๊ฒฝยท์„ค๊ณ„/๋ถ„์„ โ€” ์„ธ์…˜ ๋ชจ๋ธ์ด ๊ณ„์† ๋‹ด๋‹น
207
+ - **T2 โ†’ haiku:** ํƒ์ƒ‰๊ณผ ์กฐํšŒ, ๋‹จ์ˆœ ์‹คํ–‰์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์—๋Ÿฌ๊ฐ€ ์—†๊ณ  ๋ณ€๊ฒฝ๋„ ๊ฑฐ์˜ ์—†๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.
208
+ - **T1 โ†’ sonnet:** ๋นŒ๋“œ์™€ ์ƒํƒœ ์ ๊ฒ€์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์ด ์ ๊ณ  ์—๋Ÿฌ๊ฐ€ 1๊ฑด ์ดํ•˜์ธ ์ž‘์—…์ž…๋‹ˆ๋‹ค.
209
+ - **T0 ์œ ์ง€:** ์—๋Ÿฌ๊ฐ€ ๋ฐ˜๋ณต๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ์ด ๋งŽ๊ฑฐ๋‚˜ ์„ค๊ณ„์™€ ๋ถ„์„์ด ํ•„์š”ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์„ธ์…˜ ๋ชจ๋ธ์ด ๊ณ„์† ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
204
210
 
205
211
  ํ•ต์‹ฌ ์„ค๊ณ„๋Š” ์„ธ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค:
206
- 1. ๋‚œ์ด๋„๋Š” ํ…์ŠคํŠธ ์ถ”์ธก์ด ์•„๋‹ˆ๋ผ **๊ฒฐ๊ณผ(outcome)๋กœ ํŒ์ •** โ€” ๋„๊ตฌ ์—๋Ÿฌยท๋ณ€๊ฒฝ์„ฑ ๋„๊ตฌ ์ˆ˜ยท์ถœ๋ ฅ ํ† ํฐ
207
- 2. ์ž„๊ณ„๊ฐ’์€ **๋‚ด ์ตœ๊ทผ 14์ผ ๋กœ๊ทธ ๋ถ„ํฌ์—์„œ ์ž๋™ ๋ณด์ •** โ€” ๊ณ ์ • ์ƒ์ˆ˜๋Š” ์›Œํฌ๋กœ๋“œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์–ด๊ธ‹๋‚˜๋ฏ€๋กœ
208
- 3. ์Šน๊ฒฉ๋œ ๋ฃฐ์€ ๋„๊ตฌ ์†Œ์œ  ๋ณ„๋„ ํŒŒ์ผ(`.claude/ratchet-model.md`)์—์„œ **์ž๋™ ๊ฐฑ์‹ **๋˜๊ณ , ์œ„์ž„ ํ›„ ์—๋Ÿฌ์œจ์ด ๋†’์•„์ง€๋ฉด `โš  rule-health`๋กœ ๊ฒฝ๊ณ  โ€” ๋ฃฐ์ด ์Šค์Šค๋กœ ๋‚ก์Œ์„ ์•Œ๋ฆผ
212
+ 1. ๋‚œ์ด๋„๋ฅผ ํ…์ŠคํŠธ๋กœ ์ถ”์ธกํ•˜์ง€ ์•Š๊ณ  **์‹ค์ œ ๊ฒฐ๊ณผ๋กœ ํŒ์ •ํ•ฉ๋‹ˆ๋‹ค.** ๋„๊ตฌ ์—๋Ÿฌ์™€ ๋ณ€๊ฒฝ์„ ์ผ์œผํ‚จ ๋„๊ตฌ์˜ ์ˆ˜, ์ถœ๋ ฅ ํ† ํฐ์„ ๊ทผ๊ฑฐ๋กœ ์‚ผ์Šต๋‹ˆ๋‹ค.
213
+ 2. ์ž„๊ณ„๊ฐ’์€ **์‚ฌ์šฉ์ž์˜ ์ตœ๊ทผ 14์ผ ๋กœ๊ทธ ๋ถ„ํฌ์—์„œ ์ž๋™์œผ๋กœ ๋ณด์ •ํ•ฉ๋‹ˆ๋‹ค.** ๊ณ ์ •๋œ ์ƒ์ˆ˜๋Š” ์›Œํฌ๋กœ๋“œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๊ณง ์–ด๊ธ‹๋‚˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
214
+ 3. ์Šน๊ฒฉ๋œ ๋ฃฐ์€ ๋„๊ตฌ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ณ„๋„ ํŒŒ์ผ(`.claude/ratchet-model.md`)์—์„œ **์ž๋™์œผ๋กœ ๊ฐฑ์‹ ๋˜๋ฉฐ,** ์œ„์ž„ํ•œ ๋’ค ์—๋Ÿฌ์œจ์ด ๋†’์•„์ง€๋ฉด `โš  rule-health`๋กœ ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋ฃฐ์ด ๋‚ก์•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์Šค์Šค๋กœ ์•Œ๋ฆฌ๋Š” ์…ˆ์ž…๋‹ˆ๋‹ค.
209
215
 
210
216
  ```bash
211
217
  claude-token-saver route-scan # ์Šค์บ” (24h ์บ์‹œ) + ํ‹ฐ์–ด๋ณ„ ํ›„๋ณด ์ถœ๋ ฅ
212
218
  claude-token-saver harness promote R1 --project # ํ›„๋ณด R1์„ ๋ชจ๋ธ ํ”ผํŒ… ๋ฃฐ๋กœ ๋“ฑ๋ก
213
219
  claude-token-saver route-scan dismiss 1 # ๊ด€์‹ฌ ์—†์œผ๋ฉด ๋ฌด์‹œ (์žฌ์Šค์บ”์—๋„ ์•ˆ ๋œธ)
214
220
  claude-token-saver route-scan rules # ๋“ฑ๋ก๋œ ๋ชจ๋ธ ํ”ผํŒ… ๋ฃฐ ๋ชฉ๋ก (rm <N>์œผ๋กœ ์ œ๊ฑฐ)
215
- claude-token-saver route-scan savings # ์ ˆ๊ฐ ์›์žฅ โ€” ์–ด๋А ๋ฃฐ์ด ์–ด๋–ค ๋ชจ๋ธ์—์„œ ์–ด๋–ค ๋ชจ๋ธ๋กœ ์˜ฎ๊ฒผ๋Š”์ง€
221
+ claude-token-saver route-scan savings # ์ ˆ๊ฐ ์›์žฅ: ์–ด๋А ๋ฃฐ์ด ์–ด๋–ค ๋ชจ๋ธ์—์„œ ์–ด๋–ค ๋ชจ๋ธ๋กœ ์˜ฎ๊ฒผ๋Š”์ง€
216
222
  ```
217
223
 
218
224
  `route-scan savings`๋Š” statusline์˜ `๐Ÿ”€ Routing saved` ํ•œ ์ค„ ๋’ค์— ์žˆ๋Š” ๊ทผ๊ฑฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ชจ๋ธ ์ด๋™๋ณ„ ํ•ฉ๊ณ„์™€ ์‹คํ–‰๋ณ„ ๋‚ด์—ญ์ด ํ•จ๊ป˜ ๋‚˜์˜ค๋ฏ€๋กœ, ๊ธˆ์•ก์ด ์–ด๋””์„œ ๋‚˜์™”๋Š”์ง€ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
@@ -253,7 +259,7 @@ v3.10.0๋ถ€ํ„ฐ๋Š” ํ”„๋กœํŒŒ์ผ ID๋ฅผ ์—ญํ• (mainยทopusยทsonnetยทhaiku)๋กœ ๋˜๋Œ
253
259
 
254
260
  | ์ฝ”๋“œ | ์˜๋ฏธ |
255
261
  |---|---|
256
- | `LARGE_INPUT_PER_REQUEST` | ๋‹จ์ผ ์š”์ฒญ ์ž…๋ ฅ์ด 200k ์ดˆ๊ณผ โ€” ํ„ด๋‹น ์žฌ๊ณผ๊ธˆยทํ•œ๋„ ์†Œ๋ชจ ๊ธ‰์ฆ |
262
+ | `LARGE_INPUT_PER_REQUEST` | ๋‹จ์ผ ์š”์ฒญ์˜ ์ž…๋ ฅ์ด 200k๋ฅผ ์ดˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. ํ„ด๋งˆ๋‹ค ๋‹ค์‹œ ๊ณผ๊ธˆ๋˜๊ณ  ํ•œ๋„ ์†Œ๋ชจ๊ฐ€ ๊ธ‰๊ฒฉํžˆ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค |
257
263
  | `LOW_HIT_RATE` | ์บ์‹œ ํžˆํŠธ์œจ 50% ๋ฏธ๋งŒ |
258
264
  | `BUCKET_5M_DOMINANT` | ์บ์‹œ ์“ฐ๊ธฐ์˜ 70%+๊ฐ€ 5๋ถ„ ๋ฒ„ํ‚ท (Pro ํ”Œ๋žœ/Max ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ) |
259
265
  | `HIGH_OUTPUT_RATIO` | ์ถœ๋ ฅ/์ž…๋ ฅ ๋น„์œจ 0.15 ์ดˆ๊ณผ (์ถœ๋ ฅ ๋‹จ๊ฐ€๋Š” ์ž…๋ ฅ์˜ 5๋ฐฐ) |
@@ -262,9 +268,9 @@ v3.10.0๋ถ€ํ„ฐ๋Š” ํ”„๋กœํŒŒ์ผ ID๋ฅผ ์—ญํ• (mainยทopusยทsonnetยทhaiku)๋กœ ๋˜๋Œ
262
268
 
263
269
  ๊ฐ ์ฝ”๋“œ๋งˆ๋‹ค OS๋ณ„ ํ•ด๊ฒฐ ๋ช…๋ น์ด ํ•จ๊ป˜ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
264
270
 
265
- ## ์‹ค์ œ ํšจ๊ณผ โ€” ๋„์ž… ์ „ํ›„ ๋ฆฌํฌํŠธ
271
+ ## ์‹ค์ œ ํšจ๊ณผ: ๋„์ž… ์ „ํ›„ ๋ฆฌํฌํŠธ
266
272
 
267
- ![claude-token-saver โ€” harness + ratchet ๋„์ž… ํšจ๊ณผ](./docs/harness-impact.png)
273
+ ![claude-token-saver: harness์™€ ratchet ๋„์ž… ํšจ๊ณผ](./docs/harness-impact.png)
268
274
 
269
275
  harness 5/5 + ratchet์„ ์‹ค์ œ ์ ์šฉํ•œ ์ „ํ›„ ๋น„๊ต์ž…๋‹ˆ๋‹ค (์ €์ž Claude Code ๋กœ๊ทธ, **์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€ 1๊ฑด๋‹น** ์ •๊ทœํ™”, 2026-05-02 ๊ธฐ์ค€, Opus 4.7 ๊ฐ€๊ฒฉ):
270
276
 
@@ -278,7 +284,7 @@ harness 5/5 + ratchet์„ ์‹ค์ œ ์ ์šฉํ•œ ์ „ํ›„ ๋น„๊ต์ž…๋‹ˆ๋‹ค (์ €์ž Claude
278
284
  ๊ฐ™์€ ์š”์ฒญ์„ ๋” ์ ์€ ์™•๋ณต์œผ๋กœ ๋๋‚ธ๋‹ค = ์ฒซ ์‹œ๋„ ์ ์ค‘๋ฅ  โ†‘. PEVยทStructured Task๊ฐ€ ํ•œ ๋ฒˆ์— ๊ฐ€๊ฒŒ ๋งŒ๋“  ํšจ๊ณผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.
279
285
 
280
286
  <details>
281
- <summary>์ธก์ • ๋ฐฐ๊ฒฝ โ€” ์บ์‹œ ํžˆํŠธ์œจ์ด ๋น ์ง„ ์ด์œ  ยท ์ƒ˜ํ”Œ ์ฃผ์˜</summary>
287
+ <summary>์ธก์ • ๋ฐฐ๊ฒฝ: ์บ์‹œ ํžˆํŠธ์œจ์„ ์ œ์™ธํ•œ ์ด์œ ์™€ ํ‘œ๋ณธ์— ๊ด€ํ•œ ์ฃผ์˜ ์‚ฌํ•ญ</summary>
282
288
 
283
289
  - ์ €์ž๋Š” Max ํ”Œ๋žœ(์บ์‹œ TTL 1์‹œ๊ฐ„)์ด๋ผ ํžˆํŠธ์œจ์ด ์ด๋ฏธ ~98%์— ์ˆ˜๋ ดํ•ด ๊ฐœ์„  ์—ฌ์ง€๊ฐ€ ์ž‘์•˜์Šต๋‹ˆ๋‹ค. **Pro ํ”Œ๋žœ(5๋ถ„ TTL) ์‚ฌ์šฉ์ž๋Š”** ๋งŒ๋ฃŒ ์ง์ „ handoff ์›Œํฌํ”Œ๋กœ ์กฐํ•ฉ์œผ๋กœ ํžˆํŠธ์œจ ์ž์ฒด๊ฐ€ ์˜ค๋ฅผ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.
284
290
  - ๋งŒ๋ฃŒ ์ง์ „ handoff ์›Œํฌํ”Œ๋กœ: statusline TTL ์นด์šดํŠธ๋‹ค์šด์„ ๋ณด๋‹ค๊ฐ€ ๋งŒ๋ฃŒ ์ง์ „ `claude-token-saver handoff`๋กœ ์ž‘์—… ์ƒํƒœ๋ฅผ ๋ฐฑ์—…ํ•˜๊ณ  ์ƒˆ ์บ์‹œ ์‚ฌ์ดํด์„ ์‹œ์ž‘. 1M ๊ฒฝ๊ณ ยทcap ์นฉ๋„ ๊ฐ™์€ ํ๋ฆ„์œผ๋กœ ์ฒ˜๋ฆฌ.
@@ -294,7 +300,7 @@ Node.js โ‰ฅ 18 ยท macOS / Linux / Windows / WSL ยท **์˜์กด์„ฑ 0**.
294
300
  <details>
295
301
  <summary>์•Œ๋ ค์ง„ ํ™˜๊ฒฝ ์ด์Šˆ ยท ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜</summary>
296
302
 
297
- **IntelliJ Claude Code plugin** โ€” statusline ์œ„์ ฏ์ด ํ”„๋ ˆ์ž„์„ ์ž˜๋ชป ํ•ฉ์„ฑํ•ด `59:548` ๊ฐ™์€ ์ž”์žฌ๊ฐ€ ๋ณด์ด๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์ด๋ชจ์ง€ ์ถœ๋ ฅ์—์„œ๋งŒ). v2.8.5+๋Š” `TERMINAL_EMULATOR=JetBrains-JediTerm` ๊ฐ์ง€ ์‹œ ์ž๋™์œผ๋กœ text ๋ชจ๋“œ ํด๋ฐฑํ•ฉ๋‹ˆ๋‹ค.
303
+ **IntelliJ Claude Code plugin:** statusline ์œ„์ ฏ์ด ํ”„๋ ˆ์ž„์„ ์ž˜๋ชป ํ•ฉ์„ฑํ•ด `59:548` ๊ฐ™์€ ์ž”์žฌ๊ฐ€ ๋ณด์ด๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์ด๋ชจ์ง€ ์ถœ๋ ฅ์—์„œ๋งŒ). v2.8.5+๋Š” `TERMINAL_EMULATOR=JetBrains-JediTerm` ๊ฐ์ง€ ์‹œ ์ž๋™์œผ๋กœ text ๋ชจ๋“œ ํด๋ฐฑํ•ฉ๋‹ˆ๋‹ค.
298
304
 
299
305
  **claude-cache-monitor์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜:**
300
306
  ```bash
@@ -305,6 +311,14 @@ npm uninstall -g claude-cache-monitor && npm i -g claude-token-saver
305
311
 
306
312
  ## ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ
307
313
 
314
+ ### v3.18.0 (2026-08-22)
315
+ - **ํ•œ๊ตญ์–ด ๋ฌธ์„œ๋ฅผ ๋‹ค์‹œ ๋‹ค๋“ฌ์—ˆ์Šต๋‹ˆ๋‹ค** โ€” ๋ฌธ์žฅ ์„ฑ๋ถ„์„ ์ƒ๋žตํ•˜์ง€ ์•Š๊ณ  ์„œ์ˆ ์–ด๋กœ ๋๋งบ๋Š” ํ˜•ํƒœ๋กœ ๋ณธ๋ฌธ์„ ๊ณ ์ณ ์ผ์Šต๋‹ˆ๋‹ค. ์˜๋ฏธ๋ฅผ ์ง€๋‚˜์น˜๊ฒŒ ํ•จ์ถ•ํ•˜๋˜ ์— ๋Œ€์‹œ๋Š” ์ฝœ๋ก ๊ณผ ์ ‘์†์‚ฌ๋กœ ๋ฐ”๊พธ์—ˆ์Šต๋‹ˆ๋‹ค.
316
+ - **์‹ค์‹œ๊ฐ„ ๋ชจ๋ธ ๋ผ์šฐํŒ…์ด ๋น„์šฉ์„ ํ‚ค์šฐ๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค** โ€” ํ”„๋กฌํ”„ํŠธ ์บ์‹œ๊ฐ€ ๋ชจ๋ธ๋ณ„๋กœ ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ธ์…˜ ์ค‘๊ฐ„์— ๋ชจ๋ธ์„ ๋ฐ”๊พธ๋ฉด ์ ˆ๊ฐ์•ก์ด ์บ์‹œ ์†์‹ค๋กœ ์ƒ์‡„๋œ๋‹ค๋Š” ์ , ๊ทธ๋ž˜์„œ ์ด ๋„๊ตฌ๊ฐ€ ์„œ๋ธŒ์—์ด์ „ํŠธ ์œ„์ž„๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์„ ๋ช…์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.
317
+
318
+ ### v3.17.0 (2026-08-22)
319
+ - **์„ค์น˜ ํ•œ ๋ฒˆ์œผ๋กœ ๐Ÿ…ท Harness๊นŒ์ง€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค** โ€” ์ง€๊ธˆ๊นŒ์ง€๋Š” ์„ค์น˜ ํ›„ `harness init`์„ ๋”ฐ๋กœ ์‹คํ–‰ํ•ด์•ผ statusline์˜ ๐Ÿ…ท ์ ์ˆ˜์™€ ratchet ๋ฃฐ ์ „๋‹ฌ์ด ๋™์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์„ค์น˜๊ฐ€ `~/.claude/CLAUDE.md`์— 5์›์น™ ๋ธ”๋ก์„ **์ถ”๊ฐ€**ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ์กด ๋‚ด์šฉ์€ ๋ฐฑ์—… ํ›„ ๋ณด์กด, ์ด๋ฏธ ์žˆ์œผ๋ฉด ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Œ). ๊ฑด๋„ˆ๋›ฐ๋ ค๋ฉด `CTS_NO_HARNESS=1`, ๋˜๋Œ๋ฆฌ๋ ค๋ฉด `harness uninit --global`.
320
+ - **README ์ƒ๋‹จ์„ statusline ์‹ค์ œ ์Šคํฌ๋ฆฐ์ƒท์œผ๋กœ ๊ต์ฒด** โ€” ์ฝ”๋“œ ๋ธ”๋ก ๋Œ€์‹  ์‹ค์ œ ์บก์ฒ˜๋ฅผ ์ตœ์ƒ๋‹จ์— ๋‘๊ณ , ์•„๋ž˜์ชฝ์— ์ค‘๋ณต์œผ๋กœ ์žˆ๋˜ ์ด๋ฏธ์ง€๋Š” ๋บ์Šต๋‹ˆ๋‹ค.
321
+
308
322
  ### v3.16.0 (2026-08-22)
309
323
  - **README๋ฅผ ๋ผ์šฐํŒ… ์ ˆ๊ฐ ์ค‘์‹ฌ์œผ๋กœ ์žฌ๊ตฌ์„ฑ** โ€” ์ด ๋„๊ตฌ์˜ ํ•ต์‹ฌ์ด ๋ฌด์—‡์ธ์ง€ ์ฒซ ํ™”๋ฉด์—์„œ ๋ฐ”๋กœ ๋ณด์ด๋„๋ก `๐Ÿ”€ Routing saved`๋ฅผ ์ตœ์ƒ๋‹จ์— ์˜ฌ๋ฆฌ๊ณ , ๊ธˆ์•ก์ด ์›์žฅ์—์„œ ์–ด๋–ป๊ฒŒ ๋‚˜์˜ค๋Š”์ง€(before/after/์ฐจ์•ก)์™€ `route-scan savings` ์‹ค์ œ ์ถœ๋ ฅ์„ ํ•จ๊ป˜ ์‹ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ฑ„๋„ยทํ™ˆํŽ˜์ด์ง€ ๋ฐฐ์ง€๋Š” ์ตœํ•˜๋‹จ "๋งŒ๋“  ๊ณณ"์œผ๋กœ ๋‚ด๋ ธ์Šต๋‹ˆ๋‹ค.
310
324
  - **statusline ์Šคํฌ๋ฆฐ์ƒท์„ ํ˜„์žฌ 2์ค„ ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๊ฐฑ์‹ ** โ€” ๋ชฉ์—…์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ ์ถœ๋ ฅ์„ ์บก์ฒ˜ํ•ฉ๋‹ˆ๋‹ค. `npm run docs:statusline`์œผ๋กœ ์žฌ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(headless Chrome ์‚ฌ์šฉ, ์˜์กด์„ฑ ์ถ”๊ฐ€ ์—†์Œ).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-token-saver",
3
- "version": "3.16.0",
3
+ "version": "3.18.0",
4
4
  "description": "Route the easy work your expensive Claude model keeps repeating down to haiku/sonnet โ€” post-hoc session analysis, no realtime router, no extra LLM calls.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -59,6 +59,55 @@ export async function run({ hasFlag }) {
59
59
  } catch (e) { debug('install:route-scan-seed', e); /* hook-triggered scan covers it on the first session instead */ }
60
60
  }
61
61
  }
62
+ // Harness, set up as part of the install rather than left as a manual
63
+ // follow-up step. The ๐Ÿ…ท statusline segment and the ratchet rules that
64
+ // route-scan promotes both depend on the block existing in CLAUDE.md, so
65
+ // an install without it ships a tool that is half wired up.
66
+ //
67
+ // Scope is global (~/.claude/CLAUDE.md): a global install is not tied to
68
+ // any one project, and the harness principles are project-independent.
69
+ // Only ever ADDS โ€” harnessInit appends its own marked block, backs up the
70
+ // previous file, and leaves surrounding content untouched. Skipped when a
71
+ // block is already there (nothing to do) and when CTS_NO_HARNESS=1 is set,
72
+ // for anyone who wants the statusline without the CLAUDE.md rules.
73
+ try {
74
+ const { harnessInit, harnessStatus } = await import('../harness.js');
75
+ const before = harnessStatus(undefined, { scope: 'global' });
76
+ if (process.env.CTS_NO_HARNESS === '1') {
77
+ console.log('');
78
+ console.log(lang === 'ko'
79
+ ? ' harness: CTS_NO_HARNESS=1 ์ด๋ฏ€๋กœ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค (๋‚˜์ค‘์— `harness init --global`).'
80
+ : ' harness: skipped (CTS_NO_HARNESS=1) โ€” run `harness init --global` later.');
81
+ } else if (before.hasBlock) {
82
+ console.log('');
83
+ console.log(lang === 'ko'
84
+ ? ` harness: ์ด๋ฏธ ์„ค์ •๋จ โ€” ๐Ÿ…ท ${before.configured}/${before.total} (${before.file})`
85
+ : ` harness: already set up โ€” ๐Ÿ…ท ${before.configured}/${before.total} (${before.file})`);
86
+ } else {
87
+ const h = harnessInit({ scope: 'global' });
88
+ console.log('');
89
+ for (const p of h.backedUp) {
90
+ console.log(lang === 'ko' ? ` harness: ๋ฐฑ์—… ${p}` : ` harness: backed up ${p}`);
91
+ }
92
+ for (const p of h.wrote) {
93
+ console.log(lang === 'ko' ? ` harness: ์ž‘์„ฑ ${p}` : ` harness: wrote ${p}`);
94
+ }
95
+ console.log(lang === 'ko'
96
+ ? ' harness: 5์›์น™์„ ~/.claude/CLAUDE.md ์— ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค โ€” statusline์— ๐Ÿ…ท 5/5 ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.'
97
+ : ' harness: 5 principles installed in ~/.claude/CLAUDE.md โ€” the statusline now shows ๐Ÿ…ท 5/5.');
98
+ console.log(lang === 'ko'
99
+ ? ' ๋˜๋Œ๋ฆฌ๋ ค๋ฉด: claude-token-saver harness uninit --global'
100
+ : ' to undo: claude-token-saver harness uninit --global');
101
+ }
102
+ } catch (e) {
103
+ // Never fail an install over this โ€” the statusline and Skill are already
104
+ // in place, and `harness init` remains available as a manual step.
105
+ debug('install:harness-init', e);
106
+ console.log(lang === 'ko'
107
+ ? ' harness: ์ž๋™ ์„ค์ •์„ ๊ฑด๋„ˆ๋›ฐ์—ˆ์Šต๋‹ˆ๋‹ค โ€” `claude-token-saver harness init --global` ๋กœ ์ง์ ‘ ์„ค์ •ํ•˜์„ธ์š”.'
108
+ : ' harness: auto-setup skipped โ€” run `claude-token-saver harness init --global` yourself.');
109
+ }
110
+
62
111
  console.log('');
63
112
  console.log('Open Claude Code in any directory and just mention:');
64
113
  console.log(' "cache hit rate" / "1M context" / "5H cap" โ€” the skill auto-activates.');