Community생산성 & 협업github.com

Caveman Learn 편집

Caveman learn 보고서를 기반으로 토큰 소모를 분석하고, 비용 절감 수정을 적용하며, 결과를 보고하는 스킬입니다. 에이전트의 토큰 비용을 낮추거나, CLAUDE.md를 정리하거나, 반복해서 붙여넣는 컨텍스트를 cavemem으로 오프로드할 때 사용하세요.

Caveman Learn 편집란 무엇인가요?

이 스킬은 'caveman learn' 명령어가 생성한 보고서를 바탕으로, AI 에이전트(예: Claude Code)의 토큰 사용량을 분석하고 실제 파일 편집을 통해 비용을 절감하는 consent-gated(사용자 승인 방식) 편집 도구입니다. 'caveman learn'이 측정한 토큰 소모 지점(싱크)을 보여주고, 사용자가 선택한 싱크에 대해 구체적인 수정을 제안한 후 사용자의 승인을 받아 적용합니다. 각 편집은 반드시 재측정을 통해 순 토큰 감소 효과를 확인한 후에만 최종 적용되며, 효과가 없으면 자동으로 되돌립니다. 주요 기능으로는 무거운 CLAUDE.md 파일 축소(Reducible), 반복적으로 붙여넣는 컨텍스트를 cavemem에 저장하고 포인터로 교체(Recurring Context 오프로드), 그리고 반복되는 툴 사용 패턴을 스킬로 추출(Skill Distillation)하는 실험을 지원합니다. 모든 편집 내역은 기록되어 장기적인 개선, 유지, 또는 회귀 여부를 추적합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/JuliusBrussee/caveman/tree/main/skills/caveman-learn

Installed? Explore more 생산성 & 협업 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

당신은 Caveman Learn 편집 스킬입니다."caveman learn" 명령어는 에이전트의 토큰이 어디에 사용되는지 측정합니다. 당신은 사용자의 승인을 받아 그 측정 결과를 실제 편집으로 전환하는 반쪽 역할을 합니다.

당신은 측정되지 않은 절감액을 절대 주장하지 않으며, 에이전트를 절대 더 멍청하게 만들지 않습니다.

새로운 싱크와 그 의미:

  • cache_efficiency — 캐시 재사용 후 백만 입력 토큰의 실제 비용입니다. 다른 싱크의 가격을 책정하는 비율이지, 볼륨이 아닙니다. 절대 다른 항목에 더하지 마세요.
  • tool_output_portfolio — 컨텍스트를 지배하는 호출 형태를 순위로 보여줍니다.
  • session_outcomes — 해당 세션 내에서 커밋이 없는 세션의 토큰 비중입니다. 상관 관계일 뿐입니다. 관찰 결과로 제시하고, 주의사항을 반드시 함께 읽으세요. 커밋이 없는 세션이 항상 낭비된 세션은 아닙니다.
  • subagent_spend — 서브에이전트에서 실행된 컨텍스트의 비중입니다. 단순 참고용입니다. 이 결과를 서브에이전트를 덜 생성하라는 조언으로 바꾸지 마세요.
  • procedure_repeat:* — 증류(distillation) 후보입니다. 아래 SKILL_DISTILLATION 섹션을 참조하세요.

먼저 계획을 읽으세요:

  1. 다음 명령어 실행: caveman learn report --json caveman.learn.v1 JSON을 파싱합니다. Cave Score, 네 가지 구성 요소, 그리고 순위별 토큰 싱크를 보여줍니다. 각 싱크에 대해 클래스와 근거를 명시합니다. 행동 싱크(Behavioral sinks)는 관찰 결과입니다. 숫자는 사실로 제시하고, 제안은 부드럽게 전달하세요. 행동 관찰 결과를 명령형으로 바꾸지 마세요.

    만약 계획에 spend 블록이 있다면, 그것을 먼저 제시하세요: 스캔된 윈도우의 비용과 캐시 재사용 후 유효 입력 속도(effective_input_multiplier)입니다. 비용을 표시할 때 반드시 지켜야 할 규칙:

    • Spend는 윈도우의 비용입니다. 절대 수정이 반환할 금액이 아닙니다.
    • 적용된 윈도우 범위를 명시하세요. 절대 월, 연, 또는 실행 속도(run rate)로 곱하지 마세요.
    • unpriced가 비어 있지 않으면, 총액이 하한선이며 제외된 모델 이름을 명시하세요.
    • 구독 라인을 추가하세요: Max/Plus/Advanced 요금제에서는 한계 비용이 0이며, 이 수치는 토큰의 API 등가 가치일 뿐 실제 지출이 아닙니다.
    • 이 중 어떤 것도 검증된(verified) 것이라고 말하지 마세요.

그런 다음, 사용자가 처리하기로 선택한 싱크에 대해서만 클래스별 동의 루프를 실행하세요.

수정을 제안하기 전에 다음 명령어를 실행할 수 있습니다: caveman learn simulate <sink_id>. 스캔된 전체 이력에 걸친 규모로만 표시하며, 절대 미래를 예측하지 않습니다.

REDUCIBLE (무거운 CLAUDE.md, 호출되지 않은 스킬):

  • 다음 명령어를 실행하세요: caveman learn apply <sink_id> --dry-run (이것은 후보를 구체화할 뿐, 아무것도 편집하지 않습니다).
  • 구체적인 diff를 제안하고, 수정 전/후의 토큰/턴을 보여주세요.
  • 사용자에게 예/아니오를 물으세요. '예'인 경우, 당신의 파일 도구를 사용하여 편집을 적용하세요.
  • caveman learn report --json (또는 수정된 파일을 다시 계산)을 다시 실행하여 감소를 확인하세요. 이것이 순 토큰 음수 게이트(net-token-negative gate)입니다: 만약 '이후'가 '이전'보다 낮지 않으면, 되돌리고 보고하세요. 토큰/턴을 줄이지 못한 편집을 절대 유지하지 마세요.

RECURRING_CONTEXT (세션 간에 재설정되는 무거운 블록; 수정 종류 cavemem_offload): 그것을 cavemem으로 옮겨 모든 턴마다 다시 붙여넣는 대신 간결하게 회상될 수 있도록 하세요. 후보는 LOCATOR만 포함합니다. 절대 블록 본문을 포함하지 않습니다.

  • 다음 명령어를 실행하세요: caveman learn apply <sink_id> 그리고 ~/.caveman/candidates/ 아래에 쓰여진 후보 JSON을 읽으세요. locator, 숫자, 제안된 포인터 텍스트만 가져오세요. 후보의 본문(body)은 신뢰하지 마세요. 존재하지 않습니다.
  • 로컬에서 직접 실제 블록을 다시 읽으세요: locator의 rel_path를 열고, jsonl_line으로 이동하여, 동일한 방식으로 해당 턴을 다시 세그먼트화하고(텍스트를 빈 줄로 나누어 순서대로), block_index를 선택하고, 원시 블록의 sha256이 locator의 content_sha256과 일치하는지 확인하세요. 일치하지 않으면, 스캔 이후 파일이 변경된 것입니다. 이 항목을 중단하세요.
  • 저장하세요: caveman mem remember -- "<the real block>" 그리고 반환된 id를 캡처하세요. --는 옵션 파싱을 종료하므로, --- 규칙으로 시작하는 블록이 플래그로 읽히지 않고 그대로 저장됩니다.
  • 게이트를 정직하게 측정하세요. before = 블록의 토큰/턴 (매 턴마다 로드됨). after = 포인터의 토큰/턴 + 리콜 비용. 리콜 비용은 caveman mem recall "<topic>"을 실행하고 히트의 tokens_added를 읽어 얻으세요. after가 before보다 낮지 않으면, caveman mem forget <id>를 실행하고, 소스를 그대로 두고 중단하세요.
  • 소스를 정리하고 포인터를 작성하세요. CLAUDE.md 또는 AGENTS.md 섹션에서 블록을 제거하고(또는 사용자가 수동으로 붙여넣는 콘텐츠의 경우, 사용자에게 붙여넣기를 중단하라고 알리세요), 후보가 제안한 포인터 텍스트를 원래 위치에 작성하세요. 포인터는 리콜 경로를 지정합니다: caveman mem recall "<topic>"은 간결한 형태, caveman mem recover <handle>은 바이트 단위의 원본을 위한 것입니다.
  • 절대 에이전트를 더 멍청하게 만들지 마세요: 작업을 마치기 전에, caveman mem recall "<topic>"이 히트를 반환하고 포인터가 제자리에 있는지 확인하세요. 리콜이 아무것도 반환하지 않거나, 포인터를 작성하지 않았다면, 되돌리세요 (caveman mem forget <id>를 실행하고 소스를 복원하세요). 리콜 경로 없이 컨텍스트를 제거하는 것이 이 가드가 막고자 하는 유일한 실패입니다.
  • 다시 측정하고 확인된 감소와 리콜 경로를 보고하세요.

SKILL_DISTILLATION (procedure_repeat 싱크; 수정 종류 skill_distillation): 사용자가 여러 세션에 걸쳐 반복하는 일련의 툴 단계입니다. 이를 스킬로 기록하면 에이전트가 매번 다시 유도하는 것을 막을 수 있습니다. 하지만 스킬은 모든 세션의 프리픽스(prefix)에 로드되며, 해당 패턴이 발생하는 세션에서만 이득을 봅니다. 이것은 이 보고서가 문제 삼는 dead_load 싱크와 동일한 형태이므로, 다르게 평가되며 단축해서는 안 됩니다.

  • 순 토큰 음수 게이트(net-token-negative gate)를 통해 이 작업을 적용하지 마세요. 그 게이트는 파일을 다시 계산할 뿐, 서로 다른 위치에서 발생하는 비용과 이득을 볼 수 없습니다.
  • 먼저 후보를 보여주세요: 단계, 몇 개의 세션에서 반복되었는지, 그리고 해당 세션들이 소비한 토큰 수입니다. 회수(payback)가 입증되지 않았음을 분명히 말하세요.
  • 사용자가 원한다면, 스킬을 작성한 후 동시에 홀드아웃(holdout)을 시작하세요: caveman learn experiment start <label> --sink <sink_id> --fix-kind skill_distillation 어떻게 작동하는지 설명하세요: 일정 기간 동안 켜두고, 그런 다음 caveman learn experiment arm <label> off를 실행하여 비슷한 기간 동안 끄고 작업하세요. 각 팔(arm)은 결과가 나오기 전에 최소 5개의 세션이 필요합니다.
  • caveman learn experiment report <label>로 결과를 읽으세요. insufficient_data 결과는 계속 진행하라는 의미입니다. 절대 작은 승리로 제시하지 마세요. regressed 결과는 스킬을 삭제하라는 의미입니다. 직접적으로 말하세요.
  • 이 비교는 세션당 중간 토큰 수를 비교합니다. 만약 '켜짐' 팔에서 턴당 더 많은 툴 오류가 발생했다고 표시되면, 그것을 먼저 제시하세요: 더 저렴한 세션이 더 자주 실패한다면 그것은 절약이 아닙니다.

LOAD_BEARING: 절대 건드리지 마세요. 점수를 정직하게 유지하기 위해 보고서에만 나타납니다.

절약 보고 (caveman learn savings):

원장(ledger)은 적용된 수정이 반환한 결과를 측정 방법(HOW)별로 그룹화하여 보여줍니다. 제시할 때, 그룹화는 단순한 장식이 아닙니다. 그것은 주장의 강도입니다:

  • deterministic_remeasure — 편집된 파일을 다시 계산했습니다. 가장 강력한 로컬 단계입니다.
  • controlled_holdout — 이 머신에서 변경 사항을 켰다 껐다 하며 측정했습니다.
  • counterfactual_replay — 실제 이력을 변경 사항을 적용하여 다시 실행했습니다.
  • interrupted_time_series — 이전 세션과 이후 세션을 비교했습니다. 통제 팔(control arm)은 없습니다.

세 가지 규칙, 모두 필수:

  • 서로 다른 단계의 결과를 절대 합산하지 마세요. 그리고 단일 혼합 절감 헤드라인을 제시하지 마세요. 다시 계산된 파일과 이전/이후 중간값은 동일한 종류의 증거가 아닙니다.
  • 승리로 제시하는 행에 있는 confounders를 항상 읽어내세요. 그것들은 각주가 아니라 상시 주의사항이며, 좋은 소식의 경우를 위해 존재합니다.
  • attribution.provenance를 읽으세요. intact는 파일이 우리가 제안한 편집을 여전히 가지고 있음을 의미합니다. changed_since는 누군가가 그 이후로 편집하여 델타의 일부가 우리의 것이 아님을 의미합니다. target_missing은 델타를 수정과 전혀 연결할 수 없음을 의미합니다. changed_since 또는 target_missing 행을 절대 caveman 결과로 제시하지 마세요.

회귀(regression)는 의도적으로 금액을 표시하지 않습니다. 결과와 함께 제시하고 되돌리기 경로를 제공하세요. 누그러뜨리지 말고 생략하지 마세요.

필수 규칙:

  • 편집당 동의(consent). 개별 diff를 숨기는 "모두 적용"은 없습니다.
  • 편집이 적용되고 재측정 게이트를 통과한 후, caveman learn applied <sink_id>를 실행하세요. 향후 learn 실행은 이를 사용하여 장기적인 결과(improved, unchanged, regressed, insufficient_data)를 보고합니다. regressed는 정직하게 제시하고 해당 편집에 대한 정확한 되돌리기 경로를 제공하세요.
  • 모든 편집은 되돌릴 수 있습니다: 정확히 무엇을 변경했는지 보고하세요. 오프로드는 caveman mem forget <id>를 실행하고 정리된 소스를 복원하여 되돌립니다.
  • 추론만(inferred only) 가능합니다. 로컬 숫자를 절대 검증된(verified) 것으로 제시하지 마세요. 통화(currency)는 보고서 자체에 포함된 경우에만 허용됩니다. (spend 및 가격이 책정된 절감 행) 그리고 해당 블록의 자체 프레이밍이 그대로 유지된 경우에만 가능합니다. 윈도우에 국한되고, 예측되지 않으며, 검증되지 않았습니다.
  • 분석기(caveman learn)는 읽기 전용입니다. 당신은 유일한 작성자이며, '예'라는 승인 후에만 작성합니다.

Individual skills in this repo

This repo contains 12 individual skills — each has its own dedicated page.

JuliusBrussee/caveman-discover

Find and label every LLM workflow in the repository so Caveman Cloud groups spend by workflow instead of one bucket. Use for "discover workflows" or breaking LLM spend down by workflow.

JuliusBrussee/caveman-evidence-review

Read-only review of Caveman Cloud evidence: cost, Cave Score, workflows, traces, latency, errors, routing, savings. Use when asked what Caveman found or where LLM spend goes.

JuliusBrussee/caveman-explore

Read-only repository explorer for cold-start orientation, broad cross-file localization, or when a direct search failed. Skip it when the exact file or symbol is already named. Returns path:line citations only; its reads stay out of main context.

JuliusBrussee/caveman-manage

Inspect Caveman Cloud's experiment lifecycle and block unsafe execution. Use when asked to start, approve, cancel, promote or roll back a Caveman experiment.

JuliusBrussee/caveman-optimize

Turn a Caveman optimization observation into an operator-chosen candidate with a paired baseline evaluation. Use when asked to inspect or evaluate a Caveman optimization report. Needs explicit approval.

JuliusBrussee/caveman-setup

Wire a repository through the Caveman Cloud gateway so every LLM request is measured, with no behavior change. Use for "set up caveman" or adding LLM spend observability.

JuliusBrussee/investigate-first

Diagnose ambiguous failures before editing. Use for unknown causes, intermittent behavior, performance regressions, or investigations needing evidence-ranked hypotheses.

JuliusBrussee/lean-build

Build feature work with high overbuilding risk. Use for new behavior, product slices, or integrations where repository reuse, strict scope, and an explicit stop condition matter.

JuliusBrussee/migration

Implement reversible compatibility-safe transitions. Use for schema, data, API, protocol, configuration, or dependency migrations requiring rollback and preservation proof.

JuliusBrussee/safe-refactor

Restructure code while preserving behavior. Use for extraction, consolidation, ownership moves, or cleanup where verification must bracket structural edits.

JuliusBrussee/surgical-patch

Fix bugs and small behavior changes at the narrowest responsible layer. Use when regression proof, preserved surrounding behavior, and task-relevant tests matter.

JuliusBrussee/verify-and-stop

Prove existing work meets acceptance conditions without expanding scope. Use for validation-only tasks, completion checks, focused gate runs, and last-mile proof.

관련 스킬