opencode-ultra 0.9.5 → 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 +159 -131
- 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,15 +1,18 @@
|
|
|
1
1
|
# opencode-ultra
|
|
2
2
|
|
|
3
|
-
|
|
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).
|
|
4
5
|
|
|
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
|
|
6
9
|
|
|
7
10
|
```bash
|
|
8
|
-
# OpenCode plugin
|
|
11
|
+
# In your OpenCode plugin directory
|
|
9
12
|
bun add opencode-ultra
|
|
10
13
|
```
|
|
11
14
|
|
|
12
|
-
`opencode.jsonc
|
|
15
|
+
Register in `opencode.jsonc`:
|
|
13
16
|
|
|
14
17
|
```jsonc
|
|
15
18
|
{
|
|
@@ -17,68 +20,68 @@ bun add opencode-ultra
|
|
|
17
20
|
}
|
|
18
21
|
```
|
|
19
22
|
|
|
20
|
-
##
|
|
21
|
-
|
|
22
|
-
###
|
|
23
|
-
|
|
24
|
-
|
|
|
25
|
-
|
|
26
|
-
| `spawn_agent` |
|
|
27
|
-
| `ralph_loop` |
|
|
28
|
-
| `cancel_ralph` |
|
|
29
|
-
| `batch_read` |
|
|
30
|
-
| `ledger_save` | Continuity Ledger
|
|
31
|
-
| `ledger_load` | Continuity Ledger
|
|
32
|
-
| `ast_search` | AST-aware
|
|
33
|
-
| `evolve_apply` |
|
|
34
|
-
| `evolve_scan` |
|
|
35
|
-
| `evolve_score` |
|
|
36
|
-
| `evolve_exe` |
|
|
37
|
-
| `evolve_publish` |
|
|
38
|
-
|
|
39
|
-
###
|
|
40
|
-
|
|
41
|
-
|
|
|
42
|
-
|
|
43
|
-
| `keyword-detector` | chat.message | ultrawork/search/analyze/think/evolve
|
|
44
|
-
| `rules-injector` | system.transform | .opencode/rules.md
|
|
45
|
-
| `context-injector` | system.transform | ARCHITECTURE.md / CODE_STYLE.md
|
|
46
|
-
| `fragment-injector` | system.transform |
|
|
47
|
-
| `prompt-renderer` | system.transform |
|
|
48
|
-
| `comment-checker` | tool.execute.after | Write/Edit
|
|
49
|
-
| `token-truncation` | tool.execute.after | 30000
|
|
50
|
-
| `todo-enforcer` | event (session.idle) |
|
|
51
|
-
| `session-compaction` | experimental.session.compacting |
|
|
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 |
|
|
52
55
|
|
|
53
56
|
### Safety
|
|
54
57
|
|
|
55
|
-
|
|
|
56
|
-
|
|
57
|
-
| **Prompt Injection Sanitizer** |
|
|
58
|
-
| **Spawn Limit** |
|
|
59
|
-
| **Agent Timeout** |
|
|
60
|
-
| **Trust Score** | npm
|
|
61
|
-
| **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 |
|
|
62
65
|
|
|
63
|
-
### Evolve (
|
|
66
|
+
### Evolve (Self-Improvement)
|
|
64
67
|
|
|
65
|
-
`evolve` / `self-improve`
|
|
68
|
+
Triggered by `evolve` / `self-improve` keywords. A 5-phase self-improvement cycle:
|
|
66
69
|
|
|
67
|
-
| Phase |
|
|
68
|
-
|
|
69
|
-
| 1. RESEARCH | npm/GitHub
|
|
70
|
-
| 2. COMPARE |
|
|
71
|
-
| 3. PROPOSE |
|
|
72
|
-
| 4. SCORE | `evolve_score`
|
|
73
|
-
| 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` |
|
|
74
77
|
|
|
75
|
-
|
|
78
|
+
Proposals are output to `.opencode/evolve-proposals.jsonl`:
|
|
76
79
|
|
|
77
80
|
```json
|
|
78
|
-
{"title":"
|
|
81
|
+
{"title":"Feature","priority":"P0","effort":"Medium","inspiration":"reference-plugin","current_state":"Current state","why":"Benefit","how":"target-file:function — change description"}
|
|
79
82
|
```
|
|
80
83
|
|
|
81
|
-
|
|
84
|
+
Score calculation: `priority_weight x effort_weight`
|
|
82
85
|
|
|
83
86
|
| Priority | Weight | Effort | Weight |
|
|
84
87
|
|----------|--------|--------|--------|
|
|
@@ -86,96 +89,112 @@ bun add opencode-ultra
|
|
|
86
89
|
| P1 | 5 | Medium | 2 |
|
|
87
90
|
| P2 | 1 | High | 1 |
|
|
88
91
|
|
|
89
|
-
P0+Low=30 (
|
|
92
|
+
P0+Low=30 (highest priority) / P2+High=1 (lowest)
|
|
90
93
|
|
|
91
|
-
### Evolve Execution (
|
|
94
|
+
### Evolve Execution (Autonomous)
|
|
92
95
|
|
|
93
|
-
|
|
96
|
+
Fully automate proposal implementation with `evolve_exe`. Each proposal is isolated in a git branch with automatic rollback on failure.
|
|
94
97
|
|
|
95
98
|
```
|
|
96
|
-
evolve_exe({ proposals: "1,3" }) —
|
|
97
|
-
evolve_exe({ proposals: "all" }) — accepted
|
|
98
|
-
evolve_exe({ proposals: "1", dryRun: true }) —
|
|
99
|
-
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
|
|
100
103
|
```
|
|
101
104
|
|
|
102
|
-
| Phase |
|
|
103
|
-
|
|
104
|
-
| 1. GIT BRANCH | `evolve/{slug}`
|
|
105
|
-
| 2. IMPLEMENT | implementAgent (default: hephaestus)
|
|
106
|
-
| 3. TEST | `bun test`
|
|
107
|
-
| 4. BUILD | `bun run build`
|
|
108
|
-
| 5. REVIEW | reviewAgent (default: momus)
|
|
109
|
-
| 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 |
|
|
110
113
|
|
|
111
|
-
|
|
114
|
+
Post-implementation publish:
|
|
112
115
|
|
|
113
116
|
```
|
|
114
|
-
evolve_publish({ bump: "patch" }) — test
|
|
115
|
-
evolve_publish({ bump: "minor", deploy: "my-server" }) — publish + SSH
|
|
117
|
+
evolve_publish({ bump: "patch" }) — test -> build -> version bump -> npm publish
|
|
118
|
+
evolve_publish({ bump: "minor", deploy: "my-server" }) — publish + SSH deploy instructions
|
|
116
119
|
```
|
|
117
120
|
|
|
118
|
-
##
|
|
121
|
+
## Agent Configuration
|
|
119
122
|
|
|
120
|
-
Sisyphus (
|
|
123
|
+
Sisyphus (orchestrator) handles reading, analysis, and planning, then delegates implementation to sub-agents.
|
|
121
124
|
|
|
122
|
-
| Agent |
|
|
125
|
+
| Agent | Role | Tier |
|
|
123
126
|
|-------|------|------|
|
|
124
|
-
| **sisyphus** |
|
|
125
|
-
| **momus** |
|
|
126
|
-
| **oracle** |
|
|
127
|
-
| **hephaestus** |
|
|
128
|
-
| **metis** |
|
|
129
|
-
| **multimodal-looker** |
|
|
130
|
-
| **explore** |
|
|
131
|
-
| **librarian** |
|
|
132
|
-
| **scout** |
|
|
133
|
-
| **atlas** |
|
|
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 |
|
|
137
|
+
|
|
138
|
+
All agent models are configured via `opencode-ultra.json`. Only providers/models defined in your `opencode.jsonc` `provider` section can be specified.
|
|
139
|
+
|
|
140
|
+
### Default Models
|
|
141
|
+
|
|
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 |
|
|
134
153
|
|
|
135
|
-
|
|
154
|
+
You can override these with any model from your configured providers (OpenAI, Anthropic, Google, OpenRouter, etc.).
|
|
136
155
|
|
|
137
|
-
##
|
|
156
|
+
## Keyword Detection
|
|
138
157
|
|
|
139
|
-
|
|
|
140
|
-
|
|
141
|
-
| `ultrawork` / `ulw` | ultrawork | variant "max"
|
|
142
|
-
| `search` / `find` / `探して`
|
|
143
|
-
| `analyze` / `調査` / `debug`
|
|
144
|
-
| `think hard` / `じっくり` / `熟考`
|
|
145
|
-
| `evolve` / `self-improve` / `自己改善`
|
|
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 |
|
|
146
165
|
|
|
147
|
-
|
|
166
|
+
Supports Japanese and Chinese keywords.
|
|
148
167
|
|
|
149
|
-
##
|
|
168
|
+
## Configuration
|
|
150
169
|
|
|
151
|
-
`opencode-ultra.json` (
|
|
170
|
+
Two-level merge via `opencode-ultra.json` (or `.jsonc`):
|
|
152
171
|
|
|
153
|
-
1.
|
|
154
|
-
2.
|
|
172
|
+
1. **User config**: `~/.config/opencode/opencode-ultra.json[c]`
|
|
173
|
+
2. **Project config**: `<project>/.opencode/opencode-ultra.json[c]`
|
|
155
174
|
|
|
156
|
-
|
|
175
|
+
Project config overrides user config.
|
|
157
176
|
|
|
158
|
-
###
|
|
177
|
+
### Configuration Schema
|
|
159
178
|
|
|
160
179
|
```jsonc
|
|
161
180
|
{
|
|
162
|
-
//
|
|
181
|
+
// Agent model settings (specify models defined in opencode.jsonc provider section)
|
|
163
182
|
"agents": {
|
|
164
|
-
"sisyphus": { "model": "
|
|
165
|
-
"oracle": { "model": "
|
|
166
|
-
"hephaestus": { "model": "
|
|
167
|
-
"explore": { "model": "
|
|
168
|
-
"momus": { "model": "
|
|
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" }
|
|
169
188
|
},
|
|
170
189
|
|
|
171
|
-
//
|
|
172
|
-
// Note: category
|
|
190
|
+
// Categories (bulk model switching via spawn_agent category parameter)
|
|
191
|
+
// Note: category takes priority over individual agent models
|
|
173
192
|
"categories": {
|
|
174
|
-
"quick": { "model": "
|
|
175
|
-
"deep": { "model": "
|
|
193
|
+
"quick": { "model": "anthropic/claude-haiku-4-5" },
|
|
194
|
+
"deep": { "model": "anthropic/claude-opus-4-5" }
|
|
176
195
|
},
|
|
177
196
|
|
|
178
|
-
// Fragment Injection (
|
|
197
|
+
// Fragment Injection (per-agent prompt fragments)
|
|
179
198
|
"fragments": {
|
|
180
199
|
"hephaestus": [".opencode/fragments/strict.md"]
|
|
181
200
|
},
|
|
@@ -188,7 +207,7 @@ Sisyphus (オーケストレーター) が読み込み・分析・計画を行
|
|
|
188
207
|
}
|
|
189
208
|
},
|
|
190
209
|
|
|
191
|
-
//
|
|
210
|
+
// Disable features
|
|
192
211
|
"disabled_agents": [],
|
|
193
212
|
"disabled_hooks": [], // keyword-detector, rules-injector, context-injector,
|
|
194
213
|
// fragment-injector, prompt-renderer, comment-checker,
|
|
@@ -201,11 +220,11 @@ Sisyphus (オーケストレーター) が読み込み・分析・計画を行
|
|
|
201
220
|
// Built-in Agent Demotion (default: true)
|
|
202
221
|
"demote_builtin": true,
|
|
203
222
|
|
|
204
|
-
//
|
|
223
|
+
// Concurrency control
|
|
205
224
|
"background_task": {
|
|
206
225
|
"defaultConcurrency": 3,
|
|
207
226
|
"providerConcurrency": { "openai": 8 },
|
|
208
|
-
"modelConcurrency": { "openai/gpt-
|
|
227
|
+
"modelConcurrency": { "openai/gpt-5.2": 2 }
|
|
209
228
|
},
|
|
210
229
|
|
|
211
230
|
// Safety
|
|
@@ -216,13 +235,13 @@ Sisyphus (オーケストレーター) が読み込み・分析・計画を行
|
|
|
216
235
|
|
|
217
236
|
// Evolve Execution
|
|
218
237
|
"evolve_exe": {
|
|
219
|
-
"maxIterations": 10,
|
|
220
|
-
"iterationTimeoutMs": 300000,
|
|
221
|
-
"totalTimeoutMs": 900000,
|
|
222
|
-
"skipReview": false,
|
|
223
|
-
"skipTests": false,
|
|
224
|
-
"implementAgent": "hephaestus",
|
|
225
|
-
"reviewAgent": "momus"
|
|
238
|
+
"maxIterations": 10,
|
|
239
|
+
"iterationTimeoutMs": 300000,
|
|
240
|
+
"totalTimeoutMs": 900000,
|
|
241
|
+
"skipReview": false,
|
|
242
|
+
"skipTests": false,
|
|
243
|
+
"implementAgent": "hephaestus",
|
|
244
|
+
"reviewAgent": "momus"
|
|
226
245
|
},
|
|
227
246
|
|
|
228
247
|
// Token Truncation
|
|
@@ -234,27 +253,27 @@ Sisyphus (オーケストレーター) が読み込み・分析・計画を行
|
|
|
234
253
|
// Todo Enforcer
|
|
235
254
|
"todo_enforcer": { "maxEnforcements": 5 },
|
|
236
255
|
|
|
237
|
-
// MCP API
|
|
256
|
+
// MCP API Keys
|
|
238
257
|
"mcp_api_keys": { "context7": "ctx7sk-..." }
|
|
239
258
|
}
|
|
240
259
|
```
|
|
241
260
|
|
|
242
261
|
## Continuity Ledger
|
|
243
262
|
|
|
244
|
-
|
|
263
|
+
Markdown documents for session-to-session context continuity. Saved to `.opencode/ledgers/`.
|
|
245
264
|
|
|
246
265
|
```typescript
|
|
247
|
-
//
|
|
266
|
+
// Save
|
|
248
267
|
ledger_save({ name: "auth-refactor", content: "## Context\n..." })
|
|
249
268
|
|
|
250
|
-
//
|
|
269
|
+
// Load (by name)
|
|
251
270
|
ledger_load({ name: "auth-refactor" })
|
|
252
271
|
|
|
253
|
-
//
|
|
272
|
+
// Load (latest)
|
|
254
273
|
ledger_load({})
|
|
255
274
|
```
|
|
256
275
|
|
|
257
|
-
##
|
|
276
|
+
## Build & Test
|
|
258
277
|
|
|
259
278
|
```bash
|
|
260
279
|
bun install
|
|
@@ -262,6 +281,15 @@ bun run build
|
|
|
262
281
|
bun test
|
|
263
282
|
```
|
|
264
283
|
|
|
265
|
-
##
|
|
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
|
|
266
293
|
|
|
267
|
-
|
|
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/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
|
}
|