简介

开始使用 OpenCode。

OpenCode 是一个开源的 AI 编码代理。它提供终端界面、桌面应用和 IDE 扩展等多种使用方式。

使用 opencode 主题的 OpenCode TUI

让我们开始吧。


前提条件

要在终端中使用 OpenCode,你需要:

  1. 一款现代终端模拟器,例如:

  2. 你想使用的 LLM 提供商的 API 密钥。


快速开始

安装 OpenCode 最简单的方法是通过安装脚本:

curl -fsSL https://opencode.ai/install | bash

安装完成后,运行 opencode 即可启动。


特性

安装

多种方式安装 OpenCode。

使用 curl

curl -fsSL https://opencode.ai/install | bash

这将安装 OpenCode CLI。

使用 npm

npm i -g opencode-ai

使用 bun

bun add -g opencode-ai

使用 brew

brew install anomalyco/tap/opencode

使用 paru (Arch Linux)

paru -S opencode

桌面应用

您也可以下载桌面应用:

使用 brew 安装桌面应用

brew install --cask opencode-desktop

IDE 扩展

OpenCode 提供以下 IDE 扩展:


验证安装

安装完成后,运行以下命令验证:

opencode --version

如果显示版本号,说明安装成功。

配置

自定义 OpenCode 的行为。

配置文件

OpenCode 使用 JSON 配置文件。您可以在项目根目录创建 opencode.json 文件来进行配置。

基本配置

{
  "provider": "anthropic",
  "model": "claude-3-5-sonnet-20241022",
  "apiKey": "your-api-key"
}

配置文件位置


模型配置

您可以为不同的任务配置不同的模型:

{
  "models": {
    "default": "claude-3-5-sonnet-20241022",
    "fast": "gpt-3.5-turbo",
    "code": "claude-3-5-sonnet-20241022"
  }
}

工具配置

OpenCode 内置多种工具,您可以根据需要启用或禁用:

{
  "tools": {
    "fileOperations": true,
    "terminal": true,
    "codeSearch": true,
    "webSearch": false
  }
}

规则配置

您可以通过规则文件自定义 OpenCode 的行为:

# .opencode/rules.md
- 始终使用 TypeScript
- 遵循 ESLint 规则
- 使用函数式组件
- 优先使用 const 而非 let

主题配置

OpenCode 支持自定义主题,您可以在配置文件中指定:

{
  "theme": "opencode"
}

可用主题包括:opencode、dark、light、monokai 等。


快捷键配置

您可以自定义快捷键:

{
  "keybindings": {
    "submit": "Enter",
    "newLine": "Shift+Enter",
    "clear": "Ctrl+L"
  }
}

使用

多种方式使用 OpenCode。

终端使用

在终端中运行 OpenCode:

opencode

这将启动交互式 TUI 界面。

基本命令

TUI 快捷键


桌面应用

桌面应用提供图形界面,适合喜欢可视化操作的开发者。下载并安装后,您可以:


IDE 扩展

在 IDE 中使用 OpenCode:

VS Code

  1. 打开 VS Code 扩展市场
  2. 搜索 "OpenCode"
  3. 点击安装
  4. 使用 Ctrl+Shift+P 打开命令面板,输入 "OpenCode"

Cursor

Cursor 内置了 OpenCode 支持,无需额外安装。


Web 界面

OpenCode 还提供 Web 界面,您可以在浏览器中使用:

opencode web

这将启动一个本地 Web 服务器,默认地址为 http://localhost:3000


使用技巧

提供商

配置不同的 AI 提供商。

支持的提供商

OpenCode 支持 75+ LLM 提供商,包括:

Anthropic (Claude)

{
  "provider": "anthropic",
  "model": "claude-3-5-sonnet-20241022",
  "apiKey": "sk-ant-..."
}

可用模型:claude-3-5-sonnet-20241022、claude-3-opus-20240229、claude-3-haiku-20240307

OpenAI (GPT)

{
  "provider": "openai",
  "model": "gpt-4",
  "apiKey": "sk-..."
}

可用模型:gpt-4、gpt-4-turbo、gpt-3.5-turbo

Google (Gemini)

{
  "provider": "google",
  "model": "gemini-pro",
  "apiKey": "AIza..."
}

GitHub Copilot

{
  "provider": "github",
  "model": "copilot"
}

需要先使用 opencode auth github 进行授权。

ChatGPT

{
  "provider": "chatgpt",
  "model": "gpt-4"
}

需要先使用 opencode auth openai 进行授权。


本地模型

您可以使用 Ollama 等工具运行本地模型:

{
  "provider": "ollama",
  "model": "codellama",
  "baseUrl": "http://localhost:11434"
}

自定义提供商

您可以添加自定义提供商:

{
  "providers": {
    "custom": {
      "name": "Custom Provider",
      "baseUrl": "https://api.example.com/v1",
      "apiKeyHeader": "Authorization"
    }
  }
}

高级功能

探索 OpenCode 的高级功能。

LSP 支持

OpenCode 支持 Language Server Protocol (LSP),可以为 LLM 提供更准确的代码上下文:

配置 LSP

{
  "lsp": {
    "typescript": {
      "command": "typescript-language-server",
      "args": ["--stdio"]
    },
    "python": {
      "command": "pyright-langserver",
      "args": ["--stdio"]
    }
  }
}

MCP 服务器

Model Context Protocol (MCP) 允许 OpenCode 连接到外部工具和服务:

{
  "mcp": {
    "servers": {
      "filesystem": {
        "command": "mcp-server-filesystem",
        "args": ["/path/to/dir"]
      },
      "database": {
        "command": "mcp-server-database",
        "args": ["--connection-string", "..."]
      }
    }
  }
}

代理技能

OpenCode 支持自定义技能,您可以扩展代理的功能:

# .opencode/skills/deploy.md
---
name: deploy
description: 部署项目到生产环境
---

执行以下步骤:
1. 运行测试
2. 构建项目
3. 部署到服务器

SDK

OpenCode 提供 SDK,您可以将 AI 编程能力集成到自己的工具中:

JavaScript/TypeScript

import { OpenCode } from 'opencode-sdk';

const client = new OpenCode({
  provider: 'anthropic',
  apiKey: 'your-api-key'
});

const response = await client.chat('Explain this code');
console.log(response);

Python

from opencode import OpenCode

client = OpenCode(
    provider='anthropic',
    api_key='your-api-key'
)

response = client.chat('Explain this code')
print(response)

插件系统

OpenCode 支持插件扩展:

{
  "plugins": [
    "opencode-plugin-eslint",
    "opencode-plugin-prettier"
  ]
}

API 参考

完整的 API 参考文档: