Skip to content

evex-dev/darkness-claude-code-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Darkness Claude Code CLI(実装計画)

このリポジトリは、以下をリライト元とした実装計画です。

目的は、Claude CodeスタイルのCLI機能を維持しつつ、次を追加することです。

  • ChatGPT Codex対応
  • Sakana AI対応
  • Shift+Tabによるモデル切替
  • 複数モデルの並列思考と最終回答の統合

1. スコープ

対象範囲

  • マルチプロバイダCLIアーキテクチャ(Claude、Codex、Sakana)
  • 実行中に切り替え可能なモデル選択UX
  • 複数モデル実行パイプライン
  • 審判モデル(LLM-as-a-judge)による統合
  • モデル別のコスト/レイテンシ追跡

現フェーズの対象外

  • すべてのアダプタを本番品質で完成させること
  • 非公式連携に対する長期的な法務/契約保証
  • プラグインマーケットプレイスやGUIアプリ化

2. プロダクト目標

  1. 参照元プロジェクトのClaude中心ワークフローを維持する。
  2. セッションを再起動せずにモデル/プロバイダを切り替えられるようにする。
  3. 1つのプロンプトを複数モデルで実行し、合議型の回答を可能にする。
  4. 将来プロバイダ追加時にコア変更を最小化できる拡張性を確保する。

3. 全体アーキテクチャ

3.1 プロバイダ抽象化

以下のようなプロバイダインターフェースを定義します。

interface LlmProvider {
  id: "claude" | "codex" | "sakana";
  listModels(): Promise<string[]>;
  sendMessage(input: ProviderMessageInput): Promise<ProviderMessageOutput>;
  supportsStreaming: boolean;
  normalizeError(error: unknown): ProviderError;
}

3.2 リクエスト処理フロー

  1. CLIでユーザー入力を受け取る。
  2. 有効モデルを解決する(セッション上書き > CLIフラグ > 設定デフォルト)。
  3. プロバイダアダプタ経由でリクエストを送る。
  4. 可能な場合はストリーミングで応答を表示する。
  5. コストとテレメトリを記録する。

3.3 複数モデル処理フロー

  1. ユーザーがマルチモデルモードを有効化する。
  2. 選択されたモデル群へプロンプトを並列送信する。
  3. タイムアウトと部分失敗許容を前提に各応答を収集する。
  4. 審判モデルに候補応答群と評価基準を渡す。
  5. 最終統合回答とモデル別サマリーを返す。

4. 主要機能の設計

4.1 Shift+Tabモデル切替

  • Shift+Tabで、定義済み順序に従ってアクティブモデルを循環切替する。
  • 現在のプロバイダ/モデルをステータスラインに常時表示する。
  • 逆順切替は任意でCtrl+Shift+Tabに割り当て可能とする。
  • 競合時の代替キーはキーマップ設定で変更可能にする。

想定UX:

  • 1回押下: 次のモデルへ移動
  • 思考文脈を維持: 入力中プロンプトは保持
  • セッション再起動不要

4.2 複数モデル統合戦略(審判方式)

デフォルト戦略はLLM審判統合とします。

審判モデルへの入力:

  • 元プロンプト
  • 各モデル出力(プロバイダ/モデル名付き)
  • 採点基準(正確性、網羅性、安全性、実行可能性)

審判モデルの出力形式:

  • 採用した最終回答
  • 採用理由
  • 不採用回答の不足点
  • 信頼度スコア(0-1)

4.3 プロバイダ別メモ

Claude

  • 現行CLI挙動との互換性を基準線として維持する。
  • ツール呼び出しとコーディング支援の操作感を維持する。

ChatGPT Codex

  • OpenAI/Codex系API向けアダプタ層を追加する。
  • 応答スキーマを内部共通形式へ正規化する。

Sakana AI

  • Sakana AIの実装は sakana.js を利用する方針を明示する。
  • 要望に基づき、sakana.js 経由のスクレイピング連携を初期案として扱う。
  • リスク: 画面/仕様変更、bot対策、利用規約制約、安定性低下。
  • 推奨代替: 公式APIまたはOpenAI互換エンドポイントへ段階移行。

5. 設定設計

設定例:

{
  "defaultProvider": "claude",
  "defaultModel": "claude-opus",
  "providers": {
    "claude": {
      "apiKeyEnv": "ANTHROPIC_API_KEY"
    },
    "codex": {
      "apiKeyEnv": "OPENAI_API_KEY",
      "baseUrl": "https://api.openai.com/v1"
    },
    "sakana": {
      "library": "sakana.js",
      "mode": "scraping",
      "endpoint": "TBD"
    }
  },
  "multiModel": {
    "enabled": false,
    "models": ["claude-opus", "gpt-codex"],
    "judgeModel": "claude-opus",
    "timeoutMs": 45000
  },
  "keybindings": {
    "cycleModel": "shift+tab"
  }
}

6. 実装ロードマップ

Phase 1: 基盤

  • プロバイダインターフェースとアダプタ登録機構を追加
  • Claude経路を正準参照実装として維持
  • Codexアダプタの骨組みを追加
  • Sakanaアダプタの骨組みを追加(sakana.js 利用、スクレイピングは実験扱い)

Phase 2: UXと操作

  • Shift+Tabによるモデル循環切替を実装
  • ステータスラインにモデル表示を追加
  • 設定変更と実行時上書きコマンドを追加

Phase 3: マルチモデル統合

  • 並列実行マネージャを追加
  • 応答収集とタイムアウト制御を追加
  • 審判モデル統合パイプラインを追加
  • 統合結果表示とモデル別補足表示を追加

Phase 4: 信頼性と検証

  • プロバイダ別のリトライ/バックオフを追加
  • 構造化エラー分類を追加
  • 単一モデル互換性の回帰テストを追加
  • マルチモデル統合の結合テストを追加

7. テスト戦略

  1. 単体テスト
  • プロバイダアダプタ(成功/失敗/タイムアウト)
  • モデル解決ロジックとキーバインド挙動
  • 審判プロンプト生成と応答パーサ
  1. 結合テスト
  • プロバイダ別の単一モデルE2E
  • 1プロバイダ失敗時を含むマルチモデルE2E
  1. UXテスト
  • プロンプト入力途中でのShift+Tab切替
  • 動的切替後のステータスライン整合性
  1. 非機能テスト
  • 並列負荷時のレイテンシ/タイムアウト挙動
  • プロバイダ/モデル別コスト集計の整合性

8. リスクと対策

  1. Sakanaスクレイピングの脆弱性
  • 対策: 実験機能として明示し、アダプタを分離し、公式API移行経路を準備する。
  1. プロバイダ横断のレート制限
  • 対策: プロバイダ単位のスロットリングと適応的リトライを実装する。
  1. 審判モデルの幻覚やバイアス
  • 対策: 決定論的な評価ルーブリック、元出力の閲覧機能、信頼度しきい値を導入する。
  1. 端末環境でのキーバインド衝突
  • 対策: 代替キーを設定可能にし、競合検知時に警告を出す。

9. 初期CLIコマンド案

  • /model 現在のモデル/プロバイダを表示
  • /model next 次モデルへ切替(Shift+Tab相当)
  • /model set <provider:model> アクティブモデルを設定
  • /multi on マルチモデルモードを有効化
  • /multi off マルチモデルモードを無効化
  • /multi models add <provider:model> 対象モデル集合へ追加
  • /multi judge <provider:model> 審判モデルを設定

10. 開発セットアップ(予定)

  1. このリポジトリをクローンする。
  2. 採用実装に合わせたNode.jsとパッケージマネージャを準備する。
  3. .env.example.env にコピーし、必要なAPIキーを設定する。
  4. 開発モードでCLIを起動する。
  5. /model、Shift+Tab、/multi の挙動を確認する。

11. 初回マイルストーンの完了条件

  • Claude単一モデルフローが維持されている。
  • Codexアダプタで最低1件のE2Eが成功する。
  • Shift+Tabでモデル切替と表示更新が行える。
  • マルチモデルモードで審判統合結果を返せる。
  • Sakana実験経路が明確にラベル付けされ、切替可能である。

このREADMEは最初の実装成果物であり、以降の実装を進めるための基準設計書です。

About

漆黒のclaude code

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors