|
| 1 | +English | [한국어](README.ko.md) |
| 2 | + |
| 3 | +## Contents |
| 4 | + |
| 5 | +- [Oh My OpenCode](#oh-my-opencode) |
| 6 | + - [Installation](#installation) |
| 7 | + - [Configuration](#configuration) |
| 8 | + - [Disable specific MCPs](#disable-specific-mcps) |
| 9 | + - [TL;DR](#tldr) |
| 10 | + - [Why OpenCode \& Why Oh My OpenCode](#why-opencode--why-oh-my-opencode) |
| 11 | + - [Features](#features) |
| 12 | + - [Hooks](#hooks) |
| 13 | + - [Agents](#agents) |
| 14 | + - [Tools](#tools) |
| 15 | + - [Built-in LSP Tools](#built-in-lsp-tools) |
| 16 | + - [Built-in AST-Grep Tools](#built-in-ast-grep-tools) |
| 17 | + - [Safe Grep](#safe-grep) |
| 18 | + - [Built-in MCPs](#built-in-mcps) |
| 19 | + - [Other Features](#other-features) |
| 20 | + - [Author's Note](#authors-note) |
| 21 | + - [Warnings](#warnings) |
| 22 | + |
| 23 | +# Oh My OpenCode |
| 24 | + |
| 25 | +Oh My OpenCode |
| 26 | + |
| 27 | +oMoMoMoMoMo··· |
| 28 | + |
| 29 | +If you work in tech, you likely appreciated [Claude Code](https://www.claude.com/product/claude-code). |
| 30 | +If you are a hacker, you will fucking falling in love with [OpenCode](https://github.com/sst/opencode). |
| 31 | + |
| 32 | +You don't write code just for a paycheck? You write because you genuinely love it? |
| 33 | + |
| 34 | +To you, OpenCode will feel like the paradigm shift from Windows to Linux. Not you? It's still worth the investment. Give it 10 minutes. Your work and life will improve. I promise. |
| 35 | + |
| 36 | +## Installation |
| 37 | + |
| 38 | +Add to `~/.config/opencode/opencode.json`: |
| 39 | + |
| 40 | +```json |
| 41 | +{ |
| 42 | + "plugin": [ |
| 43 | + "oh-my-opencode" |
| 44 | + ] |
| 45 | +} |
| 46 | +``` |
| 47 | + |
| 48 | +## Configuration |
| 49 | + |
| 50 | +You can configure Oh My OpenCode by creating a `oh-my-opencode.json` (or `.oh-my-opencode.json`) file in your project root. |
| 51 | + |
| 52 | +### JSON Schema Support |
| 53 | + |
| 54 | +For autocompletion and validation in VS Code (or other editors), add the `$schema` property to your configuration file. |
| 55 | + |
| 56 | +**Using Remote Schema (Recommended):** |
| 57 | +```json |
| 58 | +{ |
| 59 | + "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/dist/oh-my-opencode.schema.json", |
| 60 | + "disabled_mcps": ["context7"] |
| 61 | +} |
| 62 | +``` |
| 63 | + |
| 64 | +**Using Local Schema:** |
| 65 | +```json |
| 66 | +{ |
| 67 | + "$schema": "./node_modules/oh-my-opencode/dist/oh-my-opencode.schema.json" |
| 68 | +} |
| 69 | +``` |
| 70 | + |
| 71 | +### Disable specific MCPs |
| 72 | + |
| 73 | +If you want to disable specific built-in MCPs, you can use the `disabled_mcps` option. |
| 74 | + |
| 75 | +```json |
| 76 | +{ |
| 77 | + "disabled_mcps": ["context7", "websearch_exa"] |
| 78 | +} |
| 79 | +``` |
| 80 | + |
| 81 | +## TL;DR |
| 82 | + |
| 83 | +- **Model Setup Required** |
| 84 | + - This plugin utilizes models from [OpenCode Zen](https://opencode.ai/docs/zen/), Google, OpenAI, and Anthropic. |
| 85 | + - For Anthropic models, use [OpenCode's built-in Claude Code Max Plan login](https://opencode.ai/docs/providers/#anthropic). |
| 86 | + - For OpenAI models, I recommend the [OpenCode-OpenAI-Codex-Auth plugin](https://github.com/numman-ali/opencode-openai-codex-auth). |
| 87 | + - For Gemini and GPT, use [VibeProxy (macOS Only)](https://github.com/automazeio/vibeproxy) or [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI). |
| 88 | +- **Truth be told, the rest is optional. Just install it. Once set up, no further learning is required. It simply evolves.** |
| 89 | +- **Paste this document into Claude Code, OpenCode, or Cursor, instruct it to install, and ask for assistance if needed. It works seamlessly.** |
| 90 | + - If you are an LLM Agent, install the required plugins and dependencies, then run `opencode auth login` via tmux to assist the user with configuration. |
| 91 | + |
| 92 | +## Why OpenCode & Why Oh My OpenCode |
| 93 | + |
| 94 | +OpenCode is limitlessly extensible and customizable. Zero screen flicker. |
| 95 | +[LSP](https://opencode.ai/docs/lsp/), [linters, formatters](https://opencode.ai/docs/formatters/)? Automatic and fully configurable. |
| 96 | +You can mix and orchestrate models to your exact specifications. |
| 97 | +It is feature-rich. It is elegant. It handles the terminal without hesitation. It is high-performance. |
| 98 | + |
| 99 | +But here is the catch: the learning curve is steep. There is a lot to master. |
| 100 | + |
| 101 | +Inspired by [AmpCode](https://ampcode.com) and [Claude Code](https://code.claude.com/docs/en/overview), I have implemented their features here—often with superior execution. |
| 102 | +Because this is OpenCode. |
| 103 | + |
| 104 | +Consider this a superior AmpCode, a superior Claude Code, or simply a specialized distribution. |
| 105 | + |
| 106 | +I believe in the right tool for the job. For your wallet's sake, use CLIProxyAPI or VibeProxy. Employ the best LLMs from frontier labs. You are in command. |
| 107 | + |
| 108 | +**Note**: This setup is highly opinionated. It represents the generic component of my personal configuration, so it evolves constantly. I have spent tokens worth $20,000 just for my personal programming usages, and this plugin represents the apex of that experience. You simply inherit the best. If you have superior ideas, PRs are welcome. |
| 109 | + |
| 110 | +## Features |
| 111 | + |
| 112 | +### Hooks |
| 113 | + |
| 114 | +- **Todo Continuation Enforcer**: Forces the agent to complete all tasks before exiting. Eliminates the common LLM issue of "giving up halfway". |
| 115 | +- **Context Window Monitor**: Implements [Context Window Anxiety Management](https://agentic-patterns.com/patterns/context-window-anxiety-management/). When context usage exceeds 70%, it reminds the agent that resources are sufficient, preventing rushed or low-quality output. |
| 116 | +- **Session Notification**: Sends a native OS notification when the job is done (macOS, Linux, Windows). |
| 117 | +- **Session Recovery**: Automatically recovers from API errors by injecting missing tool results and correcting thinking block violations, ensuring session stability. |
| 118 | +- **Comment Checker**: Detects and reports unnecessary comments after code modifications. Smartly ignores valid patterns (BDD, directives, docstrings, shebangs) to keep the codebase clean from AI-generated artifacts. |
| 119 | + |
| 120 | +### Agents |
| 121 | +- **oracle** (`openai/gpt-5.1`): The architect. Expert in code reviews and strategy. Uses GPT-5.1 for its unmatched logic and reasoning capabilities. Inspired by AmpCode. |
| 122 | +- **librarian** (`anthropic/claude-haiku-4-5`): Multi-repo analysis, documentation lookup, and implementation examples. Haiku is chosen for its speed, competence, excellent tool usage, and cost-efficiency. Inspired by AmpCode. |
| 123 | +- **explore** (`opencode/grok-code`): Fast exploration and pattern matching. Claude Code uses Haiku; we use Grok. It is currently free, blazing fast, and intelligent enough for file traversal. Inspired by Claude Code. |
| 124 | +- **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): A designer turned developer. Creates stunning UIs. Uses Gemini because its creativity and UI code generation are superior. |
| 125 | +- **document-writer** (`google/gemini-3-pro-preview`): A technical writing expert. Gemini is a wordsmith; it writes prose that flows naturally. |
| 126 | + |
| 127 | +### Tools |
| 128 | + |
| 129 | +#### Built-in LSP Tools |
| 130 | + |
| 131 | +[OpenCode provides LSP](https://opencode.ai/docs/lsp/), but only for analysis. Oh My OpenCode equips you with navigation and refactoring tools matching the same specification. |
| 132 | + |
| 133 | +- **lsp_hover**: Get type info, docs, signatures at position |
| 134 | +- **lsp_goto_definition**: Jump to symbol definition |
| 135 | +- **lsp_find_references**: Find all usages across workspace |
| 136 | +- **lsp_document_symbols**: Get file's symbol outline |
| 137 | +- **lsp_workspace_symbols**: Search symbols by name across project |
| 138 | +- **lsp_diagnostics**: Get errors/warnings before build |
| 139 | +- **lsp_servers**: List available LSP servers |
| 140 | +- **lsp_prepare_rename**: Validate rename operation |
| 141 | +- **lsp_rename**: Rename symbol across workspace |
| 142 | +- **lsp_code_actions**: Get available quick fixes/refactorings |
| 143 | +- **lsp_code_action_resolve**: Apply a code action |
| 144 | + |
| 145 | +#### Built-in AST-Grep Tools |
| 146 | + |
| 147 | +- **ast_grep_search**: AST-aware code pattern search (25 languages) |
| 148 | +- **ast_grep_replace**: AST-aware code replacement |
| 149 | + |
| 150 | +#### Safe Grep |
| 151 | + |
| 152 | +- **safe_grep**: Content search with safety limits (5min timeout, 10MB output). |
| 153 | + - The default `grep` lacks safeguards. On a large codebase, a broad pattern can cause CPU overload and indefinite hanging. |
| 154 | + - `safe_grep` enforces strict limits. |
| 155 | + - **Note**: Default `grep` is disabled to prevent Agent confusion. `safe_grep` delivers full `grep` functionality with safety assurance. |
| 156 | + |
| 157 | +#### Built-in MCPs |
| 158 | + |
| 159 | +- **websearch_exa**: Exa AI web search. Performs real-time web searches and can scrape content from specific URLs. Returns LLM-optimized context from relevant websites. |
| 160 | +- **context7**: Library documentation lookup. Fetches up-to-date documentation for any library to assist with accurate coding. |
| 161 | + |
| 162 | +### Other Features |
| 163 | + |
| 164 | +- **Terminal Title**: Auto-updates terminal title with session status (idle ○, processing ◐, tool ⚡, error ✖). Supports tmux. |
| 165 | + |
| 166 | +## Author's Note |
| 167 | + |
| 168 | +Install Oh My OpenCode. Do not waste time configuring OpenCode from scratch. |
| 169 | +I have resolved the friction so you don't have to. The answers are in this plugin. If OpenCode is Arch Linux, Oh My OpenCode is [Omarchy](https://omarchy.org/). |
| 170 | + |
| 171 | +Enjoy the multi-model stability and rich feature set that other harnesses promise but fail to deliver. |
| 172 | +I will continue testing and updating here. I am the primary user of this project. |
| 173 | + |
| 174 | +- Who possesses the best raw logic? |
| 175 | +- Who is the debugging god? |
| 176 | +- Who writes the best prose? |
| 177 | +- Who dominates frontend? |
| 178 | +- Who owns backend? |
| 179 | +- Which model is fastest for daily driving? |
| 180 | +- What new features are other harnesses shipping? |
| 181 | + |
| 182 | +Do not overthink it. I have done the thinking. I will integrate the best practices. I will update this. |
| 183 | +If this sounds arrogant and you have a superior solution, send a PR. You are welcome. |
| 184 | + |
| 185 | +As of now, I have no affiliation with any of the projects or models mentioned here. This plugin is purely based on personal experimentation and preference. |
| 186 | + |
| 187 | +I constructed 99% of this project using OpenCode. I focused on functional verification. This documentation has been personally reviewed and comprehensively rewritten, so you can rely on it with confidence. |
| 188 | +## Warnings |
| 189 | + |
| 190 | +- If you are on [1.0.132](https://github.com/sst/opencode/releases/tag/v1.0.132) or lower, OpenCode has a bug that might break config. |
| 191 | + - [The fix](https://github.com/sst/opencode/pull/5040) was merged after 1.0.132, so use a newer version. |
0 commit comments