4 个免费模型随便选,零配置,opencode 这点对新手太友好了,而且还是一个绝佳的Agent开发学习资源

opencode 是一个对新手非常友好的 AI 编程工具:

  • 自带免费的大模型可用

  • 零配置上手,在项目目录里直接使用

  • 开源,能直接看源码,对想学 Agent 的人来说,也是一份非常不错的学习资料

最近看到很多人都在推荐 opencode。我自己其实已经用习惯了 claude codecodex,本来不打算折腾新的工具。但架不住推荐的人实在太多,还是试了一下……结果现在我也想推荐它了。


安装

安装非常简单,一行命令就可以。

1
2
3
4
5
# 如果已经安装了 node 和 npm,可以用下面这个命令
npm i -g opencode-ai

# 或者使用安装脚本(两种方法二选一)
curl -fsSL https://opencode.ai/install | bash

使用

进入你的目标项目目录,直接输入 opencode 命令即可启动。

我这里以它自己的代码仓库为例:


选择免费模型

在对话框输入 /models,会弹出选择模型的页面。

opencode 免费模型

可以看到有 4 个免费模型可选。

我个人更推荐:GLM-4.7MiniMax M2.1

接下来就可以开始正常使用了。


顺手“反向学习”:看看它自带了哪些 tools

我的第一个问题是:

opencode 有哪些自带的 tools 可以用? (是不是有点“原汤化原食”的感觉……)

opencode 作为一个 AI Coding Agent,通常会内置一批常用工具,用来完成文件读写、命令执行、检索、项目分析等任务。
它给出的 tool 列表如下:

opencode tools

顺便说一下,open code这个配色我还挺喜欢的

从这个列表基本能看出来:常见的工具能力它都已经配齐了。

如果你对某一个 tool 的实现细节感兴趣,还可以继续追问,让它带你定位到对应源码,顺着读下去会很快。


用它当“学习资料”:让 opencode 给你一份 Agent 学习路线

更有意思的是,你甚至可以让 opencode 结合自身来给你制定学习计划,比如:

opencode 是一个优秀的 AI agent,我想学习,尤其是怎么设计一个 agent,请你结合 opencode 的功能、架构和代码为我制定一个学习计划

它会输出一份类似这样的学习规划:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
OpenCode Agent 学习计划
📚 阶段一:核心架构理解(1-2周)
1.1 整体架构概览
学习目标:理解 OpenCode 的分层架构
├── Core Layer (核心层)
│ ├── Agent System (agent.ts) - Agent 定义和配置
│ ├── Session Management (session/) - 会话状态管理
│ ├── LLM Integration (llm.ts) - LLM 流式交互
│ └── Tool System (tool/) - 工具注册与执行
├── Tool Layer (工具层)
│ ├── File Tools (read/write/edit/glob/grep)
│ ├── Execution Tools (bash/batch)
│ └── Intelligence Tools (websearch/codesearch/task)
└── Permission Layer (权限层)
└── permission/next.ts - 细粒度权限控制
学习路径:
1. 阅读 packages/opencode/src/agent/agent.ts - 理解 Agent 定义系统
2. 阅读 packages/opencode/src/session/processor.ts - 理解消息处理流程
3. 阅读 packages/opencode/src/tool/registry.ts - 理解工具注册机制
核心概念:
- Agent 模式:primary/subagent/all 三种模式
- 工具定义:使用 Tool.define() 声明工具
- 权限系统:基于规则 (ruleset) 的权限评估
🔧 阶段二:工具系统深入(2-3周)
2.1 工具接口设计
// 标准工具结构 (tool/tool.ts)
interface Tool.Info<Parameters, Metadata> {
id: string
init(ctx?: InitContext): Promise<{
description: string
parameters: z.ZodType
execute(args, ctx): Promise<{ title, metadata, output }>
}>
}
2.2 现有工具分析
| 工具 | 文件 | 功能 | 学习重点 |
|------|------|------|----------|
| bash | bash.ts | 执行命令 | 权限控制、安全执行 |
| read | read.ts | 读取文件 | 错误处理、权限 |
| edit | edit.ts | 编辑文件 | 精确修改、备份 |
| grep | grep.ts | 代码搜索 | 高性能搜索 |
| glob | glob.ts | 文件匹配 | 模式匹配 |
| task | task.ts | 子 agent | 代理模式 |
实践任务:
1. 分析 3 个工具实现,理解通用模式
2. 为现有工具添加新功能(如 read 增加行号)
3. 编写一个新工具(如 json 格式化工具)
🧠 阶段三:LLM 集成与流式处理(2周)
3.1 流式处理架构
packages/opencode/src/session/processor.ts
LLM.stream()
→ streamText(ai SDK)
→ fullStream 事件流
├── text-delta: 文本更新
├── tool-call: 工具调用
├── tool-result: 执行结果
└── finish: 完成
3.2 系统提示设计
packages/opencode/src/session/system.ts
SystemPrompt.header() - Provider 特定头部
SystemPrompt.provider() - 模型特定提示
SystemPrompt.environment() - 环境信息
SystemPrompt.custom() - 用户自定义规则
学习重点:
- 理解 ai SDK 的 streamText API
- 掌握事件驱动架构
- 学习如何设计有效的系统提示
🔐 阶段四:权限与安全系统(1-2周)
4.1 权限模型
permission/next.ts
Action: allow | deny | ask
Rule: { permission, pattern, action }
Ruleset: Rule[]
评估流程:
1. 匹配 permission (wildcard)
2. 匹配 pattern (wildcard)
3. 返回匹配结果
4.2 核心机制
// 权限评估
PermissionNext.evaluate(permission, pattern, ruleset)
// 权限请求(会暂停等待用户确认)
PermissionNext.ask({ permission, patterns, metadata })
// 权限回复
PermissionNext.reply({ requestID, reply: "once" | "always" | "reject" })
实践任务:
4. 为新工具添加权限控制
5. 实现自定义权限规则
6. 理解权限继承与合并机制
🏗️ 阶段五:会话管理与状态(1-2周)
5.1 会话生命周期
session/index.ts
create() → 创建会话
fork() → 复制会话
messages() → 获取消息历史
remove() → 删除会话
5.2 消息流处理
message-v2.ts
User Message

LLM.stream()
→ Assistant Message (with tool calls)
→ Tool Execution
→ Tool Results
→ Continue / Stop
🎯 阶段六:Agent 设计模式(2-3周)
6.1 Agent 定义系统
// agent.ts - 内置 Agent
build: 默认开发 Agent
plan: 只读分析 Agent
general: 多任务子 Agent
explore: 代码探索 Agent
// 自定义 Agent
{
name: string
description: string
mode: "primary" | "subagent" | "all"
permission: Ruleset
prompt: string
model: { providerID, modelID }
temperature: number
steps: number
}
6.2 设计原则
7. 职责分离:每个 Agent 专注特定任务
8. 权限最小化:只授予必要权限
9. 提示工程:精心设计系统提示
10. 可观测性:记录执行轨迹
📖 推荐学习路径
Week 1-2: 核心架构
├── 运行 bun dev 体验功能
├── 阅读 agent.ts 和 processor.ts
├── 绘制架构图
Week 3-4: 工具系统
├── 分析 5+ 个工具实现
├── 修改现有工具
└── 编写新工具
Week 5-6: LLM 集成
├── 理解流式处理
├── 设计系统提示
└── 实现自定义 Agent
Week 7-8: 完整项目
├── 添加新 Agent
├── 添加新工具
└── 编写文档
🔑 关键文件索引
| 文件 | 重要性 | 说明 |
|------|--------|------|
| src/agent/agent.ts | ⭐⭐⭐ | Agent 定义核心 |
| src/session/processor.ts | ⭐⭐⭐ | 消息处理核心 |
| src/tool/registry.ts | ⭐⭐⭐ | 工具注册中心 |
| src/permission/next.ts | ⭐⭐⭐ | 权限系统 |
| src/session/llm.ts | ⭐⭐⭐ | LLM 集成 |
| src/session/message-v2.ts | ⭐⭐ | 消息模型 |
| src/tool/tool.ts | ⭐⭐ | 工具接口定义 |
💡 学习建议
11. 先跑起来:bun dev 启动项目,边用边学
12. 深度阅读:每个核心文件至少读 3 遍
13. 动手实践:每周至少提交一个 PR 或修改
14. 记录笔记:建立个人知识库
15. 参与讨论:加入 Discord 社区
🎓 预期成果
完成学习后,你将能够:
- ✅ 理解 AI Agent 的核心架构设计
- ✅ 实现自定义工具和 Agent
- ✅ 设计有效的系统提示
- ✅ 实现权限和安全控制
- ✅ 构建完整的 Agent 应用
这个计划大约需要 10-14 周,建议边学边做,遇到问题就查看源码和文档。

这个规划的价值在于:它不是泛泛而谈,而是能把“要学什么”对应到“opencode具体是怎么做的”。

如果真的能把这份规划里涉及的关键模块完全弄懂,应该可以算得上Agent开发领域的专家了。


不想啃太多源码?也有更轻量的用法

如果你暂时不想深入到每个细节,也可以先让 opencode:

  • 介绍它的整体架构与核心逻辑

  • 解释各模块大概负责什么

  • 给出你应该优先读哪些目录/文件的建议

等到真正要做 Agent 的时候,再把 opencode 的对应模块代码片段丢给 LLM 做参考。

以现在 LLM 的能力,这种“参考成熟实现 → 快速搭原型 → 再逐步重构”的方式,效率非常高,也完全可以实现一个还不错的效果。