备注:未经博主允许禁止转载,如有问题,欢迎指正。
个人笔记(整理不易,一起努力~)
笔记目录 :学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客
安装node.js,参考:https://blog.csdn.net/weixin_42717928/article/details/102539758?spm=1001.2014.3001.5501
OpenCode 是一个独立的开源社区驱动项目


输入opencode就能进入界面了

可以看到当前的模型

| 模型名称 | 核心优势 | 短板 | 最适合你的场景 |
|---|---|---|---|
| Big Pickle(默认选中) | OpenCode 官方自研的专属免费模型,和工具的适配性最好,终端输出格式不乱、响应速度最快,延迟最低,专门针对终端编程场景做了优化,轻量代码任务零门槛 | 长上下文能力弱于另外两个,复杂大型项目、超长篇代码的处理能力有限 | 刚上手不知道选哪个、日常写小脚本、单文件代码修改、快速查语法 / 解释代码,新手首选 |
| GLM-5 Free GLM-5 免费 | 智谱 AI 的国产大模型免费版,中文理解能力是三个里最强的,对中文需求、中文注释、中文项目的适配性拉满,基础编程能力在线,对标 GPT-4o 的基础能力 | 极端复杂的底层算法、超大型工程的处理能力不如付费模型 | 中文需求多、要写带中文注释的代码、做中文项目开发,国内用户用着最顺手 |
| Kimi K2.5 Free Kimi K2.5 自由 | 月之暗面的 Kimi 免费版,长上下文能力是三个里的天花板,能轻松处理多文件代码、整个项目分析、超长代码文档,不会出现上下文遗忘、断片的问题 | 响应速度比另外两个慢一点,长文本处理需要更多时间,偶尔会有多余的输出 | 需要分析整个项目代码、处理大段多文件代码、读超长开发文档、复杂多步骤的编程任务 |
可以配置些好点的模型

比如zhipu

质谱AI开放平台:https://bigmodel.cn/usercenter/proj-mgmt/apikeys
创建个密钥输入就行


deekseek也行:https://platform.deepseek.com/api_keys

我在第二次安装openai的时候遇到光标一直在加载,很长时间没有没出反馈
关掉了卡住的 npm 进程,旧进程卡住时,可能在缓存里留下了损坏的文件,先清掉
开新终端执行新命令执行
npm cache clean --force
然后执行
npm i -g opencode-ai --registry=https://registry.npmmirror.com --verbose
拿到日志后查了下,是成功的,但是不清楚为什么一直显示加载
再次检查,看起来没问题:

比如写一首诗


比如我@一个pdf

可以看到模型是不支持的

去这里下skill anthropics/ˈænθrəpɪks/
https://github.com/anthropics/skills
这里注意:
opencode 作为一个独立应用,它的用户数据目录(缓存、配置、技能等)遵循 XDG 标准
C 盘的 opencode 目录是它的默认数据存储位置,比如在.cache,.local,.config
我不想数据在C盘占用空间,可以这样改
在你希望的目录下新增四个子文件夹:
config(存配置文件)data(存技能、数据)cache(存缓存)state(存运行状态)- 最终目录结构如:
F:\gameTest\ai\opencode\config、F:\gameTest\ai\opencode\data、F:\gameTest\ai\opencode\cache、F:\gameTest\ai\opencode\state
在「用户变量」中点击「新建」,添加以下 4 个环境变量
| 变量名 | 变量值 |
|---|---|
XDG_CONFIG_HOME |
F:\gameTest\ai\opencode\config |
XDG_DATA_HOME |
F:\gameTest\ai\opencode\data |
XDG_CACHE_HOME |
F:\gameTest\ai\opencode\cache |
XDG_STATE_HOME |
F:\gameTest\ai\opencode\state |
清理 C 盘旧数据(彻底释放空间)
删除 C 盘旧配置
rmdir /S /Q "C:\Users\Administrator\.config\opencode"
删除 C 盘旧数据/技能
rmdir /S /Q "C:\Users\Administrator\.local\share\opencode"
删除 C 盘旧缓存
rmdir /S /Q "C:\Users\Administrator\.cache\opencode"
删除 C 盘旧状态
rmdir /S /Q "C:\Users\Administrator\.local\state\opencode"

可以看到有我们需要的pdf技能

我这里把整个技能(上面图的全部目录)复制到这里(全局),自己创建个skills目录即可


注意:
创建「项目内技能」目录(只在当前目录生效),如.agents\skills\、.claude\skills\、.opencode\skills\ 这几个目录,是因为它们默认不存在 ,需要你自己手动创建,这几个目录是 OpenCode 用来加载「项目内技能」的约定位置
项目目录:
./.opencode/skills/<技能名>/SKILL.md./.claude/skills/<技能名>/SKILL.md./.agents/skills/<技能名>/SKILL.md
F:\gameTest\ai\opencode\.opencode\skills\F:\gameTest\ai\opencode\.claude\skills\F:\gameTest\ai\opencode\.agents\skills\
全局目录:
~/.config/opencode/skills/<技能名>/SKILL.md~/.claude/skills/<技能名>/SKILL.md~/.agents/skills/<技能名>/SKILL.md
F:\gameTest\ai\opencode\config\opencode\skills\(重点!只需要管这个就行)F:\gameTest\ai\opencode\config\claude\skills\(几乎不用)F:\gameTest\ai\opencode\config\agents\skills\(几乎不用)
关键:~ 在 Windows 里本来是 C 盘的用户目录(C:\Users\Administrator),但你设置了 XDG_CONFIG_HOME=F:\gameTest\ai\opencode\config,所以 ~/.config/ 就等于 F:\gameTest\ai\opencode\config\,OpenCode 不会再去 C 盘翻了
注意:如果在 F:\gameTest\ai\opencode\.opencode\skills\(项目内)和 F:\gameTest\ai\opencode\config\opencode\skills\(全局)都放了「技能 1」时,项目内的技能 1 会覆盖全局的技能 1------OpenCode 会优先用项目内的版本,全局的版本会被 "屏蔽",只有删掉项目内的技能 1,才会用到全局的

- 仅对当前目录生效 :如果你切换到其他目录(比如
F:\gameTest\)启动 OpenCode,此时「项目内工具箱」变成F:\gameTest\.opencode\skills\(这个目录里没有技能 1),OpenCode 就会用全局的「技能 1」。
OpenCode 会先找 F:\gameTest\.opencode\skills\(当前目录的项目内目录),但这个目录不存在;
接着加载全局的 F:\gameTest\ai\opencode\config\opencode\skills\技能1(功能 B);
原 opencode 目录下的 "技能 1(功能 A)" 不会被加载(因为不是当前工作目录的项目内目录)

- 同名才会覆盖,不同名互不影响:比如项目内有「技能 1」,全局有「技能 2」,OpenCode 会同时加载这两个技能,不存在覆盖;只有名称完全一样的技能,才会触发 "项目内覆盖全局" 的规则
- 其他盘(比如 D 盘、E 盘) 打开工作目录,OpenCode 依然遵循「项目内技能优先、全局技能兜底」的规则 ------ 只是 "项目内技能" 的查找范围变成了其他盘的当前工作目录 ,而全局技能始终固定在你设置的
F:\gameTest\ai\opencode\config\opencode\skills\,不会随盘符变化
注意:open从当前工作目录向上查找,直到找到 Git 仓库根目录
- 向上查找 = 找 "上级文件夹"(比如
F:\gameTest\ai\opencode\src的上级是F:\gameTest\ai\opencode\,再上级是F:\gameTest\ai\); - Git 仓库根目录 = 包含
.git文件夹的目录(.git是 Git 初始化后自动生成的隐藏文件夹)
场景 1:当前目录无 Git,向上找也没 Git(你现在的情况)

- 如果你打开的是
F:\gameTest\ai\opencode\src\test\(孙目录): - Step1:先查
test\.opencode\skills\(当前目录)→ 无; - Step2:向上找上级
src\.opencode\skills\→ 无; - Step3:再向上找
opencode\.opencode\skills\→ 你的项目内技能目录; - Step4:继续向上找
ai\.opencode\skills\→ 无; - Step5:再向上找
gameTest\.opencode\skills\→ 无; - Step6:直到顶级目录都没
.git,停止查找; - 最终:只加载
opencode\.opencode\skills\里的技能(你手动建的)
场景 2:当前目录向上找到 Git 仓库根目录

- 如果你打开的是
F:\gameTest\ai\opencode\src\test\(孙目录): - Step1:查
test\.opencode\skills\→ 无; - Step2:向上找
src\.opencode\skills\→ 无; - Step3:向上找
opencode\.opencode\skills\→ 找到,且发现opencode\有.git(Git 根目录); - Step4:停止查找(不会再往上找
ai\或gameTest\); - 最终:只加载
opencode\.opencode\skills\里的技能(Git 根目录下的),不会查更上层的目录
场景 3:Git 目录在更上层

- 你打开
F:\gameTest\ai\opencode\: - Step1:查
opencode\.opencode\skills\→ 找到技能 1; - Step2:向上找
ai\.opencode\skills\→ 无; - Step3:向上找
gameTest\.opencode\skills\→ 找到技能 2,且发现gameTest\有.git;Step4:停止查找; - 最终:加载
opencode\的技能 1 +gameTest\的技能 2(Git 根目录内的所有项目内技能)