01. CLI / 启动入口
学习目标:理解 opencode 命令如何启动、注册子命令,并把 run/serve 等命令导向统一 runtime。
阅读难度:入门
预计阅读时间:30 分钟
对应源码模块:2.1 CLI / 启动入口
这是一个离线源码学习站点,面向 Java 开发者,用 OpenCode 的真实 TypeScript 源码学习 AI coding agent 架构、 agent loop、tool calling、LLM provider、权限边界和工程组织方式。
站点使用方式
先从首页选择章节。当前已完成本轮指定章节和样章;配置系统保留为待补章节, 因为本轮生成顺序没有包含它。
学习目标:理解 opencode 命令如何启动、注册子命令,并把 run/serve 等命令导向统一 runtime。
阅读难度:入门
预计阅读时间:30 分钟
对应源码模块:2.1 CLI / 启动入口
学习目标:理解 CLI/API 输入如何变成 session、message 和 part,并被后续 agent loop 消费。
阅读难度:中等
预计阅读时间:35 分钟
对应源码模块:2.2 用户输入与会话
学习目标:理解 OpenCode 如何在 session 内反复读取消息、选择模型和工具、调用 LLM、处理 tool call,并决定继续或结束。
阅读难度:较难
预计阅读时间:55 分钟
对应源码模块:2.3 Agent 核心循环
学习目标:理解内部消息、system prompt、工具 schema 如何被转换成不同 provider 的模型请求。
阅读难度:较难
预计阅读时间:50 分钟
对应源码模块:2.4 模型 Provider / LLM 调用
学习目标:理解 Tool 定义、注册、暴露给模型、执行、权限和结果回填的完整机制。
阅读难度:中等
预计阅读时间:45 分钟
对应源码模块:2.5 Tool 调用系统
学习目标:理解 read/edit/write 工具如何解析路径、申请权限、修改文件、格式化并触发诊断。
阅读难度:中等
预计阅读时间:40 分钟
对应源码模块:2.6 文件读写与代码修改
学习目标:理解 shell tool 如何解析命令、识别路径和命令模式、审批并执行进程。
阅读难度:较难
预计阅读时间:45 分钟
对应源码模块:2.7 Shell / 命令执行
学习目标:理解 OpenCode 如何启动 LSP client,并把 diagnostics、hover、definition 等反馈给 agent。
阅读难度:较难
预计阅读时间:45 分钟
对应源码模块:2.8 LSP / 诊断 / 上下文增强
学习目标:理解 allow/deny/ask ruleset 如何保护读写文件、执行命令和外部目录访问。
阅读难度:中等
预计阅读时间:40 分钟
对应源码模块:2.9 权限、审批、安全边界
学习目标:理解全局、项目、环境变量、远程和内联配置如何合并并影响 agent/provider/tool。
阅读难度:较难
预计阅读时间:45 分钟
对应源码模块:2.10 配置系统
状态:待补
学习目标:理解 CLI/TUI、Web app、Desktop 和 VS Code extension 如何复用同一套 runtime。
阅读难度:中等到较难
预计阅读时间:35 分钟
对应源码模块:2.11 UI / TUI / Desktop / IDE 相关
学习目标:理解 HTTP API、generated SDK、plugin hooks 和扩展点如何让外部程序接入 OpenCode。
阅读难度:中等
预计阅读时间:40 分钟
对应源码模块:2.12 SDK / API / 对外扩展点
学习目标:理解 monorepo 构建、类型检查、测试任务和开发规范如何支撑大型 agent 项目。
阅读难度:入门
预计阅读时间:25 分钟
对应源码模块:2.13 测试与工程化
学习目标:把 OpenCode 的 CLI、session、LLM、tool、permission 和 processor 源码反推成一个可自己实现的 mini coding agent 闭环。
阅读难度:中等
预计阅读时间:60 分钟
对应源码模块:综合实现路线
01 CLI / 启动入口 -> 02 用户输入与会话 -> 13 测试与工程化 -> 14 mini agent。
02 用户输入与会话 -> 03 Agent 核心循环 -> 04 模型 Provider / LLM 调用 -> 09 权限、审批、安全边界。
03 Agent 核心循环 -> 05 Tool 调用系统 -> 06 文件读写与代码修改 -> 07 Shell / 命令执行 -> 08 LSP / 诊断。
02 消息模型 -> 03 agent loop -> 05 tool interface -> 04 LLM client -> 09 permission -> 06 文件编辑 -> 14 mini agent。
站点数据
章节元数据在 data/chapters.json, 章节到源码路径的映射在 data/source-map.json, 生成进度在 data/progress.json。