はじめに
PRECCとは?
PRECC (Claude Codeの予測的エラー修正) は、公式のPreToolUseフックメカニズムを介してClaude Codeのbashコマンドを傍受するRustツールです。エラーを発生する前に修正し、トークンを節約してリトライループを排除します。
コミュニティユーザーは無料。
問題
Claude Codeは、防げるはずのミスに大量のトークンを浪費します:
- ディレクトリの間違い –
Cargo.tomlのない親ディレクトリでcargo buildを実行し、エラーを読んでからリトライする。 - リトライループ – 失敗したコマンドが冗長な出力を生成し、Claudeがそれを読み、推論し、再試行します。各サイクルで数百トークンを消費します。
- 冗長な出力 –
findやls -Rのようなコマンドは数千行を出力し、Claudeが処理しなければなりません。
4つの柱
コンテキスト修正 (cd-prepend)
cargo build や npm test などのコマンドが間違ったディレクトリで実行された場合を検出し、実行前に cd /正しい/パス && を追加します。
GDBデバッグ
セグフォルトやクラッシュのより深いデバッグのためにGDBをアタッチする機会を検出し、生のコアダンプの代わりに構造化されたデバッグ情報を提供します。
セッションマイニング
Claude Codeのセッションログから失敗-修正のペアを採掘します。同じミスが再発したとき、PRECCはすでに修正を知っており、自動的に適用します。
自動化スキル
コマンドパターンにマッチして書き換える、組み込みおよびマイニングされたスキルのライブラリ。スキルはTOMLファイルまたはSQLite行として定義され、検査・編集・共有が容易です。
仕組み(30秒バージョン)
- Claude Codeがbashコマンドを実行しようとします。
- PreToolUseフックがコマンドをJSONとしてstdin経由で
precc-hookに送信します。 precc-hookはコマンドをパイプライン(スキル、ディレクトリ修正、圧縮)で3ミリ秒以内に処理します。- 修正されたコマンドがJSONとしてstdout経由で返されます。
- Claude Codeは元のコマンドの代わりに修正されたコマンドを実行します。
些末なエラーは集約されます。書き換え理由はフックの応答に含まれるため、各修正は監査可能であり、暗黙的ではありません。
安全境界
PRECCは、意味的等価性が証明可能に保持されるか、ユーザーが検証可能な場合にのみ書き換えを行います。破壊的コマンド(rm、git push --force、git reset --hard)はスキルが一致しても決して書き換えられません。すべての変換は有界でなければなりません——書き換え後のコマンドは元のコマンドのコアトークンを含んでいる必要があります。無界の書き換えは自動的に元に戻されます。適用されたすべての書き換えは記録・表示され、監査・無効化・取り消しが可能です。
適応的圧縮
コマンドが圧縮後に失敗した場合、PRECCは次のリトライで圧縮を自動的にスキップし、Claudeがデバッグ用の完全な非圧縮出力を取得できるようにします。
リアルタイム利用統計
現在のバージョン –:
| 指標 | 値 |
|---|---|
| 節約トークン | – |
| 節約率 | –% |
| フック遅延 | – ms (p50) |
| ユニークユーザー | – |
| crates.io downloads | – |
crates.io downloads count CI, docs.rs and mirror traffic — they are not a measure of unique users.
リリースごとの節約
これらの数値は匿名化されたテレメトリから自動的に更新されます。
リンク
- GitHub: https://github.com/peri-a-i/precc-cc
- ウェブサイト: https://peria.ai
- ドキュメント: https://precc.cc
インストール
クイックインストール (Linux / macOS)
curl -fsSL https://peria.ai/install.sh | bash
これはお使いのプラットフォーム用の最新リリースバイナリをダウンロードし、SHA256チェックサムを検証して ~/.local/bin/ に配置します。
インストール後、PRECCを初期化します:
precc init
precc init はPreToolUseフックをClaude Codeに登録し、データディレクトリを作成し、スキルデータベースを初期化します。
インストールオプション
SHA256検証
デフォルトでは、インストーラーは公開されたSHA256サムに対してバイナリチェックサムを検証します。検証をスキップするには(非推奨):
curl -fsSL https://peria.ai/install.sh | bash -s -- --no-verify
カスタムインストールプレフィックス
カスタムの場所にインストール:
curl -fsSL https://peria.ai/install.sh | bash -s -- --prefix /opt/precc
OpenCLI (–opencli) — WebFetch token savings
PRECC can also install OpenCLI, a third-party Node.js tool that turns ~148 websites (HackerNews, Reddit, arxiv, bilibili, zhihu, x.com, …) into structured-output commands. When installed, PRECC’s two built-in webfetch-opencli-* skills auto-rewrite raw curl/wget calls into the corresponding opencli <site> command for 5–50× smaller output.
precc init --opencli
This runs npm install -g @jackwener/opencli (requires Node.js 20+) and prints the URL for OpenCLI’s optional Chrome extension. The extension is only needed to reuse logged-in cookies on private pages; public sources work without it.
Skipping --opencli keeps PRECC fully self-contained — the auto-rewrite skill inlines a command -v opencli check that falls back to the original command when OpenCLI isn’t installed, so the skill is safe to ship default-on.
The Chrome extension requests broad permissions (debugger, <all_urls>, cookies). Operators should review them before installing it; --opencli only handles the npm package, not the extension.
コンパニオンツール (–extras)
PRECCにはオプションのコンパニオンツールが付属しています。--extras でインストールします:
curl -fsSL https://peria.ai/install.sh | bash -s -- --extras
これにより以下がインストールされます:
| ツール | 用途 |
|---|---|
| RTK | コマンド書き換えツールキット |
| lean-ctx | CLAUDE.mdおよびプロンプトファイルのコンテキスト圧縮 |
| nushell | 高度なパイプライン用の構造化シェル |
| cocoindex-code | より高速なコンテキスト解決のためのコードインデックス |
Windows (PowerShell)
irm https://peria.ai/install.ps1 | iex
次に初期化します:
precc init
手動インストール
- お使いのプラットフォーム用のリリースバイナリを GitHub Releases からダウンロードします。
- リリースの
.sha256ファイルに対してSHA256チェックサムを検証します。 - バイナリを
PATH上のディレクトリ(例:~/.local/bin/)に配置します。 precc initを実行します。
アップデート
precc update
特定のバージョンへ強制アップデート:
precc update --force --version 0.3.0
自動アップデートを有効にする:
precc update --auto
OpenClaw / ClawHub でのインストール
PRECC は plugins/openclaw/openclaw.plugin.json にプラグインマニフェスト(id precc-token-saver)を同梱しています。公開リリースが発行されると、GitHub Actions ワークフロー clawhub-publish.yml がスキルバンドルを ClawHub レジストリへ送信するため、エンドユーザーは curl インストーラーではなく ClawHub CLI から PRECC をインストールできます:
# ClawHub CLI
clawhub install precc
# Or pin the plugin manifest (id: precc-token-saver) via OpenClaw's
# plugin marketplace UI or its CLI equivalent.
OpenClaw での節約の表示方法
Claude Code で動作するすべての PRECC レポート画面は OpenClaw でも動作します — precc savings、precc savings --all、ローカライズされたステータス行(PRECC_LANG=zh を設定するとその言語で表示されます)、ローカルの書き換え監査ログはすべて、お使いのマシン上の同じ SQLCipher データベースから読み込みます。docs/symposium-plan/openclaw-savings-reporting.md にある別の仕様書では、各フック応答に構造化された preccSavings フィールドを追加し、デフォルトしきい値 $0.05 で一行のセッション終了通知を出す将来の機能を説明していますが、その部分はまだ提供されていません。
インストールの確認
$ precc --version
precc 0.3.0
$ precc savings
Session savings: 0 tokens (no commands intercepted yet)
precc が見つからない場合は、~/.local/bin が PATH に含まれていることを確認してください。
クイックスタート
5分でPRECCを起動しましょう。
ステップ1:インストール
curl -fsSL https://peria.ai/install.sh | bash
ステップ2:初期化
$ precc init
[precc] Hook registered with Claude Code
[precc] Created ~/.local/share/precc/
[precc] Initialized heuristics.db with 8 built-in skills
[precc] Ready.
ステップ3:フックがアクティブか確認
$ precc skills list
# Name Type Triggers
1 cargo-wrong-dir built-in cargo build/test/clippy outside Rust project
2 git-wrong-dir built-in git * outside a repo
3 go-wrong-dir built-in go build/test outside Go module
4 make-wrong-dir built-in make without Makefile in cwd
5 npm-wrong-dir built-in npm/npx/pnpm/yarn outside Node project
6 python-wrong-dir built-in python/pytest/pip outside Python project
7 jj-translate built-in git * in jj-colocated repo
8 asciinema-gif built-in asciinema rec
ステップ4:Claude Codeを通常通り使用
Claude Codeを開いて通常通り作業してください。PRECCはバックグラウンドで静かに動作します。Claudeが失敗するコマンドを発行すると、PRECCが実行前に修正します。
例:間違ったディレクトリでのCargo Build
プロジェクトが ~/projects/myapp/ にあり、Claudeが以下を実行するとします:
cargo build
~/projects/ から(1階層上で、そこに Cargo.toml はありません)。
PRECCなし: Claudeはエラー could not find Cargo.toml in /home/user/projects or any parent directory を受け取り、読んで推論し、cd myapp && cargo build で再試行します。コスト:約2,000トークンの無駄。
PRECCあり: フックが Cargo.toml の欠如を検出し、myapp/ で見つけ、コマンドを以下に書き換えます:
cd /home/user/projects/myapp && cargo build
Claudeはエラーを見ることがありません。トークンの無駄はゼロ。
ステップ5:節約を確認
セッション後、PRECCがどれだけのトークンを節約したか確認してください:
$ precc savings
Session Token Savings
=====================
Total estimated savings: 4,312 tokens
Breakdown:
Pillar 1 (cd prepends): 2,104 tokens (3 corrections)
Pillar 4 (skill activations): 980 tokens (2 activations)
RTK rewrites: 1,228 tokens (5 rewrites)
次のステップ
ライセンス
PRECCは2つのティアを提供します:Community(無料)とPro。
Communityティア(無料)
Communityティアには以下が含まれます:
- すべての組み込みスキル(ディレクトリ修正、jj変換など)
- Pillar 1とPillar 4を完全サポートするフックパイプライン
- 基本的な
precc savingsサマリー precc ingestによるセッションマイニング- 無制限のローカル使用
Proティア
Proは追加機能をアンロックします:
- 詳細な節約内訳 –
precc savings --allコマンドごとの分析付き - GIF録画 –
precc gifアニメーションターミナルGIFの作成用 - IPジオフェンスコンプライアンス – 規制環境向け
- メールレポート –
precc mail reportアナリティクスを送信 - GitHub Actions分析 –
precc gha失敗したワークフローのデバッグ用 - コンテキスト圧縮 –
precc compressCLAUDE.mdの最適化用 - 優先サポート
ライセンスの有効化
$ precc license activate XXXX-XXXX-XXXX-XXXX --email you@example.com
[precc] License activated for you@example.com
[precc] Plan: Pro
[precc] Expires: 2027-04-03
ライセンスステータスの確認
$ precc license status
License: Pro
Email: you@example.com
Expires: 2027-04-03
Status: Active
GitHub Sponsorsアクティベーション
GitHub SponsorsでPRECCをスポンサーしている場合、GitHubメールを通じて自動的にライセンスが有効化されます。キーは不要です。スポンサーメールが一致していることを確認してください:
$ precc license status
License: Pro (GitHub Sponsors)
Email: you@example.com
Status: Active (auto-renewed)
デバイスフィンガープリント
各ライセンスはデバイスフィンガープリントに紐付けられています。以下で確認できます:
$ precc license fingerprint
Fingerprint: a1b2c3d4e5f6...
ライセンスを新しいマシンに移行する必要がある場合は、まず無効化してください:
precc license deactivate
その後、新しいマシンで有効化します。
ライセンスの有効期限切れ?
Proライセンスの有効期限が切れると、PRECCはCommunityティアに戻ります。すべての組み込みスキルとコア機能は引き続き動作します。Pro固有の機能のみ利用できなくなります。詳細はFAQをご覧ください。
フックパイプライン
precc-hook バイナリはPRECCの中核です。Claude Codeとシェルの間に位置し、すべてのbashコマンドを5ミリ秒以内に処理します。
Claude Codeがフックを呼び出す方法
Claude CodeはPreToolUseフックをサポートしています。これは実行前にツール入力を検査・変更できる外部プログラムです。Claudeがbashコマンドを実行しようとすると、stdinで precc-hook にJSONを送信し、stdoutからレスポンスを読み取ります。
パイプラインステージ
Claude Code
|
v
+---------------------------+
| 1. Parse JSON stdin | Read the command from Claude Code
+---------------------------+
|
v
+---------------------------+
| 2. Skill matching | Query heuristics.db for matching skills (Pillar 4)
+---------------------------+
|
v
+---------------------------+
| 3. Directory correction | Resolve correct working directory (Pillar 1)
+---------------------------+
|
v
+---------------------------+
| 4. GDB check | Detect debug opportunities (Pillar 2)
+---------------------------+
|
v
+---------------------------+
| 5. RTK rewriting | Apply command rewrites for token savings
+---------------------------+
|
v
+---------------------------+
| 6. Emit JSON stdout | Return modified command to Claude Code
+---------------------------+
|
v
Shell executes corrected command
例:JSONの入出力
入力(Claude Codeから)
{
"tool_input": {
"command": "cargo build"
}
}
PRECCは現在のディレクトリに Cargo.toml がないが、./myapp/Cargo.toml が存在することを検出します。
出力(Claude Codeへ)
{
"hookSpecificOutput": {
"updatedInput": {
"command": "cd /home/user/projects/myapp && cargo build"
}
}
}
変更が不要な場合、updatedInput.command は空となり、Claude Codeは元のコマンドを使用します。
ステージ詳細
ステージ1:JSON解析
stdinから完全なJSONオブジェクトを読み取ります。tool_input.command を抽出します。パースに失敗した場合、フックは即座に終了し、Claude Codeは元のコマンドを使用します(フェイルオープン設計)。
ステージ2:スキルマッチング
SQLiteヒューリスティクスデータベースに、トリガーパターンがコマンドに一致するスキルを問い合わせます。スキルは優先度順にチェックされます。組み込みTOMLスキルとマイニングされたスキルの両方が評価されます。
ステージ3:ディレクトリ修正
ビルドコマンド(cargo、go、make、npm、python など)に対して、期待されるプロジェクトファイルが現在のディレクトリに存在するかチェックします。存在しない場合、近くのディレクトリをスキャンして最も近い一致を見つけ、cd <dir> && を先頭に追加します。
ディレクトリスキャンは5秒のTTLを持つキャッシュされたファイルシステムインデックスを使用して高速を維持します。
ステージ4:GDBチェック
コマンドがクラッシュを引き起こす可能性がある場合(例:デバッグバイナリの実行)、PRECCはGDBラッパーを提案または注入して、生のクラッシュログの代わりに構造化されたデバッグ出力をキャプチャできます。
ステージ5:RTK書き換え
RTK(Rewrite Toolkit)ルールを適用して、冗長なコマンドを短縮し、ノイズの多い出力を抑制し、トークン効率のためにコマンドを再構成します。
ステージ6:JSON出力
変更されたコマンドをJSONにシリアライズしてstdoutに書き込みます。変更がなかった場合、出力はClaude Codeに元のコマンドを使用するよう信号を送ります。
パフォーマンス
パイプライン全体が5ミリ秒(p99)以内に完了します。主な最適化:
- ロックフリーの並行読み取りのためのSQLite WALモード
- スキルマッチングのためのプリコンパイル済み正規表現パターン
- キャッシュされたファイルシステムスキャン(5秒TTL)
- ホットパスにネットワーク呼び出しなし
- フェイルオープン:エラーが発生しても元のコマンドにフォールスルー
フックの手動テスト
フックを直接呼び出すことができます:
$ echo '{"tool_input":{"command":"cargo build"}}' | precc-hook
{"hookSpecificOutput":{"updatedInput":{"command":"cd /home/user/myapp && cargo build"}}}
スキル
スキルは、PRECCがコマンドを検出して修正するために使用するパターンマッチングルールです。組み込み(TOMLファイルとして配布)またはセッションログからマイニングされます。
組み込みスキル
| スキル | トリガー条件 | アクション |
|---|---|---|
cargo-wrong-dir | Rustプロジェクト外での cargo build/test/clippy | 最も近い Cargo.toml ディレクトリへの cd を先頭に追加 |
git-wrong-dir | gitリポジトリ外での git * | 最も近い .git ディレクトリへの cd を先頭に追加 |
go-wrong-dir | Goモジュール外での go build/test | 最も近い go.mod ディレクトリへの cd を先頭に追加 |
make-wrong-dir | カレントディレクトリにMakefileがない状態での make | 最も近いMakefileディレクトリへの cd を先頭に追加 |
npm-wrong-dir | Nodeプロジェクト外での npm/npx/pnpm/yarn | 最も近い package.json ディレクトリへの cd を先頭に追加 |
python-wrong-dir | Pythonプロジェクト外での python/pytest/pip | 最も近いPythonプロジェクトへの cd を先頭に追加 |
jj-translate | jj共存リポジトリでの git * | 同等の jj コマンドに書き換え |
asciinema-gif | asciinema rec | precc gif に書き換え |
スキルの一覧表示
$ precc skills list
# Name Type Triggers
1 cargo-wrong-dir built-in cargo build/test/clippy outside Rust project
2 git-wrong-dir built-in git * outside a repo
3 go-wrong-dir built-in go build/test outside Go module
4 make-wrong-dir built-in make without Makefile in cwd
5 npm-wrong-dir built-in npm/npx/pnpm/yarn outside Node project
6 python-wrong-dir built-in python/pytest/pip outside Python project
7 jj-translate built-in git * in jj-colocated repo
8 asciinema-gif built-in asciinema rec
9 fix-pytest-path mined pytest with wrong test path
スキルの詳細表示
$ precc skills show cargo-wrong-dir
Name: cargo-wrong-dir
Type: built-in
Source: skills/builtin/cargo-wrong-dir.toml
Description: Detects cargo commands run outside a Rust project and prepends
cd to the directory containing the nearest Cargo.toml.
Trigger: ^cargo\s+(build|test|clippy|run|check|bench|doc)
Action: prepend_cd
Marker: Cargo.toml
Activations: 12
スキルをTOMLにエクスポート
$ precc skills export cargo-wrong-dir
[skill]
name = "cargo-wrong-dir"
description = "Prepend cd for cargo commands outside a Rust project"
trigger = "^cargo\\s+(build|test|clippy|run|check|bench|doc)"
action = "prepend_cd"
marker = "Cargo.toml"
priority = 10
スキルの編集
$ precc skills edit cargo-wrong-dir
これにより、$EDITOR でスキル定義が開きます。保存後、スキルは自動的にリロードされます。
Advise コマンド
precc skills advise は最近のセッションを分析し、繰り返しパターンに基づいて新しいスキルを提案します:
$ precc skills advise
Analyzed 47 commands from the last session.
Suggested skills:
1. docker-wrong-dir: You ran `docker compose up` outside the project root 3 times.
Suggested trigger: ^docker\s+compose
Suggested marker: docker-compose.yml
2. terraform-wrong-dir: You ran `terraform plan` outside the infra directory 2 times.
Suggested trigger: ^terraform\s+(plan|apply|init)
Suggested marker: main.tf
Accept suggestion [1/2/skip]?
スキルのクラスタリング
$ precc skills cluster
類似するマイニングされたスキルをグループ化し、冗長または重複するパターンの特定を支援します。
マイニングスキルと組み込みスキル
組み込みスキルはPRECCに同梱され、skills/builtin/*.toml で定義されています。最も一般的なディレクトリ間違いをカバーします。
マイニングスキルは precc ingest または precc-learner デーモンによってセッションログから作成されます。~/.local/share/precc/heuristics.db に保存され、ワークフローに固有です。詳細はマイニングを参照してください。
節約
PRECCは各インターセプションから推定されるトークン節約を追跡します。precc savings を使用して、PRECCがどれだけの無駄を防いだかを確認してください。
クイックサマリー
$ precc savings
Session Token Savings
=====================
Total estimated savings: <span data-stat="session_tokens_saved">8,741</span> tokens
Breakdown:
Pillar 1 (cd prepends): <span data-stat="session_p1_tokens">3,204</span> tokens (<span data-stat="session_p1_count">6</span> corrections)
Pillar 4 (skill activations): <span data-stat="session_p4_tokens">1,560</span> tokens (<span data-stat="session_p4_count">4</span> activations)
RTK rewrites: <span data-stat="session_rtk_tokens">2,749</span> tokens (<span data-stat="session_rtk_count">11</span> rewrites)
Lean-ctx wraps: <span data-stat="session_lean_tokens">1,228</span> tokens (<span data-stat="session_lean_count">2</span> wraps)
詳細内訳(Pro)
$ precc savings --all
Session Token Savings (Detailed)
================================
Total estimated savings: <span data-stat="session_tokens_saved">8,741</span> tokens
Command-by-command:
# Time Command Saving Source
1 09:12 cargo build 534 tk cd prepend (cargo-wrong-dir)
2 09:14 cargo test 534 tk cd prepend (cargo-wrong-dir)
3 09:15 git status 412 tk cd prepend (git-wrong-dir)
4 09:18 npm install 824 tk cd prepend (npm-wrong-dir)
5 09:22 find . -name "*.rs" 387 tk RTK rewrite (output truncation)
6 09:25 cat src/main.rs 249 tk RTK rewrite (lean-ctx wrap)
7 09:31 cargo clippy 534 tk cd prepend (cargo-wrong-dir)
...
Pillar Breakdown:
Pillar 1 (context resolution): <span data-stat="session_p1_tokens">3,204</span> tokens <span data-stat="session_p1_pct">36.6</span>%
Pillar 2 (GDB debugging): 0 tokens 0.0%
Pillar 3 (mined preventions): 0 tokens 0.0%
Pillar 4 (automation skills): <span data-stat="session_p4_tokens">1,560</span> tokens <span data-stat="session_p4_pct">17.8</span>%
RTK rewrites: <span data-stat="session_rtk_tokens">2,749</span> tokens <span data-stat="session_rtk_pct">31.5</span>%
Lean-ctx wraps: <span data-stat="session_lean_tokens">1,228</span> tokens <span data-stat="session_lean_pct">14.1</span>%
節約の推定方法
各修正タイプには、PRECCなしで何が起こったかに基づく推定トークンコストがあります:
| 修正タイプ | 推定節約 | 理由 |
|---|---|---|
| cd prepend | ~500 tokens | エラー出力 + Claudeの推論 + リトライ |
| スキルアクティベーション | ~400 tokens | エラー出力 + Claudeの推論 + リトライ |
| RTK rewrite | ~250 tokens | Claudeが読まなければならない冗長な出力 |
| Lean-ctx wrap | ~600 tokens | 大きなファイル内容が圧縮される |
| マイニングされた予防 | ~500 tokens | 既知の失敗パターンを回避 |
これらは控えめな見積もりです。Claudeのエラーに関する推論は冗長になることがあるため、実際の節約はより高いことが多いです。
累積節約
節約はPRECCデータベースにセッション間で保持されます。時間の経過とともに、総合的な影響を追跡できます:
$ precc savings
Session Token Savings
=====================
Total estimated savings: <span data-stat="session_tokens_saved">8,741</span> tokens
Lifetime savings: <span data-stat="total_tokens_saved">142,389</span> tokens across <span data-stat="total_sessions">47</span> sessions
ステータスバー
インストール後、PRECC は ~/.claude/settings.json に statusLine エントリを追加し、Claude Code のステータスバーにライブセッションメトリクスを表示します:
$0.42 spent | 1.2M in/out | 📊 last cmd: −1.2K | PRECC: 7 fixes | 5.8ms avg | this session: 320 saved over 7 cmds (~$0.05) | lifetime: 8.9K saved over 217 cmds (~$2.85)
PRECC_LANG を設定するとラベルがあなたの言語で表示されます — ローカライゼーションの章を参照してください。
各セグメント:
| セグメント | 出典 | 意味 | セッション再起動でリセットされますか? |
|---|---|---|---|
$0.42 spent | cost.total_cost_usd | Claude Code が報告するセッション累積コスト | はい |
1.2M in/out | total_input_tokens + total_output_tokens | セッション全体の非キャッシュ入力 + 出力トークン | はい |
📊 last cmd: −1.2K | 最新の Bash コマンドの PRECC 測定 | オリジナルを再実行して測定した実測節約量 | いいえ(セッション間で保持) |
PRECC: 7 fixes | metrics.log | このセッションの修正回数 — 修正カウントのみ、偽のトークン推定なし | はい |
5.8ms avg | PRECC フックレイテンシ p50 | PRECC が各ツール呼び出しの処理に費やした時間 | はい |
bash 18% of total | post_observations.log | Bash 出力に由来するセッショントークンの割合 — PRECC の節約が当然総コストの一部にすぎない理由を明らかにします(PRECC は Bash 出力のみを最適化) | はい |
this session: 320 saved over 7 cmds (~$0.05) | .lifetime_summary.json − baseline | セッションごとの実差分。差分がゼロのとき非表示(セッション開始時) | はい(ベースラインを再スナップショット) |
lifetime: 8.9K saved over 217 cmds (~$2.85) | .lifetime_summary.json | PRECC 初回インストール以降に累積で節約されたトークンと再測定されたコマンド数、および現行のトークン単価で見積もった USD 換算値 | いいえ |
lifetime: セグメントは最後に配置されており、Claude Code の UI が右端でバーを切り詰める場合に最初に切り詰められます。
なぜコストとトークン数を割り算できないのか
表示されている 1.2M in/out は $0.42 spent を生み出した分母ではありません。Claude Code の cost.total_cost_usd は API の完全なトークン内訳から計算されます — 基本入力、出力、さらにキャッシュ読み取りとキャッシュ作成。セッション全体の累積キャッシュトークン数は statusline スキーマで公開されていないため、PRECC は可視部分(非キャッシュ)のみを表示できます。
ファイルを頻繁に再読み込みする長いセッションでは、キャッシュ読み取りが可視トークン数の 10 倍になることがあります。だからこそ両者を比率として組み合わせると誤解を招きます — PRECC は代わりに独立したセグメントとして表示します。
なぜ PRECC がコストを計算しないのか
コストの数値は信頼できるものです。PRECC は Claude Code が stdin 経由でステータスコマンドにパイプする JSON から cost.total_cost_usd をそのまま読み取ります。これは Claude Code があなたのサブスクリプション/使用予算に対して請求するのと同じ数値です。組み込みの /cost スラッシュコマンドでいつでも確認できます — 両者は一致するはずです。
コストを決める要因
Claude Opus 4.6 の場合:
| Token type | Standard (≤200k context) | 1M context tier |
|---|---|---|
| Input | $15 / MTok | $30 / MTok |
| Output | $75 / MTok | $150 / MTok |
| Cache write | $18.75 / MTok | $37.50 / MTok |
| Cache read | $1.50 / MTok | $3 / MTok |
長いセッションでの最大の要因は通常、出力トークン(特に 1M コンテキスト層では最もトークン単価が高いタイプ)、繰り返されるキャッシュ読み取り(個別には安価だが多くのターンで急速に累積する)、およびキャッシュ作成(ファイル読み取りごとに 1 回書き込まれ、基本入力レートの約 1.25 倍)です。PRECC は Bash 出力を圧縮することで可視トークンコストを削減します(📊 last cmd: セグメントがコマンドごとの節約量を表示)が、Claude が既に読み込んだファイルのキャッシュ読み取りを削減することはできません。
安定したセッションカウント
「PRECC: N fixes」セグメントは永続化されたセッション開始以降のイベントを数えます。セッション開始は各セッションの最初の statusline 更新時に ~/.local/share/precc/sessions/<session_id>.start に書き込まれます。これによりカウントは単調になります — 特定の更新で cost.total_duration_ms が欠落していてもセッション中に減少することはありません。
自動更新される累計スナップショット
lifetime: セグメントは ~/.local/share/precc/.lifetime_summary.json を読み取ります。このファイルは PostToolUse 測定ごと、および precc savings 呼び出しごとに書き換えられます。this session: セグメントは同じ lifetime ファイルを読み取りますが、各セッションの最初の更新時に永続化されたセッションごとのベースラインを差し引きます。手動更新は不要 — ファイルは自動的に更新されます。
ステータスバーを抑制する
既存のステータスバーを維持したい場合は、~/.claude/settings.json に独自の statusLine コマンドを設定してください。PRECC のインストーラーはカスタム値を検出し、以降のアップデートでもそのまま残します。
インタラクションごとの 📊 PRECC 行(additionalContext 内)のみを抑制するには、シェル環境で PRECC_QUIET=1 を設定してください。
Related research
PRECC’s three savings mechanisms each have a counterpart in the recent literature. These are related work — the ideas PRECC’s design draws on. Their reported figures are their measurements, not PRECC’s: PRECC only ever quotes numbers measured on your own machine (see “measured, not estimated”, above).
- Output/trajectory trimming (PRECC’s
diet+ bash-output compression) — Reducing Cost of LLM Agents with Trajectory Reduction (AgentDiet), FSE 2026, arXiv:2509.23586. Removes redundant/expired trajectory content post-hoc; reports −39.9–59.7% input tokens. PRECC applies the same idea pre-execution and deterministically (no extra LLM call). - Skills as programs (PRECC’s mined + builtin rewrite skills) — Harnessing LLM Agents with Skill Programs, arXiv:2605.17734. Frames reusable agent skills as executable program functions — the same analogy behind PRECC’s command-rewrite skills (a pattern → a deterministic rewrite).
- Context compression (PRECC’s
compress+lean-ctxwrapping) — Compress the Context, Keep the Commitments: A Formal Framework for Verifiable LLM Context Compression, arXiv:2605.17304. Recent work on compressing context without losing required information — the property PRECC’s deterministic, cache-stable rewrites aim to preserve.
圧縮
precc compress は CLAUDE.md やその他のコンテキストファイルを圧縮し、Claude Code がそれらを読み込む際のトークン使用量を削減します。これは Pro 機能です。
基本的な使い方
$ precc compress .
[precc] Scanning directory: .
[precc] Found 3 context files:
CLAUDE.md (2,847 tokens -> 1,203 tokens, -57.7%)
ARCHITECTURE.md (4,112 tokens -> 2,044 tokens, -50.3%)
ALTERNATIVES.md (3,891 tokens -> 1,967 tokens, -49.5%)
[precc] Total: 10,850 tokens -> 5,214 tokens (-51.9%)
[precc] Files compressed. Use --revert to restore originals.
ドライラン
ファイルを変更せずに変更内容をプレビュー:
$ precc compress . --dry-run
[precc] Dry run -- no files will be modified.
[precc] CLAUDE.md: 2,847 tokens -> 1,203 tokens (-57.7%)
[precc] ARCHITECTURE.md: 4,112 tokens -> 2,044 tokens (-50.3%)
[precc] ALTERNATIVES.md: 3,891 tokens -> 1,967 tokens (-49.5%)
[precc] Total: 10,850 tokens -> 5,214 tokens (-51.9%)
元に戻す
元のファイルは自動的にバックアップされます。復元するには:
$ precc compress --revert
[precc] Restored 3 files from backups.
何が圧縮されるか
コンプレッサーはいくつかの変換を適用します:
- 冗長な空白と空行を削除
- 意味を保ちながら冗長な表現を短縮
- テーブルとリストを圧縮
- コメントと装飾的なフォーマットを除去
- すべてのコードブロック、パス、技術的識別子を保持
圧縮された出力はまだ人間が読める形式です——ミニファイや難読化はされていません。
特定のファイルを対象にする
$ precc compress CLAUDE.md
[precc] CLAUDE.md: 2,847 tokens -> 1,203 tokens (-57.7%)
レポート
precc report は PRECC の活動とトークン節約をまとめた分析ダッシュボードを生成します。
レポートの生成
$ precc report
PRECC Report -- 2026-04-03
==========================
Sessions analyzed: 12
Commands intercepted: 87
Total token savings: 42,389
Top skills by activation:
1. cargo-wrong-dir 34 activations 17,204 tokens saved
2. npm-wrong-dir 18 activations 9,360 tokens saved
3. git-wrong-dir 12 activations 4,944 tokens saved
4. RTK rewrite 15 activations 3,750 tokens saved
5. python-wrong-dir 8 activations 4,131 tokens saved
Savings by pillar:
Pillar 1 (context resolution): 28,639 tokens 67.6%
Pillar 4 (automation skills): 7,000 tokens 16.5%
RTK rewrites: 3,750 tokens 8.8%
Lean-ctx wraps: 3,000 tokens 7.1%
Recent corrections:
2026-04-03 09:12 cargo build -> cd myapp && cargo build
2026-04-03 09:18 npm test -> cd frontend && npm test
2026-04-03 10:05 git status -> cd repo && git status
...
レポートのメール送信
レポートをメールアドレスに送信(メール設定が必要、Email 参照):
$ precc report --email
[precc] Report sent to you@example.com
受信者アドレスは ~/.config/precc/mail.toml から読み取られます。precc mail report EMAIL を使って特定のアドレスに送信することもできます。
レポートデータ
レポートは ~/.local/share/precc/history.db のローカル PRECC データベースから生成されます。レポートを明示的にメール送信しない限り、データはマシンから出ません。
マイニング
PRECCはClaude Codeのセッションログを解析して失敗-修正パターンを学習します。同じミスを再び見つけると、自動的に修正を適用します。
セッションログの取り込み
単一ファイルの取り込み
$ precc ingest ~/.claude/logs/session-2026-04-03.jsonl
[precc] Parsing session-2026-04-03.jsonl...
[precc] Found 142 commands, 8 failure-fix pairs
[precc] Stored 8 patterns in history.db
[precc] 2 new skill candidates identified
すべてのログの取り込み
$ precc ingest --all
[precc] Scanning ~/.claude/logs/...
[precc] Found 23 session files (14 new, 9 already ingested)
[precc] Parsing 14 new files...
[precc] Found 47 failure-fix pairs across 14 sessions
[precc] Stored 47 patterns in history.db
[precc] 5 new skill candidates identified
強制再取り込み
すでに取り込まれたファイルを再処理するには:
$ precc ingest --all --force
[precc] Re-ingesting all 23 session files...
マイニングの仕組み
- PRECCはセッションJSONLログファイルを読み取ります。
- 最初のコマンドが失敗し、2番目が修正されたリトライであるコマンドペアを特定します。
- パターン(何が問題だったか)と修正(Claudeが何を変えたか)を抽出します。
- パターンは
~/.local/share/precc/history.dbに保存されます。 - パターンが信頼度の閾値に達すると(複数回確認)、
heuristics.dbのマイニングスキルになります。
パターンの例
Failure: pytest tests/test_auth.py
Error: ModuleNotFoundError: No module named 'myapp'
Fix: cd /home/user/myapp && pytest tests/test_auth.py
Pattern: pytest outside project root -> prepend cd
precc-learner デーモン
precc-learner デーモンはバックグラウンドで実行され、新しいセッションログを自動的に監視します:
$ precc-learner &
[precc-learner] Watching ~/.claude/logs/ for new sessions...
[precc-learner] Processing session-2026-04-03-1412.jsonl... 3 new patterns
デーモンはファイルシステム通知(LinuxではinotifyOSではFSEvents)を使用するため、セッション終了時に即座に反応します。
パターンからスキルへ
マイニングされたパターンは以下の条件を満たすとスキルに昇格します:
- セッション全体で少なくとも3回確認
- 一貫した修正パターン(毎回同じタイプの修正)
- 誤検出なし
スキル候補は以下で確認できます:
$ precc skills advise
スキルの管理の詳細については Skills を参照してください。
データストレージ
- 失敗-修正ペア:
~/.local/share/precc/history.db - 昇格したスキル:
~/.local/share/precc/heuristics.db
どちらもWALモードのSQLiteデータベースで、安全な並行アクセスが可能です。
メール
PRECCはメールでレポートやファイルを送信できます。これには一度だけのSMTP設定が必要です。
セットアップ
$ precc mail setup
SMTP host: smtp.gmail.com
SMTP port [587]: 587
Username: you@gmail.com
Password: ********
From address [you@gmail.com]: you@gmail.com
[precc] Mail configuration saved to ~/.config/precc/mail.toml
[precc] Sending test email to you@gmail.com...
[precc] Test email sent successfully.
設定ファイル
設定は ~/.config/precc/mail.toml に保存されます:
[smtp]
host = "smtp.gmail.com"
port = 587
username = "you@gmail.com"
password = "app-password-here"
from = "you@gmail.com"
tls = true
このファイルを直接編集できます:
$EDITOR ~/.config/precc/mail.toml
Gmailの場合は、アカウントパスワードではなくアプリパスワードを使用してください。
レポートの送信
$ precc mail report team@example.com
[precc] Generating report...
[precc] Sending to team@example.com...
[precc] Report sent.
ファイルの送信
$ precc mail send colleague@example.com output.log
[precc] Sending output.log to colleague@example.com...
[precc] Sent (14.2 KB).
SSHリレーサポート
マシンがSMTPサーバーに直接到達できない場合(例:企業ファイアウォールの背後)、PRECCはSSHトンネル経由のリレーをサポートします:
[smtp]
host = "localhost"
port = 2525
[ssh_relay]
host = "relay.example.com"
user = "you"
remote_port = 587
local_port = 2525
PRECCは送信前にSSHトンネルを自動的に確立します。
GIF録画
precc gifはbashスクリプトからターミナルセッションのアニメーションGIF録画を作成します。これはPro機能です。
基本的な使い方
$ precc gif script.sh 30s
[precc] Recording script.sh (max 30s)...
[precc] Running: echo "Hello, world!"
[precc] Running: cargo build --release
[precc] Running: cargo test
[precc] Recording complete.
[precc] Output: script.gif (1.2 MB, 24s)
最初の引数は実行するコマンドを含むbashスクリプトです。2番目の引数は最大録画時間です。
スクリプト形式
スクリプトは標準的なbashファイルです:
#!/bin/bash
echo "Building project..."
cargo build --release
echo "Running tests..."
cargo test
echo "Done!"
入力シミュレーション
インタラクティブコマンドの場合、追加引数として入力値を指定します:
$ precc gif interactive-demo.sh 60s "yes" "my-project" "3"
追加の各引数は、スクリプトが入力を要求するときにstdinの行として渡されます。
出力オプション
出力ファイルはデフォルトでスクリプト名に基づいて命名されます(script.gif)。GIFはダークターミナルテーマで標準80x24サイズを使用します。
なぜasciinemaではなくGIFなのか?
組み込みスキル asciinema-gif は asciinema rec を自動的に precc gif に書き換えます。GIFファイルはより移植性が高く、GitHub README、Slack、メールでプレーヤーなしでインライン表示されます。
GitHub Actionsの分析
precc ghaは失敗したGitHub Actionsの実行を分析し、修正を提案します。これはPro機能です。
使い方
失敗したGitHub Actionsの実行URLを渡します:
$ precc gha https://github.com/myorg/myrepo/actions/runs/12345678
[precc] Fetching run 12345678...
[precc] Run: CI / build (ubuntu-latest)
[precc] Status: failure
[precc] Failed step: Run cargo test
[precc] Log analysis:
Error: test result: FAILED. 2 passed; 1 failed
Failed test: tests::integration::test_database_connection
Cause: thread 'tests::integration::test_database_connection' panicked at
'called Result::unwrap() on an Err value: Connection refused'
[precc] Suggested fix:
The test requires a database connection but the CI environment does not
start a database service. Add a services block to your workflow:
services:
postgres:
image: postgres:15
ports:
- 5432:5432
env:
POSTGRES_PASSWORD: test
機能
- GitHub ActionsのランURLを解析して、オーナー、リポジトリ、ランIDを抽出します。
- GitHub API経由でランログを取得します(
GITHUB_TOKENが設定されている場合はそれを使用、そうでなければパブリックアクセス)。 - 失敗したステップを特定し、関連するエラー行を抽出します。
- エラーを分析し、一般的なCI失敗パターンに基づいて修正を提案します。
サポートされる障害パターン
- 不足しているサービスコンテナ(データベース、Redisなど)
- ランナーのOSまたはアーキテクチャの不一致
- 環境変数またはシークレットの不足
- 依存関係のインストール失敗
- テストタイムアウト
- 権限エラー
- キャッシュミスによるビルドの遅延
ジオフェンス
PRECCは規制環境向けのIPジオフェンスコンプライアンスチェックを含みます。これはPro機能です。
概要
一部の組織は、開発ツールが承認された地理的リージョン内でのみ動作することを要求しています。PRECCのジオフェンス機能は、現在のマシンのIPアドレスが許可されたリージョンリスト内にあることを検証します。
コンプライアンスチェック
$ precc geofence check
[precc] Current IP: 203.0.113.42
[precc] Region: US-East (Virginia)
[precc] Status: COMPLIANT
[precc] Policy: us-east-1, us-west-2, eu-west-1
マシンが許可されたリージョンの外にある場合:
$ precc geofence check
[precc] Current IP: 198.51.100.7
[precc] Region: AP-Southeast (Singapore)
[precc] Status: NON-COMPLIANT
[precc] Policy: us-east-1, us-west-2, eu-west-1
[precc] Warning: Current region is not in the allowed list.
ジオフェンスデータの更新
$ precc geofence refresh
[precc] Fetching updated IP geolocation data...
[precc] Updated. Cache expires in 24h.
ジオフェンス情報の表示
$ precc geofence info
Geofence Configuration
======================
Policy file: ~/.config/precc/geofence.toml
Allowed regions: us-east-1, us-west-2, eu-west-1
Cache age: 2h 14m
Last check: 2026-04-03 09:12:00 UTC
Status: COMPLIANT
キャッシュのクリア
$ precc geofence clear
[precc] Geofence cache cleared.
設定
ジオフェンスポリシーは ~/.config/precc/geofence.toml で定義されます:
[geofence]
allowed_regions = ["us-east-1", "us-west-2", "eu-west-1"]
check_on_init = true
block_on_violation = false
block_on_violation = true を設定すると、許可されたリージョン外でPRECCの動作を防止します。
テレメトリ
PRECCはツールの改善に役立つオプトイン方式の匿名テレメトリをサポートしています。明示的に同意しない限り、データは収集されません。
オプトイン
$ precc telemetry consent
[precc] Telemetry enabled. Thank you for helping improve PRECC.
[precc] You can revoke consent at any time with: precc telemetry revoke
オプトアウト
$ precc telemetry revoke
[precc] Telemetry disabled. No further data will be sent.
ステータス確認
$ precc telemetry status
Telemetry: disabled
Last sent: never
送信されるデータのプレビュー
オプトインする前に、収集されるデータを正確に確認できます:
$ precc telemetry preview
Telemetry payload (this session):
{
"version": "0.3.0",
"os": "linux",
"arch": "x86_64",
"skills_activated": 12,
"commands_intercepted": 87,
"pillars_used": [1, 4],
"avg_hook_latency_ms": 2.3,
"session_count": 1
}
収集されるもの
- PRECCバージョン、OS、アーキテクチャ
- 集計カウント:インターセプトされたコマンド、アクティブ化されたスキル、使用された柱
- 平均フックレイテンシ
- セッション数
収集されないもの
- コマンドテキストや引数なし
- ファイルパスやディレクトリ名なし
- プロジェクト名やリポジトリURLなし
- 個人を特定できる情報(PII)なし
- IPアドレスなし(サーバーは記録しません)
環境変数によるオーバーライド
コマンドを実行せずにテレメトリを無効にするには(CIや共有環境で便利):
export PRECC_NO_TELEMETRY=1
これは同意設定よりも優先されます。
データの送信先
テレメトリデータはHTTPSで https://telemetry.peria.ai/v1/precc に送信されます。データは使用パターンの理解と開発の優先順位付けにのみ使用されます。
トークンコスト予測
PRECCはトークンコスト予測のオラクルを搭載しており、複数ステップの計画を実時間ではなくトークンで予算化できます。各ステップの前に予測を記録し、作業完了後に実績を記録すれば、データセットが組み込みの予測器を訓練し、時間とともに精度が向上します。
予測を記録する
計画ステップの一行説明を渡します。PRECCはそれを分類し(feat / fix / test / refactor / measurement / doc / chore / unknown)、トークン数を推定し、ループを閉じるために使うidを出力します。
$ precc predict "Implement read-deltas with mtime check"
id=42 category=feat predicted=5680 tokens (confidence=0.50, model=trained-v1)
Record actual when done: precc predict --record 42 <actual_tokens>
実績を記録する
ステップ完了後、セッションのフッターまたはテレメトリから実際のトークン数を確認し、idを使って書き戻します。
$ precc predict --record 42 6300
Recorded actual=6300 tokens for prediction id=42.
trained-v1 を訓練する
クローズ済みの予測が少なくとも10件あれば、log10(actual) を log10(説明文の長さ) と one-hot のカテゴリダミーに対して trained-v1 リッジ回帰でフィットします。フィッティングは閉形式(リッジ λ=1 の正規方程式に対するコレスキー分解)で、ミリ秒単位で完了します。
$ precc predict --train
Trained trained-v1 on 22 closed predictions (λ=1).
Model file : ~/.local/share/precc/predict_model.json
Confidence : 0.50
Intercept : +1.0016
log_desc : +1.2339
Categories :
unknown +0.4811
doc +0.4474
measurement +0.3422
test +0.1071
refactor +0.0326
feat +0.0071
fix -0.1096
chore -0.3063
訓練後、新しい precc predict 呼び出しはモデルファイルを削除または置き換えるまで自動的に trained-v1 を使用します。古い予測は元の model_version を保持するため、予測器を時系列で比較できます。
予測器の精度を確認する
precc predict --eval は、平均絶対パーセント誤差(MAPE)を全体およびカテゴリ別に報告し、計算はクローズ済みの予測(予測値と実績値の両方を持つ行)のみを対象とします。
$ precc predict --eval
Predictions logged : 30
With actuals (closed): 22
Mean predicted : 1483 tokens
Mean actual : 47238 tokens
MAPE (statistical) : 76.4%
By category:
category n predicted actual MAPE
feat 6 4605 5250 26.2%
unknown 4 1597 30526 52.6%
test 4 924 38900 56.4%
...
最近の予測を一覧表示する
precc predict --list は最近の行を逆時系列で表示します。オープン行(実績なし)はクローズ可能な状態です。
$ precc predict --list --limit 5
id ts category predicted actual conf description
30 2026-05-09 09:40:51 feat 5348 - 0.50 Run the synthetic-fleet pilot...
29 2026-05-09 08:56:48 test 1050 - 0.60 Train predictor: trained-v1...
28 2026-05-09 07:44:18 test 915 150000 0.60 Implement minimal task-12...
なぜ実時間ではなくトークンか
時間見積もりは事後に測定不可能で、マシンやセッションをまたいで合成できません。トークン数は決定的で比較可能であり、ループを閉じるたびにラベル付きデータセットが増え、予測器が改善されます。オラクルの本質は、見積もりを当て推量から測定に変えることです。
データの保存場所
すべての予測データはローカルマシンに保存されます。何もアップロードされません。
~/.local/share/precc/
├── metrics.db — predictions table (oracle DB)
└── predict_model.json — trained-v1 coefficients (after `--train`)
ローカライゼーション
PRECC はステータスラインと短いフィードバック文字列を 28 言語で表示します。翻訳はバイナリにコンパイルされているため、フック実行時に追加の I/O は発生しません。
言語を設定する
PRECC_LANG 環境変数にサポートされている言語コードを設定します。他のどの設定よりも優先されます。
$ PRECC_LANG=zh precc savings
$ export PRECC_LANG=ja
consent.toml で永続化する
~/.config/precc/consent.toml に [ui] preferred_language = "ja"(またはサポートされている任意のコード)を追加すると、環境変数を export せずにシェルをまたいで設定を保持できます。
# ~/.config/precc/consent.toml
[ui]
preferred_language = "ja"
解決の優先順位
PRECC はまず PRECC_LANG、次に consent.toml の [ui] preferred_language を確認し、最後に英語にフォールバックします。最初に得られた非空の値が採用され、プロセス存続中はキャッシュされます。
1. PRECC_LANG (environment variable)
2. consent.toml ([ui] preferred_language)
3. "en" (default)
対応範囲
翻訳テーブルには 28 言語の列が含まれます。手動で検証できないセルは空のままにし、参照時に英語へフォールバックします(捏造された文字を表示するよりも安全です)。翻訳を改善できる場合は、ぜひアップストリームに提出してください。
en es de zh fr pt ja vi nl hu ar fa tr ko
th my mn bo pl ru zt da sv fi it is2 ro cs
なぜ高速を保てるのか
翻訳は SQLite ではなく precc-core バイナリ内のコンパイル時 const 配列として保持されます。フックはメモリ内の配列を一度参照するだけなので、< 5 ms p99 のフック予算に対して翻訳コストは事実上ゼロです。
マインドマップ
このページは mindmap.db(記録されたすべての PRECC 開発セッションと git コミットの SQLite スナップショット)から自動生成されます。各行は出典(commit:<sha>、session:<id>、または doc:<path>)までたどることができます。
概要
- 分析されたセッション: 22
- メッセージ: 14023
- ツール呼び出し: 5072
- コミット: 205
- 期間: 2026-03-20T07:04:14.787Z → 2026-04-19T11:50:10.153Z
- 労力(トークン):
- 入力: 27928
- 出力: 2750669
- キャッシュ書き込み: 43349705
- キャッシュ読み取り: 1936351239
機能
| スコープ | タイトル | ステータス | コミット | トークン | 最初 | 最新 | ソース |
|---|---|---|---|---|---|---|---|
bench | feat(bench): SWE-bench Verified/Lite driver scaffolding | stabilizing | 4 | 4344299 | 2026-04-17 | 2026-04-17 | commit:5bdd027d |
benchmark_gate.sh | feat: benchmark_gate.sh + pin tb dataset to 0.1.1 | shipped | 1 | 4344299 | 2026-04-17 | 2026-04-17 | commit:99fa9a74 |
real | feat: real lean-ctx (not stub), wider campaign, doc updates | shipped | 2 | 29821152 | 2026-04-07 | 2026-04-17 | commit:6095720a |
precc_mode=benchmark | feat: PRECC_MODE=benchmark toggle + pairwise benchmark harness | shipped | 1 | 4344299 | 2026-04-17 | 2026-04-17 | commit:50c5a30f |
add | feat: add precc update self-update command | shipped | 14 | 42557107 | 2026-03-09 | 2026-04-17 | commit:e5542fba |
negotiable | feat: negotiable rewrites, skill decay, explain/undo — response to critic | shipped | 1 | 4344299 | 2026-04-17 | 2026-04-17 | commit:6fda67e4 |
statusline | feat: statusline shows actual session token consumption + cost | stabilizing | 3 | 25424915 | 2026-04-08 | 2026-04-13 | commit:4f65556d |
public | feat: public repo commits attributed to Ce-cyber-art | shipped | 1 | 25382119 | 2026-04-10 | 2026-04-10 | commit:0e4840e4 |
short | feat: short install URL https://peria.ai/install.sh | shipped | 1 | 25382119 | 2026-04-09 | 2026-04-09 | commit:615d3d06 |
rewrite | feat: rewrite Pillar 2b (ccc) and Pillar 3 (compress) in Rust for single-binary deployment | shipped | 2 | 38118074 | 2026-03-20 | 2026-04-08 | commit:78621579 |
shorten | feat: shorten statusline segments to fit narrower terminals | shipped | 1 | 25382119 | 2026-04-08 | 2026-04-08 | commit:ef2c88b4 |
drop | feat: drop fake token estimate, append cost estimate to lifetime segment | stabilizing | 2 | 25382119 | 2026-04-08 | 2026-04-08 | commit:2702f3f9 |
update | feat: update pricing to $5/6mo + $10/yr, add webhook server | stabilizing | 9 | 38118074 | 2026-02-25 | 2026-04-08 | commit:2d366031 |
clearer | feat: clearer statusline labels — meas:, drop confusing %, add bash share | shipped | 1 | 25382119 | 2026-04-08 | 2026-04-08 | commit:4cd837b7 |
stable | feat: stable machine_hash for telemetry dedup | stabilizing | 2 | 25382119 | 2026-04-08 | 2026-04-08 | commit:3073f428 |
lifetime | feat: lifetime savings segment in statusline | shipped | 1 | 25382119 | 2026-04-08 | 2026-04-08 | commit:9af422e8 |
precc | feat: precc analyze frequencies — data-driven rule gap discovery | shipped | 3 | 25382119 | 2026-04-07 | 2026-04-08 | commit:d6f24c50 |
per-interaction | feat: per-interaction PRECC savings line in PostToolUse | shipped | 1 | 25382119 | 2026-04-08 | 2026-04-08 | commit:e3bc282e |
webhook | feat: webhook auto-regenerates stats.json on telemetry POST | stabilizing | 2 | 29134186 | 2026-03-31 | 2026-04-08 | commit:912b75f3 |
per-email | feat: per-email aggregation for telemetry | shipped | 1 | 25382119 | 2026-04-08 | 2026-04-08 | commit:14c95e7d |
v0.3.3 | feat: v0.3.3 — companion tools default-on, install-script clarity | shipped | 1 | 25382119 | 2026-04-07 | 2026-04-07 | commit:48fca046 |
measurement | feat: measurement campaign script — real per-mode measurements | shipped | 1 | 25382119 | 2026-04-07 | 2026-04-07 | commit:36760587 |
quote-aware | feat: quote-aware chain split + sysadmin tool whitelist (54.2% → 55.5%) | shipped | 1 | 25382119 | 2026-04-07 | 2026-04-07 | commit:f6580598 |
; | feat: ; chain support + ssh inner-command parsing for measurement | shipped | 1 | 25382119 | 2026-04-07 | 2026-04-07 | commit:10093218 |
expand | feat: expand is_safe_to_rerun coverage + measurement timeout/cache | shipped | 1 | 25382119 | 2026-04-07 | 2026-04-07 | commit:c5a7ea79 |
multi-mode | feat: multi-mode adaptive compression with failure learning | shipped | 1 | 25382119 | 2026-04-07 | 2026-04-07 | commit:81475afc |
measured | feat: measured savings in telemetry, detailed live stats, update nudge | shipped | 1 | 25382119 | 2026-04-06 | 2026-04-06 | commit:06907091 |
scientific | feat: scientific token savings measurement, telemetry dedup, 28-language docs | shipped | 1 | 25382119 | 2026-04-06 | 2026-04-06 | commit:78a20ef2 |
v0.3.2 | feat: v0.3.2 — hook safety, adaptive compression, on-demand metrics import | shipped | 1 | 25382119 | 2026-04-05 | 2026-04-05 | commit:a0c0c882 |
self-hosted | feat: self-hosted telemetry endpoint at peria.ai, install UX improvements | shipped | 1 | 2565703 | 2026-04-04 | 2026-04-04 | commit:8212a18e |
auto-update | feat: auto-update consent prompt on init and manual update | shipped | 1 | 1924302 | 2026-04-02 | 2026-04-02 | commit:818be6dd |
use | perf: use pre-built binaries for lean-ctx and nushell installation | stabilizing | 4 | 10170252 | 2026-03-09 | 2026-03-31 | commit:8c612e55 |
authorize | feat: authorize peria.ai server for license key generation | shipped | 2 | 1186364 | 2026-03-31 | 2026-03-31 | commit:53dfe832 |
license | feat: license keys, SMTP mail-agent, updated business plan and demos | stabilizing | 2 | 10170252 | 2026-03-09 | 2026-03-31 | commit:b07c9dfb |
lean-ctx | feat: lean-ctx integration for deep output compression | shipped | 1 | 1186364 | 2026-03-31 | 2026-03-31 | commit:07361e62 |
integrate | feat: integrate three-pillar savings from precc-cc (cocoindex-code, token-saver, ClawHub) | shipped | 2 | 10170252 | 2026-03-20 | 2026-03-31 | commit:af4205f1 |
windows | feat: Windows build via CI, deploy triggers workflow | stabilizing | 2 | 2533692 | 2026-03-29 | 2026-03-29 | commit:7404761b |
monthly | feat: monthly usage report via email for Pro users | shipped | 1 | 2533692 | 2026-03-28 | 2026-03-28 | commit:77ad78bc |
nushell | feat: nushell what-if analysis, skill clustering, comment blocker, bash unwrap (v0.2.6) | shipped | 1 | 2337941 | 2026-03-27 | 2026-03-27 | commit:803df684 |
geofence | feat: geofence compliance guard, 3rd-party skill Claude interaction tracking (v0.2.5) | shipped | 1 | 2337941 | 2026-03-26 | 2026-03-26 | commit:0c9fc765 |
stripe | feat: Stripe payment integration, context pressure, GHA analysis | shipped | 2 | 2457088 | 2026-03-21 | 2026-03-22 | commit:8eb16f78 |
context | feat: context pressure warning, GHA analysis, statusline context % | shipped | 1 | 2166141 | 2026-03-20 | 2026-03-20 | commit:894621ba |
statusline, | feat: statusline, squash deploy, ClaWHub metadata, SHA256 checksums | shipped | 1 | 2166141 | 2026-03-20 | 2026-03-20 | commit:7ab15883 |
gumroad | feat: Gumroad license verification via API (v0.2.2) | shipped | 1 | 0 | 2026-03-13 | 2026-03-13 | commit:75c5e480 |
per-user | feat: per-user email-based license keys with Gumroad webhook (v0.2.2) | shipped | 1 | 0 | 2026-03-13 | 2026-03-13 | commit:6d056958 |
posttooluse | feat: PostToolUse observability + comprehensive test coverage (v0.2.1) | shipped | 1 | 0 | 2026-03-12 | 2026-03-12 | commit:6e33b7e4 |
multi-tool | feat: multi-tool hook dispatch, subagent propagation & Read/Grep filters (v0.2.0) | shipped | 1 | 0 | 2026-03-12 | 2026-03-12 | commit:1bf5a108 |
skill | feat: skill advisor, sharing credits, telemetry & Rust actionbook (v0.1.9) | shipped | 1 | 0 | 2026-03-12 | 2026-03-12 | commit:d41d310e |
fire | feat: fire anonymous update-check ping on precc update (opt-out via PRECC_NO_TELEMETRY=1) | shipped | 1 | 0 | 2026-03-10 | 2026-03-10 | commit:7acce69d |
enforce | feat: enforce license tier gates (Free/Pro) on ingest, mined skills, gif, mail, savings | shipped | 1 | 0 | 2026-03-10 | 2026-03-10 | commit:a7bd23e3 |
translate | feat: translate git commands to jj (Jujutsu) in colocated repos | shipped | 1 | 0 | 2026-03-09 | 2026-03-09 | commit:d8a29e48 |
rtk | feat(rtk): sync rewrite rules with upstream RTK v0.27.2 | shipped | 1 | 0 | 2026-03-09 | 2026-03-09 | commit:ad7dca0e |
apply | feat: apply skill portfolio per command for maximum token savings | shipped | 1 | 0 | 2026-03-09 | 2026-03-09 | commit:b2490073 |
pitch | feat(pitch): add bilingual EN/ZH PowerPoint pitch deck | shipped | 2 | 0 | 2026-02-27 | 2026-02-28 | commit:8876c4b7 |
hook | perf(hook): skip heuristics.db open via plain-text prefix cache | shipped | 1 | 0 | 2026-02-27 | 2026-02-27 | commit:89537483 |
init | feat(init): embed builtin skills in binary via include_str! | shipped | 1 | 0 | 2026-02-26 | 2026-02-26 | commit:3a837b13 |
cli | feat(cli): add precc skills export command | shipped | 2 | 0 | 2026-02-26 | 2026-02-26 | commit:59beea8d |
gdb | feat(gdb): re-enable Pillar 2 GDB hook suggestion | shipped | 1 | 0 | 2026-02-26 | 2026-02-26 | commit:a8428025 |
skills | feat(skills): add git wrong-dir skill and context mapping | stabilizing | 2 | 0 | 2026-02-25 | 2026-02-25 | commit:352474e1 |
metrics | feat(metrics): record hook latency, rtk_rewrite, cd_prepend via append-log | shipped | 1 | 0 | 2026-02-25 | 2026-02-25 | commit:9bf31d12 |
demo | feat(demo): add investor demo suite | shipped | 1 | 0 | 2026-02-25 | 2026-02-25 | commit:c818a0ac |
security | feat(security): SQLCipher encryption, binary hardening, multi-platform CI | shipped | 1 | 0 | 2026-02-25 | 2026-02-25 | commit:efd3dfc8 |
ingest | feat(ingest): add –force flag to re-mine already-recorded sessions | shipped | 1 | 0 | 2026-02-22 | 2026-02-22 | commit:85cc8f6f |
依存関係(precc-core モジュール)
advisor→db,promote,skillsdiet→lean_ctxmetrics→dbmining→skillsmode_selector→db,modemulti_probe→diet,lean_ctx,mode,nushell,post_observe,rtknushell→lean_ctx,mining,rtkpromote→db,skillsrtk→lean_ctxsharing→db,license,skillsskill_advisor→mining,nushellskills→dbtelemetry→db,license,mining
計画とタスク
計画(設計・アーキテクチャを求めるプロンプト)
- [proposed] indeed the measurement needs to be based on precc-cc’s established KPI’s. If the two ideas are so close, perhaps you can draft a plan to integrate them (algorithmatically) step-by-step, then start to use Rust (consistent with Precc) to impl… —
session:905ff169(2026-04-18) - [proposed] 西班牙语网站上有人评价:中文翻譯(繁體): —
session:781fe484(2026-04-16) - [proposed] That’s a really solid framing — using pre-tool-call hooks as quality gates instead of just optimization is a big shift in mindset. You’re essentially moving from “make the model cheaper” to “make the system more correct,” whic… —
session:ebd81938(2026-04-05) - [proposed] Plan the integration of both tools, make sure we don’t take their credit and maintain a clear interface so that once it evolves, we can get smaller changes to integrate with their future changes —
session:43541885(2026-03-31) - [proposed] for the benchmark, we need to prepare a table to record the comparison for existing historical scenarios, as a “what-if” analysis because there is no way to measure the results for future usages. For this requirement, plan out a step-by-ste… —
session:5761d7ca(2026-03-27) - [proposed] while bash could be improved using RTK, would its replacement with nushell a better choice for Claude Code? If so, plan an option for replacing bash with nushell to gain better accuracy and hence potentially more token savings by some small… —
session:5761d7ca(2026-03-27)
タスク(TaskCreate / TodoWrite エントリ)
- completed: 89
- in_progress: 3
- deleted: 2
最新の 30 件のタスク:
- [completed] Re-ingest and review residual pending — Run precc mindmap build after the fix, then classify the actually-pending tasks (done-but-unclosed vs genuinely-unfinished). —
session:0925455d(2026-04-19) - [completed] Fold TaskCreate/TaskUpdate + dedupe TodoWrite — Replay TaskCreate/TaskUpdate events per (session_id, taskId) to derive final status. For TodoWrite, keep only the last call per session. —
session:0925455d(2026-04-19) - [completed] Run ingest and produce MINDMAP.md — Execute ingest on local sessions + git, then render output to docs/MINDMAP.md. —
session:0925455d(2026-04-19) - [completed] Wire precc mindmap CLI subcommand — Add ingest/render subcommands to precc-cli. —
session:0925455d(2026-04-19) - [completed] Write mindmap render module — Query DB and render nested markdown mindmap with KPIs, features, plans, blockers. —
session:0925455d(2026-04-19) - [completed] Write mindmap ingest module — Parse JSONL sessions + git log, extract messages/tokens/commands/decisions into SQLite. —
session:0925455d(2026-04-19) - [completed] Design SQLite mindmap schema — Tables: sessions, messages, commands, features, plans, tasks, kpis, decisions, dependencies. Every row traces to source (session_id+uuid or commit sha). —
session:0925455d(2026-04-19) - [in_progress] Step 4: HeaderSlicePass + kernel corpus — Shallow-clone Linux kernel, adapt filter for kernel conventions (Fixes: tag, selftests/ and kunit test-surface detection, .c/.h classification). Measure how many recent fix commits ship with a test an… —
session:905ff169(2026-04-19) - [completed] Step 6: concurrency extraction — Add Pipeline::run_parallel_applies that parallelizes applies() via std::thread::scope when pass count ≥ threshold. Falls back to serial below threshold (thread-spawn overhead > savings). Benchmark s… —
session:905ff169(2026-04-19) - [completed] [parallel] AST-aware #[test] extractor — Use syn (Rust) or tree-sitter-rust (Python) to detect added #[test] fns in a commit diff and emit a test-only patch. Gates fail→pass verification on this repo. Not blocking; parallel work for the Ru… —
session:905ff169(2026-04-19) - [completed] Step 7: precc skvm report tooling — Wire had_solid_hit into metrics log. Add
precc skvm reportthat surfaces pass activation counts, cache hit rate, hook-latency percentiles. Read from metrics.db + skvm_solid_cache. Closes the observa… —session:905ff169(2026-04-19) - [completed] Wire SolidificationPass into live hook — Add stage_solidification_lookup (front, short-circuits on hit) and stage_solidification_record (end) to Pipeline. Gate behind PRECC_SOLIDIFY. Add had_solid_hit flag. Open cache via db::open_metrics fo… —
session:905ff169(2026-04-19) - [completed] Step 3: solidification cache — skvm::solid module: Cache (SQLite-backed) with lookup/record, Key with normalization, SolidificationPass at pipeline front. Gated by PRECC_SOLIDIFY=1. Tests with in-memory DB. No wiring into live hook… —
session:905ff169(2026-04-19) - [completed] Wire CdPrependPass into hook’s stage_context — Replace the direct context::resolve/apply calls in precc-hook::Pipeline::stage_context with CdPrependPass via HookIR. Verify no hook tests regress; full cargo test green. —
session:905ff169(2026-04-19) - [completed] Step 2: migrate cd_prepend through Pass trait — Re-express the existing cd-prepend stage as a Pass impl that reuses the current context resolution. Diff-test: on a fixture corpus, the new pass must produce byte-identical output to the legacy path. … —
session:905ff169(2026-04-19) - [completed] Step 5 preview: CrateSlicePass sketch — Implement CrateSlicePass in precc-core::skvm::passes::crate_slice. Detects
cargo <build\|test\|check\|clippy>without -p, reads cachedcargo metadata, narrows to -p when unambiguous. Wire a minimal K… —session:905ff169(2026-04-19) - [completed] Step 1: Pass trait + HookIR — precc-core::skvm::{pass, ir}. Pass trait with name/capability/applies/run. HookIR holds command, cwd, and mutable output. Capability enum: Detect|Rewrite|Slice|Verify. No behavior change; no passes re… —
session:905ff169(2026-04-19) - [completed] Step 0: baseline harness — Add precc-core::skvm::baseline module +
precc report --skvm-baselinesubcommand. Snapshots K1 (hook latency p50/p99), K3 (token savings total), activation counts from metrics.db into a named baselin… —session:905ff169(2026-04-19) - [completed] Build K3-only replay corpus — For each of the 82 fix-surface commits, derive ground-truth set of changed crates and emit realistic cargo commands. CrateSlicePass evaluation will read this corpus and measure narrowing precision/rec… —
session:905ff169(2026-04-18) - [deleted] Run verifier over 33 candidates — Execute verifier, collect verdicts. Apply size gate to verified set. Emit precc_self_corpus.jsonl. —
session:905ff169(2026-04-18) - [deleted] Write fail-at-parent verifier — Per candidate: git worktree at parent, apply only test-file diff, cargo test (expect added tests FAIL), reset + apply full commit, cargo test (expect PASS). Per-worktree CARGO_TARGET_DIR to avoid tras… —
session:905ff169(2026-04-18) - [completed] Classify test surface of 33 candidates — Split candidates into pure_test_path (tests/ only) vs mixed_file_test (production + #[test] in same file). Reports count by class. Cheap, no cargo. —
session:905ff169(2026-04-18) - [completed] Run first Terminal-bench batch (5 tasks) — Execute scripts/benchmark.sh –tasks 5 using OAuth token from subscription as ANTHROPIC_API_KEY. Verify arm A (vanilla) works, then arm B (PRECC), then compare.json. —
session:781fe484(2026-04-17) - [completed] Add precc explain and precc undo — explain –since 1h: lists recent rewrites with diff + skill + confidence (reads stash + rewrite_log). undo <id>: re-disables the skill that produced rewrite id. —
session:781fe484(2026-04-16) - [completed] Confidence decay on retry-after-rewrite — post_observe: if same command class is retried within 60s after a PRECC rewrite, decrement skill confidence by 0.05 (or count as false-correction event). Below SUGGEST_THRESHOLD (0.3) skill auto-disab… —
session:781fe484(2026-04-16) - [completed] Add precc skills disable/enable per-project — CLI commands to disable a skill in the current project (writes to .precc/disabled-skills file at project root). Hook reads this list and skips matching skills. —
session:781fe484(2026-04-16) - [completed] Make every rewrite visible via additionalContext — In precc-hook, whenever the pipeline produces a non-trivial rewrite (cd-prepend, skill, RTK, lean-ctx, nushell, diet), append a one-line summary “PRECC rewrote: <orig> -> <new> [reason]” to additional… —
session:781fe484(2026-04-16) - [completed] Soften overstated claims in intro — Replace “Claude never sees the error. No tokens wasted.” with measured language matching README. Update strings_intro.sql and re-translate the new key for all 28 langs. —
session:781fe484(2026-04-16) - [completed] Fix per-language html lang and dir — build-book.sh must rewrite book.toml language= and text-direction= per language so generated pages have correct lang/dir attributes. RTL for ar, fa. —
session:781fe484(2026-04-16) - [completed] Rebuild book and verify — Run scripts/build-book.sh to regenerate introduction.md per language, verify first lines now show translations —
session:781fe484(2026-04-16)
ブロッカー(ユーザー報告の失敗・行き詰まり信号)
- look at all the historical session logs and executed commands to summarize a mark down document like Mindmap showing (1) the features, status, decisions, dependencies, and effort (tokens releated to its development); (2) the plans, tasks, s… —
session:0925455d(2026-04-19) - check if it is working? why precc savings –all doesn’t work? —
session:ebd81938(2026-04-13) - i tried that url it doesn’t work? —
session:ebd81938(2026-04-08) - why I can’t see the “last: “ messages? —
session:ebd81938(2026-04-08) - not yet. I would wait to get more data from telemetry to update the website. But now you need to investigate on those “unmeasured” cases, why we cannot measure them? —
session:ebd81938(2026-04-07) - regarding the live usage statistics https://precc.cc/en/#live-usage-statistics, we need to report the percentages based on the duration of releases, i.e., how much saving was made by which release (otherwise it is easy to mislead readers to… —
session:ebd81938(2026-04-06) - https://precc.cc cannot find the server —
session:ebd81938(2026-04-05) - can see key_id mk_1TDiUmFxhHEidPnDw5esdOMa, but cannot reveal or see the sk_live_… —
session:d65ad15f(2026-04-01) - PS C:\Users\y00577373> iwr -useb https://raw.githubusercontent.com/peria-ai/precc-cc/main/scripts/install.ps1 | iex —
session:10175339(2026-03-30) - why can’t you create peria-ai or peri-a-i organizations —
session:10175339(2026-03-28) - the hello_world_do example has the following errors: NPU run failed. —
session:3b5e2947(2026-03-22)
決定と根拠
- feat(bench): clean-subset metrics (exclude timeouts & infra failures) — When one arm times out or the agent fails to install, the resulting tokens/pass numbers aren’t measuring PRECC — they’re measuring tb’s source:
commit:5bdd027d(commit 2026-04-17) - fix(bench): drop –include-hook-events (causes 401 Invalid API key) — Adding
--include-hook-eventsto the tb agent command caused Claude Code to return api_error_status=401 on first turn, even though the source:commit:025995d9(commit 2026-04-17) - feat: PRECC_MODE=benchmark toggle + pairwise benchmark harness — Problem (from reviewer): the “trivial vs semantic” error-shaping claim is rhetoric without a measurable boundary. A rewriter that saves tokens source:
commit:50c5a30f(commit 2026-04-17) - docs: update savings.md.tpl + README to match new statusline labels — - Σ → meas: throughout - New ‘bash X% of total’ segment row in segment table source:
commit:2d366031(commit 2026-04-08) - feat: clearer statusline labels — meas:, drop confusing %, add bash share — Three statusline UX changes from user feedback: 1. Lifetime segment renamed from ‘Σ 8.9K (22% over 217)’ to source:
commit:4cd837b7(commit 2026-04-08) - docs: explain statusline cost vs token semantics in book + README — Adds a ‘Status Bar’ section to docs/book/templates/savings.md.tpl and README.md explaining: source:
commit:6028b64c(commit 2026-04-08) - feat: v0.3.3 — companion tools default-on, install-script clarity — The single biggest change: install.sh now installs companion tools (lean-ctx, RTK, nushell, cocoindex-code) BY DEFAULT instead of source:
commit:48fca046(commit 2026-04-07) - feat: quote-aware chain split + sysadmin tool whitelist (54.2% → 55.5%) — Three improvements that increase measurable Bash invocation coverage: 1. Quote-aware top-level chain split source:
commit:f6580598(commit 2026-04-07) - fix: command_class env stripping, skill validation, ssh/journalctl/kubectl diet rules — 1. command_class strips env prefixes and noise: - RUST_BACKTRACE=1 cargo test → “cargo test” source:
commit:f4220343(commit 2026-04-07) - feat: multi-mode adaptive compression with failure learning — New modules: - mode.rs: CompressionMode enum (basic/diet/nushell/lean-ctx/rtk/adaptive-expand) source:
commit:81475afc(commit 2026-04-07) - test: comprehensive tests for ccc and compress modules (319 → 386 tests) — ccc.rs: +20 tests covering edge cases for is_eligible (flags, whitespace, empty input), extract_pattern (no path, multiple flags, boundary length), source:
commit:448430e2(commit 2026-03-20) - feat(gdb): re-enable Pillar 2 GDB hook suggestion — - Add open_history_readonly() to db.rs (same pattern as heuristics) - Add count_recent_failures() to gdb.rs: queries failure_fix_pairs for source:
commit:a8428025(commit 2026-02-26) - fix(mining): correct summary counters and orphaned events on –force re-mine — Three bugs fixed: 1. mine_session returned Skipped for sessions with no Bash events even source:
commit:3ef089d8(commit 2026-02-22) - 1. Compiled Rust Binary vs Shell Script — Decision: Replace the
rtk-rewrite.shshell script hook with a compiled Rust binary (precc-hook). Alternatives considered: source:doc:ALTERNATIVES.md - 2. SQLite vs Key-Value Store — Decision: Use SQLite for both
history.dbandheuristics.db. Alternatives considered: source:doc:ALTERNATIVES.md - 3. Workspace of 4 Crates vs Monolith — Decision: Structure the project as a Cargo workspace with 4 crates:
precc-core,precc-hook,precc-cli,precc-learner. Alternatives considered: source:doc:ALTERNATIVES.md - 4. GDB Hook Integration vs Standalone CLI — Decision: Implement GDB debugging as a CLI command (
precc debug) rather than as an automatic hook rewrite. Alternatives considered: source:doc:ALTERNATIVES.md - 5. Background Daemon vs On-Demand Mining — Decision: Support both modes —
precc-learnerdaemon for continuous mining,precc ingestfor on-demand. Alternatives considered: source:doc:ALTERNATIVES.md - 6. Confidence Thresholds — Decision: Three-tier confidence system: auto-apply (≥ 0.7), suggest (0.3-0.7), hidden (< 0.3). Alternatives considered: source:
doc:ALTERNATIVES.md - 7. RTK Subsumption Strategy — Decision: Port RTK’s rewriting logic into
precc-coreas the final pipeline stage, rather than running both hooks in sequence. Alternatives considered: source:doc:ALTERNATIVES.md - 8. Skill Storage Format — Decision: TOML files for built-in skills, SQLite rows for mined/user skills. Alternatives considered: source:
doc:ALTERNATIVES.md - 9. Session Log Format — Decision: Read Claude Code’s native JSONL format directly rather than converting to a custom format. Rationale: Claude Code already writes detailed session logs in JSONL format at
~/.claude/projects/*/. Creating a custom format would mean: source:doc:ALTERNATIVES.md
時系列 KPI
| 指標 | 単位 | 最初 | 最新 | Δ | サンプル | 最新ソース |
|---|---|---|---|---|---|---|
at | x | 0.1 | 1.25 | +1.15 | 2 | commit:4f65556d |
build | ms | 3 | 480 | +477 | 2 | commit:f84bab49 |
hook | ms | 5 | 3 | -2 | 2 | commit:f81e4543 |
precc | tokens | 423 | 87 | -336 | 2 | commit:e3bc282e |
saved | ms | 4.8 | 6.3 | +1.5 | 2 | commit:ec17f16c |
セッション別の労力(トークン数トップ 10)
| セッション | 最初 → 最新 | メッセージ | 入力 | 出力 | キャッシュ書き込み | キャッシュ読み取り |
|---|---|---|---|---|---|---|
ebd81938 | 2026-04-04 → 2026-04-13 | 4517 | 4547 | 686622 | 24690950 | 1020430414 |
781fe484 | 2026-04-16 → 2026-04-17 | 1434 | 1341 | 603596 | 3739362 | 259708120 |
10175339 | 2026-03-28 → 2026-03-30 | 1318 | 1176 | 102469 | 2430047 | 110606429 |
5761d7ca | 2026-03-26 → 2026-03-28 | 1180 | 4363 | 137056 | 2196522 | 116605673 |
550c7bab | 2026-03-20 → 2026-03-22 | 1064 | 1466 | 104943 | 2059732 | 92991217 |
905ff169 | 2026-04-18 → 2026-04-19 | 650 | 1698 | 496929 | 1572668 | 63432376 |
d65ad15f | 2026-03-31 → 2026-04-04 | 752 | 558 | 78099 | 1845645 | 58334554 |
3b5e2947 | 2026-03-22 → 2026-03-23 | 1162 | 896 | 128068 | 1526203 | 102403205 |
0925455d | 2026-04-19 → 2026-04-19 | 440 | 830 | 262128 | 1226054 | 32943523 |
43541885 | 2026-03-31 → 2026-03-31 | 566 | 7353 | 82683 | 1096328 | 41667559 |
PRECC を Cursor で使用する
PRECC は Claude Code 向けの PreToolUse フックとして構築されましたが、その基盤となるスキルライブラリ — cargo-wrong-dir、git-wrong-dir、npm-wrong-dir、jj-translate などは、エディタに依存しません。簡単なシェルスニペットを使えば、Cursor の統合ターミナルに入力されたすべてのコマンドを precc-hook 経由でルーティングできるため、Claude Code でトークンを節約する書き換えが Cursor でも同様に機能します。
Requires
precc≥ 0.3.45. Earlier versions don’t plant the integration scripts under<data_dir>/integrations/cursor/. Runprecc updateto upgrade if you have an older release.
カバー範囲
この統合では、Cursor のターミナルに入力したコマンドをキャッチします。zsh では Enter キーを押す前にコマンドラインを自動で書き換えます。bash では警告のみ可能です(DEBUG トラップはコマンド確定後に発火するためです)。Cursor のエージェントが bash -c サブプロセスとして起動するコマンドは、対話型シェルの初期化を読み込まないため、フックからは見えません。このギャップを埋めるには PATH シムが必要ですが、現時点ではこのディレクトリには含まれていません。Cursor の非シェルツール呼び出し(ファイル編集、コード検索)も対象外です。
インストール
zsh(自動書き換え)
source ~/.local/share/precc/integrations/cursor/precc-preexec.zsh
precc init を一度実行してください。上記のパスにスクリプトが配置されます(precc のストレージから <data_dir> を使用するため、CLAUDE_CONFIG_DIR などのプロファイル分離が尊重されます)。その後、source 行を ~/.zshrc に追加してください。precc-hook と jq は PATH 上にある必要があります。いずれかが欠けている場合、スクリプトは何もせず正常に終了します。
bash(警告のみ)
source ~/.local/share/precc/integrations/cursor/precc-preexec.bash
precc init を一度実行してください。上記のパスにスクリプトが配置されます。その後、source 行を ~/.bashrc に追加してください。DEBUG トラップは、提案された書き換えを適用せずに stderr に出力します。提案を手動でコピーすることができます。
動作確認
Cursor のターミナルで、cd /tmp(Rust プロジェクト外であればどこでも)に移動し、Rust ビルドコマンドを入力して Enter を押してください。zsh ではバッファがその場で PRECC により書き換えられた形式(通常は cd PATH && … 形式の前置)に変わります。bash では stderr に [precc] suggested rewrite: … という行が表示されるはずです。
注意事項
- キーストロークごとに
precc-hookのレイテンシが追加されます。フックは p50 で <5 ms を目標としていますが、コールドキャッシュでは p99 はさらに高くなります。本書のフックレイテンシに関する記述を参照してください。 - このパスからのテレメトリはありません。フックは検出した
agent_classの下で報告しますが、それはclaude-codeではないため、Cursor での節約は公開統計ページには表示されません。 - 書き換え理由は
zle -M経由で 1 キーストロークの間だけ表示されます。控えめで、モーダルではありません。 - エージェントのカバレッジには、
PATHシム(~/.precc/bin/cargo、~/.precc/bin/gitなどのラッパー)が次のステップとして計画されています。
コマンドリファレンス
全PRECCコマンドの完全リファレンス。
precc init
PRECCを初期化し、Claude Codeにフックを登録します。
precc init
Options:
(none)
Effects:
- Registers PreToolUse:Bash hook with Claude Code
- Creates ~/.local/share/precc/ data directory
- Initializes heuristics.db with built-in skills
- Prompts for telemetry consent
precc ingest
セッションログから失敗-修正パターンをマイニングします。
precc ingest [FILE] [--all] [--force]
Arguments:
FILE Path to a session log file (.jsonl)
Options:
--all Ingest all session logs from ~/.claude/logs/
--force Re-process files that were already ingested
Examples:
precc ingest session.jsonl
precc ingest --all
precc ingest --all --force
precc skills
自動化スキルを管理します。
precc skills list
precc skills list
List all active skills (built-in and mined).
precc skills show
precc skills show NAME
Show detailed information about a specific skill.
Arguments:
NAME Skill name (e.g., cargo-wrong-dir)
precc skills export
precc skills export NAME
Export a skill definition as TOML.
Arguments:
NAME Skill name
precc skills edit
precc skills edit NAME
Open a skill definition in $EDITOR.
Arguments:
NAME Skill name
precc skills advise
precc skills advise
Analyze recent sessions and suggest new skills based on repeated patterns.
precc skills cluster
precc skills cluster
Group similar mined skills to identify redundant or overlapping patterns.
precc report
分析レポートを生成します。
precc report [--email]
Options:
--email Send the report via email (requires mail setup)
precc savings
トークン節約を表示します。
precc savings [--all]
Options:
--all Show detailed per-command breakdown (Pro)
precc compress
コンテキストファイルを圧縮してトークン使用量を削減します。
precc compress [DIR] [--dry-run] [--revert]
Arguments:
DIR Directory or file to compress (default: current directory)
Options:
--dry-run Preview changes without modifying files
--revert Restore files from backup
precc license
PRECCライセンスを管理します。
precc license activate
precc license activate KEY --email EMAIL
Arguments:
KEY License key (XXXX-XXXX-XXXX-XXXX)
Options:
--email EMAIL Email address associated with the license
precc license status
precc license status
Display current license status, plan, and expiration.
precc license deactivate
precc license deactivate
Deactivate the license on this machine.
precc license fingerprint
precc license fingerprint
Display the device fingerprint for this machine.
precc mail
メール機能。
precc mail setup
precc mail setup
Interactive SMTP configuration. Saves to ~/.config/precc/mail.toml.
precc mail report
precc mail report EMAIL
Send a PRECC analytics report to the specified email address.
Arguments:
EMAIL Recipient email address
precc mail send
precc mail send EMAIL FILE
Send a file as an email attachment.
Arguments:
EMAIL Recipient email address
FILE Path to the file to send
precc update
PRECCを最新バージョンに更新します。
precc update [--force] [--version VERSION] [--auto]
Options:
--force Force update even if already on latest
--version VERSION Update to a specific version
--auto Enable automatic updates
precc telemetry
匿名テレメトリを管理します。
precc telemetry consent
precc telemetry consent
Opt in to anonymous telemetry.
precc telemetry revoke
precc telemetry revoke
Opt out of telemetry. No further data will be sent.
precc telemetry status
precc telemetry status
Show current telemetry consent status.
precc telemetry preview
precc telemetry preview
Display the telemetry payload that would be sent (without sending it).
precc geofence
IPジオフェンスコンプライアンス(Pro)。
precc geofence check
precc geofence check
Check if the current machine is in an allowed region.
precc geofence refresh
precc geofence refresh
Refresh the IP geolocation cache.
precc geofence clear
precc geofence clear
Clear the geofence cache.
precc geofence info
precc geofence info
Display geofence configuration and current status.
precc gif
bashスクリプトからアニメーションGIFを録画(Pro)。
precc gif SCRIPT LENGTH [INPUTS...]
Arguments:
SCRIPT Path to a bash script
LENGTH Maximum recording duration (e.g., 30s, 2m)
INPUTS... Optional input lines for interactive prompts
Examples:
precc gif demo.sh 30s
precc gif interactive.sh 60s "yes" "my-project"
precc gha
失敗したGitHub Actionsの実行を分析(Pro)。
precc gha URL
Arguments:
URL GitHub Actions run URL
Example:
precc gha https://github.com/org/repo/actions/runs/12345678
precc cache-hint
現在のプロジェクトのキャッシュヒント情報を表示します。
precc cache-hint
precc trial
Proトライアルを開始します。
precc trial EMAIL
Arguments:
EMAIL Email address for the trial
precc nushell
PRECC統合のNushellセッションを起動します。
precc nushell
precc doctor
Self-diagnose a broken or silent install.
precc doctor
Self-diagnose the install: settings.json hook registration, hook binary
path + permissions, and when the hook last fired. Run this first when
`precc savings` reports 0 tokens saved on a fresh install.
Options:
(none)
precc debug
Launch a GDB debugging session for a binary.
precc debug [BINARY] [ARGS...]
GDB-based debugging helper (Pillar 2).
Arguments:
BINARY Binary to debug
ARGS... Arguments to pass to the binary
precc explain
See what PRECC recently rewrote, and why.
precc explain [--since 1h] [--limit 20]
Show recent PRECC rewrites with their diff and the reasons each fired —
the audit trail for what PRECC changed.
Options:
--since SINCE Time window, e.g. "30m", "1h", "24h" (default: 1h)
--limit LIMIT Cap at N most-recent rewrites (default: 20)
precc undo
Undo a specific rewrite by its id.
precc undo ID
Revert a rewrite by id: re-disables the skill(s) that produced it.
Arguments:
ID Rewrite id from `precc explain` (16-hex-char hash)
precc recall
Search your cross-session knowledge mindmap.
precc recall QUERY [--kind KIND] [--limit 20]
Search the cross-session knowledge mindmap for past decisions, plans,
commits, blockers, and commands. Case-insensitive substring, newest first.
Arguments:
QUERY Query string
Options:
--kind KIND Restrict to: decision, plan, task, feature, blocker,
commit, command
--limit LIMIT Cap on hits returned (default: 20)
precc audit
Measure the token cost of your context surfaces.
precc audit <claude-md | claudeignore | positioning>
Measure the token cost of context surfaces. No opinions — just numbers.
Subcommands:
claude-md Bytes, estimated tokens, and per-section sizes of
CLAUDE.md (project + ~/.claude).
claudeignore Per-path bytes/tokens a .claudeignore could exclude from
Grep/Glob/Read (node_modules/, dist/, target/, …).
--write appends missing entries.
positioning Which positioning angles are backed by measured numbers.
precc analyze
Find command classes PRECC does not yet cover.
precc analyze frequencies
Count Bash command-class frequencies from session logs and report the
classes PRECC does not yet cover (rule-gap discovery).
よくある質問
PRECCは安全ですか?
はい。PRECCはClaude Code公式のPreToolUseフックメカニズムを使用しています。Anthropicがまさにこの目的のために設計した拡張ポイントです。フックは:
- 完全にオフラインで動作(ホットパスでのネットワーク呼び出しなし)
- 5ミリ秒未満で完了
- フェイルオープン:問題が発生した場合、元のコマンドがそのまま実行される
- コマンドを変更するだけで、自ら実行することはない
- データはローカルのSQLiteデータベースに保存
PRECCは他のAIコーディングツールで動作しますか?
PRECCはClaude Code専用に設計されています。Claude Codeが提供するPreToolUseフックプロトコルに依存しています。Cursor、Copilot、Windsurf、その他のAIコーディングツールでは動作しません。
テレメトリはどのようなデータを送信しますか?
テレメトリはオプトインのみです。有効にすると送信されるもの:
- PRECCバージョン、OS、アーキテクチャ
- 集計カウント(インターセプトされたコマンド、アクティブ化されたスキル)
- 平均フックレイテンシ
コマンドテキスト、ファイルパス、プロジェクト名、個人を特定できる情報は送信しません。オプトイン前に precc telemetry preview で正確なペイロードを確認できます。詳細はテレメトリを参照。
PRECCをアンインストールするには?
PRECC is fully reversible — remove it in three steps:
-
フック登録を削除:
# Delete the hook entry from Claude Code's settings # (precc init added it; removing it disables PRECC) -
バイナリを削除:
rm ~/.local/bin/precc ~/.local/bin/precc-hook ~/.local/bin/precc-learner -
データを削除(任意):
rm -rf ~/.local/share/precc/ rm -rf ~/.config/precc/
ライセンスが期限切れになりました。どうなりますか?
PRECCはCommunityティアに戻ります。すべてのコア機能は引き続き動作します:
- 組み込みスキルはアクティブのまま
- フックパイプラインは正常に動作
precc savingsはサマリービューを表示precc ingestとセッションマイニングは動作
Pro機能は更新まで利用できなくなります:
precc savings --all(詳細な内訳)precc compressprecc gifprecc ghaprecc geofence- メールレポート
フックが動作していないようです。どうやってデバッグしますか?
Run precc doctor first — it automates every check below. To diagnose by hand:
-
フックが登録されていることを確認:
precc init -
フックを手動でテスト:
echo '{"tool_input":{"command":"cargo build"}}' | precc-hook -
バイナリがPATHにあることを確認:
which precc-hook -
~/.claude/settings.jsonのClaude Codeフック設定を確認。
PRECCはClaude Codeを遅くしますか?
いいえ。フックは5ミリ秒未満(p99)で完了します。Claudeが推論と応答生成に費やす時間と比べると知覚できません。
CI/CDでPRECCを使用できますか?
PRECCはインタラクティブなClaude Codeセッション向けに設計されています。CI/CDでは、フックするClaude Codeインスタンスがありません。ただし、precc gha はどの環境からでも失敗したGitHub Actionsの実行を分析できます。
マイニングされたスキルと組み込みスキルはどう違いますか?
組み込みスキルはPRECCに同梱され、一般的な間違ったディレクトリパターンをカバーします。マイニングされたスキルはあなたの特定のセッションログから学習されます。両方ともSQLiteに保存され、フックパイプラインで同一に評価されます。
スキルをチームと共有できますか?
はい。precc skills export NAME でスキルをTOMLにエクスポートしてファイルを共有できます。チームメンバーは skills/ ディレクトリに配置するか、ヒューリスティクスデータベースにインポートできます。
Why do I see zero tokens saved?
If precc savings reports 0 tokens despite an active Claude Code session burning input/output tokens, the hook is not firing. Three causes account for almost every reported instance:
-
You are on v0.3.42 or v0.3.43. These releases shipped a data-path regression where the hook wrote metrics to a directory that the CLI then read from a different directory — both ran, but the savings number stayed at 0. Fixed in v0.3.44 (data paths routed through
db::data_dir()). Upgrade with:precc update -
Your
settings.jsonis missing the hook entry. Runprecc doctor(available in v0.3.53+). It checks each precondition of the hot path — settings file, hook entry, binary on$PATH, heuristics DB, recent invocations — and reports the first one that fails:precc doctorIf doctor is not available because you are on an older release, run
precc initto (re)register the hook. -
Your session has not yet hit a skill trigger. PRECC only intercepts Bash commands matching one of the active skills. If your session has been pure file editing or pure web fetching against domains not covered by
webfetch-opencli, you have not yet given the hook anything to compress or rewrite. This is normal. Runprecc skills listto see what triggers exist.
If after upgrading and running precc doctor you still see zero savings, file an issue at https://github.com/peri-a-i/precc-cc/issues with the output of precc doctor.
My MCP server (e.g. lean-ctx) is pegging CPU. How do I kill it safely without taking Claude Code down with it?
PRECC does not ship or supervise MCP servers — but this is a recurring trap because some MCP binaries (notably lean-ctx) are also invoked as per-Bash-tool-call wrappers by the Claude Code harness, not just as long-running servers. A naive pkill <name> then matches many short-lived wrappers in addition to the server.
Identify the runaway PID, do not kill by name:
pgrep -f "^lean-ctx$" \
| xargs -I{} ps -o pid,%cpu,etime,args -p {} \
| sort -k2 -nr | head -3
The top row is the long-running server (large etime, high %cpu). Send SIGTERM to only that PID:
kill -TERM <pid>
Avoid these forms, all of which can also kill Claude Code or break in-flight tool calls:
pkill lean-ctx— matches transientlean-ctx -c <cmd>wrappers spawned per Bash tool call.pkill -9 -f lean-ctx— same broad match, plus ungraceful exit leaves the MCP stdio half-open.pkill -g <pgid>/kill -- -<pgid>— kills the whole process group, which includesclaudeitself when the MCP server shares a session with it.
If after a clean SIGTERM the server does not exit within a few seconds, escalate with kill -KILL <pid> on the same single PID (still not by name). Claude Code will lose those MCP tools until you restart it; it should not exit on its own.
This advice is independent of PRECC — but PRECC users frequently run lean-ctx, so it is worth documenting here.
What is OpenCLI and do I need it?
OpenCLI is a third-party Node.js tool that turns ~148 websites into structured-output CLI commands (opencli hackernews top, opencli reddit search <q>, opencli arxiv search <q>, …). PRECC ships two built-in skills that work with it:
webfetch-opencli-hint— fires oncurl/wget/http/fetchagainst any of 11 OpenCLI-supported domains andsuggest_fix-es the equivalentopencli <site> …command. Suggestion only; never modifies the command.webfetch-opencli-hackernews— auto-rewritescurl|wget news.ycombinator.comtoopencli hackernews topwith an inlinecommand -v openclifallback to the original command if OpenCLI isn’t installed.
You don’t need OpenCLI for PRECC to work. The hint skill costs nothing; the auto-rewrite skill is safe to ship default-on because of the fallback.
If you want OpenCLI’s WebFetch token savings, install it with:
precc init --opencli
That runs npm install -g @jackwener/opencli (Node.js 20+ required). For cookie-reuse on logged-in pages, also install OpenCLI’s Chrome extension separately — see the project README. The extension requests broad permissions (debugger, <all_urls>, cookies); review them before installing.
precc doctor reports OpenCLI’s presence on $PATH as an informational line:
i opencli: installed (webfetch-opencli skills will auto-rewrite)
or
i opencli: not installed (run `precc init --opencli` if you want WebFetch token savings)
Never marks doctor as failing — the integration is fully opt-in.