加载中...

从零开始搭建 AI 环境


0x00 背景

这是一个 AI 横行的时代,但很多人对 AI 的认知仍停留在「打开 ChatGPT 一问一答聊天」这个层面。

大家都知道 AI 很强,也隐约感觉它应该能参与工作、学习和生活里的具体场景,但真要落到自己的电脑、自己的流程、自己的数据上,却往往不知道第一步该从哪里开始。

与此同时,各大媒体平台每天都在抛出一堆新名词:Claude、OpenCode、Agent、Skill、MCP、FastGPT、LLM、RAG、小龙虾……它们究竟是什么?能解决什么问题?彼此之间是什么关系?如果只靠自媒体或短视频来理解,最后大概率只会得到一锅夹生饭 —— 名词听过不少,原理一窍不通。

其实本质概念不多,大多数新概念只是某一层概念上的迭代。

本文将抛弃那些花里胡哨的东西,从零开始,把搭建 AI 环境这件事讲清楚,让不管是文科还是理科背景的同学,都能在自己的电脑上跑起来一套实用的 AI 工具链。

本文不是 OpenClaw/小龙虾 部署教学。在我看来,它只是一个被媒体包装出来的概念,一个不成熟、不安全、不可信的半成品。AI 发展太快,媒体又擅长放大个体被时代淘汰的焦虑,于是这只恰好被风口吹起来的「毒虾」就有了流量。但等你真正理解并搭建出自己的 AI 环境后,会发现所谓的小龙虾并没有什么神秘之处 —— 它不过是用这些工具临时拼出来的、粗制滥造的产物罢了。

0x10 先旨声明

从客观的技术现状来看,在大部分 AI 应用场景里,海外模型、工具链和生态成熟度仍然领先于国内。

这不是立场站队,而是工程事实:谁的模型能力更强、工具更稳定、生态更完整,谁就更值得学习使用。

因此,本文后续介绍的 AI 工具、模型服务和相关文档,很多都需要能够科学上网才能获取或使用。建议先参考《trojan 睁眼看世界教程》或通过其他方式,确保你的电脑可以访问境外网站。否则很多步骤会卡在下载、登录、鉴权或 API 调用上,后面的内容也就无从谈起。

我一直认为技术无国界,但技术优势从来不会自动流向落后者。别人掌握更好的工具、更强的模型和更完整的生态时,封锁与壁垒就是很自然的结果。与其被某些假爱国口嗨的自媒体道德绑架/遮蔽认知,不如脚踏实地去学、去用、去追赶 —— 「师夷长技以制夷」,才是今时今日的唯一出路。

0x20 基础环境安装

在开始部署 AI 环境之前,需要先安装两个基础环境:

  • Node.js: 用于运行部分 AI Agent 生态
  • Python3: AI 交互操作的万能粘合剂

0x30 AI 环境演进

乍看之下,这几年 AI 生态日益繁杂,但 AI 环境的本质,就一条从「本地入口」到「上游模型」的调用链。

截至目前,这个调用链大体经历了 4 个演进阶段:

阶段 架构变化 原因
本地 Agent 直连大模型 用户使用 AI 的最简单结构,链路短、理解成本低
引入大模型网关 上游模型越来越多,需要统一 Key、计费、模型名和接口协议
引入 CC-Switch 不同 Agent 的配置方式不同,频繁切换模型和 Provider 很麻烦
引入 Skill 重复任务需要沉淀成可复用能力,减少随机输出和 Token 浪费

这四个阶段没有严格的时间线,而是 AI 从简单到复杂、从能用到好用的自然演进路径。

下文会按这个演进顺序展开:

  1. 先安装 Agent,让 AI 能在本地跑起来
  2. 再引入大模型网关,解决多模型接入问题
  3. 然后处理模型切换和配置管理
  4. 最后再谈 Skill,把重复任务沉淀成稳定能力

0x40 AI Agent

0x41 为什么是 Agent

在以 ChatGPT 为代表的网页对话式 AI 出现之后不久,大家很快就意识到一个问题:仅能网页对话的交互方式极大地限制了 AI 的真正能力。

网页对话交互适合问答和写作,但不适合深度参与本地工作流。而我们需要的是真正的工程化使用、让 AI 能读取本地项目上下文、调用本地工具,甚至直接修改代码和文件。

最早的本地调用方式是直接使用 OpenAI 这类厂商提供的 API 接口。大模型 API 的出现,意味着 AI 开始从「网页产品」进入「工程组件」阶段,可以被程序调用、集成和自动化。

但 API 本身并不适合普通用户。它要求用户理解接口、鉴权、请求参数、上下文管理和工具调用,大部分人还没开始用 AI 就被拦在门外了。

于是 Agent 出现了。

所谓的 Agent 可以理解为「用户(你)和大模型之间的操作入口」。它不仅是一个聊天窗口,而且是一个能读取上下文、调用工具、修改文件、执行命令,并把结果反馈给模型继续推理的本地执行器。

此时,只要本地安装一个 AI Agent,AI 就可以直接通过 Agent 参与本地工作。它不再只是回答问题,而是开始具备「动手能力」。

于是,为了抢占用户入口,各大模型厂商都先后推出自己的专用 Agent:

大模型 提供商 Agent 擅长处理场景
Claude Anthropic Claude Code 编码
Gemini Google Gemini CLI 视觉效果(图像等)
GPT OpenAI Codex 通用

为了便于初学者理解,本文从广义上认为 Agent = Claude Code / Gemini CLI / Codex / ...。实际上他们都是一个整合了 Agent + Skill + MCP 的 Harness 工程 … —— 详见文末的 FAQ

0x42 安装 Agent

前面提到的 Claude Code、Gemini CLI、Codex 等 Agent,都深度绑定了自家的模型生态,好处时毋须配置开箱即用。

如果只是体验某一家模型,这当然没问题。但真实工作场景往往更复杂:编码场景用 Claude,图像处理场景用 Gemini,通用场景用 GPT。而为了切换模型而切换 Agent,不仅操作成本高,还要不断重新交代项目背景和上下文,就有点低效了。

有没有一种 Agent,既能保留工作区和会话上下文,又能按场景自由切换不同模型?

有,OpenCode 就是一个比较合适的选择。它是开源 Agent,不强绑定某一家模型生态,也更适合作为个人 AI 环境的统一入口。

首先去官网下载并安装桌面版 OpenCode Desktop

装完后运行,你会得到这样的操作界面:

界面布局主要有三栏(如果没有就点一下右上角布局切换按钮):

  1. 左栏:选择工作区目录(Agent 默认可访问的本地目录),以及基于该工作区的会话列表
  2. 右栏:当前工作区的文件目录树
  3. 中栏:与 Agent 对话的操作窗口,底部可以切换 AI 大模型,这也是后续最常用的核心操作区

0x43 购买 AI 大模型

Agent 只是入口,现在希望 OpenCode 可以调用 DeepSeek 大模型,则需要在 DeepSeek 开放平台购买 API 调用额度。

首先注册并登录 DeepSeek 开放平台,充值 10 元即可:

然后进入 API Keys 页面创建一个 API Key 并保存好备用。

至此,你就拥有了调用 DeepSeek 大模型的使用资格。

注意 API Key 就是调用大模型的钥匙,不要泄露给任何人。别人拿到你的 Key,就可以直接消耗你的余额。

也别再纠结本地私有化部署大模型了。现在几乎所有好用的大模型都要付费,差别只是按量付费还是包月付费。私有化部署看似免费,实际性价比往往最低 … —— 详见文末 FAQ

0x44 配置 AI 大模型

购买模型额度之后,下一步就是把 DeepSeek 配置到 OpenCode 里。

回到 OpenCode,依次点击左下角的 设置 -> 提供商/Provider -> 查看更多提供商 -> 搜索 DeepSeek -> 输入前面创建的 API Key:

保存后,OpenCode 会通过这个 API Key 自动拉取 DeepSeek 支持的模型列表。

接着继续配置模型显示列表:依次点击 设置 -> 模型/Model -> 搜索 DeepSeek,筛选出 DeepSeek 模型。

点击模型后面的开关,可以控制该模型是否显示在界面底部的模型切换列表中:

不难注意到,DeepSeek 模型后面还有 Low、Medium、High、Max 这样的选项。它们对应的是推理强度 variant

  • Low:几乎不推理,直接输出,速度最快
  • Medium:适度推理,平衡速度与质量
  • High:深度推理,适合复杂逻辑
  • Max:最大推理预算,最慢但思考最充分

并不是所有模型都支持配置 variant,但对于支持的模型来说,它会直接影响推理质量、响应速度和费用。

一般情况下,推理强度越大,输出质量越高,但消耗的 输出 token 也越多,费用自然也更高。所以到底选择 Low、Medium 还是 Max,本质是在质量、速度、费用之间做取舍。

日常简单问答用 Low 或 Medium 就够了;涉及复杂代码分析、方案设计、长上下文推理时,再考虑 High 或 Max。

0x45 token 如何计费

这里插入一个所有初学者都关心的问题:AI 到底是怎么收费的?

在 DeepSeek 官方的 产品定价 页面,可以看到当前支持模型的计费信息:

deepseek-v4-flash 模型为例,价格表里通常会出现三类费用:

计费项 含义 单价
输入 token(缓存命中) 重复上下文被缓存复用 0.02 元 / 百万 tokens
输入 token(缓存未命中) 新输入的上下文内容 1 元 / 百万 tokens
输出 token 模型生成的回答内容,包含推理消耗 2 元 / 百万 tokens

最坏情况下,假设输入完全没有命中缓存,那么每百万 tokens 的成本大约就是:

输入 1 元 + 输出 2 元 = 3 元 / 百万 tokens

这里面隐含了两个影响费用的关键变量:

  • 推理强度 variant(烧钱):影响 AI 在生成最终回答之前的内部思考深度,这部分消耗通常会计入输出 tokens
  • 缓存命中 Cached(省钱):同一个会话中,历史上下文、固定提示词、长文档内容如果被复用,就可能命中缓存,从而降低输入成本

每百万 tokens 又是什么意思?

token 是模型处理文本的基本单位,可以理解为一段文字被拆分后的最小片段。

具体拆分方式取决于模型的分词算法(Tokenizer),例如:

  • 英文:1 个 token 大致接近 1 个单词或标点,例如 Hello, world! 可能被拆成 ["Hello", ",", "world", "!"]
  • 中文:1 个 token 大致接近 1-2 个汉字或词语,例如 你好,世界! 可能被拆成 ["你", "好", ",", "世界", "!"]

为了方便理解,可以粗略认为:100 万 tokens 大约相当于 50-80 万字中文文本,差不多是一本长篇小说的体量:

  • 《三国演义》约 64 万字
  • 《红楼梦》约 73 万字
  • 《西游记》约 82 万字
  • 《水浒传》约 96 万字

也就是说,在最坏计费情况下,你和 AI 合作处理一本《西游记》体量的文本,成本大概也就几块钱。

0x46 安装 CLI

OpenCode Desktop 已经足够普通用户使用了,但如果你是开发人员,最好再安装 CLI 版本。

原因很简单:桌面版适合可视化操作,CLI 更适合嵌入真实工作流。比如在项目目录里直接启动 Agent、配合终端执行命令、让 AI 读写当前工程文件,这些都是 CLI 更顺手。

最简单的安装方式,是直接让 OpenCode Desktop 帮你安装。在对话框里输入:

帮我安装 opencode 命令行

因为前面已经安装过 Node.js,所以 Desktop 本质上只是帮我们执行下面这条命令:

npm i -g opencode-ai

安装完成后,打开系统终端并输入 opencode,即可进入 OpenCode CLI:

CLI 的基本操作是:

  • 直接输入任意内容:和大模型对话
  • 输入 /models:切换大模型
  • 连续按下 Tab:切换 Agent 角色(默认只有 Plan / Build)
  • 输入 /exit:退出 CLI

Agent 角色默认只有 Plan / Build,可以粗略理解为任务拆解时的自动分工:Plan 负责分析和规划,Build 负责执行和修改。后续也可以通过安装 oh-my-openagent 扩展更多角色 … —— 详见文末 FAQ

0x47 配置 OpenCode

OpenCode CLI 的全局配置文件路径如下(如果不存在就手动创建):

  • 绝对路径:%USERPROFILE%/.config/opencode/opencode.json
  • 相对路径:~/.config/opencode/opencode.json

Desktop 和 CLI 共用同一份全局配置

最简单的 DeepSeek 配置如下:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "deepseek": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://api.deepseek.com/v1",
        "apiKey": "sk-xxxxxxxxxxxxxx",
        "setCacheKey": true
      },
      "models": {
        "deepseek-v4-pro": {
          "name": "DeepSeek V4 Pro(按量|文本)"
        },
        "deepseek-v4-flash": {
          "name": "DeepSeek V4 Flash(按量|文本)"
        }
      }
    }
  }
}

其中几个关键配置项的含义如下:

配置项 说明
provider.deepseek 自定义 Provider 名称,后续用它标识 DeepSeek
npm 使用 OpenAI 兼容协议适配器
baseURL DeepSeek API 地址:https://api.deepseek.com/v1
apiKey 在 DeepSeek 创建的 Key,例如 sk-xxxxxxxxxxxxxx
models 暴露给 OpenCode 使用的模型列表
setCacheKey 开启缓存 Key,有助于复用上下文缓存

这些配置信息都可以在模型提供商的官网找到(如 DeepSeek 在 产品定价 页面)。尤其注意不同平台的模型名经常会变,配置时应以官方文档为准。

初学者可能现在看不懂某些配置项,譬如 @ai-sdk/openai-compatible 是什么意思?但是没关系,先按照这个配置格式复制使用即可,后面我们介绍 cc-switch 时会详细说明。

配置好 opencode.json 后,重启 CLI / Desktop,OpenCode 就会自动重载配置。

到目前为止,我们已经完成了 第一阶段:安装本地 Agent,并让它直接调用大模型。

现在可以回到 Desktop,随便打开一个本地目录,然后选择 DeepSeek 大模型,让 AI 试着读取文件、修改文件、执行命令,感受一下 Agent 和网页聊天机器人的区别:它不是只会回答问题,而是已经开始具备本地操作能力。


0x50 大模型网关

前面介绍的只是最简单的一条链路,虽然它足以覆盖日常编码、写作、资料整理和简单自动化任务。

但是随着深入使用 AI,你会发现 DeepSeek 已经满足不了你了。

复杂的工作场景驱使你订阅了 ChatGPT、Claude、Gemini 等,但是前面说过,这些大模型互相不兼容打通 :

  • 不同厂商接口协议不同,Agent 需要单独适配
  • 模型名、版本、价格分散在各平台,难以统一管理
  • 每个厂商一个 API Key,同样也是管理麻烦

有没有方法屏蔽它们的差异性,统一配置到 OpenCode 供随时切换模型调用呢?

有的,大模型网关 new-api 就是很好的解决方案。

大模型网关位于 Agent 和模型之间,对外提供统一的 OpenAI 兼容接口,对内路由到不同厂商的上游模型。

使用的时候,只需要管理一个 Key 和一个 Base URL,剩下的由网关处理即可。

0x51 部署 new-api

使用 Docker 部署:

docker run -d --name new-api \
  -p 3000:3000 \
  -v $(pwd)/data:/data \
  calciumion/new-api:latest

启动后访问 http://localhost:3000,默认管理员账号为 root,密码为 123456,首次登录后建议立即改密。

0x52 配置模型渠道

登录后进入「渠道」页面,添加你的模型 API。以 DeepSeek 为例:

配置项
类型 DeepSeek
API Key 之前购买的 DeepSeek Key
模型 deepseek-chat

添加后,new-api 会自动生成一个本地统一 API 端点:http://localhost:3000/v1

0x53 配置 Key 与令牌

在「令牌」页面创建一个新令牌,设置额度、模型权限和过期时间。生成后的令牌 Key 就是你的统一 Key。

现在,所有 Agent 只需配置为:

Base URL: http://localhost:3000/v1
API Key: <new-api 令牌>

即可通过 new-api 访问已添加的所有模型。

下图展示了网关在调用链中的位置:


0x60 cc-switch

网关解决了多模型接入问题,但还有一个痛点没有处理:Agent 切换模型时需要修改配置

比如你同时使用 Claude Code 和 OpenCode,它们各自的配置文件格式不同(Claude 用 settings.json,OpenCode 用 opencode.json),模型名定义也可能不一致。每次想换个模型,要么改网关配置,要么改 Agent 配置,很烦。

CC-Switch 就是来解决这个问题的:它统一管理各个 Agent 的 model/provider 配置,让你只需要在一个地方修改就能同时影响所有 Agent。

0x61 安装 cc-switch

npm install -g cc-switch

安装后,执行 cc-switch init 会在用户目录生成配置文件 ~/.cc-switch/config.json

0x62 配置规则

假设你有以下场景:日常开发用 DeepSeek(便宜、够用)、需要复杂推理时切到 Claude。在 cc-switch 里配置:

{
  "default": "deepseek-chat",
  "providers": {
    "deepseek": {
      "baseURL": "http://localhost:3000/v1",
      "apiKeyEnv": "CC_API_KEY"
    },
    "claude": {
      "baseURL": "http://localhost:3000/v1",
      "apiKeyEnv": "CC_API_KEY"
    }
  },
  "models": {
    "deepseek-chat": { "provider": "deepseek" },
    "claude-sonnet-4": { "provider": "claude" }
  }
}

这是说 OpenCode 的默认模型是 deepseek-chat,但如果你在任务描述中指定了 claude-sonnet-4,CC-Switch 会自动帮你切换到对应 Provider,而 OpenCode 本身不需要做任何修改。

切换模型时只需:

cc-switch use claude-sonnet-4

所有 Agent 生效。

0x63 与网关配合

CC-Switch 和 new-api 不是二选一的关系。两者可以串联:

Agent → CC-Switch → new-api → 上游模型

CC-Switch 负责模型切换和路由策略,new-api 负责统一接口协议和 Key 管理。各司其职。

下图展示 CC-Switch 在调用链中的位置:


0x70 AI Skill

前三阶段解决的都是「让 AI 能跑起来、能接不同模型、能方便切换」的问题 —— 这是入口层面的问题。

但还有另一个问题:AI 在重复任务上缺乏积累

同样是写博客文章,你每次都要告诉 Agent「用 markdown、front matter 格式是 title/date/categories/tags/summary/img/」;同样是代码审查,你每次都要提醒它「检查 SQL 注入、XSS、权限控制」。这些上下文不会自然沉淀下来,每次对话都是从头开始。

Skill 就是来解决这个问题的。

Skill 本质上是一份结构化的指令集,包含了特定任务的目标、规则、约束和流程。安装一个 Skill 后,Agent 在遇到该任务时能自动加载对应上下文,不需要你再重复交代。

粗暴理解三者的关系:

概念 类比
Agent QQ(执行器)
Skill QQ 邮箱插件(能力扩展)
MCP 插件调用的系统 API(文件读写、网络请求等)

0x71 Skill 目录结构

以 OpenCode 为例,一个 Skill 通常放在 ~/.config/opencode/skills/ 下,目录结构如下:

skills/
├── skill-name/
│   ├── SKILL.md      # 必选,Skill 定义文件
│   └── scripts/      # 可选,辅助脚本
│       └── check.sh

0x72 编写一个简单的 Skill

创建一个博客写作 Skill:

~/.config/opencode/skills/blog-writer/SKILL.md

# Blog Writer Skill

## 职责
撰写 exp-blog.com 博客文章,遵守 0x00 十六进制章节编号规范。

## 规则
1. 使用 front matter 格式:title/date/categories/tags/summary
2. 章节用 0x00 → 0x10 → 0x20 编号
3. 结论前置,依据紧跟
4. 不写废话注释
5. 涉及配置/命令需提供可直接执行的示例

## 上下文路径
- 博客文章目录: /path/to/source/_posts
- 图片资源目录: 与文章同名的子目录

安装后,在 OpenCode 中执行博客写作任务时,Agent 会自动加载这个 Skill 的规则,不需要你再重复交代格式要求。

0x73 使用现有 Skill(Skill Marketplace)

社区已经沉淀了大量可复用的 Skill,覆盖编码规范、代码审查、安全审计、文档写作、测试生成等场景:https://opencode.ai/zh/skills

安装方式也简单 —— 在 OpenCode 的 Skill 面板搜索并一键安装,也可以通过 CLI 直接拉取:

# 在 OpenCode 搜索 "code-review" 并安装
# 或在 Terminal 执行
cat << 'EOF' | opencode -
安装一个 code-review skill
EOF

社区 Skill 可以直接使用,也可以 fork 后按自己的需求调整。

下图展示了 Skill 在调用链中的定位:

0xF0 FAQ

0xF1 什么是 Harness 工程

OpenCode 官方文档里提到它是一个 Harness 工程。这听起来抽象,但拆开看就很直观——

Harness 的意思是「整合框架」或「背带系统」。OpenCode 本身不是单纯的 Agent,而是把三个核心能力整合在一起的框架:

组件 作用 类比
Agent 与大模型的对话入口,负责推理、工具调用、文件操作 你电脑上的操作员
Skill 可复用的任务指令集,封装特定场景的知识和流程 操作员的操作手册
MCP (Model Context Protocol) 标准化的工具调用协议,让 Agent 可以调用本地或远程服务 操作员用扳手还是螺丝刀的标准接口

把这三个东西放在一起,你不需要分别安装 Agent、Skill 管理器和 MCP 客户端,OpenCode 直接给你一个整合好的环境。这就是 Harness 的意思。

一个类比:Chrome 浏览器本身是一个 Harness —— 它整合了标签页管理、书签同步、V8 引擎、扩展系统(类比 Skill)和 Web API(类比 MCP)。你不需要分别安装这些东西,打开 Chrome 就全有了。

0xF2 为什么不推荐个人私有化部署大模型

很多人觉得「大模型能本地跑就免费了,何必买 API」,这个想法坑过不少人。原因有几个:

1. 硬件成本远高于 API 费用

一个能流畅运行 7B 模型(比如 DeepSeek-Coder-7B)的 GPU 至少要 8GB 显存,跑 70B 模型需要 80GB+。一张消费级显卡动辄大几千,而 API 按量付费,轻度使用一个月花不了几十块。

2. 性能差距巨大

同参数规模下,本地部署的开源模型和云端商用模型的能力不在一个量级。DeepSeek-V3、Claude-4、GPT-4o 这些顶级模型,本地根本跑不动。

3. 维护成本

本地模型需要自己管理模型文件更新、依赖版本、GPU 驱动等。云 API 则完全不需要。

4. 用电噪音

GPU 满载功耗两三百瓦,跑一天的电费够调很多次 API 了。

唯一适合本地部署的场景:数据敏感且必须离线(比如医疗、金融内部数据),或者你纯粹想学习模型原理。否则,买 API 永远是最划算的选择。

0xF3 Agent 与 skill 与 MCP 的关系

用一个真实的工作流来理解:

你对 OpenCode 说:「审查这个项目根目录下的代码安全性。」

  1. Agent 收到指令,理解任务意图
  2. Skill 被触发 —— 自动加载「代码安全审查」Skill,其中定义了检查规则:SQL 注入、XSS、硬编码密钥、越权接口……
  3. Agent 按 Skill 指令工作,需要读取文件时通过 MCP 调用 read_file 工具,需要搜索时调用 grep_search 工具
  4. 结果汇总给模型推理,输出审查报告

三者协作完成了一次完整的安全审查。没有 Skill,Agent 不知道要检查什么;没有 MCP,Agent 无法操作本地文件;没有 Agent,Skill 和 MCP 无人驱动。

这也是为什么 OpenCode 被称为 Harness —— 它把这套协作机制打包好了。


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
 本篇
从零开始搭建 AI 环境 从零开始搭建 AI 环境
从 AI 工具链的基本认知出发,梳理 Agent、模型网关、模型切换与 Skill 的演进关系,并从基础依赖开始搭建一套可用、可理解、可继续扩展的本地 AI 环境。
2026-05-05
下一篇 
如何使用 AI 一键规划旅行行程 如何使用 AI 一键规划旅行行程
春节带家人自由行,最怕的不是人多,是“没攻略还订不到房”。用 AI 一条提示词出攻略,一键导入手机随时打开,地图路线行程预算清清楚楚,从此旅行再也不用担心迷路了呢 ~
2026-01-02
  目录