From a3c4024f5f3295d133e693bbb236fc1cd0810647 Mon Sep 17 00:00:00 2001 From: chaos Date: Mon, 15 Jun 2026 21:51:14 +0800 Subject: [PATCH] feat: add 9 plugins, sync to new provider format, add 6 new MCP packages --- README.md | 5 +- install.sh | 15 ++- opencode.json.template | 213 ++++++++++++++++++++++++++--------------- 3 files changed, 144 insertions(+), 89 deletions(-) diff --git a/README.md b/README.md index 8996e89..a4f530d 100644 --- a/README.md +++ b/README.md @@ -66,10 +66,11 @@ echo 'export BRAVE_API_KEY=BSA...' >> ~/.bashrc ## What's Synced +- **9 Plugins** - oh-my-openagent, opencode-mem, opencode-pty, dynamic context pruning, RAG, command-inject, notify, agent-identity, tokenscope - **32 Skills** - Coding standards, frontend/backend patterns, security review, etc. - **3 Agents** - explorer, reviewer, docs-researcher -- **11 MCP Servers** - codegraph, brave-search, playwright, github, etc. -- **Model Config** - Kimi K2.6 + 7 other models via OpenAI-compatible API +- **14 MCP Servers** - codegraph, brave-search, playwright, github, context7, exa, etc. +- **Model Config** - Kimi K2.6 + 14 other models via `@ai-sdk/openai-compatible` ## Updating diff --git a/install.sh b/install.sh index 3762209..15d0c42 100644 --- a/install.sh +++ b/install.sh @@ -200,8 +200,12 @@ GLOBAL_PACKAGES=( "@playwright/mcp" "@upstash/context7-mcp" "mcp-remote" + "jina-mcp-tools" + "git-mcp-server" + "chrome-devtools-mcp" ) +# Install npm global deps (git-mcp-server replaces Python mcp-server-git) for pkg in "${GLOBAL_PACKAGES[@]}"; do echo -e "${DARKGRAY} Installing $pkg...${NC}" -n if npm install -g "$pkg" 2>/dev/null; then @@ -211,23 +215,16 @@ for pkg in "${GLOBAL_PACKAGES[@]}"; do fi done -# Install Python git MCP -echo -e "${DARKGRAY} Installing Python git MCP...${NC}" -n -if python3 -m pip install mcp-server-git 2>/dev/null || python -m pip install mcp-server-git 2>/dev/null; then - echo -e "${GREEN} OK${NC}" -else - echo -e "${YELLOW} SKIP${NC}" -fi - echo "" echo -e "${CYAN}========================================${NC}" echo -e "${GREEN} Installation Complete! ${NC}" echo -e "${CYAN}========================================${NC}" echo "" echo -e "${WHITE}Next steps:${NC}" -echo -e " 1. Restart opencode to load new config" +echo -e " 1. Restart opencode to load new config (plugins auto-install on startup)" echo -e " 2. Run 'opencode' in your project directory" echo -e " 3. Initialize CodeGraph: codegraph init" +echo -e " 4. For smart-tree MCP: install from https://github.com/anomalyco/smart-tree" echo "" echo -e "${DARKGRAY}Config location: $CONFIG_DIR${NC}" echo "" diff --git a/opencode.json.template b/opencode.json.template index 38ce4a3..2e6db46 100644 --- a/opencode.json.template +++ b/opencode.json.template @@ -1,22 +1,17 @@ { "$schema": "https://opencode.ai/config.json", - "model": "openai-compatible/kimi-k2.6", - "small_model": "openai-compatible/miaoda-model-flash", + "disabled_providers": [], + "model": "ai/kimi-k2.6", + "small_model": "ai/miaoda-model-flash", "provider": { - "openai-compatible": { - "api": "openai", - "name": "OpenAI Compatible", + "ai": { + "npm": "@ai-sdk/openai-compatible", "options": { + "baseURL": "https://ai.fs.nomsg.cn/v1", "apiKey": "${OPENCODE_API_KEY}", - "baseURL": "https://ai.fs.nomsg.cn/v1" + "setCacheKey": true }, "models": { - "kimi-k2.6": { - "id": "kimi-k2.6", - "name": "Kimi K2.6", - "tool_call": true, - "reasoning": true - }, "doubao-seed-2.0-pro": { "id": "doubao-seed-2.0-pro", "name": "Doubao Seed 2.0 Pro", @@ -27,15 +22,16 @@ "name": "GLM 5.1", "tool_call": true }, - "qwen-3.6-plus": { - "id": "qwen-3.6-plus", - "name": "Qwen 3.6 Plus", + "grok-4.3": { + "id": "grok-4.3", + "name": "Grok 4.3", "tool_call": true }, - "minimax-m3": { - "id": "minimax-m3", - "name": "MiniMax M3", - "tool_call": true + "kimi-k2.6": { + "id": "kimi-k2.6", + "name": "Kimi K2.6", + "tool_call": true, + "reasoning": true }, "miaoda-auto-multimodal": { "id": "miaoda-auto-multimodal", @@ -51,34 +47,107 @@ "id": "miaoda-model-flash", "name": "Miaoda Model Flash", "tool_call": true + }, + "mimo-v2.5": { + "id": "mimo-v2.5", + "name": "Mimo V2.5", + "tool_call": true + }, + "mimo-v2.5-pro": { + "id": "mimo-v2.5-pro", + "name": "Mimo V2.5 Pro", + "tool_call": true + }, + "minimax-m3": { + "id": "minimax-m3", + "name": "MiniMax M3", + "tool_call": true + }, + "qwen-3.6-plus": { + "id": "qwen-3.6-plus", + "name": "Qwen 3.6 Plus", + "tool_call": true + }, + "step-3.5-flash": { + "id": "step-3.5-flash", + "name": "Step 3.5 Flash", + "tool_call": true + }, + "step-3.5-flash-2603": { + "id": "step-3.5-flash-2603", + "name": "Step 3.5 Flash 2603", + "tool_call": true + }, + "step-3.7-flash": { + "id": "step-3.7-flash", + "name": "Step 3.7 Flash", + "tool_call": true + }, + "step-router-v1": { + "id": "step-router-v1", + "name": "Step Router V1", + "tool_call": true } } } }, - "skills": { - "paths": ["~/.config/opencode/skills"] - }, - "agent": { - "explorer": { - "description": "Read-only codebase explorer for gathering evidence before changes are proposed.", - "mode": "subagent", - "model": "openai-compatible/kimi-k2.6", - "permission": { "edit": "deny", "bash": "ask" } - }, - "reviewer": { - "description": "PR reviewer focused on correctness, security, and missing tests.", - "mode": "subagent", - "model": "openai-compatible/kimi-k2.6", - "permission": { "edit": "deny", "bash": "ask" } - }, - "docs-researcher": { - "description": "Documentation specialist that verifies APIs, framework behavior, and release notes.", - "mode": "subagent", - "model": "openai-compatible/kimi-k2.6", - "permission": { "edit": "deny", "bash": "ask" } - } - }, + "plugin": [ + "oh-my-openagent", + "opencode-mem", + "opencode-pty", + "@tarquinen/opencode-dcp", + "opencode-rag-plugin", + "opencode-command-inject", + "opencode-notify", + "@gotgenes/opencode-agent-identity", + "@ramtinj95/opencode-tokenscope" + ], "mcp": { + "git": { + "type": "local", + "command": ["git-mcp-server"], + "enabled": true + }, + "filesystem": { + "type": "local", + "command": ["mcp-server-filesystem", "${PROJECTS_PATH}"], + "enabled": true + }, + "jina": { + "type": "local", + "command": ["jina-mcp-tools"], + "enabled": true + }, + "codegraph": { + "type": "local", + "command": ["codegraph", "serve", "--mcp"], + "enabled": true + }, + "smart-tree": { + "type": "local", + "command": ["/home/chaos/.local/bin/st", "--mcp"], + "enabled": true + }, + "dbhub": { + "type": "local", + "command": ["dbhub", "--transport", "stdio", "--demo"], + "enabled": false + }, + "memory": { + "type": "local", + "command": ["npx", "-y", "@modelcontextprotocol/server-memory"], + "enabled": true + }, + "playwright": { + "type": "local", + "command": ["npx", "-y", "@playwright/mcp@latest"], + "enabled": true + }, + "chrome-devtools": { + "type": "local", + "command": ["chrome-devtools-mcp"], + "enabled": true + }, "github": { "type": "local", "command": ["npx", "-y", "@modelcontextprotocol/server-github"], @@ -94,46 +163,11 @@ "command": ["npx", "-y", "mcp-remote", "https://mcp.exa.ai/mcp"], "enabled": true }, - "memory": { - "type": "local", - "command": ["npx", "-y", "@modelcontextprotocol/server-memory"], - "enabled": true - }, - "playwright": { - "type": "local", - "command": ["npx", "-y", "@playwright/mcp@latest", "--extension"], - "enabled": true - }, "sequential-thinking": { "type": "local", "command": ["npx", "-y", "@modelcontextprotocol/server-sequential-thinking"], "enabled": true }, - "codegraph": { - "type": "local", - "command": ["codegraph", "serve", "--mcp"], - "enabled": true - }, - "git": { - "type": "local", - "command": ["python", "-m", "mcp_server_git"], - "enabled": true - }, - "filesystem": { - "type": "local", - "command": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "${PROJECTS_PATH}"], - "enabled": true - }, - "fetch": { - "type": "local", - "command": ["npx", "-y", "@modelcontextprotocol/server-fetch"], - "enabled": false - }, - "time": { - "type": "local", - "command": ["npx", "-y", "@modelcontextprotocol/server-time"], - "enabled": false - }, "brave-search": { "type": "local", "command": ["npx", "-y", "@brave/brave-search-mcp-server"], @@ -142,5 +176,28 @@ "BRAVE_API_KEY": "${BRAVE_API_KEY}" } } + }, + "skills": { + "paths": ["~/.config/opencode/skills"] + }, + "agent": { + "explorer": { + "description": "Read-only codebase explorer for gathering evidence before changes are proposed.", + "mode": "subagent", + "model": "ai/kimi-k2.6", + "permission": { "edit": "deny", "bash": "ask" } + }, + "reviewer": { + "description": "PR reviewer focused on correctness, security, and missing tests.", + "mode": "subagent", + "model": "ai/kimi-k2.6", + "permission": { "edit": "deny", "bash": "ask" } + }, + "docs-researcher": { + "description": "Documentation specialist that verifies APIs, framework behavior, and release notes.", + "mode": "subagent", + "model": "ai/kimi-k2.6", + "permission": { "edit": "deny", "bash": "ask" } + } } -} +} \ No newline at end of file