> OpenCode 支持同时运行多个 Agent 会话,它们可以并行处理同一项目中的不同任务。本文从零介绍多会话的启动方式、LSP 自动集成、会话分享等核心玩法,并结合实际场景展示这对开发效率带来的质变。
在日常开发中,我们经常面临这样的场景:前后端联调时需要同时修改多个模块、定位线上 Bug 的同时还得推进新功能、重构时希望一个 Agent 专门分析代码而另一个 Agent 专注于实现。传统的单会话 AI 编程助手一次只能做一件事,效率瓶颈明显。
OpenCode 从架构层面解决了这个问题。它原生支持 多会话(Multi-session)——可以在同一个终端窗口中启动多个独立的 Agent,每个 Agent 拥有自己的上下文、自己的任务,互不干扰地并行推进工作。结合 LSP(Language Server Protocol)自动集成和 会话分享,OpenCode 将 AI 辅助开发的能力从"串行"推向了"并行"。
这篇文章将带你从基础到进阶,全面掌握多会话与并行 Agent 的实操技巧。
在 OpenCode 中,一个"会话"就是一个独立的 Agent 运行实例。每个会话维护自己独立的:
多个会话之间共享的是同一个项目文件系统,这意味着它们对同一份代码库进行操作——需要你来协调冲突,就像管理多个开发者同时工作的场景一样。
场景一:前后端同步开发。 假设你正在做一个全栈项目,前端 React 组件和后端 Go API 需要同时改。单会话模式下,你得先让 Agent 改完后端,等它处理完上下文,再切到前端。多会话下,两个 Agent 并行工作,互不阻塞。
场景二:探索与实现分离。 接手一个大型代码库,你需要一个 Agent 深度分析现有架构和调用链路,另一个 Agent 则根据分析结论写代码。两者可以并行运转,不需要等待分析完成才能开始编码。
场景三:多模型协作。 你可以用 Claude 负责逻辑密集的重构任务,同时用 Gemini 处理模板和样式生成,各取模型所长。
OpenCode 启动后,按以下快捷键管理会话:
Ctrl + T 新建一个会话(Tab) Ctrl + W 关闭当前会话 Ctrl + [1-9] 切换到对应编号的会话 Ctrl + Left/Right 在会话之间切换焦点
每次按下 Ctrl + T,OpenCode 会在当前终端窗口中创建一个新的 Tab,里面是一个全新的 Agent 实例。你可以在不同的 Tab 中给 Agent 分配不同的任务:
# Tab 1(Agent A):修改用户认证模块 帮我重构 auth/service.go 中的 Token 验证逻辑,加入 refresh token 支持 # Tab 2(Agent B):同时优化前端登录页面 优化 login.tsx 的表单验证和错误提示 UI,参考 antd 的 Form 组件最佳实践 # Tab 3(Agent C):写单元测试 为 auth/service.go 和 login.tsx 编写全面的单元测试
三个 Agent 运行在同一个终端的不同 Tab 中,各自独立推进任务。
如果你使用的是 OpenCode Desktop 版本,多会话体验更加直观。Desktop 版引入了 Tabs 视图,每个 Tab 就是一个独立的会话,支持鼠标拖拽重排、独立滚动和分屏操作。Windows、macOS 和 Linux 均已支持。
Desktop 的 Tabs 还支持:
OpenCode 内置了一个强大的 Task 工具,允许 Agent 在需要时将复杂任务拆解为多个子任务,并启动并行 Agent 来处理:
# Agent 收到指令后自动并行处理 帮我同时完成以下工作: 1. 重构 src/api/ 下的接口层,统一错误处理 2. 更新 src/components/ 中的相关组件以适配新接口 3. 更新对应的 TypeScript 类型定义
Agent 会识别这是一个可并行化的任务,自动分拆为多个子 Agent 同步执行,最后汇总结果。
在某些场景下,你可能希望对并行粒度有更强的控制。这时可以在 AGENTS.md 中配置规则来影响 Agent 的并行决策行为:
# .opencode/AGENTS.md 中的配置 ## 并行策略 - 涉及 3 个以上独立文件的修改任务时,优先使用 Task 工具并行处理 - 修改范围超过 500 行的单一任务应拆分为子任务并行执行 - 前后端关联修改不分拆,确保 API 契约一致性
这样 Agent 就知道什么时候应该并行、什么情况下需要保持串行以确保一致性。
多会话能高效运转的一个重要基础是 LSP 自动集成。OpenCode 会自动为每个会话加载项目对应语言的语言服务器,为 Agent 提供精准的代码智能能力。
传统的 AI 编程工具只能看到你手动贴给它的代码片段。而有了 LSP 支持后,每个 Agent 会话都能自动获取:
在多会话场景下,LSP 让每个 Agent 对代码库的理解不再局限于自己会话中加载的文件,而是拥有了全局视野。
OpenCode 会自动检测项目中已安装的 LSP 服务器,无需额外配置。以下是各语言对应的常见 LSP:
| 语言 | LSP 服务 | 安装方式 |
|------|---------|---------|
| TypeScript/JavaScript | typescript-language-server | npm install -g typescript-language-server |
| Go | gopls | go install golang.org/x/tools/gopls@latest |
| Rust | rust-analyzer | rustup component add rust-analyzer |
| Python | pyright | pip install pyright |
| PHP | intelephense | npm install -g intelephense |
LSP 安装后,OpenCode 在启动会话时会自动检测并连接。你可以通过以下方式确认 LSP 是否生效:
# 启动 OpenCode 后,在会话中观察启动日志 # 如果看到类似日志,说明 LSP 已连接 [LSP] gopls connected for Go files [LSP] typescript-language-server connected for TS/JS files
多会话的价值不仅在于并行开发,还体现在团队协作中。OpenCode 支持 会话分享,你可以将任意会话的完整上下文(对话记录、文件修改、Agent 的思考过程)生成一个链接发给同事。
在 OpenCode 会话界面中,使用快捷键生成分享链接:
Ctrl + Shift + S 生成当前会话的分享链接
生成的链接包含了该会话的全部上下文,团队成员打开后可以看到:
这对于以下场景特别有用:
需要注意的是,分享链接包含了你的代码上下文和对话内容。在使用时请注意:
假设你的项目是 Go 后端 + React 前端的待办事项应用(Todo App),现在要增加一个"任务标签"功能。
新建一个会话(Ctrl + T),让它分析现有代码结构:
请分析当前项目的整体代码结构,重点关注: 1. 数据库模型层的现有设计模式(查看 models/ 目录) 2. API 接口层的路由和 Handler 模式(查看 api/ 目录) 3. 前端组件和数据获取方式(查看 web/src/ 目录) 输出一份结构分析报告,指出添加"标签"功能需要在哪些文件中做改动。
保持分析会话在 Tab 1 运行,新建两个会话分别处理后端和前端:
# Tab 2(后端会话) 根据 Tab 1 的分析报告,完成"任务标签"功能的后端实现: 1. 创建 tags 表的 migration 文件 2. 创建 Tag 模型(models/tag.go) 3. 添加任务与标签的多对多关联 4. 实现标签的 CRUD API 接口 5. 更新任务 API 以支持标签筛选 # Tab 3(前端会话) 根据 Tab 1 的分析报告,完成"任务标签"功能的前端实现: 1. 创建标签选择器组件 TagSelector.tsx 2. 在任务列表中显示标签 3. 在任务编辑弹窗中集成标签管理 4. 添加标签颜色的样式定义
两个会话并行工作。当分析会话完成后,你可以把分析结果复制到后两个会话中作为额外参考。
三个会话都完成后,新建第四个会话做整合审查:
帮我检查标签功能的整体实现: 1. 验证前后端 API 契约是否一致 2. 检查 migration 和模型定义是否匹配 3. 查看有没有重复代码或可以优化的地方 4. 如果有问题,直接修复
整个流程下来,原本需要串行进行的分析→后端→前端→审查四阶段,通过多会话并行压缩为两轮交互,效率提升显著。
经过一段时间的使用,我总结了以下实践建议:
虽然 OpenCode 会自动给 Tab 命名,但在开启较多会话后,手动切换到符合当前任务描述的会话会很有帮助。养成习惯:每个新会话一开始就明确告知 Agent 你要做什么。
不是越多越好的。建议同时运行 3-4 个会话,超过这个数量会增加切换成本和心智负担。超过 4 个会话时,考虑用 Task 工具让 Agent 自动管理子任务。
多个 Agent 同时修改同一个文件可能会导致冲突。在分配任务时,尽量让不同会话修改不同文件。如果必须修改同一文件,使用 Git 管理好版本,逐步合并。
当你需要尝试不同方案时,多会话的优势就体现出来了。会话 A 用方案 X 实现,会话 B 用方案 Y 实现,实现后可以直接对比代码差异,选择最优方案。
有了 LSP 集成,Agent 可以看到整个项目的类型系统。这意味着你在会话 A 中改了函数签名,会话 B 中的 Agent 通过 LSP 也能感知到这个变更,不需要你手动同步上下文。
OpenCode 的多会话与并行 Agent 能力,本质上是在 AI 编程辅助这个范式上叠加了一层"并发"思维。它不再是把所有问题一股脑丢给一个 Agent、然后等待它逐个处理,而是像管理一个小型开发团队一样,把任务分拆、平行推进、最后汇总。
结合 LSP 集成带来的全局代码智能,以及会话分享带来的协作便利,OpenCode 正在重新定义 AI 辅助开发的效率上限——从"帮我写代码"进化到"帮我管理开发工作流"。
如果你还没试过多会话,现在就打开一个终端,按 Ctrl + T 创建第二个 Tab,感受一下两个 Agent 并肩为你工作的生产力释放。