# Portability: UNIVERSAL
# Last validated: 2026-05-17
# Next review: 2027-05-17
# リソース: [tools/injectors.py、hub/inject.py]

インジェクター システム (認知オーケストレーション)
==========================================

現在: 2026-02-08

インジェクターは、中央幹部としての思考と結合をシミュレートします。
これらは、次の 3 つのレベルで認知処理を調整します。
- 静的: 知識ベース (wiki、ヘルプ、コンテキスト)
- プロセスに伴う: 作業中のアクティブな制御
- プロアクティブ: メモリ コールとシステム ログ

デフォルト: すべてオン (いつでもオフにできます)。

クールダウン管理 (v1.1.75)
-----------------------------
インジェクターは表示後 X 分間ミュートされます:
- 戦略: 2分
- コンテキスト: 1 分
- 間隔: 3分
- 工具警告: 5 分

機能を失うことなく迷惑な繰り返しを防止します。

部分的な機能を備えた 5 つのインジェクター
-----------------------------------

1。戦略インジェクター (メタ認知)
   部分的な機能:
   - メタ認知: 何を、いつ、どのように行うか?
   - 支店の意思決定支援
   - エラー分析 (「エラーは貴重な情報です」)

   トリガーワード: エラー、複雑、ブロック、難しい、問題
   例: 「エラー」 -> 「エラーは貴重な情報です」
   クールダウン: 2 分

2. CONTEXT INJECTOR (ワーキングメモリ)
   部分的な機能:
   - タスクの説明を思い出す
   - コンテキストに基づいたツールの推奨事項
   - 記憶の想起（短期、長期、セッション）
   - 要件分析
   - コネクタ ルーティングとの統合 (下記を参照)

   トリガー: テキスト内のキーワード (下記の TOOL-TRIGGER を参照)
   攻撃的ではありません - ヒントだけです
   クールダウン: 1 分

3. TIME INJECTOR（時間の感覚）
   部分的な機能:
   - タイムビート: 定期的な時間の更新
   - 時間予算の認識

   デフォルトの間隔: 60 秒
   時間の感覚とセッション管理に役立ちます
   クールダウンなし (独自の間隔メカニズム)

4。インジェクター間（品質管理）
   部分的な機能:
   - タスク完了後の品質管理
   - 次のタスクへの移行を調整する
   - 結果チェック: 要件に対する検証

   トリガー: 「バッチタスクの完了」後
   セッション終了時ではありません (これを認識します)
   クールダウン: 3 分

5. TOOL INJECTOR (ツール認識)
   部分的な機能:
   - セッション開始時のツールリマインダー (1 回限り)
   - 作成時のツールの重複に関する警告
   - 分類されたツールの概要

   カテゴリ: OCR、データインポート、ドメインハンドラー、コード分析、
               エンコード、インポート処理、変換
   トリガー: テキストには「新しいツール」、「ツールの作成」などが含まれます。
   クールダウン: 5 分

認知オーケストレーション (図)
-----------------------------------

+----------------------------------------------------------------+
  |                インジェクターのオーケストレーション |
  |                (中央執行部) |
  +----------------------------------------------------------------+
  |                                                             |
  |  STATIC (知識ベース) |
  |  +-- メタスキル、メタワークフロー |
  |  +-- ウィキ (wiki/) |
  |  +-- ヘルプ (docs/help/*.txt) |
  |  +-- コンテキスト (memory_context) |
  |                                                             |
  |  プロセスに伴う (インジェクター経由) |
  |  +-- 戦略インジェクター (クールダウン: 2 分) |
  |  |   +-- メタ認知: 何を、いつ、どのように?                     |
  |  |   +-- 意思決定サポート |
  |  |   +-- エラー分析 |
  |  +-- context_injector (クールダウン: 1 分) |
  |  |   +-- タスクリマインダー |
  |  |   +-- ツールの推奨事項 |
  |  |   +-- 要件分析 |
  |  |   +-- コネクタ ルーティングの統合 (下記を参照) |
  |  +-- between_injector (クールダウン: 3 分) |
  |  |   +-- 品質管理 |
  |  |   +-- タスクの遷移 |
  |  |   +-- 結果の検証 |
  |  +-- time_injector (クールダウンなし) |
  |  |   +-- 時間の感覚 (タイムビート) |
  |  +-- ツールインジェクター (クールダウン: 5 分) |
  |      +-- ツール認識 (セッション開始) |
  |      +-- 重複警告 |
  |                                                             |
  |  プロアクティブ (context_injector によるメモリ取得) |
  |  +-- 短期記憶 (作業記憶) |
  |  +-- 長期記憶 (事実、教訓) |
  |  +-- セッション メモリ (セッション) |
  |  +-- システム ログ (変更ログ、バグログ、ロードマップ) |
  |                                                             |
  +--------------------------------------------------------------+

コマンド
-------
  bach --inject status         すべてのインジェクターのステータスを表示 (クールダウンを含む)
  bach --inject toggle <name>  スイッチのオン/オフ
  bach --inject task <min>     X 分間のタスク
  bach --inject decompose <id> Zerlegt Aufgabe

トグル名:
  戦略 (または戦略インジェクター)
  context (または context_injector)
  時間 (または time_injector)
  between (または between_injector)

SHOW COOLDOWN STATUS:
  bach --inject status zeigt verbleibende Cooldown-Zeit in Sekunden

TOOL TRIGGER (コンテキスト インジェクター)
-------------------------------
コンテキスト インジェクターはキーワードを認識し、ツールを推奨します:

  Python編集
  ------------------
  "edit python" -> bach python_cli_editor <ファイル> --show-all
  「クラスの編集」 -> bach python_cli_editor <ファイル> --show-all
  「編集メソッド」 -> bach python_cli_editor <ファイル> --show-all
  「コード構造」 -> bach python_cli_editor <ファイル> --show-all
  "インポートを表示" -> bach python_cli_editor <ファイル> --show-imports

  コード分析
  ------------
  「コードを分析する」 -> bach code_analyzer <ファイル>
  "デッドコード" -> bach code_analyzer <ファイル>

  エンコーディングとフォーマット
  ------------------------
  「エンコーディングの問題」 -> bach c_encoding_fixer <ファイル>
  "ウムラウテが壊れています" -> bach c_encoding_fixer <ファイル>
  "utf-8" -> bach c_encoding_fixer <ファイル>
  "絵文字" -> bach c_emoji_scanner <ファイル>
  "インデント" -> bach c_indent_checker <ファイル>

  輸入取り扱い
  ---------------
  「インポートの並べ替え」 -> bach c_import_organizer <ファイル>
  「インポートの問題」 -> bach c_import_diagnose <ファイル>
  「インポートが見つかりません」 -> bach c_import_diagnose <ファイル>

  ファイル操作
  -----------------
  「ファイルを分割」 -> bach c_pycutter <ファイル>
  「大きすぎる」 -> bach c_pycutter <ファイル>
  "sqlite の表示" -> bach c_sqlite_viewer <db>
  「json の問題」 -> bach c_json_repair <ファイル>

  変換
  -------------
  「pdf へのマークダウン」 -> bach c_md_to_pdf <ファイル>
  「形式を変換」 -> bach c_universal_converter <ファイル>

ツール検索
  ----------
  「ツールを検索」 -> Bach ツールが「説明」を提案します
  「どのツール」 -> Bach ツールが「説明」を提案します
  "検索ツール" -> Bach ツール検索 <用語>

  ヘルプと規約
  --------------------
  「新しいツール」 -> --help 名前付け (ツールのプレフィックス)
  「コンセプト」 -> -- 実践に役立つ
  "アーキテクチャ" -> --実践に役立ちます
  "メモリ" -> --ヘルプメモリ
  "タスク" -> --ヘルプ タスク
  「パス」 -> --help bach_paths
  "スキル" -> --ヘルプスキル
  "version" -> bach --skills version <name>

サンプル出力
----------------
クロードが「edit python」を読んだとき:

  [文脈] Python エディタ: bach python_cli_editor <file> --show-all

クロードが「エンコーディングの問題」を読んだとき:

  [コンテキスト] エンコーディングの修正: bach c_encoding_fixer <file>

コネクタ ルーティングの統合 (新規 v1.1.75)
-------------------------------------------
ContextInjector がコネクタ メッセージ フローに統合されました:

ルーティング パイプライン (queue_processor.py):
  受信メッセージ (connector_messages)
    |
    v
  Route_incoming() が適用されるのは次のとおりです。
    1. ContextInjector.check(text) - 100 個以上のハードコードされたトリガー + DB キャッシュ
    2. context_triggers テーブル - DB からの 900 以上の動的トリガー
    |
    v
  メタデータヒントを含むメッセージ (messages.inbox)
    -> メタデータ["context_hints"] = [ヒント1、ヒント2、...]
    -> メタデータ["context_triggers"] = [トリガー1、トリガー2、...]

利点:
- 受信メッセージは即時のコンテキスト情報を受け取ります
- LLM は関連ツールの推奨事項をすでに確認しています
- ツールを手動で検索する必要はありません
- コンテキストはメタデータとして提供されます (テキスト内ではありません)

例:
  ユーザーは次のように書きます:「ファイル X のエンコーディングの問題」
  -> ContextInjector が「エンコーディングの問題」を検出
  -> メタデータ: {"context_hints": "bach c_encoding_fixer <ファイル>"}
  -> LLM は、ユーザー テキストとしてではなく、システム情報としてヒントを取得します

データベース トリガー:
  テーブル context_triggers (900 以上のエントリ):
  -trigger_phrase: 検索語 (例: 「edit python」)
  - ヒントテキスト: 推奨事項 (例: "bach python_cli_editor <file>")
  - ルーティング中に自動的にクエリが実行されます
  - コードを変更せずに動的に拡張可能

設定
-------------
「injectors」の下のconfig.json:

  {
    「インジェクター」: {
      "strategy_injector": true、
      "context_injector": true、
      "time_injector": true、
      "インジェクター間": true、
      「タイムビート間隔」: 60
    }
  }

重要
-------
- インジェクターは迷惑な場合や気が散る場合もあります。
- いつでもオフにできます: bach --inject トグルコンテキスト (または戦略、時間、間)
- ストラテジーインジェクションごとにスイッチをオフにする方法についてのメモ
- 新しいインジェクターは必要ありません - 5 つですべての機能をカバーします
- クールダウンにより煩わしい繰り返しが自動的に防止されます

コードリファレンス
-------------
  tools/injectors.py インジェクターの実装
  Hub/inject.py CLI ハンドラー
  Hub/_services/connector/queue_processor.py コネクタの統合

クラスとコンポーネント:
  InjectorSystem - メイン インターフェイス、すべてのインジェクターを調整します
  StrategyInjector - メタ認知、トリガーベース
  ContextInjector - ツールの推奨事項、DB キャッシュ (~100 トリガー)
  TimeInjector - タイムビート (60 秒間隔)
  BetweenInjector - タスク完了後の品質管理
  ToolInjector - ツール認識、重複警告
  CooldownManager - クールダウン管理 (戦略 = 2 分、コンテキスト = 1 分、間 = 3 分)
  TaskAssigner - 時間予算に基づくタスクの割り当て

データベース テーブル:
  context_triggers      - 900 以上の動的トリガー (trigger_phrase、hint_text)
  injector_cooldowns    - クールダウン タイムスタンプ (injector_name、last_shown)

関連項目
----------
  bach --help tools                      ツールの概要
  bach --help tools/python_cli_editor    ツールの詳細なドキュメント
  bach --help memory                     メモリ システム
  bach --help connector                  コネクタ システムとメッセージ ルーティング
  bach tools search                      ツール検索
  bach tool suggest                      ツール推薦
