跳到主要内容

工作流

了解 OpenCode 的工作流程,包括系统架构和对话执行流程。

架构分层

OpenCode 采用分层架构设计,从上到下分为:

┌─────────────────────────────────┐
│ 用户交互层 │
│ 对话界面、命令行输入 │
└─────────────┬───────────────────┘

┌─────────────▼───────────────────┐
│ Agent 层 │
│ 意图理解、任务规划、决策 │
└─────────────┬───────────────────┘

┌─────────────▼───────────────────┐
│ Skill 层 │
│ 任务编排、能力封装、流程控制 │
└─────────────┬───────────────────┘

┌─────────────▼───────────────────┐
│ Tool 层 │
│ 工具调用、具体能力执行 │
└─────────────┬───────────────────┘

┌─────────────▼───────────────────┐
│ 基础设施层 │
│ LLM、文件系统、命令执行、网络 │
└─────────────────────────────────┘

各层职责

Agent 层:

  • 理解用户意图
  • 规划任务步骤
  • 决策使用哪些能力
  • 管理对话上下文

Skill 层:

  • 封装复杂任务
  • 组织多步骤流程
  • 控制工具使用
  • 应用最佳实践

Tool 层:

  • 提供原子能力
  • 执行具体操作
  • 返回执行结果
  • 处理错误情况

对话执行流程

当用户发起对话时,OpenCode 的执行流程如下:

用户输入


┌─────────────────┐
│ 1. 意图理解 │
│ - 分析用户需求 │
│ - 识别任务类型 │
└────────┬────────┘


┌─────────────────┐
│ 2. 任务规划 │
│ - 分解任务步骤 │
│ - 确定所需工具 │
└────────┬────────┘


┌─────────────────┐
│ 3. 工具调用 │
│ - 生成参数 │
│ - 执行工具 │
└────────┬────────┘


┌─────────────────┐
│ 4. 结果处理 │
│ - 解析结果 │
│ - 判断是否完成 │
└────────┬────────┘


┌─────────────────┐
│ 5. 生成响应 │
│ - 组织回复 │
│ - 返回用户 │
└─────────────────┘

具体示例

以"创建一个 Express 服务器"为例:

1. 意图理解

用户输入:"帮我创建一个 Express 服务器"

Agent 理解:
- 任务类型:创建项目
- 目标:Express 服务器
- 需要操作:初始化、安装、创建文件

2. 任务规划

Agent 规划步骤:
步骤 1:初始化 Node.js 项目
步骤 2:安装 Express 依赖
步骤 3:创建 server.js 文件
步骤 4:编写服务器代码
步骤 5:启动服务器

3. 工具调用

执行步骤 1:
工具:Bash
命令:npm init -y

执行步骤 2:
工具:Bash
命令:npm install express

执行步骤 3:
工具:Write
文件:server.js
内容:Express 服务器代码

执行步骤 4:
工具:Write
文件:package.json
内容:更新启动脚本

执行步骤 5:
工具:Bash
命令:node server.js

4. 结果处理

每个步骤执行后:
- 检查是否成功
- 处理错误情况
- 决定下一步操作

如果步骤失败:
- 分析错误原因
- 尝试修复
- 或提示用户

5. 生成响应

返回给用户:
"我已经为你创建了 Express 服务器!

完成的步骤:
✓ 初始化项目
✓ 安装 Express
✓ 创建 server.js
✓ 启动服务器

服务器运行在 http://localhost:3000"

多轮对话流程

对于需要多轮交互的任务:

第 1 轮:
用户:创建一个 React 组件
Agent:[创建组件]

第 2 轮:
用户:添加一个按钮
Agent:[读取组件,添加按钮]

第 3 轮:
用户:给按钮添加点击事件
Agent:[读取组件,添加事件处理]

第 4 轮:
用户:优化代码
Agent:[分析代码,优化性能]

工作流特点

1. 自主性

OpenCode 会:

  • 自动选择工具
  • 自动生成参数
  • 自动处理错误
  • 自动优化结果

2. 可控性

用户可以:

  • 指定使用哪个工具
  • 修改执行步骤
  • 中断执行过程
  • 调整执行参数

3. 透明性

系统提供:

  • 执行步骤说明
  • 工具调用日志
  • 错误原因分析
  • 决策依据说明

下一步

了解工作流后,您可以:

  1. 学习工具:查看 工具
  2. 配置系统:查看 配置
  3. 学习指令:查看 指令

🎉 现在你已经了解了 OpenCode 的工作流程!

接下来让我们学习工具系统的使用。🚀