v0.2.0 - Alpha

注意は、モデルが持つすべて。
集中は、niuma_code が行うこと。

2017年、「Attention is All You Need」が時代を定義しました — すべてのモデル知能は注意に基づいて構築されています。8年後、私たちはモデルが注意メカニズムを欠いているのではないことに気づきました — 重要な場所に注意を置くことを欠いているのです。コンテキストが長くなればなるほど、ノイズが真に重要な情報を薄めてしまいます。niuma_code は一つのことをします:コンテキストを引き、集中を加える — すべてのトークンがそのあるべき場所に届くように。

🔒
ローカル実行
データはマシンから外に出ません — 完全なプライバシー管理
🛡️
プライバシー最優先
API Key はローカルに保存、会話データはアップロードされません
📦
v0.2.0 Alpha
継続的に改善中、コミュニティ主導
💬
コミュニティサポート
GitHub Issues — 開発者に直接連絡

実際の動作を見る

IDE オーケストレーションモードの実際のスクリーンレコーディング — 1分で niuma_code の集中力をお試しください

niuma_code が選ばれる理由

Claude Code の代替ではなく、より集中力を高める補完ツールです

⚙️

自律 Harness モード

デフォルトモード — コマンド不要。LLM がツールループ内で自律的に探索し、考えながら行動し、タスクが完了するまで実行し続けます。

  • Tool-use ループ: LLM がファイルの読み取り / コードの編集 / コマンドの実行を自律的に判断
  • API エラー自動リトライ、ストリーミング描画 + ESC キャンセル + 長い出力の自動圧縮
  • 曖昧で分解しにくいタスクに最適 — LLM が完了を判断
🔁

Loop エンジニアリングオーケストレーション

/loop <goal> で目標指向の自己ループに入ります: 検証コマンドで計画し、順次実行し、各ステップを検証し、失敗時に自己修正します。

  • 計画 → 実行 → 検証 → 失敗リトライ(3回まで、失敗理由をフィードバック)
  • 二重直交ゲート: MAX_ROUNDS=20 タスク上限 + MAX_RETRIES=3 自己修正
  • 各ラウンドで harness を呼び出し1ステップ実行 — 分解可能な検証可能なエンジニアリングタスクに最適
🖥️

TUI フルスクリーンモード

prompt_toolkit のフルスクリーン UI ベース。入力は常に下部に固定され、 LLM ストリーミング中いつでも新しいメッセージを追加できます — コンテンツが押し出されることはありません。

  • 5つのモーダルオーバーレイ: モデル設定、メッセージキュー、コンテキスト切替、会話管理、権限確認
  • マウスドラッグ選択ハイライト、スクロール閲覧、左クリック自動コピー、Ctrl+スクロールフォントズーム
  • リアルタイムステータスバー: 思考プレビュー、入出力トークン数、圧縮進捗 + ESC キャンセル
💻

IDE オーケストレーションモード

フルスクリーンコードエディタ。ネイティブ Python 構文でオーケストレーションスクリプトを記述し、 LLM 呼び出しを制御可能なスクリプトワークフローに組み込みます。

  • llm_call / llm_confirm / llm_judge 関数を注入して制御可能な LLM オーケストレーション
  • F5 プレビュー(AST 静的解析)、F6 実行(無人、ツール権限自動付与)
  • セキュアサンドボックス実行 + 危険なインポートブラックリスト(os/subprocess/socket 等)— 無人モード唯一の安全ネット
🔌

マルチプロバイダールーティング

settings.json で複数の API エンドポイントを設定 — リクエストはモデル名に基づいて自動的に正しいプロバイダーにルーティングされ、セッション内で自由に切替可能。

  • 各プロバイダーが base_url / api_key / サポートモデルリストを宣言
  • #tag または /model でモデル切替 — リクエストが自動的に正しいエンドポイントに接続
  • 3層設定カスケード(ユーザーレベル / プロジェクトレベル / プロジェクトローカル)、後に定義されたものが優先
🗂️

並列コンテキスト管理

単一の会話をN個の並列コンテキストに拡張し、各コンテキストが独立して履歴、 トークン数、圧縮状態を管理 — クロスコンタミネーションゼロ。

  • LRU 駆除、デフォルト上限5(max_contexts で設定可能)— 駆除 = アーカイブ済みで復元可能
  • /context ビジュアルオーバーレイで切替;退出時に非同期サマリー生成
  • /messages ユニット単位で複数選択 — 削除 / 並べ替え / LLM サマリー統合
🕸️

コード知識グラフ

tree-sitter をベースにコード構造を解析し、シンボル定義、 呼び出しチェーン、依存関係グラフを構築 — LLM が行を読む前に正確に位置を特定します。

  • 4つの読み取り専用クエリツール: シンボル検索、ファイル依存関係、参照、呼び出しチェーン
  • ファイル:行番号とシグネチャを返却 — grep の大海撈 needle 的なアプローチを代替
  • オンデマンドリビルドの3要素判断 — 起動時の全体パースを回避
🤖

並列サブエージェント調査

読み取り専用のサブエージェントが並列でツールを実行し、分離されたコンテキストで調査し、 サマリーのみを返却 — メインコンテキストは清潔なまま。

  • 複数のサブエージェントが読み取り専用ツールを並列実行、非ブロッキング
  • 分離されたコンテキストでの調査、サマリーのみ — メイン会話を汚染しない
  • デフォルトの harness パラダイムに属し、スタンドアロンモードではなくオンデマンドで呼び出し
🧠

知覚駆動メモリ

memory-palace による永続メモリ — 実行中のイベントが リアルタイムでメモリとしてキャプチャされ、セッション間で経験を蓄積します。

  • 10種類の知覚イベント(視覚/身体/舌/鼻/成果など)、会話後ではなくリアルタイムで書き込み
  • 事実三組 + 会話サマリー、4層リトリーバル + ベイズ減衰
  • 次回セッションでシステムプロンプトに自動注入、安定した回想位置
🎯

成果報酬トラッキング

タスク目標の全ライフサイクルをトラッキングし、完了品質に基づいて報酬スコアを算出し、 知覚イベントとしてメモリに書き込みます。

  • OutcomeTracker が全タスクライフサイクルで 0.0〜1.0 の報酬スコアを算出
  • 報酬スコアはメモリの再利用価値評価シグナルとなる
  • 10種類の知覚イベントの一つとして、read/write/tool-call イベントと統合

両モードを効果的に活用する方法

ステップが不明な場合は記述して反復(harness)。チェックリストがある場合は /loop を使用

🧭

harness の要点

harness には再計画ループがありません — 入力が明確であればあるほど、自律探索が正確になります。

使用シーン: 大まかなアイデアはあるがステップを明確に言語化できず、反復しながら進めたい場合。 例: 「ログインページのエラーを見つけて修正して」
  • 制約を事前に明記: 目標 + 触れないファイル/関数 + 受入基準 — 実行中に要件を変更しない
  • 境界は曖昧だが目標が明確な場合に最適; ステップが明確であればあるほど収束が速い
  • 制御ポイントを使用: ESC でいつでも停止、長い出力は自動圧縮、API エラーは自動リトライ
  • 「完了した」と「実際に完了した」は別物 — 重要な変更後は自分でテスト/コンパイルを実行
🎯

loop の要点

自己修正は「検証」に完全に依存 — 検証可能な目標のみが3回の修正を意味あるものにします。

使用シーン: タスクをステップに分解でき、各ステップに正誤の確認方法がある場合。 例: 「/loop ユーザーAPIにページネーションを追加し、変更後に py_compile を実行」
  • 目標は検証コマンド付きのステップに分解可能でなければならない — 「もっと洗練して」は検証できない
  • 検証方法を目標に直接記述(py_compile / テスト)すると計画精度が最も高くなる
  • 3回の修正失敗は通常、検証情報が不足していることを意味 — より頑張るより、さらに分解する
  • 3回の失敗で停止せず — 記録されループは続行; サマリーの [!!] マーカーを確認

3ステップで起動

ダウンロード、設定、起動 — 数秒で準備完了

01 ダウンロード
⬇ niuma.exe をダウンロード
Windows · インストール不要 · 即実行
02 設定
# ~/.niuma/settings.json
{
  "factories": [{
    "api_key": "your-key"
  }]
}
03 起動
$ niuma.exe
niuma_code v0.2.0 launched

settings.json パラメータ一覧

設定ファイルパス: ~/.niuma/settings.json

factoriesマルチプロバイダー API 設定。各プロバイダーが base_url / api_key / サポートモデルリストを宣言;リクエストはモデル名で自動ルーティング
💡 設定例
{
  "factories": [
    {
      "base_url": "https://api.anthropic.com",  // Anthropic official endpoint
      "api_key": "sk-ant-xxx",                   // Required; all three fields must be present
      "options": ["claude-sonnet-4-6", "claude-opus-4-8"]  // Supported models for this provider
    },
    {
      "base_url": "https://your-proxy.example.com",  // Anthropic-compatible proxy endpoint
      "api_key": "sk-proxy-xxx",
      "options": ["claude-sonnet-4-6"]  // Supported models for this endpoint
    }
  ]
}
パラメータ デフォルト 説明
base_url string --- API エンドポイント URL(必須)
api_key string --- API キー(必須)
options string[] [] このプロバイダーのサポートモデル名
llmモデル、エフェクトレベル、思考予算 & コンテキスト管理
💡 設定例
{
  "llm": {
    "default_model": "claude-sonnet-4-6",   // Default value for /model switch
    "default_effort": "high",               // Determines which thinking_budget is used
    "max_contexts": 5,                      // Max parallel contexts; LRU eviction beyond limit
    "resume_latest_context": true,          // Resume last active context on startup
    "options": [                            // Model -> effort mapping
      {"claude-sonnet-4-6": ["low", "medium", "high"]},
      {"claude-opus-4-8": ["low", "medium", "high", "max"]}
    ],
    "thinking_budget_low": "0",             // 0 = disable extended thinking
    "thinking_budget_medium": "0",
    "thinking_budget_high": "10000",        // Thinking budget for high effort
    "thinking_budget_max": "20000"           // Thinking budget for max effort (deepest reasoning)
  }
}
パラメータ デフォルト 説明
default_model string "claude-sonnet-4-6" デフォルトモデル(セッション中固定、/model で切替可能)
default_effort string "high" デフォルトエフェクトレベル — 思考予算の深さを制御
max_contexts integer 5 最大アクティブ並列コンテキスト数;超過時は LRU で最古を駆除
resume_latest_context boolean true 起動時に最後のアクティブコンテキストを復元;false = 新規開始
options object[] [] モデル→エフェクトマッピング、/model 切替の検証に使用
thinking_budget_low string/int "0" low エフェクト時の思考トークン予算(0 = 無効)
thinking_budget_medium string/int "0" medium エフェクト時の思考トークン予算
thinking_budget_high string/int "10000" high エフェクト時の思考トークン予算
thinking_budget_max string/int "20000" max エフェクト時の思考トークン予算(最も深い推論)
envos.environ に書き込まれる環境変数。ペルソナ、デバッグ、ネットワーク、権限動作を制御
💡 設定例
{
  "env": {
    "PERSONA_NAME": "niuma",              // AI persona name, injected into system prompt
    "MODEL_BACKGROUND": "claude-haiku-4-5", // Background task model (memory extraction, compression, etc.)
    "LANG": "zh",                        // UI language (zh/en); also controls LLM response language
    "TEMPERATURE_ZERO": "true",            // Note: all values are strings
    "API_TIMEOUT": "30",                   // Streaming stall timeout (seconds)
    "API_ROUND_MAX": "120",                // Per-turn wall-clock hard limit (seconds)
    "API_STALL_MAX_RETRIES": "2",        // Max auto-retries on stream stall
    "PERMISSION_MODE": "auto",             // auto=whitelist+confirm / manual=whitelist only / skip=allow all
    "ALLOWED_TOOLS": ""                    // Whitelisted tools (comma-separated); empty = built-in defaults
  }
}
パラメータ デフォルト 説明
PERSONA_NAME string "niuma" システムプロンプトに注入されるペルソナ名
MODEL_BACKGROUND string "claude-haiku-4-5" メモリ抽出、圧縮などのバックグラウンドタスク用モデル
LANG string "en" UI 言語(zh/en)、LLM 応答言語も制御
TEMPERATURE_ZERO string(bool) "true" temperature=0 を固定して決定論的出力;false = モデルデフォルト
API_TIMEOUT string/int "30" ストリーミング停滞タイムアウト(秒)— これ以上イベントがない場合は再接続
API_ROUND_MAX string/int "120" ターンごとの壁時計ハードリミット(秒)— 古いストリームを強制終了
API_STALL_MAX_RETRIES string/int "2" ストリーム停滞時の最大リトライ回数
PERMISSION_MODE string "auto" 権限モード: auto(ホワイトリスト+確認)/ manual(ホワイトリストのみ)/ skip(すべて許可)
ALLOWED_TOOLS string "" カンマ区切りツールホワイトリスト;空 = ビルトインデフォルト
compactコンテキスト圧縮: 長い会話を自動圧縮して重要な情報を保持
💡 設定例
{
  "compact": {
    // -- Inline compression (blocks main loop until done) --
    "inline_trigger": 0.8,      // Triggers at 80% of MAX_TOKENS
    "inline_keep_ratio": 0.4,   // Keep latest 40% of messages after compression

    // -- Post-reply async compression (non-blocking, runs in background) --
    "idle_trigger": 0.5,        // Triggers at 50% of MAX_TOKENS
    "idle_keep_ratio": 0.4,     // Keep latest 40% of messages after compression

    // -- LLM summary output limit --
    "max_summary_tokens": 4096  // Max tokens for generated summary
  }
}
パラメータ デフォルト 説明
inline_trigger float 0.8 インライン圧縮トリガー率 — 到達時にメインループをブロック
inline_keep_ratio float 0.4 インライン圧縮後に保持する最近のメッセージ比率
idle_trigger float 0.5 アイドル圧縮トリガー率 — 応答完了後に非同期実行
idle_keep_ratio float 0.4 アイドル圧縮後に保持する最近のメッセージ比率
max_summary_tokens integer 4096 LLM 生成の圧縮サマリーの最大出力トークン
memory_palaceMemory Palace LLM 設定;llm ブロックとは独立し、別途パースされる
💡 設定例
// Basic mode: rule-based extraction only (no LLM, zero cost)
{
  "memory_palace": {
    "enable_v9": false,        // Disable V9; falls back to legacy V8 mode
    "llm_enabled": false        // Disable LLM enhancement
  }
}

// Full mode: LLM-enhanced extraction (all three fields required; otherwise falls back to rule-based)
{
  "memory_palace": {
    "enable_v9": true,
    "llm_enabled": true,       // Once enabled, the following three fields are required
    "base_url": "https://api.anthropic.com",
    "api_key": "sk-ant-xxx",
    "model": "claude-haiku-4-5"    // Recommend a lightweight model to save tokens
  }
}
パラメータ デフォルト 説明
enable_v9 boolean true V9 知覚駆動メモリを有効化;false = レガシー V8 モード
llm_enabled boolean false LLM 強化メモリ抽出を有効化;false = ルールベースのみ
base_url string "" メモリ LLM API エンドポイント(3フィールドすべて必須、否则ルールベースにフォールバック)
api_key string "" メモリ LLM API キー
model string "" メモリ LLM 用モデル(haiku のような軽量モデルを推奨)
memory_qualityメモリ品質ゲートしきい値;書き込みフィルタリングと回想精度を制御
💡 設定例
{
  "memory_quality": {
    "min_store_importance": 0.4,  // Write gate: discard facts with importance below this threshold
    "min_recall_score": 0.35,     // Recall gate: skip memories scoring below this threshold
    "dedup_threshold": 0.3        // Dedup threshold: Jaccard similarity above this = duplicate
  }
}
パラメータ デフォルト 説明
min_store_importance float 0.4 書き込みゲート: 重要度がこのしきい値未満の事実は抽出時に破棄
min_recall_score float 0.35 回想ゲート: このスコア未満のメモリはプロンプトに注入されない
dedup_threshold float 0.3 重複除去しきい値: この値を超える Jaccard 類似度 = 重複、最新を保持

利用可能なコマンド一覧

スラッシュコマンドでクイックアクションを実行

コマンド 説明
/ide フルスクリーンコードエディタを起動
/context マルチコンテキスト管理(新規/リネーム/切替/削除)
/help ヘルプ情報を表示
/copy 最後のレスポンスをクリップボードにコピー
/resume 未完了のタスクを再開
/clear 会話コンテキストをクリア
/restart niuma を再起動
/model モデルの確認/切替
/quit プログラム終了

#tag クイックコマンド

#tag を使用して定義済みの指示をすばやく注入 — 一度定義して何度も再利用

💡

#tag とは

カスタムタグは、#tagname と入力するとプリセットテキストに展開されるユーザ定義ショートカットです。

  • #ja と入力すると「日本語で返答」に自動展開
  • 任意のカスタムタグをサポート、大文字小文字を区別しない
  • タグは入力のどこにでも配置可能、パース後に自動除去
  • 展開されたテキストは入力に追加され、LLM が理解できるようになる
例: #ja バブルソートの計算量 → [日本語で返答] バブルソートの計算量
⚙️

2種類のタグ

システムタグは動作モードを制御し、カスタムタグはプリセット指示を注入します。互いに補完し合います。

  • #plan_mode — 解析のみ強制、実行なし(最高優先度)
  • #skip_mode — すべての権限をスキップ、ツールを直接実行
  • #custom — 任意のユーザ定義ショートカット
  • plan_mode と skip_mode が同時に入力された場合、plan_mode が優先
📋

/tag コマンド管理

/tag コマンドを使用してカスタムタグの追加、変更、削除、一覧表示を行います。

  • /tag — タグ管理パネル(TUI)を開く、またはタグ一覧(CLI)を表示
  • /tag add <name> <text> — 新しいタグを追加
  • /tag mod <name> <text> — 既存タグを変更
  • /tag rm <name> — タグを削除
  • /tag ls — すべてのタグを一覧表示
🎯

代表的な使用例

よく使う指示をタグとしてカプセル化し、会話効率を向上させます。

  • #ja — 日本語での返答を強制
  • #fix — 標準的なバグ修正指示
  • #review — コードレビュー標準要件
  • #explain — 詳細なコードロジック説明
組み合わせ使用: #plan_mode #ja この関数のパフォーマンスボトルネックを分析して
💾

保存先 & 設定

タグは JSON ファイルに保存され、settings.json と同じ場所にあります。

  • 開発モード: ./.niuma/custom_tags.json
  • デプロイモード: ~/.niuma/custom_tags.json
  • シンプルなキー-バリューフォーマット、キーは自動小文字変換
  • アトミック書き込み、Windows 対応
ファイル例:
{
  "ja": "日本語で返答",
  "fix": "バグを修正"
}
🔄

パースパイプライン

入力は3方向ルーティングを通過し、LLM の理解、メモリ回想、知覚保存がそれぞれ必要な情報を入手できるよう保証します。

  • raw_input — 元の入力、トレース保存用
  • llm_input — タグ展開後、LLM が理解するための入力
  • filter_input — タグを除去した入力、メモリ回想用
  • メモリはタグで汚染されず、回想は正確なまま