opencode-ultra 0.9.4 → 0.9.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/LICENSE.md +114 -0
- package/README.md +173 -131
- package/dist/agents/index.d.ts +2 -0
- package/package.json +5 -5
package/LICENSE.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# License
|
|
2
|
+
|
|
3
|
+
This project is a derivative work based on:
|
|
4
|
+
|
|
5
|
+
- **[oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode)** by code-yeongyu — Licensed under the Sustainable Use License v1.0
|
|
6
|
+
- **[OpenCode](https://github.com/anomalyco/opencode)** by the OpenCode team — Licensed under the MIT License
|
|
7
|
+
|
|
8
|
+
Portions of this software are licensed as follows:
|
|
9
|
+
|
|
10
|
+
- All third party components incorporated into the software are licensed under the original license
|
|
11
|
+
provided by the owner of the applicable component.
|
|
12
|
+
- Content derived from oh-my-opencode is available under the "Sustainable Use License" as defined below.
|
|
13
|
+
- Content derived from OpenCode is available under the MIT License.
|
|
14
|
+
- Original additions by the opencode-ultra contributors follow the Sustainable Use License.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Sustainable Use License
|
|
19
|
+
|
|
20
|
+
Version 1.0
|
|
21
|
+
|
|
22
|
+
### Acceptance
|
|
23
|
+
|
|
24
|
+
By using the software, you agree to all of the terms and conditions below.
|
|
25
|
+
|
|
26
|
+
### Copyright License
|
|
27
|
+
|
|
28
|
+
The licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license
|
|
29
|
+
to use, copy, distribute, make available, and prepare derivative works of the software, in each case subject
|
|
30
|
+
to the limitations below.
|
|
31
|
+
|
|
32
|
+
### Limitations
|
|
33
|
+
|
|
34
|
+
You may use or modify the software only for your own internal business purposes or for non-commercial or
|
|
35
|
+
personal use. You may distribute the software or provide it to others only if you do so free of charge for
|
|
36
|
+
non-commercial purposes. You may not alter, remove, or obscure any licensing, copyright, or other notices of
|
|
37
|
+
the licensor in the software. Any use of the licensor's trademarks is subject to applicable law.
|
|
38
|
+
|
|
39
|
+
### Patents
|
|
40
|
+
|
|
41
|
+
The licensor grants you a license, under any patent claims the licensor can license, or becomes able to
|
|
42
|
+
license, to make, have made, use, sell, offer for sale, import and have imported the software, in each case
|
|
43
|
+
subject to the limitations and conditions in this license. This license does not cover any patent claims that
|
|
44
|
+
you cause to be infringed by modifications or additions to the software. If you or your company make any
|
|
45
|
+
written claim that the software infringes or contributes to infringement of any patent, your patent license
|
|
46
|
+
for the software granted under these terms ends immediately. If your company makes such a claim, your patent
|
|
47
|
+
license ends immediately for work on behalf of your company.
|
|
48
|
+
|
|
49
|
+
### Notices
|
|
50
|
+
|
|
51
|
+
You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these
|
|
52
|
+
terms. If you modify the software, you must include in any modified copies of the software a prominent notice
|
|
53
|
+
stating that you have modified the software.
|
|
54
|
+
|
|
55
|
+
### No Other Rights
|
|
56
|
+
|
|
57
|
+
These terms do not imply any licenses other than those expressly granted in these terms.
|
|
58
|
+
|
|
59
|
+
### Termination
|
|
60
|
+
|
|
61
|
+
If you use the software in violation of these terms, such use is not licensed, and your license will
|
|
62
|
+
automatically terminate. If the licensor provides you with a notice of your violation, and you cease all
|
|
63
|
+
violation of this license no later than 30 days after you receive that notice, your license will be reinstated
|
|
64
|
+
retroactively. However, if you violate these terms after such reinstatement, any additional violation of these
|
|
65
|
+
terms will cause your license to terminate automatically and permanently.
|
|
66
|
+
|
|
67
|
+
### No Liability
|
|
68
|
+
|
|
69
|
+
As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will
|
|
70
|
+
not be liable to you for any damages arising out of these terms or the use or nature of the software, under
|
|
71
|
+
any kind of legal claim.
|
|
72
|
+
|
|
73
|
+
### Definitions
|
|
74
|
+
|
|
75
|
+
The "licensor" is the entity offering these terms.
|
|
76
|
+
|
|
77
|
+
The "software" is the software the licensor makes available under these terms, including any portion of it.
|
|
78
|
+
|
|
79
|
+
"You" refers to the individual or entity agreeing to these terms.
|
|
80
|
+
|
|
81
|
+
"Your company" is any legal entity, sole proprietorship, or other kind of organization that you work for, plus
|
|
82
|
+
all organizations that have control over, are under the control of, or are under common control with that
|
|
83
|
+
organization. Control means ownership of substantially all the assets of an entity, or the power to direct its
|
|
84
|
+
management and policies by vote, contract, or otherwise. Control can be direct or indirect.
|
|
85
|
+
|
|
86
|
+
"Your license" is the license granted to you for the software under these terms.
|
|
87
|
+
|
|
88
|
+
"Use" means anything you do with the software requiring your license.
|
|
89
|
+
|
|
90
|
+
"Trademark" means trademarks, service marks, and similar rights.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## MIT License (OpenCode)
|
|
95
|
+
|
|
96
|
+
Copyright (c) 2025 opencode
|
|
97
|
+
|
|
98
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
99
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
100
|
+
in the Software without restriction, including without limitation the rights
|
|
101
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
102
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
103
|
+
furnished to do so, subject to the following conditions:
|
|
104
|
+
|
|
105
|
+
The above copyright notice and this permission notice shall be included in all
|
|
106
|
+
copies or substantial portions of the Software.
|
|
107
|
+
|
|
108
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
109
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
110
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
111
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
112
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
113
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
114
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,69 +1,87 @@
|
|
|
1
1
|
# opencode-ultra
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
| `
|
|
30
|
-
| `
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
3
|
+
> **Disclaimer**: This project is not built by or affiliated with the [OpenCode](https://github.com/anomalyco/opencode) team.
|
|
4
|
+
> It is a community-built plugin forked from [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode).
|
|
5
|
+
|
|
6
|
+
A lightweight OpenCode 1.2.x plugin that provides multi-agent orchestration, keyword-driven mode switching, rules injection, session continuity, AST search, and self-improvement (evolve) in a single plugin.
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
# In your OpenCode plugin directory
|
|
12
|
+
bun add opencode-ultra
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Register in `opencode.jsonc`:
|
|
16
|
+
|
|
17
|
+
```jsonc
|
|
18
|
+
{
|
|
19
|
+
"plugins": ["opencode-ultra"]
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Features
|
|
24
|
+
|
|
25
|
+
### Tools (12)
|
|
26
|
+
|
|
27
|
+
| Tool | Description |
|
|
28
|
+
|------|-------------|
|
|
29
|
+
| `spawn_agent` | Parallel agent execution (ConcurrencyPool + spawn limit + timeout + sanitizer) |
|
|
30
|
+
| `ralph_loop` | Autonomous loop execution (completion detection via `<promise>DONE</promise>`, per-iteration timeout) |
|
|
31
|
+
| `cancel_ralph` | Cancel a running Ralph Loop |
|
|
32
|
+
| `batch_read` | Parallel multi-file reading (max 20) |
|
|
33
|
+
| `ledger_save` | Save Continuity Ledger (.opencode/ledgers/) |
|
|
34
|
+
| `ledger_load` | Load Continuity Ledger (by name or latest) |
|
|
35
|
+
| `ast_search` | AST-aware code search (uses ast-grep/sg binary, auto-skips if not installed) |
|
|
36
|
+
| `evolve_apply` | Trust score evaluation + auto-apply plugin recommendations to OpenCode config (dry-run/backup) |
|
|
37
|
+
| `evolve_scan` | Validate, merge, score improvement proposals from JSONL + generate numbered report |
|
|
38
|
+
| `evolve_score` | Score and rank proposals (Priority x Effort weighted) |
|
|
39
|
+
| `evolve_exe` | Autonomous execution pipeline (git branch -> implement -> test -> build -> review -> merge/rollback) |
|
|
40
|
+
| `evolve_publish` | Version bump + test + build + npm publish (with deploy instructions) |
|
|
41
|
+
|
|
42
|
+
### Hooks (9)
|
|
43
|
+
|
|
44
|
+
| Hook | Hook Point | Description |
|
|
45
|
+
|------|-----------|-------------|
|
|
46
|
+
| `keyword-detector` | chat.message | Detects ultrawork/search/analyze/think/evolve keywords |
|
|
47
|
+
| `rules-injector` | system.transform | Injects .opencode/rules.md into system prompt |
|
|
48
|
+
| `context-injector` | system.transform | Auto-injects ARCHITECTURE.md / CODE_STYLE.md |
|
|
49
|
+
| `fragment-injector` | system.transform | Per-agent custom prompt fragment injection |
|
|
50
|
+
| `prompt-renderer` | system.transform | Model-specific system prompt format optimization (markdown/xml/json) |
|
|
51
|
+
| `comment-checker` | tool.execute.after | Detects AI slop comments after Write/Edit |
|
|
52
|
+
| `token-truncation` | tool.execute.after | Compresses tool output >30000 chars to first 40% + last 40% |
|
|
53
|
+
| `todo-enforcer` | event (session.idle) | Detects unfinished TODOs and forces continuation |
|
|
54
|
+
| `session-compaction` | experimental.session.compacting | Generates structured summary during session compaction |
|
|
37
55
|
|
|
38
56
|
### Safety
|
|
39
57
|
|
|
40
|
-
|
|
|
41
|
-
|
|
42
|
-
| **Prompt Injection Sanitizer** |
|
|
43
|
-
| **Spawn Limit** |
|
|
44
|
-
| **Agent Timeout** |
|
|
45
|
-
| **Trust Score** | npm
|
|
46
|
-
| **Concurrency Pool** | Semaphore
|
|
58
|
+
| Feature | Description |
|
|
59
|
+
|---------|-------------|
|
|
60
|
+
| **Prompt Injection Sanitizer** | Detects and neutralizes injection patterns in agent output (17 patterns, 6 categories) |
|
|
61
|
+
| **Spawn Limit** | Max concurrent sessions (default: 15) |
|
|
62
|
+
| **Agent Timeout** | Per-agent timeout (default: 180s) |
|
|
63
|
+
| **Trust Score** | npm package trust score (0-100) — quality gate for evolve recommendations |
|
|
64
|
+
| **Concurrency Pool** | Semaphore-based global/provider/model three-tier concurrency control |
|
|
47
65
|
|
|
48
|
-
### Evolve (
|
|
66
|
+
### Evolve (Self-Improvement)
|
|
49
67
|
|
|
50
|
-
`evolve` / `self-improve`
|
|
68
|
+
Triggered by `evolve` / `self-improve` keywords. A 5-phase self-improvement cycle:
|
|
51
69
|
|
|
52
|
-
| Phase |
|
|
53
|
-
|
|
54
|
-
| 1. RESEARCH | npm/GitHub
|
|
55
|
-
| 2. COMPARE |
|
|
56
|
-
| 3. PROPOSE |
|
|
57
|
-
| 4. SCORE | `evolve_score`
|
|
58
|
-
| 5. SAVE | `ledger_save`
|
|
70
|
+
| Phase | Description |
|
|
71
|
+
|-------|-------------|
|
|
72
|
+
| 1. RESEARCH | Scan npm/GitHub for plugin ecosystem |
|
|
73
|
+
| 2. COMPARE | Feature matrix diff against opencode-ultra |
|
|
74
|
+
| 3. PROPOSE | Structured implementation proposals (target files/functions, issues, changes, effects) + JSONL output |
|
|
75
|
+
| 4. SCORE | Score all proposals via `evolve_score` (Priority x Effort weighted) |
|
|
76
|
+
| 5. SAVE | Persist results via `ledger_save` |
|
|
59
77
|
|
|
60
|
-
|
|
78
|
+
Proposals are output to `.opencode/evolve-proposals.jsonl`:
|
|
61
79
|
|
|
62
80
|
```json
|
|
63
|
-
{"title":"
|
|
81
|
+
{"title":"Feature","priority":"P0","effort":"Medium","inspiration":"reference-plugin","current_state":"Current state","why":"Benefit","how":"target-file:function — change description"}
|
|
64
82
|
```
|
|
65
83
|
|
|
66
|
-
|
|
84
|
+
Score calculation: `priority_weight x effort_weight`
|
|
67
85
|
|
|
68
86
|
| Priority | Weight | Effort | Weight |
|
|
69
87
|
|----------|--------|--------|--------|
|
|
@@ -71,97 +89,112 @@ OpenCode 1.2.x プラグイン。マルチエージェントオーケストレ
|
|
|
71
89
|
| P1 | 5 | Medium | 2 |
|
|
72
90
|
| P2 | 1 | High | 1 |
|
|
73
91
|
|
|
74
|
-
P0+Low=30 (
|
|
92
|
+
P0+Low=30 (highest priority) / P2+High=1 (lowest)
|
|
75
93
|
|
|
76
|
-
### Evolve Execution (
|
|
94
|
+
### Evolve Execution (Autonomous)
|
|
77
95
|
|
|
78
|
-
|
|
96
|
+
Fully automate proposal implementation with `evolve_exe`. Each proposal is isolated in a git branch with automatic rollback on failure.
|
|
79
97
|
|
|
80
98
|
```
|
|
81
|
-
evolve_exe({ proposals: "1,3" }) —
|
|
82
|
-
evolve_exe({ proposals: "all" }) — accepted
|
|
83
|
-
evolve_exe({ proposals: "1", dryRun: true }) —
|
|
84
|
-
evolve_exe({ proposals: "1,2", publish: true }) —
|
|
99
|
+
evolve_exe({ proposals: "1,3" }) — Execute proposals #1 and #3
|
|
100
|
+
evolve_exe({ proposals: "all" }) — Execute all accepted proposals
|
|
101
|
+
evolve_exe({ proposals: "1", dryRun: true }) — Show execution plan only
|
|
102
|
+
evolve_exe({ proposals: "1,2", publish: true }) — Auto-publish after execution
|
|
85
103
|
```
|
|
86
104
|
|
|
87
|
-
| Phase |
|
|
88
|
-
|
|
89
|
-
| 1. GIT BRANCH | `evolve/{slug}`
|
|
90
|
-
| 2. IMPLEMENT | implementAgent (default: hephaestus)
|
|
91
|
-
| 3. TEST | `bun test`
|
|
92
|
-
| 4. BUILD | `bun run build`
|
|
93
|
-
| 5. REVIEW | reviewAgent (default: momus)
|
|
94
|
-
| 6. MERGE | `--no-ff`
|
|
105
|
+
| Phase | Description |
|
|
106
|
+
|-------|-------------|
|
|
107
|
+
| 1. GIT BRANCH | Create `evolve/{slug}` branch |
|
|
108
|
+
| 2. IMPLEMENT | implementAgent (default: hephaestus) autonomously implements |
|
|
109
|
+
| 3. TEST | Run `bun test` (failure -> rollback) |
|
|
110
|
+
| 4. BUILD | Run `bun run build` (failure -> rollback) |
|
|
111
|
+
| 5. REVIEW | reviewAgent (default: momus) code review (BLOCK is logged) |
|
|
112
|
+
| 6. MERGE | `--no-ff` merge to original branch, delete feature branch |
|
|
95
113
|
|
|
96
|
-
|
|
114
|
+
Post-implementation publish:
|
|
97
115
|
|
|
98
116
|
```
|
|
99
|
-
evolve_publish({ bump: "patch" })
|
|
100
|
-
evolve_publish({ bump: "minor", deploy: "
|
|
117
|
+
evolve_publish({ bump: "patch" }) — test -> build -> version bump -> npm publish
|
|
118
|
+
evolve_publish({ bump: "minor", deploy: "my-server" }) — publish + SSH deploy instructions
|
|
101
119
|
```
|
|
102
120
|
|
|
103
|
-
##
|
|
121
|
+
## Agent Configuration
|
|
122
|
+
|
|
123
|
+
Sisyphus (orchestrator) handles reading, analysis, and planning, then delegates implementation to sub-agents.
|
|
104
124
|
|
|
105
|
-
|
|
125
|
+
| Agent | Role | Tier |
|
|
126
|
+
|-------|------|------|
|
|
127
|
+
| **sisyphus** | Orchestrator — read + analyze + plan + delegate | High |
|
|
128
|
+
| **momus** | Code review and quality check | High |
|
|
129
|
+
| **oracle** | Design, debugging, architecture decisions | Mid |
|
|
130
|
+
| **hephaestus** | Autonomous implementation worker | Mid |
|
|
131
|
+
| **metis** | Task decomposition and parallel execution planning | Mid |
|
|
132
|
+
| **multimodal-looker** | Image and screenshot analysis | Mid |
|
|
133
|
+
| **explore** | Fast codebase reconnaissance | Fast |
|
|
134
|
+
| **librarian** | Documentation and best practices research | Fast |
|
|
135
|
+
| **scout** | Plugin ecosystem research | Fast |
|
|
136
|
+
| **atlas** | Task management and progress tracking | Low |
|
|
106
137
|
|
|
107
|
-
|
|
108
|
-
|-------|------|----------------|------|
|
|
109
|
-
| **sisyphus** | オーケストレーター — 読み込み+分析+計画+委任 | `openai/gpt-5.3-codex` | High |
|
|
110
|
-
| **momus** | コードレビュー・品質チェック | `openai/gpt-5.3-codex` | High |
|
|
111
|
-
| **oracle** | 設計・デバッグ・アーキテクチャ判断 | `zai-coding-plan/glm-5` | Mid |
|
|
112
|
-
| **hephaestus** | 自律型実装ワーカー | `zai-coding-plan/glm-5` | Mid |
|
|
113
|
-
| **metis** | タスク分解・並列実行計画 | `kimi-for-coding/k2p5` | Mid |
|
|
114
|
-
| **multimodal-looker** | 画像・スクリーンショット解析 | `kimi-for-coding/k2p5` | Mid |
|
|
115
|
-
| **explore** | 高速コードベース偵察 | `openai/gpt-5.3-codex-spark` | Fast |
|
|
116
|
-
| **librarian** | ドキュメント・ベストプラクティス調査 | `openai/gpt-5.3-codex-spark` | Fast |
|
|
117
|
-
| **scout** | プラグインエコシステム調査 | `openai/gpt-5.3-codex-spark` | Fast |
|
|
118
|
-
| **atlas** | タスク管理・進捗追跡 | `minimax-coding-plan/MiniMax-M2.5` | Low |
|
|
138
|
+
All agent models are configured via `opencode-ultra.json`. Only providers/models defined in your `opencode.jsonc` `provider` section can be specified.
|
|
119
139
|
|
|
120
|
-
|
|
140
|
+
### Default Models
|
|
121
141
|
|
|
122
|
-
|
|
142
|
+
| Agent | Default Model |
|
|
143
|
+
|-------|--------------|
|
|
144
|
+
| sisyphus | anthropic/claude-opus-4-5 |
|
|
145
|
+
| oracle | openai/gpt-5.2 |
|
|
146
|
+
| hephaestus | openai/gpt-5.2 |
|
|
147
|
+
| momus | anthropic/claude-sonnet-4-5 |
|
|
148
|
+
| metis | anthropic/claude-sonnet-4-5 |
|
|
149
|
+
| explore | anthropic/claude-haiku-4-5 |
|
|
150
|
+
| librarian | anthropic/claude-sonnet-4-5 |
|
|
151
|
+
| multimodal-looker | anthropic/claude-sonnet-4-5 |
|
|
152
|
+
| atlas | anthropic/claude-sonnet-4-5 |
|
|
123
153
|
|
|
124
|
-
|
|
154
|
+
You can override these with any model from your configured providers (OpenAI, Anthropic, Google, OpenRouter, etc.).
|
|
125
155
|
|
|
126
|
-
|
|
127
|
-
|-----------|--------|------|
|
|
128
|
-
| `ultrawork` / `ulw` | ultrawork | variant "max"、全エージェント活用 |
|
|
129
|
-
| `search` / `find` / `探して` 等 | search | 網羅的検索 |
|
|
130
|
-
| `analyze` / `調査` / `debug` 等 | analyze | コンテキスト収集 |
|
|
131
|
-
| `think hard` / `じっくり` / `熟考` 等 | think | Extended thinking 有効化 |
|
|
132
|
-
| `evolve` / `self-improve` / `自己改善` 等 | evolve | 自己改善サイクル起動 |
|
|
156
|
+
## Keyword Detection
|
|
133
157
|
|
|
134
|
-
|
|
158
|
+
| Keyword | Mode | Effect |
|
|
159
|
+
|---------|------|--------|
|
|
160
|
+
| `ultrawork` / `ulw` | ultrawork | variant "max", full agent utilization |
|
|
161
|
+
| `search` / `find` / `探して` etc. | search | Comprehensive search |
|
|
162
|
+
| `analyze` / `調査` / `debug` etc. | analyze | Context collection |
|
|
163
|
+
| `think hard` / `じっくり` / `熟考` etc. | think | Extended thinking enabled |
|
|
164
|
+
| `evolve` / `self-improve` / `自己改善` etc. | evolve | Self-improvement cycle |
|
|
135
165
|
|
|
136
|
-
|
|
166
|
+
Supports Japanese and Chinese keywords.
|
|
137
167
|
|
|
138
|
-
|
|
168
|
+
## Configuration
|
|
139
169
|
|
|
140
|
-
|
|
141
|
-
2. **プロジェクト設定**: `<project>/.opencode/opencode-ultra.json[c]`
|
|
170
|
+
Two-level merge via `opencode-ultra.json` (or `.jsonc`):
|
|
142
171
|
|
|
143
|
-
|
|
172
|
+
1. **User config**: `~/.config/opencode/opencode-ultra.json[c]`
|
|
173
|
+
2. **Project config**: `<project>/.opencode/opencode-ultra.json[c]`
|
|
144
174
|
|
|
145
|
-
|
|
175
|
+
Project config overrides user config.
|
|
176
|
+
|
|
177
|
+
### Configuration Schema
|
|
146
178
|
|
|
147
179
|
```jsonc
|
|
148
180
|
{
|
|
149
|
-
//
|
|
181
|
+
// Agent model settings (specify models defined in opencode.jsonc provider section)
|
|
150
182
|
"agents": {
|
|
151
|
-
"sisyphus": { "model": "
|
|
152
|
-
"oracle":
|
|
153
|
-
"hephaestus": { "model": "
|
|
154
|
-
"explore":
|
|
155
|
-
"momus":
|
|
183
|
+
"sisyphus": { "model": "anthropic/claude-opus-4-5" },
|
|
184
|
+
"oracle": { "model": "openai/gpt-5.2" },
|
|
185
|
+
"hephaestus": { "model": "openai/gpt-5.2" },
|
|
186
|
+
"explore": { "model": "anthropic/claude-haiku-4-5" },
|
|
187
|
+
"momus": { "model": "anthropic/claude-sonnet-4-5" }
|
|
156
188
|
},
|
|
157
189
|
|
|
158
|
-
//
|
|
190
|
+
// Categories (bulk model switching via spawn_agent category parameter)
|
|
191
|
+
// Note: category takes priority over individual agent models
|
|
159
192
|
"categories": {
|
|
160
|
-
"quick": { "model": "
|
|
161
|
-
"deep":
|
|
193
|
+
"quick": { "model": "anthropic/claude-haiku-4-5" },
|
|
194
|
+
"deep": { "model": "anthropic/claude-opus-4-5" }
|
|
162
195
|
},
|
|
163
196
|
|
|
164
|
-
// Fragment Injection (
|
|
197
|
+
// Fragment Injection (per-agent prompt fragments)
|
|
165
198
|
"fragments": {
|
|
166
199
|
"hephaestus": [".opencode/fragments/strict.md"]
|
|
167
200
|
},
|
|
@@ -170,11 +203,11 @@ Sisyphus (オーケストレーター) が読み込み・分析・計画を行
|
|
|
170
203
|
"prompt_renderer": {
|
|
171
204
|
"default": "markdown",
|
|
172
205
|
"model_overrides": {
|
|
173
|
-
"
|
|
206
|
+
"provider/model": "xml"
|
|
174
207
|
}
|
|
175
208
|
},
|
|
176
209
|
|
|
177
|
-
//
|
|
210
|
+
// Disable features
|
|
178
211
|
"disabled_agents": [],
|
|
179
212
|
"disabled_hooks": [], // keyword-detector, rules-injector, context-injector,
|
|
180
213
|
// fragment-injector, prompt-renderer, comment-checker,
|
|
@@ -187,11 +220,11 @@ Sisyphus (オーケストレーター) が読み込み・分析・計画を行
|
|
|
187
220
|
// Built-in Agent Demotion (default: true)
|
|
188
221
|
"demote_builtin": true,
|
|
189
222
|
|
|
190
|
-
//
|
|
223
|
+
// Concurrency control
|
|
191
224
|
"background_task": {
|
|
192
225
|
"defaultConcurrency": 3,
|
|
193
226
|
"providerConcurrency": { "openai": 8 },
|
|
194
|
-
"modelConcurrency": { "openai/gpt-5.
|
|
227
|
+
"modelConcurrency": { "openai/gpt-5.2": 2 }
|
|
195
228
|
},
|
|
196
229
|
|
|
197
230
|
// Safety
|
|
@@ -202,13 +235,13 @@ Sisyphus (オーケストレーター) が読み込み・分析・計画を行
|
|
|
202
235
|
|
|
203
236
|
// Evolve Execution
|
|
204
237
|
"evolve_exe": {
|
|
205
|
-
"maxIterations": 10,
|
|
206
|
-
"iterationTimeoutMs": 300000,
|
|
207
|
-
"totalTimeoutMs": 900000,
|
|
208
|
-
"skipReview": false,
|
|
209
|
-
"skipTests": false,
|
|
210
|
-
"implementAgent": "hephaestus",
|
|
211
|
-
"reviewAgent": "momus"
|
|
238
|
+
"maxIterations": 10,
|
|
239
|
+
"iterationTimeoutMs": 300000,
|
|
240
|
+
"totalTimeoutMs": 900000,
|
|
241
|
+
"skipReview": false,
|
|
242
|
+
"skipTests": false,
|
|
243
|
+
"implementAgent": "hephaestus",
|
|
244
|
+
"reviewAgent": "momus"
|
|
212
245
|
},
|
|
213
246
|
|
|
214
247
|
// Token Truncation
|
|
@@ -220,27 +253,27 @@ Sisyphus (オーケストレーター) が読み込み・分析・計画を行
|
|
|
220
253
|
// Todo Enforcer
|
|
221
254
|
"todo_enforcer": { "maxEnforcements": 5 },
|
|
222
255
|
|
|
223
|
-
// MCP API
|
|
256
|
+
// MCP API Keys
|
|
224
257
|
"mcp_api_keys": { "context7": "ctx7sk-..." }
|
|
225
258
|
}
|
|
226
259
|
```
|
|
227
260
|
|
|
228
261
|
## Continuity Ledger
|
|
229
262
|
|
|
230
|
-
|
|
263
|
+
Markdown documents for session-to-session context continuity. Saved to `.opencode/ledgers/`.
|
|
231
264
|
|
|
232
265
|
```typescript
|
|
233
|
-
//
|
|
266
|
+
// Save
|
|
234
267
|
ledger_save({ name: "auth-refactor", content: "## Context\n..." })
|
|
235
268
|
|
|
236
|
-
//
|
|
269
|
+
// Load (by name)
|
|
237
270
|
ledger_load({ name: "auth-refactor" })
|
|
238
271
|
|
|
239
|
-
//
|
|
272
|
+
// Load (latest)
|
|
240
273
|
ledger_load({})
|
|
241
274
|
```
|
|
242
275
|
|
|
243
|
-
##
|
|
276
|
+
## Build & Test
|
|
244
277
|
|
|
245
278
|
```bash
|
|
246
279
|
bun install
|
|
@@ -248,6 +281,15 @@ bun run build
|
|
|
248
281
|
bun test
|
|
249
282
|
```
|
|
250
283
|
|
|
251
|
-
##
|
|
284
|
+
## Attribution
|
|
285
|
+
|
|
286
|
+
This project is a fork of [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) by [code-yeongyu](https://github.com/code-yeongyu), built on top of [OpenCode](https://github.com/anomalyco/opencode) by the OpenCode team.
|
|
287
|
+
|
|
288
|
+
We respect and follow the upstream licenses:
|
|
289
|
+
- oh-my-opencode: [Sustainable Use License v1.0](./LICENSE.md)
|
|
290
|
+
- OpenCode: [MIT License](https://github.com/anomalyco/opencode/blob/main/LICENSE)
|
|
291
|
+
|
|
292
|
+
## License
|
|
252
293
|
|
|
253
|
-
|
|
294
|
+
[Sustainable Use License v1.0](./LICENSE.md) — Free for personal and non-commercial use.
|
|
295
|
+
See [LICENSE.md](./LICENSE.md) for full terms.
|
package/dist/agents/index.d.ts
CHANGED
|
@@ -12,4 +12,6 @@ type MinimalPluginConfig = {
|
|
|
12
12
|
disabled_agents?: string[];
|
|
13
13
|
[key: string]: unknown;
|
|
14
14
|
};
|
|
15
|
+
export declare const AUTONOMOUS_MODE_SYSTEM = "## \u26A1 AUTONOMOUS MODE ACTIVE\n\nYou are running via CLI without a human present (opencode run --format json or non-TTY mode).\n\nMANDATORY BEHAVIOR:\n1. **Skip plan approval entirely** \u2014 no \"\u3053\u306E\u30D7\u30E9\u30F3\u3067\u9032\u3081\u307E\u3059\u304B\uFF1F\", no waiting\n2. Read the task \u2192 plan internally \u2192 execute immediately\n3. **Delegate ALL file writes to spawn_agent** \u2014 do NOT use Write, Edit, apply_patch, or Bash yourself\n4. Run spawn_agent calls IN PARALLEL for independent components\n5. After implementation, spawn momus for code review\n\nEXECUTION ORDER:\n- Phase 1: Read specs (Grep/Glob/Read) \u2014 do this yourself\n- Phase 2: spawn_agent hephaestus for each major component (in parallel)\n- Phase 3: spawn_agent momus for review after Phase 2 completes\n- Phase 4: spawn_agent hephaestus to run `git add -A && git commit -m 'feat: initial implementation'`\n- Report final summary";
|
|
16
|
+
export declare const AUTONOMOUS_MODE_ANCHOR = "\n\n[\u26A1 AUTONOMOUS MODE: No user present. Execute immediately. Delegate ALL file writing to spawn_agent(hephaestus). Do NOT use Write/Edit/apply_patch/Bash. Spawn parallel agents now. Final step: spawn hephaestus to run git add -A && git commit.]";
|
|
15
17
|
export declare function buildAgents(config: Partial<MinimalPluginConfig>): Record<string, AgentDef>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-ultra",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.6",
|
|
4
4
|
"description": "Lightweight OpenCode 1.2.x plugin — ultrawork mode, multi-agent orchestration, rules injection",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"opencode",
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
"multi-agent",
|
|
10
10
|
"ultrawork"
|
|
11
11
|
],
|
|
12
|
-
"homepage": "https://github.com/
|
|
12
|
+
"homepage": "https://github.com/ouchanip/opencode-ultra#readme",
|
|
13
13
|
"bugs": {
|
|
14
|
-
"url": "https://github.com/
|
|
14
|
+
"url": "https://github.com/ouchanip/opencode-ultra/issues"
|
|
15
15
|
},
|
|
16
16
|
"repository": {
|
|
17
17
|
"type": "git",
|
|
18
|
-
"url": "git+https://github.com/
|
|
18
|
+
"url": "git+https://github.com/ouchanip/opencode-ultra.git"
|
|
19
19
|
},
|
|
20
20
|
"main": "dist/index.js",
|
|
21
21
|
"types": "dist/index.d.ts",
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
"files": [
|
|
39
39
|
"dist"
|
|
40
40
|
],
|
|
41
|
-
"license": "
|
|
41
|
+
"license": "SEE LICENSE IN LICENSE.md"
|
|
42
42
|
}
|