home-dir-layout修正
This commit is contained in:
@@ -87,14 +87,14 @@ target = "/abs/path"
|
||||
permission = "write"
|
||||
```
|
||||
|
||||
`[model]` は `ref = "<provider>/<model_id>"` でプロバイダ / モデルカタログを引く短縮形と、`scheme` / `model_id` / `auth` を直書きする inline 形式の両方を受ける。カタログは `resources/{providers,models}/builtin.toml` を builtin、`$XDG_CONFIG_HOME/insomnia/{providers,models}.toml` を user override として解決する。詳細は `docs/pod-factory.md` と `crates/provider/README.md`。
|
||||
`[model]` は `ref = "<provider>/<model_id>"` でプロバイダ / モデルカタログを引く短縮形と、`scheme` / `model_id` / `auth` を直書きする inline 形式の両方を受ける。カタログは `resources/{providers,models}/builtin.toml` を builtin、`<config_dir>/{providers,models}.toml` を user override として解決する(`<config_dir>` の解決ルールは `manifest::paths` 参照)。詳細は `docs/pod-factory.md` と `crates/provider/README.md`。
|
||||
|
||||
### PodFactory: カスケード設定
|
||||
|
||||
マニフェストを手書きせず、4 層のカスケードで `PodManifest` を組み立てる:
|
||||
|
||||
1. **ビルトインデフォルト** — `manifest::defaults` の定数値
|
||||
2. **ユーザー manifest** — `$XDG_CONFIG_HOME/insomnia/manifest.toml`
|
||||
2. **ユーザー manifest** — `<config_dir>/manifest.toml`(`manifest::paths` で解決)
|
||||
3. **プロジェクト manifest** — `.insomnia/manifest.toml`(cwd から上方向に探索)
|
||||
4. **プログラマティック overlay** — CLI / GUI / spawn 時のインライン指定
|
||||
|
||||
@@ -105,7 +105,7 @@ permission = "write"
|
||||
`worker.instruction` はファイル参照。3 層の prefix addressing でプロンプト資産を解決:
|
||||
|
||||
- `$insomnia/...` — バイナリ同梱(`resources/prompts/`、`include_dir!` で埋め込み)
|
||||
- `$user/...` — `$XDG_CONFIG_HOME/insomnia/prompts/`
|
||||
- `$user/...` — `<config_dir>/prompts/`(`manifest::paths` で解決)
|
||||
- `$workspace/...` — `<project>/.insomnia/prompts/`
|
||||
|
||||
テンプレートは minijinja で評価。`{% include "$insomnia/common/tool-usage" %}` のようにプロンプト間で参照可能(prefix なしの include は現在のファイルからの相対解決)。
|
||||
|
||||
@@ -44,7 +44,7 @@ Ollama は独自 scheme を作らず `scheme/anthropic` を base_url 差し替
|
||||
## 実装原則
|
||||
|
||||
- 認証ストアを読むアダプタ(`~/.codex/auth.json` 等)は **llm-worker 直下に置かず上位層に配置**。llm-worker は低レベル基盤に留める方針(`feedback_llm_worker_scope.md`)と整合
|
||||
- モデル列挙は **auto_discover と宣言型の両輪**。Ollama は `/api/tags` で自動、OpenAI 互換枠はモデルカタログ(`resources/models/builtin.toml` + `$XDG_CONFIG_HOME/insomnia/models.toml` の user override)で宣言
|
||||
- モデル列挙は **auto_discover と宣言型の両輪**。Ollama は `/api/tags` で自動、OpenAI 互換枠はモデルカタログ(`resources/models/builtin.toml` + `<config_dir>/models.toml` の user override、`<config_dir>` は `manifest::paths` で解決)で宣言
|
||||
- UI のプロバイダ選択肢も第一級 → 二次の優先順位で並べる
|
||||
- **`ollama launch insomnia` 対応を視野に**、env 注入(`ANTHROPIC_BASE_URL` / `OPENAI_BASE_URL` 等)で起動設定を受け入れる作り
|
||||
|
||||
|
||||
+8
-8
@@ -13,7 +13,7 @@ overlay をマージして、検証済みの `PodManifest` と `PromptLoader`
|
||||
| 優先度 | 層 | 位置 | 典型的な内容 |
|
||||
|---|---|---|---|
|
||||
| 1 | ビルトインのデフォルト | `manifest::defaults` モジュールの `pub const` 群を `PodManifestConfig::builtin_defaults()` が cascade 層として注入 | `tool_output.default_max_bytes = 16KB` など |
|
||||
| 2 | ユーザー manifest | `$XDG_CONFIG_HOME/insomnia/manifest.toml`(未設定時は `~/.config/insomnia/manifest.toml`) | プロバイダ指定、デフォルトモデル、常用ツール設定 |
|
||||
| 2 | ユーザー manifest | `<config_dir>/manifest.toml`(解決ルールは `manifest::paths`) | プロバイダ指定、デフォルトモデル、常用ツール設定 |
|
||||
| 3 | プロジェクト manifest | 起動ディレクトリから上方向に探索した最初の `<root>/.insomnia/manifest.toml` | scope、compaction、プロジェクト固有の instruction |
|
||||
| 4 | プログラマティック overlay | CLI / GUI / 別 Pod からの spawn 等 | `pod.name`、`pod.pwd` のような Pod 固有値 |
|
||||
|
||||
@@ -48,7 +48,7 @@ manifest 中のパス(`provider.api_key_file` / `scope.*.target` /
|
||||
|
||||
| 層 | ベース |
|
||||
|---|---|
|
||||
| user manifest (`~/.config/insomnia/manifest.toml`) | そのファイルの親ディレクトリ |
|
||||
| user manifest (`<config_dir>/manifest.toml`) | そのファイルの親ディレクトリ |
|
||||
| project manifest (`<project>/.insomnia/manifest.toml`) | **プロジェクトルート**(`.insomnia/` の親)。`target = "."` がワークスペース全体を指すように |
|
||||
| overlay(inline TOML・programmatic) | プロセスの `current_dir()` |
|
||||
|
||||
@@ -76,7 +76,7 @@ resolve 段を取りこぼしている証拠なので `ResolveError::RelativePat
|
||||
|
||||
### ユーザー層(最小)
|
||||
|
||||
`$XDG_CONFIG_HOME/insomnia/manifest.toml`:
|
||||
`<config_dir>/manifest.toml`:
|
||||
|
||||
```toml
|
||||
[model]
|
||||
@@ -180,7 +180,7 @@ import-map 形式のプレフィックスで指定する:
|
||||
| プレフィックス | 解決先 |
|
||||
|---|---|
|
||||
| `$insomnia` | バイナリ同梱の `resources/prompts/`(`include_dir!`) |
|
||||
| `$user` | `$XDG_CONFIG_HOME/insomnia/prompts/` |
|
||||
| `$user` | `<config_dir>/prompts/`(`manifest::paths` で解決) |
|
||||
| `$workspace` | `<project>/.insomnia/prompts/` |
|
||||
|
||||
- `.md` 拡張子は省略する(例: `$insomnia/default` → `resources/prompts/default.md`)
|
||||
@@ -238,15 +238,15 @@ pod [--user-manifest <path>] [--project <path>] [--overlay <toml>]
|
||||
|
||||
| フラグ | 説明 |
|
||||
|---|---|
|
||||
| `--user-manifest` | ユーザー manifest のパス。省略時は XDG から自動解決 |
|
||||
| `--user-manifest` | ユーザー manifest のパス。省略時は `manifest::paths::user_manifest_path()` で自動解決 |
|
||||
| `--project` | プロジェクト manifest 探索の起点。省略時は cwd から上方向に `.insomnia/` を探索 |
|
||||
| `--overlay` | 最上層の overlay を inline TOML 文字列で渡す(例: `--overlay 'worker.instruction = "$user/foo"'`) |
|
||||
| `-s, --store` | セッション永続化ディレクトリ(デフォルト: `~/.insomnia/sessions/`) |
|
||||
| `-s, --store` | セッション永続化ディレクトリ(デフォルト: `<data_dir>/sessions/`、`manifest::paths` で解決) |
|
||||
|
||||
Pod の作業ディレクトリは `pod` 起動時の cwd が直接使われる。別ディレクトリで
|
||||
動かしたい場合は `cd <path> && pod ...` のように外側で `cd` してから起動する。
|
||||
|
||||
引数無しで起動すると、cwd + XDG の自動解決だけで動く最小構成になる
|
||||
引数無しで起動すると、cwd + `manifest::paths` の自動解決だけで動く最小構成になる
|
||||
(overlay 無し、プロジェクトに `.insomnia/manifest.toml` があればそれを使う)。
|
||||
|
||||
---
|
||||
@@ -257,7 +257,7 @@ Pod の作業ディレクトリは `pod` 起動時の cwd が直接使われる
|
||||
use pod::{Pod, PodFactory};
|
||||
|
||||
let (manifest, loader) = PodFactory::new()
|
||||
.with_user_manifest_auto()? // XDG から自動読み込み、不在 OK
|
||||
.with_user_manifest_auto()? // manifest::paths から自動読み込み、不在 OK
|
||||
.with_project_manifest_auto()? // cwd から上方向に .insomnia/ を探索、不在 OK
|
||||
.with_overlay_toml(overlay)? // programmatic な最上層 overlay
|
||||
.resolve()?; // -> (PodManifest, PromptLoader)
|
||||
|
||||
Reference in New Issue
Block a user