opencode-ultra 0.7.5 → 0.7.6
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.
- package/README.md +70 -228
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
# opencode-ultra
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
マルチエージェントオーケストレーション・キーワード駆動モード切替・ルール注入・セッション継続・AST検索・自己改善 (evolve) を軽量な単一プラグインで実現する。
|
|
3
|
+
OpenCode 1.2.x プラグイン。マルチエージェントオーケストレーション・キーワード駆動モード切替・ルール注入・セッション継続・AST検索・自己改善 (evolve) を軽量な単一プラグインで実現する。
|
|
5
4
|
|
|
6
5
|
## 機能一覧
|
|
7
6
|
|
|
8
|
-
### ツール (
|
|
7
|
+
### ツール (9)
|
|
9
8
|
|
|
10
9
|
| ツール | 説明 |
|
|
11
10
|
|--------|------|
|
|
@@ -17,6 +16,7 @@
|
|
|
17
16
|
| `ledger_load` | Continuity Ledger の読み込み (名前指定 or 最新) |
|
|
18
17
|
| `ast_search` | AST-aware コード検索 (ast-grep/sg バイナリ使用、未インストール時は自動スキップ) |
|
|
19
18
|
| `evolve_apply` | プラグイン推薦の信頼度スコア評価 + OpenCode 設定への自動適用 (dry-run/backup 対応) |
|
|
19
|
+
| `evolve_score` | 改善提案のスコアリング・ランキング (Priority x Effort 重み付け) |
|
|
20
20
|
|
|
21
21
|
### フック (9)
|
|
22
22
|
|
|
@@ -37,200 +37,59 @@
|
|
|
37
37
|
| 機能 | 説明 |
|
|
38
38
|
|------|------|
|
|
39
39
|
| **Prompt Injection Sanitizer** | エージェント出力から注入パターンを検知・無害化 (17パターン, 6カテゴリ) |
|
|
40
|
-
| **Spawn Limit** | 同時実行セッション上限 (default: 15)
|
|
41
|
-
| **Agent Timeout** | per-agent タイムアウト (default: 180s)
|
|
40
|
+
| **Spawn Limit** | 同時実行セッション上限 (default: 15) |
|
|
41
|
+
| **Agent Timeout** | per-agent タイムアウト (default: 180s) |
|
|
42
42
|
| **Trust Score** | npm パッケージの信頼度スコア (0-100) — evolve 推薦の品質ゲート |
|
|
43
|
-
|
|
44
|
-
### Evolve (自己改善)
|
|
45
|
-
|
|
46
|
-
| キーワード | 効果 |
|
|
47
|
-
|-----------|------|
|
|
48
|
-
| `evolve` / `self-improve` / `自己改善` / `進化` | evolve モード起動 |
|
|
49
|
-
|
|
50
|
-
evolve モードでは:
|
|
51
|
-
1. **scout** エージェントが npm/GitHub を検索し、プラグインのメタデータを収集
|
|
52
|
-
2. **explore** エージェントが opencode-ultra 自身の機能をカタログ化
|
|
53
|
-
3. 発見されたプラグインに **Trust Score** (0-100) を自動計算
|
|
54
|
-
4. ギャップ分析と改善提案を生成
|
|
55
|
-
5. ユーザー承認後、`evolve_apply` で設定に自動適用 (バックアップ付き)
|
|
56
|
-
|
|
57
|
-
Trust Score 評価基準:
|
|
58
|
-
|
|
59
|
-
| カテゴリ | 配点 | チェック項目 |
|
|
60
|
-
|----------|------|-------------|
|
|
61
|
-
| Recency | 25 | 最終 publish からの日数 |
|
|
62
|
-
| Popularity | 25 | 週間 DL 数 + GitHub stars |
|
|
63
|
-
| Quality | 20 | ライセンス, README, メンテナ数, description |
|
|
64
|
-
| Repository | 15 | GitHub/GitLab リポジトリの存在 |
|
|
65
|
-
| Safety | 15 | typosquat 検知, 依存数, 既知スコープ |
|
|
66
|
-
|
|
67
|
-
| スコア | レベル | 自動インストール |
|
|
68
|
-
|--------|--------|----------------|
|
|
69
|
-
| 90-100 | HIGH | 可 |
|
|
70
|
-
| 70-89 | MEDIUM | レビュー推奨 |
|
|
71
|
-
| 40-69 | LOW | 要注意 |
|
|
72
|
-
| 0-39 | RISKY | ブロック |
|
|
73
|
-
|
|
74
|
-
### その他
|
|
75
|
-
|
|
76
|
-
| 機能 | 説明 |
|
|
77
|
-
|------|------|
|
|
78
|
-
| **Built-in Agent Demotion** | OpenCode 標準エージェント (build/plan/triage/docs) を subagent に降格 |
|
|
79
|
-
| **MCP 自動登録** | Context7 を自動登録 (API キー任意) |
|
|
80
|
-
| **Plan-First Protocol** | spawn_agent 前に Phase 形式のプランを提示、ユーザー承認を待つ |
|
|
81
|
-
| **Categories** | spawn_agent の category パラメータでモデル/バリアントを一括切替 |
|
|
82
43
|
| **Concurrency Pool** | Semaphore ベースの global/provider/model 三層並列制御 |
|
|
83
44
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
User
|
|
88
|
-
│
|
|
89
|
-
│ "ultrawork" / "ulw" / "evolve" / "think hard" キーワード
|
|
90
|
-
│
|
|
91
|
-
▼
|
|
92
|
-
┌──────────────────────────────────────────────┐
|
|
93
|
-
│ opencode-ultra plugin │
|
|
94
|
-
│ │
|
|
95
|
-
│ chat.message hook │
|
|
96
|
-
│ ├─ keyword-detector │
|
|
97
|
-
│ │ └─ ultrawork/search/analyze/think/evolve │
|
|
98
|
-
│ └─ ultrawork → variant: "max" │
|
|
99
|
-
│ │
|
|
100
|
-
│ system.transform hook │
|
|
101
|
-
│ ├─ keyword message injection │
|
|
102
|
-
│ ├─ rules-injector (.opencode/rules.md) │
|
|
103
|
-
│ ├─ context-injector (ARCHITECTURE/CODE_STYLE)│
|
|
104
|
-
│ ├─ fragment-injector (per-agent fragments) │
|
|
105
|
-
│ └─ prompt-renderer (markdown/xml/json) │
|
|
106
|
-
│ │
|
|
107
|
-
│ tool.execute.after hook │
|
|
108
|
-
│ ├─ comment-checker (Write/Edit 後に検査) │
|
|
109
|
-
│ └─ token-truncation (30000文字超を圧縮) │
|
|
110
|
-
│ │
|
|
111
|
-
│ session.compacting hook │
|
|
112
|
-
│ └─ session-compaction (structured summary) │
|
|
113
|
-
│ │
|
|
114
|
-
│ event hook │
|
|
115
|
-
│ ├─ session cleanup │
|
|
116
|
-
│ └─ todo-enforcer (session.idle 時に検査) │
|
|
117
|
-
│ │
|
|
118
|
-
│ config hook │
|
|
119
|
-
│ ├─ register agents to OpenCode │
|
|
120
|
-
│ └─ demote built-in agents to subagent │
|
|
121
|
-
│ │
|
|
122
|
-
│ tools │
|
|
123
|
-
│ ├─ spawn_agent (並列実行 + 安全制御) │
|
|
124
|
-
│ │ ├─ ConcurrencyPool │
|
|
125
|
-
│ │ ├─ Spawn limit (max 15) │
|
|
126
|
-
│ │ ├─ Agent timeout (180s) │
|
|
127
|
-
│ │ └─ Prompt injection sanitizer │
|
|
128
|
-
│ ├─ ralph_loop / cancel_ralph │
|
|
129
|
-
│ ├─ batch_read (複数ファイル並列読み込み) │
|
|
130
|
-
│ ├─ ledger_save / ledger_load (文脈継続) │
|
|
131
|
-
│ ├─ ast_search (構文木検索, optional) │
|
|
132
|
-
│ └─ evolve_apply (信頼度スコア + 設定適用) │
|
|
133
|
-
│ │
|
|
134
|
-
│ safety │
|
|
135
|
-
│ ├─ sanitizer (17 injection patterns) │
|
|
136
|
-
│ └─ trust-score (5-factor, 0-100) │
|
|
137
|
-
│ │
|
|
138
|
-
│ MCP registration │
|
|
139
|
-
│ └─ context7 (自動登録) │
|
|
140
|
-
└──────────────┬───────────────────────────────┘
|
|
141
|
-
│
|
|
142
|
-
│ spawn_agent({ agents: [...] })
|
|
143
|
-
│
|
|
144
|
-
┌─────────┼─────────┐
|
|
145
|
-
▼ ▼ ▼
|
|
146
|
-
Session Session Session (ephemeral)
|
|
147
|
-
Agent A Agent B Agent C
|
|
148
|
-
│ │ │
|
|
149
|
-
▲ ▲ ▲
|
|
150
|
-
└── ConcurrencyPool ┘
|
|
151
|
-
(Semaphore制御)
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
## エージェント構成
|
|
155
|
-
|
|
156
|
-
Sisyphus (オーケストレーター) が直接コードを読み、実装はサブエージェントに委任する。
|
|
157
|
-
|
|
158
|
-
### ビルトインデフォルト
|
|
45
|
+
### Evolve (自己改善)
|
|
159
46
|
|
|
160
|
-
|
|
161
|
-
|-------|------|-----------------|--------|
|
|
162
|
-
| **sisyphus** | オーケストレーター — 読み込み+分析+計画+委任 | openai-codex/gpt-5.3-codex | primary |
|
|
163
|
-
| **oracle** | 設計・デバッグ・アーキテクチャ判断 | openai/gpt-5.2 | subagent |
|
|
164
|
-
| **explore** | 高速コードベース偵察 | anthropic/claude-haiku-4-5 | subagent |
|
|
165
|
-
| **librarian** | ドキュメント・ベストプラクティス調査 | anthropic/claude-sonnet-4-5 | subagent |
|
|
166
|
-
| **metis** | タスク分解・並列実行計画 | anthropic/claude-sonnet-4-5 | subagent |
|
|
167
|
-
| **hephaestus** | 自律型実装ワーカー | openai/gpt-5.2 | subagent |
|
|
168
|
-
| **momus** | コードレビュー・品質チェック | anthropic/claude-sonnet-4-5 | subagent |
|
|
169
|
-
| **atlas** | タスク管理・進捗追跡 | anthropic/claude-sonnet-4-5 | subagent |
|
|
170
|
-
| **multimodal-looker** | 画像・スクリーンショット解析 | anthropic/claude-sonnet-4-5 | subagent |
|
|
171
|
-
| **scout** | プラグインエコシステム調査・信頼度メタデータ収集 | anthropic/claude-sonnet-4-5 | subagent |
|
|
47
|
+
`evolve` / `self-improve` / `自己改善` / `進化` キーワードで起動する5フェーズの自己改善サイクル。
|
|
172
48
|
|
|
173
|
-
|
|
49
|
+
| Phase | 内容 |
|
|
50
|
+
|-------|------|
|
|
51
|
+
| 1. RESEARCH | npm/GitHub でプラグインエコシステムをスキャン |
|
|
52
|
+
| 2. COMPARE | 機能マトリクスで opencode-ultra との差分を可視化 |
|
|
53
|
+
| 3. PROPOSE | 実装レベルの構造化提案 (対象ファイル/関数、問題点、変更内容、効果) + JSONL 出力 |
|
|
54
|
+
| 4. SCORE | `evolve_score` で全提案をスコアリング (Priority x Effort 重み付け) |
|
|
55
|
+
| 5. SAVE | `ledger_save` で結果を永続化 |
|
|
174
56
|
|
|
175
|
-
|
|
57
|
+
提案は `.opencode/evolve-proposals.jsonl` に JSONL 形式で出力される:
|
|
176
58
|
|
|
59
|
+
```json
|
|
60
|
+
{"title":"機能名","priority":"P0","effort":"Medium","inspiration":"参考プラグイン","current_state":"現状","why":"メリット","how":"対象ファイル:関数名 — 変更内容"}
|
|
177
61
|
```
|
|
178
|
-
Grep: true, Glob: true, Read: true ← 直接読み込み可能
|
|
179
|
-
Write: false, Edit: false, Bash: false ← サブエージェントに委任
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
## Continuity Ledger
|
|
183
|
-
|
|
184
|
-
セッション間の文脈を引き継ぐマークダウンドキュメント。`.opencode/ledgers/` に保存される。
|
|
185
|
-
|
|
186
|
-
```typescript
|
|
187
|
-
// 保存
|
|
188
|
-
ledger_save({ name: "auth-refactor", content: "## Context\n..." })
|
|
189
|
-
// → Saved to .opencode/ledgers/auth-refactor.md
|
|
190
62
|
|
|
191
|
-
|
|
192
|
-
ledger_load({ name: "auth-refactor" })
|
|
63
|
+
`evolve_score` のスコア計算: `priority_weight x effort_weight`
|
|
193
64
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
65
|
+
| Priority | Weight | Effort | Weight |
|
|
66
|
+
|----------|--------|--------|--------|
|
|
67
|
+
| P0 | 10 | Low | 3 |
|
|
68
|
+
| P1 | 5 | Medium | 2 |
|
|
69
|
+
| P2 | 1 | High | 1 |
|
|
197
70
|
|
|
198
|
-
|
|
71
|
+
P0+Low=30 (最優先) / P2+High=1 (最低)
|
|
199
72
|
|
|
200
|
-
|
|
73
|
+
evolve は**提案のみ**。適用は人間が判断する。
|
|
201
74
|
|
|
202
|
-
|
|
203
|
-
{
|
|
204
|
-
"fragments": {
|
|
205
|
-
"hephaestus": [".opencode/fragments/strict-coding.md"],
|
|
206
|
-
"sisyphus": [".opencode/fragments/planning-rules.md"]
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
指定ファイルの内容が該当エージェントの system prompt に追加される。
|
|
212
|
-
|
|
213
|
-
## Per-model Prompt Renderer
|
|
75
|
+
## エージェント構成
|
|
214
76
|
|
|
215
|
-
|
|
77
|
+
Sisyphus (オーケストレーター) が読み込み・分析・計画を行い、実装はサブエージェントに委任する。
|
|
216
78
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
79
|
+
| Agent | 役割 | モード |
|
|
80
|
+
|-------|------|--------|
|
|
81
|
+
| **sisyphus** | オーケストレーター — 読み込み+分析+計画+委任 | primary |
|
|
82
|
+
| **oracle** | 設計・デバッグ・アーキテクチャ判断 | subagent |
|
|
83
|
+
| **explore** | 高速コードベース偵察 | subagent |
|
|
84
|
+
| **librarian** | ドキュメント・ベストプラクティス調査 | subagent |
|
|
85
|
+
| **metis** | タスク分解・並列実行計画 | subagent |
|
|
86
|
+
| **hephaestus** | 自律型実装ワーカー | subagent |
|
|
87
|
+
| **momus** | コードレビュー・品質チェック | subagent |
|
|
88
|
+
| **atlas** | タスク管理・進捗追跡 | subagent |
|
|
89
|
+
| **multimodal-looker** | 画像・スクリーンショット解析 | subagent |
|
|
90
|
+
| **scout** | プラグインエコシステム調査・信頼度メタデータ収集 | subagent |
|
|
228
91
|
|
|
229
|
-
|
|
230
|
-
|-------------|--------|
|
|
231
|
-
| `markdown` | そのまま (デフォルト) |
|
|
232
|
-
| `xml` | `<section name="Rules">...</section>` |
|
|
233
|
-
| `json` | `{"section":"Rules","content":"..."}` |
|
|
92
|
+
全てのエージェントのモデルは `opencode-ultra.json` でオーバーライド可能。
|
|
234
93
|
|
|
235
94
|
## キーワード検知
|
|
236
95
|
|
|
@@ -246,10 +105,12 @@ ledger_load({})
|
|
|
246
105
|
|
|
247
106
|
## 設定
|
|
248
107
|
|
|
249
|
-
2
|
|
108
|
+
`opencode-ultra.json` (または `.jsonc`) による2段階マージ:
|
|
250
109
|
|
|
251
|
-
1. **ユーザー設定**: `~/.config/opencode/
|
|
252
|
-
2. **プロジェクト設定**: `<project>/.opencode/
|
|
110
|
+
1. **ユーザー設定**: `~/.config/opencode/opencode-ultra.json[c]`
|
|
111
|
+
2. **プロジェクト設定**: `<project>/.opencode/opencode-ultra.json[c]`
|
|
112
|
+
|
|
113
|
+
プロジェクト設定がユーザー設定をオーバーライドする。
|
|
253
114
|
|
|
254
115
|
### 設定スキーマ
|
|
255
116
|
|
|
@@ -257,24 +118,27 @@ ledger_load({})
|
|
|
257
118
|
{
|
|
258
119
|
// エージェントオーバーライド
|
|
259
120
|
"agents": {
|
|
260
|
-
"sisyphus": { "model": "openai/gpt-5.
|
|
121
|
+
"sisyphus": { "model": "openai/gpt-5.3-codex" },
|
|
261
122
|
"oracle": { "model": "zai-coding-plan/glm-5" }
|
|
262
123
|
},
|
|
263
124
|
|
|
264
|
-
// カテゴリ
|
|
125
|
+
// カテゴリ (spawn_agent の category パラメータでモデル一括切替)
|
|
265
126
|
"categories": {
|
|
266
|
-
"quick": { "model": "
|
|
127
|
+
"quick": { "model": "zai-coding-plan/glm-4.7-flash" },
|
|
128
|
+
"deep": { "model": "openai/gpt-5.3-codex", "variant": "medium" }
|
|
267
129
|
},
|
|
268
130
|
|
|
269
|
-
// Fragment Injection
|
|
131
|
+
// Fragment Injection (エージェント毎のプロンプト断片)
|
|
270
132
|
"fragments": {
|
|
271
133
|
"hephaestus": [".opencode/fragments/strict.md"]
|
|
272
134
|
},
|
|
273
135
|
|
|
274
|
-
// Per-model Renderer
|
|
136
|
+
// Per-model Prompt Renderer
|
|
275
137
|
"prompt_renderer": {
|
|
276
138
|
"default": "markdown",
|
|
277
|
-
"model_overrides": {
|
|
139
|
+
"model_overrides": {
|
|
140
|
+
"anthropic/claude-sonnet-4-5": "xml"
|
|
141
|
+
}
|
|
278
142
|
},
|
|
279
143
|
|
|
280
144
|
// 無効化
|
|
@@ -283,7 +147,7 @@ ledger_load({})
|
|
|
283
147
|
// fragment-injector, prompt-renderer, comment-checker,
|
|
284
148
|
// token-truncation, todo-enforcer, session-compaction
|
|
285
149
|
"disabled_tools": [], // spawn_agent, ralph_loop, cancel_ralph, batch_read,
|
|
286
|
-
// ledger_save, ledger_load, ast_search, evolve_apply
|
|
150
|
+
// ledger_save, ledger_load, ast_search, evolve_apply, evolve_score
|
|
287
151
|
"disabled_mcps": [], // context7
|
|
288
152
|
|
|
289
153
|
// Built-in Agent Demotion (default: true)
|
|
@@ -293,13 +157,13 @@ ledger_load({})
|
|
|
293
157
|
"background_task": {
|
|
294
158
|
"defaultConcurrency": 3,
|
|
295
159
|
"providerConcurrency": { "openai": 8 },
|
|
296
|
-
"modelConcurrency": { "openai/gpt-5.
|
|
160
|
+
"modelConcurrency": { "openai/gpt-5.3-codex": 2 }
|
|
297
161
|
},
|
|
298
162
|
|
|
299
163
|
// Safety
|
|
300
164
|
"safety": {
|
|
301
|
-
"maxTotalSpawned": 15,
|
|
302
|
-
"agentTimeoutMs": 180000
|
|
165
|
+
"maxTotalSpawned": 15,
|
|
166
|
+
"agentTimeoutMs": 180000
|
|
303
167
|
},
|
|
304
168
|
|
|
305
169
|
// Token Truncation
|
|
@@ -316,41 +180,19 @@ ledger_load({})
|
|
|
316
180
|
}
|
|
317
181
|
```
|
|
318
182
|
|
|
319
|
-
##
|
|
183
|
+
## Continuity Ledger
|
|
184
|
+
|
|
185
|
+
セッション間の文脈を引き継ぐマークダウンドキュメント。`.opencode/ledgers/` に保存される。
|
|
320
186
|
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
│ │ ├── keyword-detector.ts # ultrawork/search/analyze/think/evolve 検知
|
|
331
|
-
│ │ ├── rules-injector.ts # rules.md + ARCHITECTURE.md + CODE_STYLE.md 注入
|
|
332
|
-
│ │ ├── fragment-injector.ts # エージェント毎の断片注入
|
|
333
|
-
│ │ ├── prompt-renderer.ts # モデル別フォーマット変換
|
|
334
|
-
│ │ ├── comment-checker.ts # AI スロップコメント検知
|
|
335
|
-
│ │ ├── token-truncation.ts # ツール出力の賢い圧縮
|
|
336
|
-
│ │ ├── todo-enforcer.ts # 未完了 TODO 強制継続
|
|
337
|
-
│ │ └── session-compaction.ts # セッション圧縮サマリ生成
|
|
338
|
-
│ ├── tools/
|
|
339
|
-
│ │ ├── spawn-agent.ts # 並列エージェント実行 + 安全制御
|
|
340
|
-
│ │ ├── ralph-loop.ts # 自律ループ実行
|
|
341
|
-
│ │ ├── batch-read.ts # 複数ファイル並列読み込み
|
|
342
|
-
│ │ ├── continuity-ledger.ts # セッション間文脈継続
|
|
343
|
-
│ │ ├── ast-search.ts # AST-aware コード検索
|
|
344
|
-
│ │ └── evolve-apply.ts # 信頼度スコア評価 + 設定適用
|
|
345
|
-
│ ├── concurrency/ # Semaphore + ConcurrencyPool
|
|
346
|
-
│ ├── categories/ # ビルトインカテゴリ
|
|
347
|
-
│ ├── safety/ # sanitizer + trust-score
|
|
348
|
-
│ ├── mcp/ # MCP サーバー登録
|
|
349
|
-
│ └── shared/ # ユーティリティ
|
|
350
|
-
├── __test__/ # Bun テスト
|
|
351
|
-
├── package.json
|
|
352
|
-
├── tsconfig.json
|
|
353
|
-
└── .gitignore
|
|
187
|
+
```typescript
|
|
188
|
+
// 保存
|
|
189
|
+
ledger_save({ name: "auth-refactor", content: "## Context\n..." })
|
|
190
|
+
|
|
191
|
+
// 読み込み (名前指定)
|
|
192
|
+
ledger_load({ name: "auth-refactor" })
|
|
193
|
+
|
|
194
|
+
// 読み込み (最新)
|
|
195
|
+
ledger_load({})
|
|
354
196
|
```
|
|
355
197
|
|
|
356
198
|
## ビルド・テスト
|