opencode-ultra 0.7.4 → 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.
Files changed (3) hide show
  1. package/README.md +70 -228
  2. package/dist/index.js +32 -30
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,11 +1,10 @@
1
1
  # opencode-ultra
2
2
 
3
- [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) をベースに、micode / opencode-skillful の良い部分を取り込んだ OpenCode 1.2.x プラグイン。
4
- マルチエージェントオーケストレーション・キーワード駆動モード切替・ルール注入・セッション継続・AST検索・自己改善 (evolve) を軽量な単一プラグインで実現する。
3
+ OpenCode 1.2.x プラグイン。マルチエージェントオーケストレーション・キーワード駆動モード切替・ルール注入・セッション継続・AST検索・自己改善 (evolve) を軽量な単一プラグインで実現する。
5
4
 
6
5
  ## 機能一覧
7
6
 
8
- ### ツール (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
- | Agent | 役割 | デフォルトモデル | モード |
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
- 全てのモデルは `oh-my-opencode.json` でオーバーライド可能。
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
- ### Sisyphus のツール権限
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
- ledger_load({})
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
- ## Fragment Injection
71
+ P0+Low=30 (最優先) / P2+High=1 (最低)
199
72
 
200
- エージェント毎にカスタムプロンプト断片を注入する。
73
+ evolve は**提案のみ**。適用は人間が判断する。
201
74
 
202
- ```jsonc
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
- モデルに応じて system prompt のフォーマットを最適化する。
77
+ Sisyphus (オーケストレーター) が読み込み・分析・計画を行い、実装はサブエージェントに委任する。
216
78
 
217
- ```jsonc
218
- {
219
- "prompt_renderer": {
220
- "default": "markdown",
221
- "model_overrides": {
222
- "anthropic/claude-sonnet-4-5": "xml",
223
- "openai/gpt-5.2": "json"
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/oh-my-opencode.json[c]`
252
- 2. **プロジェクト設定**: `<project>/.opencode/oh-my-opencode.json[c]`
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.2" },
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": "openai/gpt-4o-mini" }
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.2": 2 }
160
+ "modelConcurrency": { "openai/gpt-5.3-codex": 2 }
297
161
  },
298
162
 
299
163
  // Safety
300
164
  "safety": {
301
- "maxTotalSpawned": 15, // 同時実行セッション上限
302
- "agentTimeoutMs": 180000 // per-agent タイムアウト (ms)
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
- opencode-ultra/
323
- ├── src/
324
- │ ├── index.ts # プラグインエントリポイント
325
- │ ├── config.ts # 設定ロード・マージ・バリデーション
326
- │ ├── agents/
327
- │ │ ├── types.ts # AgentDef 型定義
328
- │ │ └── index.ts # ビルトインエージェント + 動的プロンプト生成
329
- │ ├── hooks/
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
  ## ビルド・テスト
package/dist/index.js CHANGED
@@ -14926,7 +14926,7 @@ function buildEvolveMessage(ctx) {
14926
14926
  return `[evolve-mode] SELF-IMPROVEMENT CYCLE ACTIVATED.
14927
14927
 
14928
14928
  ## MISSION
14929
- Compare opencode-ultra's current capabilities with other OpenCode plugins, then propose concrete improvements.
14929
+ Compare opencode-ultra's current capabilities with other OpenCode plugins, then propose concrete, implementation-ready improvements.
14930
14930
  This is NOT about installing other plugins. This is about LEARNING from the ecosystem and making opencode-ultra better.
14931
14931
 
14932
14932
  ## opencode-ultra CURRENT CAPABILITIES (auto-generated from source)
@@ -14934,21 +14934,15 @@ ${inventory}
14934
14934
 
14935
14935
  You already have the full capability list above. Do NOT try to read opencode-ultra source files \u2014 this inventory IS the source of truth.
14936
14936
 
14937
- ## PHASE 1: ECOSYSTEM RESEARCH (spawn_agent)
14937
+ ## PHASE 1: ECOSYSTEM RESEARCH
14938
14938
 
14939
- Research what other plugins offer:
14940
- \`\`\`
14941
- spawn_agent({
14942
- agents: [
14943
- {agent: "scout", prompt: "Search npm and GitHub for OpenCode 1.2.x plugins. For EACH interesting plugin: what features does it provide? What hooks, tools, or techniques does it use? Focus on UNIQUE capabilities. Return a structured feature inventory per plugin.", description: "Ecosystem scan"},
14944
- {agent: "librarian", prompt: "Search for OpenCode plugin best practices, architectural patterns, and advanced techniques. Look at oh-my-opencode, opencode-supermemory, opencode-dcp, opencode-rate-limit-fallback, opencode-worktree, opencode-mad. What patterns do they share? What's unique?", description: "Plugin patterns research"}
14945
- ]
14946
- })
14947
- \`\`\`
14939
+ Search npm and GitHub for OpenCode 1.2.x plugins. Use google_search, webfetch, or spawn_agent with scout/librarian agents.
14940
+ For EACH interesting plugin: what features does it provide? What hooks, tools, or techniques does it use?
14941
+ Focus on UNIQUE capabilities not already in the inventory above.
14948
14942
 
14949
14943
  ## PHASE 2: COMPARE
14950
14944
 
14951
- Build a Feature Matrix using the capability list above and agent results.
14945
+ Build a Feature Matrix using the capability list above and research results.
14952
14946
 
14953
14947
  **RULE**: The "opencode-ultra" column MUST be Yes/No/Partial based on the inventory above. NEVER write "TBD", "unknown", or "\u4E0D\u660E".
14954
14948
 
@@ -14956,34 +14950,43 @@ Build a Feature Matrix using the capability list above and agent results.
14956
14950
  |---------|---------------|-----------------|------|
14957
14951
  | (feature) | Yes \u2014 (tool/hook name) | Which plugin | Covered / Missing / Partial |
14958
14952
 
14959
- Focus on genuinely useful, feasible, complementary features.
14960
-
14961
14953
  ## PHASE 3: PROPOSE
14962
14954
 
14963
- For each Missing or Partial gap:
14955
+ For each Missing or Partial gap, write a structured proposal. Each proposal MUST include:
14964
14956
 
14965
- ## Improvement: [Feature Name]
14966
- **Inspiration**: [Plugin name] \u2014 [what it does]
14967
- **Current state**: [what opencode-ultra has now from the inventory]
14968
- **Why**: [concrete benefit]
14969
- **How**: [which file to modify, what to add]
14970
- **Effort**: Low / Medium / High
14971
- **Priority**: P0 / P1 / P2
14957
+ - **\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\u3068\u95A2\u6570\u540D**: Which source file(s) and function(s) to modify or create
14958
+ - **\u73FE\u72B6\u306E\u554F\u984C\u70B9**: What's missing or broken, citing specific tools/hooks from the inventory
14959
+ - **\u5177\u4F53\u7684\u306A\u5909\u66F4\u5185\u5BB9**: What to add/modify (specific enough to implement in one session)
14960
+ - **\u671F\u5F85\u3055\u308C\u308B\u52B9\u679C**: Concrete benefit to the user
14961
+ - **Priority**: P0 (critical gap) / P1 (valuable) / P2 (nice-to-have)
14962
+ - **Effort**: Low (< 1 file) / Medium (2-4 files) / High (5+ files or new subsystem)
14963
+
14964
+ Write each proposal as a JSONL line to \`.opencode/evolve-proposals.jsonl\`:
14965
+ \`\`\`
14966
+ {"title":"\u6A5F\u80FD\u540D","priority":"P0","effort":"Medium","inspiration":"\u53C2\u8003\u30D7\u30E9\u30B0\u30A4\u30F3","current_state":"\u73FE\u72B6\u306E\u554F\u984C","why":"\u671F\u5F85\u52B9\u679C","how":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB:\u95A2\u6570\u540D \u2014 \u5909\u66F4\u5185\u5BB9"}
14967
+ \`\`\`
14972
14968
 
14973
- Sort by Priority then Effort.
14969
+ ## PHASE 4: SCORE
14974
14970
 
14975
- ## PHASE 4: SAVE
14971
+ Use the \`evolve_score\` tool to score and rank ALL proposals:
14972
+ \`\`\`
14973
+ evolve_score({ markdown: "## Improvement: ...\\n**Priority**: ...\\n**Effort**: ...\\n**Why**: ..." })
14974
+ \`\`\`
14975
+ Include the score results and reasoning in the final output.
14976
+
14977
+ ## PHASE 5: SAVE
14976
14978
  \`\`\`
14977
14979
  ledger_save({
14978
14980
  name: "evolve-scan-YYYY-MM-DD",
14979
- content: "# Evolve Scan Results\\n\\n## Feature Matrix\\n...\\n## Proposals\\n..."
14981
+ content: "# Evolve Scan Results\\n\\n## Feature Matrix\\n...\\n## Scored Proposals\\n..."
14980
14982
  })
14981
14983
  \`\`\`
14982
14984
 
14983
14985
  ## RULES
14984
- - Use the capability inventory above as ground truth. No file reading needed.
14985
- - Proposals must cite specific tools/hooks from the inventory for "Current state".
14986
- - Present proposals to user for approval before implementation.`;
14986
+ - Use the capability inventory above as ground truth.
14987
+ - Do NOT use evolve_apply. Proposals only. Humans decide what to implement.
14988
+ - Sort final proposals by score descending.
14989
+ - Each proposal must be specific enough to implement in one coding session.`;
14987
14990
  }
14988
14991
  function buildSelfInventory(ctx) {
14989
14992
  const lines = [];
@@ -14999,8 +15002,7 @@ function buildSelfInventory(ctx) {
14999
15002
  lines.push("");
15000
15003
  lines.push("### Agents");
15001
15004
  for (const [name, def] of Object.entries(ctx.agents)) {
15002
- const shortModel = def.model.split("/").pop() ?? def.model;
15003
- lines.push(`- **${name}** (${shortModel}) \u2014 ${def.description}`);
15005
+ lines.push(`- **${name}** \u2014 ${def.description}`);
15004
15006
  }
15005
15007
  lines.push("");
15006
15008
  lines.push("### Additional Features");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-ultra",
3
- "version": "0.7.4",
3
+ "version": "0.7.6",
4
4
  "description": "Lightweight OpenCode 1.2.x plugin — ultrawork mode, multi-agent orchestration, rules injection",
5
5
  "keywords": [
6
6
  "opencode",