clauderipple 0.9.0 → 0.9.2

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.es.md +22 -11
  3. package/README.ja.md +14 -5
  4. package/README.ko.md +19 -8
  5. package/README.md +22 -10
  6. package/README.pt-BR.md +22 -11
  7. package/README.zh-CN.md +14 -5
  8. package/dist/app/package.json +1 -1
  9. package/dist/cli/src/index.js +2 -1
  10. package/dist/mod/hooks/i18n.ts +36 -12
  11. package/dist/mod/hooks/judge.ts +17 -1
  12. package/dist/mod/hooks/register.tsx +39 -9
  13. package/dist/mod/hooks/session.ts +11 -3
  14. package/dist/mod/hooks/ui/alerts.tsx +21 -5
  15. package/dist/mod/hooks/ui/band.tsx +1 -1
  16. package/dist/mod/hooks/ui/view.ts +4 -1
  17. package/dist/mod/tests/register.test.tsx +53 -0
  18. package/dist/mod/tests/ui.test.tsx +10 -6
  19. package/dist/mod/types/index.d.ts +4 -1
  20. package/dist/router/src/admin.js +72 -2
  21. package/dist/router/src/agents.js +4 -0
  22. package/dist/router/src/config.js +24 -0
  23. package/dist/router/src/ingress/server.js +2 -2
  24. package/dist/router/src/mod-settings.js +2 -1
  25. package/dist/router/src/providers/chatgpt/index.js +19 -6
  26. package/dist/router/src/providers/chatgpt/translate.js +3 -0
  27. package/dist/router/src/providers/google/index.js +4 -3
  28. package/dist/router/src/providers/grok/auth.js +289 -0
  29. package/dist/router/src/providers/grok/catalog.js +52 -0
  30. package/dist/router/src/providers/grok/index.js +94 -0
  31. package/dist/router/src/providers/openai/index.js +71 -17
  32. package/dist/router/src/providers/openai/translate.js +11 -1
  33. package/dist/router/src/proxy.js +91 -21
  34. package/dist/router/src/redact.js +7 -2
  35. package/dist/router/src/requestlog.js +78 -20
  36. package/dist/router/src/version.js +1 -1
  37. package/dist/ui/app.js +105 -0
  38. package/dist/ui/i18n.js +6 -6
  39. package/docs/ARCHITECTURE.md +91 -0
  40. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,54 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.2 — 2026-10-14
4
+
5
+ ### Added
6
+
7
+ - **The mod shows when keep-warm held your cache.** A successful ping used to be silent, so it was
8
+ easy to think keep-warm never ran. When you come back, a card now says how many pings kept how
9
+ many tokens in cache and how long is left. It goes when you send a prompt or close it, and the
10
+ cold-cache card takes over if the cache expires after all.
11
+ - **Keep-warm per chat.** The band's flame now turns keep-warm on or off for that chat only: a full
12
+ flame where it is on, an empty one where it is off. Settings is what a new chat starts with.
13
+ After a restart or resume, a chat follows Settings again.
14
+
15
+ - **Grok through a Grok subscription.** A new "Grok subscription" provider uses Grok 4.7, 4.7
16
+ Fast, 4.6 and 4.5 with the Grok CLI's own sign-in (`grok login`), with no API key. It reads the
17
+ CLI's session and, when the session is about to expire, has the CLI refresh it. Tools,
18
+ thinking and effort (low…xhigh, per model) work as on the other translated providers. This
19
+ is the channel the Grok CLI itself talks to, not a published xAI API, so a CLI update can
20
+ change it. Pay-per-token access with an xAI API key stays under the xAI preset. Thanks @nakjiya (#52).
21
+
22
+ ### Fixed
23
+
24
+ - An OpenAI-compatible provider's error that echoed the bare token, without its `Bearer` scheme,
25
+ could show it in the error message. It is now redacted like the full header value (#52).
26
+ - On a two-line mod card, 리플이 sat on the title's line; it now sits at the card's middle.
27
+
28
+ ## 0.9.1 — 2026-10-14
29
+
30
+ ### Added
31
+
32
+ - **The request log records more of each request** (`logs/requests.jsonl`, #55). Every new field is
33
+ optional, so older records and readers keep working.
34
+ - Anthropic's request id or the message id, to match a row to the transcript, subagents included.
35
+ - Why a request ended before reaching a model, with the right provider instead of `anthropic`.
36
+ - Whether a call was the auto-mode classifier or a web search.
37
+ - An explicit `cacheWrite: 0`.
38
+ - The service tier that was asked for and the one the provider served. This shows whether a Fast
39
+ request was honoured (#54).
40
+
41
+ ### Fixed
42
+
43
+ - Saving the mod settings failed on Windows with `EPERM … fsync` since 0.9.0 (#53).
44
+ - "Haiku returned no verdict" appeared now and then. When Haiku breaks the end of its JSON, the
45
+ verdict's complete fields are now read instead of the whole answer being dropped (#53).
46
+ - A response over 64KiB that arrived in one piece (every compressed answer, for one) lost its usage
47
+ and stop reason in the request log.
48
+ - Alert cards centre their buttons when the title takes two lines.
49
+ - Ripple Remote no longer lists a resumed session's old halves, and a host restart no longer marks
50
+ idle sessions as just used.
51
+
3
52
  ## 0.9.0 — 2026-10-13
4
53
 
5
54
  ### Added
package/README.es.md CHANGED
@@ -22,16 +22,24 @@
22
22
  </p>
23
23
 
24
24
  <p align="center">
25
- <img src="docs/media/tour.png" width="880" alt="Recorrido por la configuración de ClaudeRipple: estado, asignación de modelos, proveedores, clientes, registro de solicitudes">
25
+ <a href="https://github.com/PBJ-2/clauderipple/releases/download/v0.9.0/clauderipple-demo.mp4"><img src="docs/media/demo.webp" width="880" alt="Recorrido de un minuto: otros modelos en el propio menú de modelos de Claude Desktop, el esfuerzo ajustado en cada prompt y cada subagente enviado al modelo adecuado. Haz clic para ver el vídeo completo."></a><br>
26
+ <sub>Recorrido de un minuto: otros modelos en el propio menú de modelos de Claude Desktop, el esfuerzo ajustado en cada prompt y cada subagente enviado al modelo adecuado. Haz clic para ver el vídeo completo.</sub>
26
27
  </p>
27
28
 
28
29
  <table align="center">
29
30
  <tr>
30
- <td align="center" width="34%"><img src="docs/media/picker-zoom.png" width="300" alt="Nombres reales en el selector de Claude Desktop"><br><sub>Modelos GPT con su nombre real en el selector de Claude Desktop</sub></td>
31
- <td align="center" width="66%"><img src="docs/media/luna-answer.png" alt="GPT-5.6 Luna respondiendo en la pestaña Code de Claude Desktop"><br><sub>GPT-5.6 Luna respondiendo en la pestaña Code, con el esfuerzo que elegiste</sub></td>
31
+ <td align="center" width="34%"><img src="docs/media/picker.png" width="300" alt="GPT, DeepSeek, GLM y Gemini en el propio menú de modelos de Claude Desktop"><br><sub>GPT, DeepSeek, GLM y Gemini en el propio menú de modelos de Claude Desktop</sub></td>
32
+ <td align="center" width="66%"><img src="docs/media/answer.png" alt="GPT-6 Astra trabajando en la pestaña Code, con cada solicitud registrada a la derecha"><br><sub>GPT-6 Astra trabajando en la pestaña Code, con cada solicitud registrada a la derecha</sub></td>
32
33
  </tr>
33
34
  <tr>
34
- <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="Subagentes con GPT-5.6 Terra y Sol, identificados en el panel de tareas en segundo plano"><br><sub>Subagentes con GPT-5.6 Terra y Sol, identificados en el panel de tareas en segundo plano</sub></td>
35
+ <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="Subagentes con DeepSeek y GLM, identificados en el panel de tareas"><br><sub>Subagentes con DeepSeek y GLM, identificados en el panel de tareas</sub></td>
36
+ </tr>
37
+ <tr>
38
+ <td colspan="2" align="center"><img src="docs/media/mod-band.png" alt="El mod ripple: esfuerzo, contexto, temporizador de caché y qué modelo respondió, con su acierto de caché"><br><sub>El mod ripple: esfuerzo, contexto, temporizador de caché y qué modelo respondió, con su acierto de caché</sub></td>
39
+ </tr>
40
+ <tr>
41
+ <td align="center" width="50%"><img src="docs/media/mod-alerts.png" alt="Avisos cuando la caché se enfría o un límite está cerca, y traspaso a un chat nuevo"><br><sub>Avisos cuando la caché se enfría o un límite está cerca, y traspaso a un chat nuevo</sub></td>
42
+ <td align="center" width="50%"><img src="docs/media/mod-settings.png" alt="Ajustes rápidos: esfuerzo automático, el juez, modos de workers"><br><sub>Ajustes rápidos: esfuerzo automático, el juez, modos de workers</sub></td>
35
43
  </tr>
36
44
  </table>
37
45
 
@@ -300,13 +308,15 @@ los modelos que asignas van a tu proveedor, y todo lo demás va a Anthropic byte
300
308
  la última hora.
301
309
  - **Etiquetas de subagentes.** El panel de tareas en segundo plano muestra
302
310
  `Terra·high · Review` en lugar de un genérico "Agent".
303
- - **La ruta, donde escribes.** Un mod de Claude Code añade una línea encima del prompt:
304
- adónde fue tu última solicitud, su esfuerzo, el acierto de caché y el tiempo. `Log` (o
305
- `/ripple-log`) abre el registro de solicitudes en un panel lateral, con colores según el
306
- proveedor y el resultado; `×` (o `/ripple-bar`) oculta la línea. El mismo mod mantiene a
307
- un worker en su propio modelo cuando la llamada a Agent indica otro, y lee su marcador
308
- `[[ripple: name@level]]` esté donde esté en el prompt. Un solo interruptor en la
309
- pantalla Clientes, o `clauderipple mod on`.
311
+ - **El mod ripple, encima del prompt.** Una banda muestra el esfuerzo de razonamiento, el
312
+ contexto, el temporizador de caché y qué modelo respondió tu última solicitud, con su
313
+ acierto de caché. Un pequeño modelo juez (Haiku 5.5 o Jev) lee cada prompt junto con los
314
+ turnos recientes y fija el esfuerzo, de low a max. El trabajo delegado va a `ripple:auto`,
315
+ y el juez envía cada tarea a un worker según su dificultad: lo ligero a DeepSeek o GLM, lo
316
+ difícil a GPT u Opus. Unas tarjetas avisan cuando la caché se ha enfriado, el contexto pesa
317
+ demasiado o una ventana del plan pasa del 80 %, y ofrecen compactar o traspasar a una sesión
318
+ nueva en la misma carpeta. `Log` (o `/ripple-log`) abre el registro de solicitudes en un
319
+ panel lateral. Un solo interruptor en la pantalla Clientes, o `clauderipple mod on`.
310
320
  - **Imágenes con tu suscripción de ChatGPT.** `clauderipple image "<prompt>"`, con
311
321
  imágenes de referencia y fondos transparentes. A los subagentes se les explica cómo
312
322
  hacerlo, así que un worker de GPT o DeepSeek puede crear una imagen y verla sin una
@@ -542,6 +552,7 @@ compatible con Anthropic que hayas configurado está disponible de la misma form
542
552
  |---|---|---|---|---|
543
553
  | Suscripción de ChatGPT | Backend de Codex | varios inicios de sesión, con cambio cuando uno se agota (también reutiliza el de Codex) | leída de tu suscripción (GPT-6 Sol, Luna, Astra, GPT-5.6 …) | esfuerzo low…max (Luna: ultra), caché de prompts 94–99 % |
544
554
  | Google Gemini | API de Gemini | clave de API de AI Studio o inicio de sesión con cuenta de Google (Antigravity, consulta las preguntas frecuentes) | descubierta | traducido (Messages ⇄ generateContent), las firmas de pensamiento se conservan entre turnos |
555
+ | Suscripción de Grok | proxy de chat de la CLI de Grok | el inicio de sesión de la CLI de Grok (`grok login`), renovado por la CLI | leída de tu suscripción (Grok 4.7, 4.7 Fast, 4.6, 4.5) | traducido (Chat Completions), esfuerzo low…xhigh; canal propio de la CLI, no una API publicada ([§4e](docs/ARCHITECTURE.md#4e-grok-providers-implemented-2026-10-08)) |
545
556
  | OpenRouter | Compatible con Anthropic | clave de API | más de 400, descubierta | compatibilidad de esfuerzo por modelo leída de la API |
546
557
  | DeepSeek, Kimi, Z.ai GLM, MiniMax, Qwen (intl / cn) | Compatible con Anthropic | clave de API | predefinida | verificado con la documentación del proveedor |
547
558
  | xAI Grok, Mistral, Groq, Together, Fireworks | Compatible con OpenAI | clave de API | descubierta | traducido (Chat Completions / Responses) |
package/README.ja.md CHANGED
@@ -21,16 +21,24 @@
21
21
  </p>
22
22
 
23
23
  <p align="center">
24
- <img src="docs/media/tour.png" width="880" alt="ClaudeRippleの設定画面:ステータス、モデルマッピング、プロバイダー、クライアント、リクエストログ">
24
+ <a href="https://github.com/PBJ-2/clauderipple/releases/download/v0.9.0/clauderipple-demo.mp4"><img src="docs/media/demo.webp" width="880" alt="1分ツアー:Claude Desktop自身のモデルメニューに他のモデルが並び、プロンプトごとに推論強度を決め、サブエージェントは合うモデルに振り分けます。クリックで全編を再生。"></a><br>
25
+ <sub>1分ツアー:Claude Desktop自身のモデルメニューに他のモデルが並び、プロンプトごとに推論強度を決め、サブエージェントは合うモデルに振り分けます。クリックで全編を再生。</sub>
25
26
  </p>
26
27
 
27
28
  <table align="center">
28
29
  <tr>
29
- <td align="center" width="34%"><img src="docs/media/picker-zoom.png" width="300" alt="Claude Desktopのピッカーに実際の名前で表示"><br><sub>Claude DesktopのピッカーにGPTモデルが実際の名前で並ぶ</sub></td>
30
- <td align="center" width="66%"><img src="docs/media/luna-answer.png" alt="Claude DesktopのCodeタブで応答するGPT-5.6 Luna"><br><sub>選んだ推論強度で、Codeタブから応答するGPT-5.6 Luna</sub></td>
30
+ <td align="center" width="34%"><img src="docs/media/picker.png" width="300" alt="Claude Desktop本来のモデルメニューにGPT・DeepSeek・GLM・Gemini"><br><sub>Claude Desktop本来のモデルメニューにGPT・DeepSeek・GLM・Gemini</sub></td>
31
+ <td align="center" width="66%"><img src="docs/media/answer.png" alt="Codeタブで作業するGPT-6 Astra、右側にすべてのリクエストログ"><br><sub>Codeタブで作業するGPT-6 Astra、右側にすべてのリクエストログ</sub></td>
31
32
  </tr>
32
33
  <tr>
33
- <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="GPT-5.6 TerraとSolで動くサブエージェント。バックグラウンドタスクパネルにモデル名が表示される"><br><sub>GPT-5.6 TerraとSolで動くサブエージェント。バックグラウンドタスクパネルにモデル名が表示される</sub></td>
34
+ <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="DeepSeekとGLMで動くサブエージェント。タスクパネルに実際の名前で表示"><br><sub>DeepSeekとGLMで動くサブエージェント。タスクパネルに実際の名前で表示</sub></td>
35
+ </tr>
36
+ <tr>
37
+ <td colspan="2" align="center"><img src="docs/media/mod-band.png" alt="rippleモッド:推論強度、コンテキスト、キャッシュタイマー、実際に応答したモデルとキャッシュヒット率"><br><sub>rippleモッド:推論強度、コンテキスト、キャッシュタイマー、実際に応答したモデルとキャッシュヒット率</sub></td>
38
+ </tr>
39
+ <tr>
40
+ <td align="center" width="50%"><img src="docs/media/mod-alerts.png" alt="キャッシュが冷えたり上限が近づくと警告、新しいチャットへの引き継ぎ"><br><sub>キャッシュが冷えたり上限が近づくと警告、新しいチャットへの引き継ぎ</sub></td>
41
+ <td align="center" width="50%"><img src="docs/media/mod-settings.png" alt="クイック設定:自動推論強度、判定モデル、ワーカーモード"><br><sub>クイック設定:自動推論強度、判定モデル、ワーカーモード</sub></td>
34
42
  </tr>
35
43
  </table>
36
44
 
@@ -163,7 +171,7 @@ Claude Codeのシステムプロンプトとツールの説明はClaude向けに
163
171
  - **設計段階で正しさを確保**。プロンプトキャッシュを保持(Anthropicのキャッシュブレークポイントと、安定したOpenAIのプレフィックス)、Claude Codeのサーバー側スレッドを処理、ツール呼び出しと画像を往復で変換、推論強度を各モデルが受け付ける範囲に調整、互換ベンダー向けにはAnthropic専用のリクエストフィールドを除去。
164
172
  - **本物のリクエストログ**。誰が依頼し、どのモデルが応答したか、入力 / キャッシュ / 出力のトークン数、レイテンシ、ステータスをリクエストごとに記録し、直近1時間のサマリーも表示します。
165
173
  - **サブエージェントの名前タグ**。バックグラウンドタスクパネルに、汎用の「Agent」ではなく`Terra·high · Review`のように表示されます。
166
- - **入力する場所にルートを表示**。Claude Codeのmodがプロンプトの上に1行を表示します。直前のリクエストの行き先、推論強度、キャッシュヒット率、所要時間です。`Log`(または`/ripple-log`)でリクエストログをサイドペインに開き、プロバイダーと結果ごとに色分けして表示します。`×`(または`/ripple-bar`)でこの行を隠せます。同じmodは、Agent呼び出しで別のモデルが指定されてもワーカーを自分のモデルのまま動かし、`[[ripple: name@level]]`マーカーがプロンプトのどこにあっても読み取ります。「クライアント」画面のスイッチ1つ、または`clauderipple mod on`で有効にできます。
174
+ - **プロンプトの上のrippleモッド**。帯1本に推論強度、コンテキスト、キャッシュタイマー、直前のリクエストに実際に応答したモデルとキャッシュヒット率を表示します。小さな判定モデル(Haiku 5.5またはJev)がプロンプトごとに直近の会話と合わせて読み、lowからmaxまで推論強度を決めます。任せた作業は`ripple:auto`に渡り、判定モデルが難しさに応じてワーカーを選びます。軽い作業はDeepSeekやGLM、難しい作業はGPTやOpusへ。キャッシュが冷えたとき、コンテキストが重くなったとき、プランの上限が80%を超えたときにカードで知らせ、圧縮か、同じフォルダの新しいセッションへの引き継ぎを提案します。`Log`(または`/ripple-log`)でリクエストログをサイドペインに開きます。「クライアント」画面のスイッチ1つ、または`clauderipple mod on`で有効にできます。
167
175
  - **ChatGPTのサブスクリプションで画像を生成**。`clauderipple image "<prompt>"`で、参照画像や透明背景にも対応します。サブエージェントにもやり方が伝えられているので、GPTやDeepSeekのワーカーでも、画像ツールなしで画像を作って確認できます。
168
176
  - **必要なら軽量なワーカーを**。スイッチ1つで、生成されるサブエージェントに、セッションのすべてのMCPサーバーとプラグインではなく、ワーカーが使うツールだけを渡します。あるワーカーの最初のリクエストは33kトークンから9kトークンに減りました。
169
177
  - **ターミナルを使いたくない人のために**。ワンクリックの接続テストとモデル検出付きのプロバイダープリセット、ドロップダウンによるモデルマッピング、自動保存、韓国語と英語のUI。独自のランタイムを同梱し、初回起動時に自らセットアップするメニューバーアプリ。署名・公証済みです。
@@ -313,6 +321,7 @@ ClaudeのモデルはCodexのモデル一覧にそれぞれの名前で表示さ
313
321
  |---|---|---|---|---|
314
322
  | ChatGPTサブスクリプション | Codexバックエンド | 複数ログイン、上限で自動切り替え(Codexのログインも再利用) | サブスクリプションから取得(GPT-6 Sol、Luna、Astra、GPT-5.6 …) | 推論強度 low…max(Lunaはultra)、プロンプトキャッシュ 94–99 % |
315
323
  | Google Gemini | Gemini API | AI StudioのAPIキー、またはGoogleアカウントでのログイン(Antigravity、FAQ参照) | 自動検出 | 変換(Messages ⇄ generateContent)、thought signatureをターン間で保持 |
324
+ | Grokサブスクリプション | Grok CLIのチャットプロキシ | Grok CLIのログイン(`grok login`)、更新はCLIが行う | サブスクリプションから取得(Grok 4.7、4.7 Fast、4.6、4.5) | 変換(Chat Completions)、推論強度 low…xhigh。公開APIではなくCLI専用の経路([§4e](docs/ARCHITECTURE.md#4e-grok-providers-implemented-2026-10-08)) |
316
325
  | OpenRouter | Anthropic互換 | APIキー | 400以上、自動検出 | モデルごとの推論強度への対応をAPIから取得 |
317
326
  | DeepSeek、Kimi、Z.ai GLM、MiniMax、Qwen(国際版 / 中国版) | Anthropic互換 | APIキー | プリセット | ベンダーのドキュメントで確認済み |
318
327
  | xAI Grok、Mistral、Groq、Together、Fireworks | OpenAI互換 | APIキー | 自動検出 | 変換(Chat Completions / Responses) |
package/README.ko.md CHANGED
@@ -29,16 +29,24 @@
29
29
  </p>
30
30
 
31
31
  <p align="center">
32
- <img src="docs/media/tour.png" width="880" alt="ClaudeRipple 설정 화면: 상태, 모델 매핑, 프로바이더, 클라이언트, 요청 로그">
32
+ <a href="https://github.com/PBJ-2/clauderipple/releases/download/v0.9.0/clauderipple-demo.mp4"><img src="docs/media/demo.webp" width="880" alt="1분 둘러보기: Claude Desktop의 모델 메뉴에 다른 모델이 들어가고, 프롬프트마다 추론 강도를 정하고, 서브에이전트는 맞는 모델로 보냅니다. 누르면 전체 영상이 열립니다."></a><br>
33
+ <sub>1분 둘러보기: Claude Desktop의 모델 메뉴에 다른 모델이 들어가고, 프롬프트마다 추론 강도를 정하고, 서브에이전트는 맞는 모델로 보냅니다. 누르면 전체 영상이 열립니다.</sub>
33
34
  </p>
34
35
 
35
36
  <table align="center">
36
37
  <tr>
37
- <td align="center" width="34%"><img src="docs/media/picker-zoom.png" width="300" alt="Claude Desktop 피커에 실제 이름으로"><br><sub>Claude Desktop 피커에 GPT 모델이 실제 이름으로</sub></td>
38
- <td align="center" width="66%"><img src="docs/media/luna-answer.png" alt="Code 탭에서 답하는 GPT-5.6 Luna"><br><sub>Code 탭에서 고른 추론 강도 그대로 답하는 GPT-5.6 Luna</sub></td>
38
+ <td align="center" width="34%"><img src="docs/media/picker.png" width="300" alt="Claude Desktop의 원래 모델 메뉴에 GPT·DeepSeek·GLM·Gemini"><br><sub>Claude Desktop의 원래 모델 메뉴에 GPT·DeepSeek·GLM·Gemini</sub></td>
39
+ <td align="center" width="66%"><img src="docs/media/answer.png" alt="Code 탭에서 일하는 GPT-6 Astra, 오른쪽에는 모든 요청 기록"><br><sub>Code 탭에서 일하는 GPT-6 Astra, 오른쪽에는 모든 요청 기록</sub></td>
39
40
  </tr>
40
41
  <tr>
41
- <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="백그라운드 작업 패널에 실제 모델 이름으로 표시된 서브에이전트"><br><sub>GPT-5.6 Terra·Sol로 도는 서브에이전트, 작업 패널에 실제 이름으로</sub></td>
42
+ <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="DeepSeek·GLM으로 도는 서브에이전트, 작업 패널에 실제 이름으로"><br><sub>DeepSeek·GLM으로 도는 서브에이전트, 작업 패널에 실제 이름으로</sub></td>
43
+ </tr>
44
+ <tr>
45
+ <td colspan="2" align="center"><img src="docs/media/mod-band.png" alt="리플 모드: 추론 강도, 컨텍스트, 캐시 타이머, 실제로 답한 모델과 캐시 적중률"><br><sub>리플 모드: 추론 강도, 컨텍스트, 캐시 타이머, 실제로 답한 모델과 캐시 적중률</sub></td>
46
+ </tr>
47
+ <tr>
48
+ <td align="center" width="50%"><img src="docs/media/mod-alerts.png" alt="캐시가 식거나 한도가 가까우면 경고, 새 대화로 인수인계"><br><sub>캐시가 식거나 한도가 가까우면 경고, 새 대화로 인수인계</sub></td>
49
+ <td align="center" width="50%"><img src="docs/media/mod-settings.png" alt="빠른 설정: 자동 추론 강도, 판정 모델, 워커 모드"><br><sub>빠른 설정: 자동 추론 강도, 판정 모델, 워커 모드</sub></td>
42
50
  </tr>
43
51
  </table>
44
52
 
@@ -241,10 +249,12 @@ ClaudeRipple은 Claude Code 프로세스만 신뢰하는 작은 HTTPS 프록시
241
249
  서버 측 스레드 처리, 도구 호출과 이미지 왕복, 모델이 받는 범위로 추론 강도 클램프, 호환 벤더에는 Anthropic 전용 필드 제거.
242
250
  - **제대로 된 요청 로그.** 누가 물었고 어떤 모델이 답했는지, 입력·캐시·출력 토큰, 지연, 상태를 요청마다. 한 시간 요약 포함.
243
251
  - **서브에이전트 이름표.** 백그라운드 작업 패널에 "Agent" 대신 `Terra·high · Review`가 보입니다.
244
- - **입력창에서 보이는 경로.** Claude Code mod가 입력창 위에 한 줄을 띄웁니다. 마지막 요청이 어디로 갔는지, 추론 강도·캐시
245
- 적중률·시간까지. `Log`(또는 `/ripple-log`)로 요청 로그를 옆 패널에 프로바이더·결과별 색으로 띄우고, `×`(또는
246
- `/ripple-bar`)로 줄을 숨깁니다. 같은 mod가 Agent 호출에 다른 모델이 붙어도 워커를 제 모델로 돌리고,
247
- `[[ripple: 이름@강도]]` 표식을 프롬프트 어디에 두든 읽습니다. 클라이언트 화면의 스위치 하나, 또는 `clauderipple mod on`.
252
+ - **입력창 위의 리플 모드.** 띠 하나에 추론 강도, 컨텍스트, 캐시 타이머, 마지막 요청에 실제로 답한 모델과 캐시
253
+ 적중률이 보입니다. 작은 판정 모델(Haiku 5.5 또는 Jev)이 프롬프트마다 최근 대화와 함께 읽고 low부터 max까지 추론
254
+ 강도를 정합니다. 맡긴 일은 `ripple:auto`로 가고, 판정 모델이 난이도에 따라 워커를 고릅니다. 가벼운 일은 DeepSeek·GLM,
255
+ 어려운 일은 GPT·Opus로. 캐시가 식었을 때, 컨텍스트가 무거워졌을 때, 요금제 한도가 80%를 넘었을 때 카드로 알려 주고,
256
+ 압축이나 같은 폴더 새 세션으로의 인수인계를 제안합니다. `Log`(또는 `/ripple-log`)로 요청 로그를 옆 패널에 엽니다.
257
+ 클라이언트 화면의 스위치 하나, 또는 `clauderipple mod on`.
248
258
  - **ChatGPT 구독으로 이미지 생성.** `clauderipple image "<프롬프트>"`. 참고 이미지와 투명 배경도 됩니다. 서브에이전트에도
249
259
  방법이 적혀 있어, GPT나 DeepSeek 워커가 이미지 도구 없이 이미지를 만들고 직접 확인합니다.
250
260
  - **원하면 가벼운 워커.** 스위치 하나로, 생성된 서브에이전트에 세션의 MCP·플러그인 도구 전부 대신 워커가 쓰는 도구만
@@ -439,6 +449,7 @@ Anthropic API 키로 갑니다. 구독 로그인 재사용은 Anthropic 약관
439
449
  |---|---|---|---|---|
440
450
  | ChatGPT 구독 | Codex 백엔드 | 로그인 여러 개, 한도 차면 자동 전환(Codex 로그인도 재사용) | 구독에서 자동으로 읽음(GPT-6 Sol·Luna·Astra, GPT-5.6 …) | 추론 강도 low…max(Luna는 ultra), 프롬프트 캐시 94~99 % |
441
451
  | Google Gemini | Gemini API | AI Studio API 키, 또는 Google 계정 로그인(Antigravity, 위 FAQ 참고) | 자동 검색 | 번역(Messages ⇄ generateContent), 턴 사이 thought signature 유지 |
452
+ | Grok 구독 | Grok CLI 채팅 프록시 | Grok CLI 로그인(`grok login`), 갱신은 CLI가 함 | 구독에서 자동으로 읽음(Grok 4.7, 4.7 Fast, 4.6, 4.5) | 번역(Chat Completions), 추론 강도 low…xhigh. 공개 API가 아닌 CLI 전용 채널([§4e](docs/ARCHITECTURE.md#4e-grok-providers-implemented-2026-10-08)) |
442
453
  | OpenRouter | Anthropic 호환 | API 키 | 400+, 자동 검색 | 모델별 추론 강도 지원을 API에서 읽음 |
443
454
  | DeepSeek, Kimi, Z.ai GLM, MiniMax, Qwen(국제/중국) | Anthropic 호환 | API 키 | 프리셋 | 벤더 공식 문서로 확인 |
444
455
  | xAI Grok, Mistral, Groq, Together, Fireworks | OpenAI 호환 | API 키 | 자동 검색 | 번역(Chat Completions / Responses) |
package/README.md CHANGED
@@ -30,16 +30,24 @@
30
30
  </p>
31
31
 
32
32
  <p align="center">
33
- <img src="docs/media/tour.png" width="880" alt="ClaudeRipple settings tour: status, model mapping, providers, clients, request log">
33
+ <a href="https://github.com/PBJ-2/clauderipple/releases/download/v0.9.0/clauderipple-demo.mp4"><img src="docs/media/demo.webp" width="880" alt="A one-minute tour: other models in Claude Desktop's own model menu, effort set for every prompt, and each subagent sent to the model that fits. Click for the full video."></a><br>
34
+ <sub>A one-minute tour: other models in Claude Desktop's own model menu, effort set for every prompt, and each subagent sent to the model that fits. Click for the full video.</sub>
34
35
  </p>
35
36
 
36
37
  <table align="center">
37
38
  <tr>
38
- <td align="center" width="34%"><img src="docs/media/picker-zoom.png" width="300" alt="Real names in the Claude Desktop picker"><br><sub>GPT models under their real names in the Claude Desktop picker</sub></td>
39
- <td align="center" width="66%"><img src="docs/media/luna-answer.png" alt="GPT-5.6 Luna answering in the Claude Desktop Code tab"><br><sub>GPT-5.6 Luna answering in the Code tab, at the effort you chose</sub></td>
39
+ <td align="center" width="34%"><img src="docs/media/picker.png" width="300" alt="GPT, DeepSeek, GLM and Gemini in Claude Desktop's own model menu"><br><sub>GPT, DeepSeek, GLM and Gemini in Claude Desktop's own model menu</sub></td>
40
+ <td align="center" width="66%"><img src="docs/media/answer.png" alt="GPT-6 Astra working in the Code tab, every request logged on the right"><br><sub>GPT-6 Astra working in the Code tab, every request logged on the right</sub></td>
40
41
  </tr>
41
42
  <tr>
42
- <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="Subagents on GPT-5.6 Terra and Sol, named in the background-task panel"><br><sub>Subagents on GPT-5.6 Terra and Sol, named in the background-task panel</sub></td>
43
+ <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="Subagents on DeepSeek and GLM, named in the background-task panel"><br><sub>Subagents on DeepSeek and GLM, named in the background-task panel</sub></td>
44
+ </tr>
45
+ <tr>
46
+ <td colspan="2" align="center"><img src="docs/media/mod-band.png" alt="The ripple mod: effort, context, cache timer, and which model answered with its cache hit"><br><sub>The ripple mod: effort, context, cache timer, and which model answered with its cache hit</sub></td>
47
+ </tr>
48
+ <tr>
49
+ <td align="center" width="50%"><img src="docs/media/mod-alerts.png" alt="Warnings when the cache goes cold or a limit is near, and a handoff to a fresh chat"><br><sub>Warnings when the cache goes cold or a limit is near, and a handoff to a fresh chat</sub></td>
50
+ <td align="center" width="50%"><img src="docs/media/mod-settings.png" alt="Quick settings: automatic effort, the judge, worker modes"><br><sub>Quick settings: automatic effort, the judge, worker modes</sub></td>
43
51
  </tr>
44
52
  </table>
45
53
 
@@ -290,12 +298,15 @@ you map go to your provider, everything else goes to Anthropic byte for byte.
290
298
  latency, status, per request, with a one-hour summary.
291
299
  - **Subagent name tags.** The background-task panel shows `Terra·high · Review`
292
300
  instead of a generic "Agent".
293
- - **The route, where you type.** A Claude Code mod puts one line above the prompt:
294
- where your last request went, its effort, cache hit and time. `Log` (or `/ripple-log`)
295
- opens the request log in a side pane, color-coded by provider and result; `×` (or
296
- `/ripple-bar`) hides the line. The same mod keeps a worker on its own model when the
297
- Agent call names another, and reads its `[[ripple: name@level]]` marker wherever it sits
298
- in the prompt. One switch on the Clients screen, or `clauderipple mod on`.
301
+ - **The ripple mod, above the prompt.** A band shows the reasoning effort, context, cache
302
+ timer, and which model answered your last request with its cache hit. A small judge
303
+ model (Haiku 5.5 or Jev) reads each prompt with the recent turns and sets the effort,
304
+ low through max. Delegated work goes to `ripple:auto`, and the judge sends each task to
305
+ a worker by difficulty: light work to DeepSeek or GLM, hard work to GPT or Opus. Cards
306
+ warn when the cache has gone cold, the context gets heavy or a plan window passes 80%,
307
+ and offer compact or a handoff to a fresh session in the same folder. `Log` (or
308
+ `/ripple-log`) opens the request log in a side pane. One switch on the Clients screen,
309
+ or `clauderipple mod on`.
299
310
  - **Images from your ChatGPT subscription.** `clauderipple image "<prompt>"`, with
300
311
  reference images and transparent backgrounds. Subagents are told how, so a GPT or
301
312
  DeepSeek worker can make an image and look at it without an image tool.
@@ -516,6 +527,7 @@ provider you configured is available the same way.
516
527
  |---|---|---|---|---|
517
528
  | ChatGPT subscription | Codex backend | several sign-ins, switching when one runs out (Codex login reused too) | read from your subscription (GPT-6 Sol, Luna, Astra, GPT-5.6 …) | effort low…max (Luna: ultra), prompt cache 94–99 % |
518
529
  | Google Gemini | Gemini API | AI Studio API key, or Google account sign-in (Antigravity, see the FAQ) | discovered | translated (Messages ⇄ generateContent), thought signatures kept across turns |
530
+ | Grok subscription | Grok CLI chat proxy | the Grok CLI's sign-in (`grok login`), refreshed through the CLI | read from your subscription (Grok 4.7, 4.7 Fast, 4.6, 4.5) | translated (Chat Completions), effort low…xhigh; the CLI's own channel, not a published API ([§4e](docs/ARCHITECTURE.md#4e-grok-providers-implemented-2026-10-08)) |
519
531
  | OpenRouter | Anthropic-compatible | API key | 400+, discovered | per-model effort support read from the API |
520
532
  | DeepSeek, Kimi, Z.ai GLM, MiniMax, Qwen (intl / cn) | Anthropic-compatible | API key | preset | verified against vendor docs |
521
533
  | xAI Grok, Mistral, Groq, Together, Fireworks | OpenAI-compatible | API key | discovered | translated (Chat Completions / Responses) |
package/README.pt-BR.md CHANGED
@@ -22,16 +22,24 @@
22
22
  </p>
23
23
 
24
24
  <p align="center">
25
- <img src="docs/media/tour.png" width="880" alt="Tour pelas configurações do ClaudeRipple: status, mapeamento de modelos, provedores, clientes, log de requisições">
25
+ <a href="https://github.com/PBJ-2/clauderipple/releases/download/v0.9.0/clauderipple-demo.mp4"><img src="docs/media/demo.webp" width="880" alt="Tour de um minuto: outros modelos no próprio menu de modelos do Claude Desktop, o esforço ajustado a cada prompt e cada subagente enviado ao modelo certo. Clique para ver o vídeo completo."></a><br>
26
+ <sub>Tour de um minuto: outros modelos no próprio menu de modelos do Claude Desktop, o esforço ajustado a cada prompt e cada subagente enviado ao modelo certo. Clique para ver o vídeo completo.</sub>
26
27
  </p>
27
28
 
28
29
  <table align="center">
29
30
  <tr>
30
- <td align="center" width="34%"><img src="docs/media/picker-zoom.png" width="300" alt="Nomes reais no seletor do Claude Desktop"><br><sub>Modelos GPT com os nomes reais no seletor do Claude Desktop</sub></td>
31
- <td align="center" width="66%"><img src="docs/media/luna-answer.png" alt="GPT-5.6 Luna respondendo na aba Code do Claude Desktop"><br><sub>GPT-5.6 Luna respondendo na aba Code, com o esforço que você escolheu</sub></td>
31
+ <td align="center" width="34%"><img src="docs/media/picker.png" width="300" alt="GPT, DeepSeek, GLM e Gemini no próprio menu de modelos do Claude Desktop"><br><sub>GPT, DeepSeek, GLM e Gemini no próprio menu de modelos do Claude Desktop</sub></td>
32
+ <td align="center" width="66%"><img src="docs/media/answer.png" alt="GPT-6 Astra trabalhando na aba Code, com cada requisição registrada à direita"><br><sub>GPT-6 Astra trabalhando na aba Code, com cada requisição registrada à direita</sub></td>
32
33
  </tr>
33
34
  <tr>
34
- <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="Subagentes no GPT-5.6 Terra e no Sol, identificados no painel de tarefas em segundo plano"><br><sub>Subagentes no GPT-5.6 Terra e no Sol, identificados no painel de tarefas em segundo plano</sub></td>
35
+ <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="Subagentes no DeepSeek e no GLM, identificados no painel de tarefas"><br><sub>Subagentes no DeepSeek e no GLM, identificados no painel de tarefas</sub></td>
36
+ </tr>
37
+ <tr>
38
+ <td colspan="2" align="center"><img src="docs/media/mod-band.png" alt="O mod ripple: esforço, contexto, timer do cache e qual modelo respondeu, com o acerto de cache"><br><sub>O mod ripple: esforço, contexto, timer do cache e qual modelo respondeu, com o acerto de cache</sub></td>
39
+ </tr>
40
+ <tr>
41
+ <td align="center" width="50%"><img src="docs/media/mod-alerts.png" alt="Avisos quando o cache esfria ou um limite está perto, e passagem para um chat novo"><br><sub>Avisos quando o cache esfria ou um limite está perto, e passagem para um chat novo</sub></td>
42
+ <td align="center" width="50%"><img src="docs/media/mod-settings.png" alt="Ajustes rápidos: esforço automático, o juiz, modos de workers"><br><sub>Ajustes rápidos: esforço automático, o juiz, modos de workers</sub></td>
35
43
  </tr>
36
44
  </table>
37
45
 
@@ -295,13 +303,15 @@ que você mapeia vão para o seu provedor, e todo o resto vai para a Anthropic b
295
303
  última hora.
296
304
  - **Identificação dos subagentes.** O painel de tarefas em segundo plano mostra
297
305
  `Terra·high · Review` em vez de um "Agent" genérico.
298
- - **A rota, onde você digita.** Um mod do Claude Code coloca uma linha acima do prompt:
299
- para onde foi sua última requisição, o esforço, o acerto de cache e o tempo. `Log` (ou
300
- `/ripple-log`) abre o log de requisições em um painel lateral, com cores por provedor e
301
- por resultado; `×` (ou `/ripple-bar`) oculta a linha. O mesmo mod mantém um worker no
302
- próprio modelo quando a chamada do Agent indica outro, e lê o marcador
303
- `[[ripple: name@level]]` dele onde quer que esteja no prompt. Basta um botão na tela
304
- **Clientes**, ou `clauderipple mod on`.
306
+ - **O mod ripple, acima do prompt.** Uma faixa mostra o esforço de raciocínio, o contexto, o
307
+ timer do cache e qual modelo respondeu sua última requisição, com o acerto de cache. Um
308
+ pequeno modelo juiz (Haiku 5.5 ou Jev) lê cada prompt junto com os turnos recentes e define
309
+ o esforço, de low a max. O trabalho delegado vai para `ripple:auto`, e o juiz manda cada
310
+ tarefa para um worker conforme a dificuldade: o leve para DeepSeek ou GLM, o difícil para
311
+ GPT ou Opus. Cartões avisam quando o cache esfriou, o contexto ficou pesado ou uma janela do
312
+ plano passou de 80%, e oferecem compactar ou passar para uma sessão nova na mesma pasta.
313
+ `Log` (ou `/ripple-log`) abre o log de requisições em um painel lateral. Basta um botão na
314
+ tela **Clientes**, ou `clauderipple mod on`.
305
315
  - **Imagens pela sua assinatura do ChatGPT.** `clauderipple image "<prompt>"`, com imagens
306
316
  de referência e fundos transparentes. Os subagentes recebem instruções de como fazer,
307
317
  então um worker GPT ou DeepSeek consegue criar uma imagem e olhar para ela sem uma
@@ -529,6 +539,7 @@ que você tenha configurado fica disponível da mesma forma.
529
539
  |---|---|---|---|---|
530
540
  | Assinatura do ChatGPT | backend do Codex | vários logins, trocando quando um se esgota (o login do Codex também é reaproveitado) | lida da sua assinatura (GPT-6 Sol, Luna, Astra, GPT-5.6 …) | esforço low…max (Luna: ultra), cache de prompt 94–99% |
531
541
  | Google Gemini | API Gemini | chave de API do AI Studio, ou login com conta do Google (Antigravity, veja as Perguntas frequentes) | descoberta automática | traduzido (Messages ⇄ generateContent), thought signatures mantidas entre turnos |
542
+ | Assinatura do Grok | proxy de chat da CLI do Grok | o login da CLI do Grok (`grok login`), renovado pela CLI | lida da sua assinatura (Grok 4.7, 4.7 Fast, 4.6, 4.5) | traduzido (Chat Completions), esforço low…xhigh; canal próprio da CLI, não uma API publicada ([§4e](docs/ARCHITECTURE.md#4e-grok-providers-implemented-2026-10-08)) |
532
543
  | OpenRouter | compatível com Anthropic | chave de API | mais de 400, descoberta automática | suporte a esforço por modelo lido da API |
533
544
  | DeepSeek, Kimi, Z.ai GLM, MiniMax, Qwen (intl / cn) | compatível com Anthropic | chave de API | preset | conferido com a documentação do fornecedor |
534
545
  | xAI Grok, Mistral, Groq, Together, Fireworks | compatível com OpenAI | chave de API | descoberta automática | traduzido (Chat Completions / Responses) |
package/README.zh-CN.md CHANGED
@@ -22,16 +22,24 @@
22
22
  </p>
23
23
 
24
24
  <p align="center">
25
- <img src="docs/media/tour.png" width="880" alt="ClaudeRipple 设置界面一览:状态、模型映射、供应商、客户端、请求日志">
25
+ <a href="https://github.com/PBJ-2/clauderipple/releases/download/v0.9.0/clauderipple-demo.mp4"><img src="docs/media/demo.webp" width="880" alt="一分钟概览:其他模型出现在 Claude Desktop 自带的模型菜单里,每条提示设定推理强度,子代理分派给合适的模型。点击观看完整视频。"></a><br>
26
+ <sub>一分钟概览:其他模型出现在 Claude Desktop 自带的模型菜单里,每条提示设定推理强度,子代理分派给合适的模型。点击观看完整视频。</sub>
26
27
  </p>
27
28
 
28
29
  <table align="center">
29
30
  <tr>
30
- <td align="center" width="34%"><img src="docs/media/picker-zoom.png" width="300" alt="Claude Desktop 模型选择器中的真实模型名称"><br><sub>GPT 模型以真实名称出现在 Claude Desktop 的模型选择器中</sub></td>
31
- <td align="center" width="66%"><img src="docs/media/luna-answer.png" alt="GPT-5.6 Luna 在 Claude Desktop 的 Code 标签页中作答"><br><sub>GPT-5.6 Luna 在 Code 标签页中按你选择的推理强度作答</sub></td>
31
+ <td align="center" width="34%"><img src="docs/media/picker.png" width="300" alt="Claude Desktop 自带的模型菜单里出现 GPT、DeepSeek、GLM、Gemini"><br><sub>Claude Desktop 自带的模型菜单里出现 GPT、DeepSeek、GLM、Gemini</sub></td>
32
+ <td align="center" width="66%"><img src="docs/media/answer.png" alt="GPT-6 Astra 在 Code 标签页中工作,右侧记录每一个请求"><br><sub>GPT-6 Astra 在 Code 标签页中工作,右侧记录每一个请求</sub></td>
32
33
  </tr>
33
34
  <tr>
34
- <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="运行在 GPT-5.6 Terra 和 Sol 上的子代理,在后台任务面板中显示模型名称"><br><sub>运行在 GPT-5.6 Terra 和 Sol 上的子代理,在后台任务面板中显示模型名称</sub></td>
35
+ <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="运行在 DeepSeek 和 GLM 上的子代理,在任务面板中显示真实名称"><br><sub>运行在 DeepSeek 和 GLM 上的子代理,在任务面板中显示真实名称</sub></td>
36
+ </tr>
37
+ <tr>
38
+ <td colspan="2" align="center"><img src="docs/media/mod-band.png" alt="ripple 模组:推理强度、上下文、缓存计时,以及实际作答的模型和缓存命中率"><br><sub>ripple 模组:推理强度、上下文、缓存计时,以及实际作答的模型和缓存命中率</sub></td>
39
+ </tr>
40
+ <tr>
41
+ <td align="center" width="50%"><img src="docs/media/mod-alerts.png" alt="缓存变冷或额度将满时提醒,并可交接到新的对话"><br><sub>缓存变冷或额度将满时提醒,并可交接到新的对话</sub></td>
42
+ <td align="center" width="50%"><img src="docs/media/mod-settings.png" alt="快速设置:自动推理强度、判定模型、工作者模式"><br><sub>快速设置:自动推理强度、判定模型、工作者模式</sub></td>
35
43
  </tr>
36
44
  </table>
37
45
 
@@ -164,7 +172,7 @@ Claude Code 的系统提示词和工具描述是为 Claude 编写的,所以其
164
172
  - **从设计上保证正确。** 保留提示缓存(Anthropic 缓存断点和稳定的 OpenAI 前缀),处理 Claude Code 的服务端线程,完整保留双向传递的工具调用和图片,将推理强度限定在各模型接受的范围内,并为兼容厂商去除 Anthropic 专有的请求字段。
165
173
  - **真正的请求日志。** 逐条记录谁发起了请求、哪个模型作答、输入 / 缓存 / 输出 token、延迟和状态,并附最近一小时的汇总。
166
174
  - **子代理名称标签。** 后台任务面板显示 `Terra·high · Review`,而不是笼统的“Agent”。
167
- - **在输入处看到路由。** 一个 Claude Code mod 会在输入框上方显示一行信息:上一个请求发往何处、推理强度、缓存命中率和耗时。`Log`(或 `/ripple-log`)会在侧边窗格中打开请求日志,按供应商和结果着色;`×`(或 `/ripple-bar`)可隐藏这一行。当 Agent 调用指定了其他模型时,同一个 mod 还会让 worker 留在自己的模型上,并读取它的 `[[ripple: name@level]]` 标记,无论标记位于提示词何处。在“客户端”页面上打开一个开关即可启用,或运行 `clauderipple mod on`。
175
+ - **输入框上方的 ripple 模组。** 一条横栏显示推理强度、上下文、缓存计时,以及上一个请求实际由哪个模型作答和缓存命中率。一个小型判定模型(Haiku 5.5 或 Jev)会结合最近的对话阅读每条提示词,在 low 到 max 之间设定推理强度。委派的工作交给 `ripple:auto`,由判定模型按难度挑选 worker:轻活交给 DeepSeek 或 GLM,难活交给 GPT 或 Opus。缓存变冷、上下文变重或套餐额度超过 80% 时会弹出卡片提醒,并提供压缩或交接到同一文件夹的新会话。`Log`(或 `/ripple-log`)会在侧边窗格中打开请求日志。在“客户端”页面上打开一个开关即可启用,或运行 `clauderipple mod on`。
168
176
  - **用 ChatGPT 订阅生成图片。** `clauderipple image "<prompt>"`,支持参考图和透明背景。子代理会被告知用法,因此 GPT 或 DeepSeek worker 无需图像工具也能生成图片并查看结果。
169
177
  - **按需精简 worker。** 打开一个开关,生成的子代理就只获得 worker 会用到的工具,而不是会话中的所有 MCP 服务器和插件:某个 worker 的首个请求因此从 33k token 降到了 9k token。
170
178
  - **为不想碰终端的人而设计。** 供应商预设支持一键连接测试和模型发现,下拉式模型映射,自动保存,韩语和英语界面。菜单栏应用自带运行时,首次启动时自动完成设置。经过签名和公证。
@@ -314,6 +322,7 @@ Claude 模型会以各自的名称出现在 Codex 的模型列表中(ClaudeRip
314
322
  |---|---|---|---|---|
315
323
  | ChatGPT 订阅 | Codex 后端 | 可登录多个账号,一个用尽自动切换(也会复用 Codex 登录) | 从你的订阅读取(GPT-6 Sol、Luna、Astra、GPT-5.6 …) | 推理强度 low…max(Luna:ultra),提示缓存 94–99 % |
316
324
  | Google Gemini | Gemini API | AI Studio API 密钥,或 Google 账号登录(Antigravity,见[常见问题](#通过-google-账号使用-gemini-呢)) | 自动发现 | 格式转换(Messages ⇄ generateContent),跨轮次保留思维签名(thought signatures) |
325
+ | Grok 订阅 | Grok CLI 聊天代理 | Grok CLI 的登录(`grok login`),由 CLI 刷新 | 从你的订阅读取(Grok 4.7、4.7 Fast、4.6、4.5) | 格式转换(Chat Completions),推理强度 low…xhigh;CLI 自己的通道,不是公开 API([§4e](docs/ARCHITECTURE.md#4e-grok-providers-implemented-2026-10-08)) |
317
326
  | OpenRouter | Anthropic 兼容 | API 密钥 | 400+,自动发现 | 从 API 读取各模型对推理强度的支持情况 |
318
327
  | DeepSeek、Kimi、Z.ai GLM、MiniMax、Qwen(国际版 / 国内版) | Anthropic 兼容 | API 密钥 | 预设 | 已对照厂商文档验证 |
319
328
  | xAI Grok、Mistral、Groq、Together、Fireworks | OpenAI 兼容 | API 密钥 | 自动发现 | 格式转换(Chat Completions / Responses) |
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "private": true,
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "type": "commonjs"
5
5
  }
@@ -20,6 +20,7 @@ import { applyAppProxy, caTrusted, currentAppProxy, nssDb, removeAppProxy, trust
20
20
  import { runtime } from "./runtime.js";
21
21
  import { codexOff, codexOn } from "./codex.js";
22
22
  import { ingressModels } from "../../router/src/ingress/models.js";
23
+ import { GROK_DEFAULT_URL } from "../../router/src/providers/grok/catalog.js";
23
24
  import { claudeLogin, claudeLogout, desktopClaudeCodeDirs } from "./claude-auth.js";
24
25
  import { openBrowser } from "./browser.js";
25
26
  import { electronPath, installTrayRuntime, startTray } from "./tray.js";
@@ -315,7 +316,7 @@ async function status() {
315
316
  const p = await probe({ host: cfg.listen.host, port: cfg.listen.port, caPem: caPath, upstream: cfg.upstream });
316
317
  rows.push(["probe", `${p.ok ? "ok" : "FAIL"}: ${p.detail} (${p.ms}ms)`]);
317
318
  for (const [name, p2] of Object.entries(cfg.providers)) {
318
- const providerUrl = p2.type === "chatgpt" ? (p2.url ?? "https://chatgpt.com") : p2.type === "anthropic" ? "https://api.anthropic.com" : p2.type === "google" ? (p2.url ?? "https://generativelanguage.googleapis.com") : p2.url;
319
+ const providerUrl = p2.type === "chatgpt" ? (p2.url ?? "https://chatgpt.com") : p2.type === "anthropic" ? "https://api.anthropic.com" : p2.type === "google" ? (p2.url ?? "https://generativelanguage.googleapis.com") : p2.type === "grok" ? (p2.url ?? GROK_DEFAULT_URL) : p2.url;
319
320
  const u = new URL(providerUrl);
320
321
  rows.push([`provider ${name}`, await tcpCheck(u.hostname, Number(u.port) || (u.protocol === "https:" ? 443 : 80))]);
321
322
  }