diff --git a/docs/_index.md b/docs/_index.md new file mode 100644 index 0000000..a32a237 --- /dev/null +++ b/docs/_index.md @@ -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.* diff --git a/docs/opencode-usage.md b/docs/opencode-usage.md new file mode 100644 index 0000000..3c1e90a --- /dev/null +++ b/docs/opencode-usage.md @@ -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="", data="Implement OAuth refresh flow and add tests") + +# Monitor progress +process(action="poll", session_id="") +process(action="log", session_id="") + +# Exit (Ctrl+C) +process(action="write", session_id="", data="\x03") +# Or kill +process(action="kill", session_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)