docs: add OpenCode usage & parallelization research note
This commit is contained in:
17
docs/_index.md
Normal file
17
docs/_index.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# Research Index
|
||||
|
||||
Overview of research topics and notes.
|
||||
|
||||
## Topics
|
||||
|
||||
### AI Agents
|
||||
|
||||
| Topic | Status | Last Updated |
|
||||
|-------|--------|--------------|
|
||||
| [OpenCode Usage & Parallelization](./opencode-usage.md) | Active | 2025-03-27 |
|
||||
|
||||
### More topics...
|
||||
|
||||
---
|
||||
|
||||
*Auto-generated index. Update manually when adding new research notes.*
|
||||
147
docs/opencode-usage.md
Normal file
147
docs/opencode-usage.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# OpenCode Usage & Parallelization
|
||||
|
||||
**Date:** 2025-03-27
|
||||
**Status:** Active
|
||||
**Topic:** AI Agents / OpenCode
|
||||
|
||||
## Overview
|
||||
|
||||
OpenCode is an open-source, provider-agnostic AI coding agent with a CLI/TUI. This note covers installation verification, usage patterns, and Hermes's parallelization capabilities with OpenCode.
|
||||
|
||||
---
|
||||
|
||||
## Installation & Verification
|
||||
|
||||
**Binary location:** `/home/shoko/.opencode/bin/opencode` (v1.3.3)
|
||||
|
||||
**Auth provider:** MiniMax Coding Plan
|
||||
|
||||
```bash
|
||||
# Verify installation
|
||||
opencode --version
|
||||
|
||||
# Check auth
|
||||
opencode auth list
|
||||
```
|
||||
|
||||
**Smoke test:**
|
||||
```bash
|
||||
opencode run 'Respond with exactly: OPENCODE_SMOKE_OK'
|
||||
# Expected: OPENCODE_SMOKE_OK
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Usage Patterns
|
||||
|
||||
### One-Shot Tasks
|
||||
|
||||
```bash
|
||||
# Basic task with output
|
||||
opencode run 'Add retry logic to API calls and update tests'
|
||||
|
||||
# Attach context files
|
||||
opencode run 'Review this config for security issues' -f config.yaml -f .env.example
|
||||
|
||||
# Show model thinking
|
||||
opencode run 'Debug why tests fail in CI' --thinking
|
||||
|
||||
# Force specific model
|
||||
opencode run 'Refactor auth module' --model openrouter/anthropic/claude-sonnet-4
|
||||
```
|
||||
|
||||
### Interactive TUI Sessions
|
||||
|
||||
```bash
|
||||
# Start background TUI
|
||||
terminal(command="opencode", workdir="~/project", background=true, pty=true)
|
||||
|
||||
# Send prompt
|
||||
process(action="submit", session_id="<id>", data="Implement OAuth refresh flow and add tests")
|
||||
|
||||
# Monitor progress
|
||||
process(action="poll", session_id="<id>")
|
||||
process(action="log", session_id="<id>")
|
||||
|
||||
# Exit (Ctrl+C)
|
||||
process(action="write", session_id="<id>", data="\x03")
|
||||
# Or kill
|
||||
process(action="kill", session_id="<id>")
|
||||
```
|
||||
|
||||
### PR Review
|
||||
|
||||
```bash
|
||||
opencode pr 42
|
||||
```
|
||||
|
||||
Or in temporary clone:
|
||||
```bash
|
||||
REVIEW=$(mktemp -d) && git clone https://github.com/user/repo.git $REVIEW && \
|
||||
cd $REVIEW && opencode run 'Review this PR vs main...'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Hermes Parallelization
|
||||
|
||||
### Available Methods
|
||||
|
||||
| Method | Max Parallel | Context Sharing | Best For |
|
||||
|--------|-------------|-----------------|----------|
|
||||
| `delegate_task` | **3** (schema hard limit) | No | Bounded independent tasks |
|
||||
| `terminal()` calls | **No hard cap** | No | Fire-and-forget background work |
|
||||
| `process` management | **No hard cap** | Via parent session | Long-running interactive sessions |
|
||||
|
||||
### delegate_task
|
||||
|
||||
```python
|
||||
delegate_task(tasks=[
|
||||
{"goal": "Fix issue #1", "context": "...", "workdir": "/tmp/issue-1"},
|
||||
{"goal": "Fix issue #2", "context": "...", "workdir": "/tmp/issue-2"},
|
||||
{"goal": "Fix issue #3", "context": "...", "workdir": "/tmp/issue-3"},
|
||||
], max_iterations=50)
|
||||
```
|
||||
|
||||
**Constraints:**
|
||||
- Cannot use: `delegate_task`, `clarify`, `memory`, `send_message` within subagents
|
||||
- Tasks must be fully self-contained
|
||||
- Exit with Ctrl+C or `process(action="kill")`, NOT `/exit`
|
||||
|
||||
### Terminal Parallel Calls
|
||||
|
||||
No hard cap. Fire multiple `opencode run` in parallel:
|
||||
```bash
|
||||
opencode run 'Fix issue #1' --workdir /tmp/issue-1 &
|
||||
opencode run 'Fix issue #2' --workdir /tmp/issue-2 &
|
||||
opencode run 'Fix issue #3' --workdir /tmp/issue-3 &
|
||||
```
|
||||
|
||||
### Schema Constraint
|
||||
|
||||
The **3-task limit on `delegate_task`** is a **hard constraint in the tool schema** (`maxItems: 3` on the `tasks` array). It cannot be changed at runtime. Workarounds:
|
||||
|
||||
1. **Multiple sequential `delegate_task` calls** — batch into groups of 3
|
||||
2. **Use `terminal()` with parallel `opencode run`** — no schema cap
|
||||
3. **Request schema change** — would need Hermes source modification
|
||||
|
||||
---
|
||||
|
||||
## Tradeoffs at Scale
|
||||
|
||||
For **N issues** (e.g., 10):
|
||||
|
||||
| Approach | Parallelism | Merge Conflict Risk | Coherence |
|
||||
|----------|-------------|---------------------|-----------|
|
||||
| Sequential `opencode run` xN | 1x | Low | Easy |
|
||||
| 3x `delegate_task` batches | 3x | Medium | Medium |
|
||||
| Nx parallel `terminal()` calls | Nx | **High** | **Low** |
|
||||
|
||||
**Recommendation:** Batch into 3-4 parallel streams using `delegate_task` or parallel `terminal()` calls. Each stream works in isolated workdir. Final review/merge phase required.
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- [OpenCode Official](https://opencode.ai)
|
||||
- Hermes skill: `opencode` (autonomous-ai-agents/opencode/SKILL.md)
|
||||
Reference in New Issue
Block a user