Spring-AI 脱离 IDE 的束缚:OpenCode 让 AI 开发回归终端本源

opencode是什么?

在探索了 OpenCode 的各项功能与架构细节后,可以清晰地看到,OpenCode不仅仅是一个简单的代码生成工具,而是一个专为现代开发者设计的、以终端为核心的 AI 编程协作者

OpenCode 的最大魅力在于它找到了灵活性功能性 的完美平衡点:

  1. 极致的终端融合体验 :它生来就是为了终端而设计的。通过原生的 TUI(终端用户界面),OpenCode 让开发者无需脱离熟悉的命令行环境,就能享受 AI 带来的强大能力,将 AI 操作无缝融入到日常的开发工作流中。

  2. 模型无关性与开源自由 :不同于许多闭源的 SaaS 产品,OpenCode 采用创新的客户端-服务器架构,支持多种主流模型(如 GPT、Claude、Gemini 等)甚至本地模型。这种"模型无关性"赋予了你绝对的选择自由,你可以根据任务需求、成本预算或隐私要求,随时切换后端模型。

  3. 强大的扩展生态 :基于 MCP(模型上下文协议)和插件系统,OpenCode 的能力边界被无限拓宽。它不仅能写代码,还能通过自定义工具与你的数据库、API 甚至业务系统进行交互,真正成为一个能执行复杂任务的"智能体",而不仅仅是一个聊天机器人。

  4. 安全与成本的双重掌控:作为一款开源工具,它给予了开发者对数据隐私的完全控制权,敏感代码无需离开本地环境。同时,其灵活的按需付费模式(或本地部署零成本模式),让它在成本效益上远超传统的订阅制软件。

总而言之,如果你是一位:

重度终端用户 ,厌恶在 IDE 和浏览器之间频繁切换;

对代码隐私有严格要求 ,希望数据保留在本地;

追求极致性价比 ,希望自由选择模型提供商;

渴望自动化,希望 AI 能不仅仅是聊天,而是能通过脚本和工具帮你完成实际工作。

那么,OpenCode 无疑是你工具箱中值得立刻尝试的"瑞士军刀"。它代表了 AI 编程工具的一个新方向------开放、灵活且由开发者自己掌控

与Claude Code的区别

专注TUI, 为了把终端变得更强而生

A focus on TUI. OpenCode is built by neovim users and the creators of terminal.shop; we are going to push the limits of what's possible in the terminal.

  • TUIText-based User Interface (基于文本的用户界面)的缩写, "A focus on TUI" (专注于 TUI)
  • Built by neovim users and the creators of terminal.shop
    • Neovim 用户:Neovim 是一个高度可扩展、模块化的文本编辑器,深受极客和高级开发者喜爱
    • Terminal.shop 的创建者Terminal.shop 是一个知名的售卖高质量终端相关数字产品的平台(如主题、教程等)
    • 即opencode懂终端用户的思维,不是为了做 AI 而强行套壳,而是为了真正提升终端开发体验
  • Push the limits of what's possible in the terminal
    • 挑战并拓展终端能力的边界
    • 致力于在终端里实现以前只有在图形界面里才有的复杂功能,让终端变得更强大、更智能,打破大家对"终端只能跑命令"的刻板印象
      OpenCode 是一个为"命令行极客"打造的工具。它的开发者是一群和你一样热爱终端、甚至以此为生的人。他们不满足于现状,决心利用 AI 技术,把终端的能力推向一个新的高度,让你在不离开命令行的情况下,就能享受最先进、最流畅的 AI 编程体验。

即Opencode 是一个 "懂终端、爱终端、为了把终端变得更强而生" 的 AI 编程助手

100%开源,不与任何LLM绑定

  • 推荐通过OpenCode Zen提供的模型;
  • OpenCode可以与Claude、OpenAI、谷歌甚至本地模型一起使用。
  • 随着模型的发展,不同模型之间的差距将会缩小,价格将会持续下降,因此与供应商无关是很重要的。

开箱即用的LSP支持

LSP指 Language Server Protocol(语言服务器协议)

在win11下的LSP Server

  • C:\Users\【用户】\.local\share\opencode\bin\node_modules\.bin目录下的vue-language-serveryaml-language-server都是LSP Server
  • C:\Users\【用户】\.local\share\opencode\bin\jdtls\bin目录下的jdtls.bat

LSP在编辑器和编程语言之间架起了一座通用的桥梁。

编辑器只需要实现 LSP 客户端,语言开发者只需要实现 LSP 服务器。两者通过 JSON-RPC 格式的消息进行通信,就能实现智能代码提示

Opencode内置针对LSP的支持,针对各种编程语言提供智能辅助功能

LSP 主要负责提供代码智能分析能力。当你启用 LSP 支持后,OpenCode 能够为你提供以下核心功能:

功能类别 具体能力 作用
代码诊断 实时错误检查 像拼写检查一样,实时在编辑器中波浪线下划线标出代码语法 错误或潜在漏洞(如未使用的变量)。
代码导航 跳转到定义 按住 Ctrl(或 Cmd)点击函数/变量,直接跳转到其定义处; 查找所有引用位置。
代码编辑 智能补全 根据上下文自动提示可用的变量、函数和类名; 支持代码片段(Snippets)自动插入。
代码重构 重命名/修复 重命名一个变量,所有引用处自动同步更新; 提供"一键修复"建议(如自动导入包)。
文档信息 悬停提示 鼠标悬停在代码上时,显示类型信息、函数参数说明和文档注释。
根据 OpenCode 的相关开发指南,它的 LSP 集成方案还有一些优化特性:
  • 性能优化 : 例如预加载关键配置文件(如 tsconfig.json)、跳过 node_modules 等非源代码目录的扫描,以加速大型项目的服务器初始化过程
  • 多语言支持:
  • AI 辅助增强:OpenCode 未来的发展方向还包括在 LSP 的诊断结果中集成 AI 辅助的代码修复建议,让代码修复更加智能。

采用client/server架构

opencode 采用了前后端分离的设计, client/server架构

  • "计算/处理逻辑" (Server)和 "用户交互界面"(Client)分离,

  • 因为核心逻辑(Server)和界面(Client)是分离的,开发者可以为 OpenCode 开发各种各样的界面

  • Server (服务器端 - OpenCode)

    • 核心大脑,负责处理代码分析、文件读写、运行 LSP(语言服务器协议)、执行命令等繁重任务。
    • 运行在主力电脑(例如运行 Windows/Mac/Linux 的台式机或笔记本)上。
  • Client (客户端 - 移动 App)

    • 用户用来操作和查看结果的界面。
    • 客户端是一个手机 App。它不负责处理复杂的代码逻辑,只负责显示画面和接收你的触摸/点击指令。

如何安装

  • 从github 上下载opencode的最新版本, 如 v1.1.14/opencode-windows-x64.zi
  • 解压,将opencode.exe放在windows的PATH目录下
  • 从powershell 或 IntelliJ IDEA 的 terminal 执行输入opencode即可进入

配置信息

  • C:\Users\用户\.local\share\opencode 数据与插件存储
    • 存放 OpenCode 运行时产生的数据文件下载的模型缓存 以及安装的插件/扩展
      • 插件/扩展: 如特定语言的辅助插件、MCP 服务器
      • 模型缓存
      • 日志文件:
  • C:\Users\用户\.local\share\opentuiTUI 前端资源
    • tree-sitter
  • C:\Users\用户\.config\opencode 配置中心
    • opencode.json 核心配置文件
    • 其他配置:快捷键映射、界面主题设置、历史记录配置等

如何配置本地LLM

可以配置为兼容openai的LLM接口,如CSDN

注意: 目前CSDN提供的接口还不能用哈,因为被Blocked by Cloud WAF拦截了

json 复制代码
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "csdn": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "csdn",
      "options": {
        "baseURL": "https://models.csdn.net",
		"apiKey": "sk-xxxxxxx"
      },
      "models": {
        "deepseek-v3": {
          "name": "Deepseek-V3"
        }
      }
    }
  }
}

常用命令

  • /connect 连接LLM
  • /models LLM列表
  • /init 初始化项目,主要是在项目根目录下产生 AGENTS.md文件 :
  • ask question: 与opencode进行交互,让LLM干活 👨‍🏭,
    • 解释某段代码
    • 优化某个类
    • 写一个具体的功能模块

Agent Skills

Define reusable behavior via SKILL.md definitions

存放位置

为每个技能创建一个文件夹,并在此文件夹内用 "SKILL.md" 文件描述技能信息。

OpenCode搜索这些位置:

  • Project config: .opencode/skill/<name>/SKILL.md
  • Global config: ~/.config/opencode/skill/<name>/SKILL.md
  • Project Claude-compatible: .claude/skills/<name>/SKILL.md
  • Global Claude-compatible: ~/.claude/skills/<name>/SKILL.md

并加载发现的所有技能。

skill文件内容格式

格式要求

Each SKILL.md must start with YAML frontmatter. Only these fields are recognized:

  • name (required) : 64个字符串内,符合^[a-z0-9]+(-[a-z0-9]+)*$
  • description (required): 1024个字符串内,保证清晰、具体,方便LLM能正常的选择
  • license (optional):
  • compatibility (optional)
  • metadata (optional, string-to-string map)

Unknown frontmatter fields are ignored.

示例如下

python 复制代码
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
compatibility: opencode
metadata:
  audience: maintainers
  workflow: github
---

## What I do

- Draft release notes from merged PRs
- Propose a version bump
- Provide a copy-pasteable `gh release create` command

## When to use me

Use this when you are preparing a tagged release.
Ask clarifying questions if the target versioning scheme is unclear.

Tools

管理LLM能用的工具

默认所有工具都能使用,可以在opencode.json配置工具的权限

json 复制代码
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "deny",
    "bash": "ask",
    "webfetch": "allow"
  }
}

内置的工具包括但不限于如下:

  • bash
  • edit
  • write : 创建新文件或覆盖现有文件。
  • read
  • grep
  • glob
  • list
  • lsp: 与已配置的LSP服务器交互,以获得代码智能特性,如定义、引用、悬停信息和调用层次结构。
  • patch: Apply patches to files
  • skill
  • todowrite
  • todoread
  • webfetch: Fetch web content
  • question: Ask the user questions during execution.
    • 用于:
      • Gathering user preferences or requirements
      • Clarifying ambiguous instructions
      • Getting decisions on implementation choices
      • Offering choices about what direction to take
    • Each question includes a header, the question text, and a list of options

注意:

  • Internally, tools like grep, glob, and list use ripgrep under the hood. 会忽略.gitignore中的文件及目录
  • 如果要包含通常会被.gitignore忽略的文件,在项目根目录下创建.ignore文件,示例如下:
  • 可以自定义tool 或 集成 mcp servers
python 复制代码
!node_modules/
!dist/
!build/

Agents

agent是专门的人工智能助手,可以为特定的任务和工作流程进行配置

Agent可以配置自定义的prompt、模型、工具列表

Agent类型

Primary agents

  • 处理您的主要对话,并可以访问所有配置的工具
  • 内置2个:
    • Build: 用于需要完全访问文件操作和系统命令的开发工作。
    • Plan: 用于计划和分析,不能执行文件写操作及Bash脚本

Subagents

  • Primary agents为特定任务调用的专门助手
  • 内置2个:
    • General
      • 用于研究复杂问题、搜索代码和执行多步骤任务的通用代理
      • 在搜索关键字或文件时,如果你不确定在最初的几次尝试中是否能找到正确的匹配,就使用它。
    • Explore
      • 专门用于探索代码库的快速代理
      • 当需要按模式快速查找文件、搜索关键字代码或回答有关代码库的问题时,可以使用此方法

配置

可以为不同的Agent指定不同的LLM及工具

json 复制代码
{
  "$schema": "https://opencode.ai/config.json",
  "agent": {
    "build": {
      "mode": "primary",
      "model": "anthropic/claude-sonnet-4-20250514",
      "prompt": "{file:./prompts/build.txt}",
      "tools": {
        "write": true,
        "edit": true,
        "bash": true
      }
    },
    "plan": {
      "mode": "primary",
      "model": "anthropic/claude-haiku-4-20250514",
      "tools": {
        "write": false,
        "edit": false,
        "bash": false
      }
    },
    "code-reviewer": {
      "description": "Reviews code for best practices and potential issues",
      "mode": "subagent",
      "model": "anthropic/claude-sonnet-4-20250514",
      "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
      "tools": {
        "write": false,
        "edit": false
      }
    }
  }
}

Plugins

编写自己的插件来扩展OpenCode。

如何加载

从本地文件加载

将JavaScript或TypeScript文件放在插件目录中。

  • .opencode/plugin/ - Project-level plugins
  • ~/.config/opencode/plugin/ - Global plugins
    这些目录中的文件在启动时自动加载。

从npm加载

python 复制代码
{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
}

Both regular and scoped npm packages are supported.

Packages and their dependencies are cached in ~/.cache/opencode/node_modules/.

参见: https://opencode.ai/docs/ecosystem#plugins

加载顺序

  1. Global config (~/.config/opencode/opencode.json)
  2. Project config (opencode.json)
  3. Global plugin directory (~/.config/opencode/plugin/)
  4. Project plugin directory (.opencode/plugin/)

Duplicate npm packages with the same name and version are loaded once. However, a local plugin and an npm plugin with similar names are both loaded separately.

相关推荐
码农三叔2 小时前
(8-3-02)自动驾驶中的无地图环境路径探索:D* Lite路径规划系统(2)
人工智能·python·机器人·自动驾驶·路径规划·d star lite
一条闲鱼_mytube2 小时前
智能体设计模式 - 核心精华
人工智能·设计模式
AAA阿giao2 小时前
qoder-cli:下一代命令行 AI 编程代理——全面解析与深度实践指南
开发语言·前端·人工智能·ai编程·mcp·context7·qoder-cli
这儿有一堆花2 小时前
从文本到像素:AI图像生成的底层逻辑解析
人工智能·机器学习·计算机视觉
week_泽2 小时前
第3课:构建AI代理系统面临的挑战 - 学习笔记_3
人工智能·笔记·学习·ai agent
林_学2 小时前
我是如何把应用上线时间从1天缩短到3分钟的
人工智能
钓了猫的鱼儿2 小时前
农作物病虫害目标检测数据集(百度网盘地址)
人工智能·目标检测·目标跟踪
万行2 小时前
机器人系统ros2&期末速通2
前端·人工智能·python·算法·机器学习
qwerasda1238522 小时前
基于改进的SABL Cascade RNN的安全装备检测系统:手套护目镜安全帽防护服安全鞋识别与实现_r101_fpn_1x_coco_1
人工智能·rnn·安全