OpenWork 插件开发与工作区配置:3 步跑通第一个插件的完整指南
【免费下载链接】openworkThe open-source alternative to Claude Cowork (powered by opencode)项目地址: https://gitcode.com/GitHub_Trending/ope/openwork
OpenWork 是一个基于 OpenCode 构建的开源项目,定位为 Claude Cowork 的替代方案,内置插件系统和多工作区管理能力。你可以用插件给 OpenWork 装上项目专属的工具、技能和连接,再用工作区把「插件 + 技能 + 任务」打包成一套随时切换的工作环境。这篇 OpenWork 插件开发与工作区配置教程会带你看清插件的两种作用域,跑通一个最小插件,再把 config.json 调到顺手。
换项目就要重装一遍插件?先看这个场景
我一般会把工作按项目拆开:前端的仓库一套配置,后端另一套,个人实验项目再来一套。没有工作区概念时,每次切换项目都得重复装插件、改配置,文件散落在各处,还经常忘了上一套改了什么。
OpenWork 的解法很直接:把工作区当成一个「文件夹级环境」,插件按工作区或全局两个层级挂载,配置统一落到工作区文件里。切换项目 = 切换工作区,配置跟着走。
能力速览:插件和工作区各解决什么问题
| 能力 | 解决的问题 |
|---|---|
| 工作区级插件 | 插件只影响当前工作区,互不污染,适合项目专属工具 |
| 全局级插件 | 常用能力一次安装,所有工作区共享,不用重复配置 |
| opencode.json 统一管理 | 安装、卸载、状态、配置自动更新都有一份权威记录可查 |
| 工作区(技能 + 插件 + 任务) | 项目环境整体打包,切换即生效,不用手动搬配置 |
| 工作区模板 | 把调好的配置存成模板,新项目一键套用 |
插件的加载与状态逻辑集中在 apps/app/src/app/extensions.ts,想深挖细节可以翻这里。
3 步装好第一个本地插件
第 1 步:准备插件目录。一个最小插件就三样东西:package.json、插件入口文件plugin.ts、README.md。入口文件导出一个带元信息和生命周期钩子的对象:
export default { name: "my-custom-plugin", version: "1.0.0", description: "我的 OpenWork 自定义插件", scope: "workspace", // 或 "global" async activate(context) { /* 插件启动逻辑 */ }, async deactivate() { /* 插件卸载逻辑 */ } };第 2 步:在 Extensions 视图添加。打开 OpenWork 进入 Extensions 视图,把插件输入框指向本地插件目录(或填插件名称/URL),点「添加」,系统会自动更新 opencode.json 并加载插件。仓库里 integrations/agent-plugins/openwork-connect/plugin.json 就是一个现成的插件清单样例,对照着看很快。
第 3 步:验证生效。在触发插件逻辑的对话里观察预期行为,确认 activate 被调用、deactivate 在卸载时触发,就算跑通了。
config.json 三个关键字段,把配置落到工作区里
工作区 = 技能、插件、任务的集合,配置写在工作区的.opencode/config.json里。你只需要关心三个字段:
{ "plugins": ["my-custom-plugin"], "skills": ["customer-research"], "settings": { "theme": "dark" } }plugins:这个工作区加载哪些插件,卸载/添加都体现在这里skills:可用技能清单,技能是插件里「可复用的指令」settings:工作区级设置,与插件解耦
多工作区的管理思路:按「项目类型」而不是「项目名」划分——比如「前端仓库」「文档站」「实验项目」各一个工作区,再为常用类型准备一套工作区模板,新项目直接套用,避免从零配置。
进阶:作用域怎么选、模板怎么用
工作区级 vs 全局级:一条判断标准
问自己一句话:「换个项目还需要它吗?」需要,就设scope: "global";只是这个项目的工具,就留在工作区级。资源消耗大的插件(比如带常驻连接的)优先放工作区,避免全局加载拖慢所有环境。
把工作区存成模板
把一个调好的工作区(插件 + 技能 + 设置)保存为工作区模板,之后新建工作区时直接选模板。团队场景下,模板还能作为「标准环境」分发给其他成员。
插件与技能配合
技能通常随插件一起分发,但在 config.json 里是独立登记的。我的习惯是:插件负责「能做什么」(连接、工具),技能负责「怎么做」(流程、话术)。比如一个调研插件装上后,再把customer-research这类技能加进工作区,插件才有具体的用法。
避坑清单:插件加载失败等 4 个高频问题
现象:插件加载失败,opencode.json 里没有记录。原因:插件入口文件不符合约定(没导出带 name/activate 的对象),或缺少package.json。 处理:对照最小插件结构检查目录,先保证入口文件能被正常 import 再添加。
现象:装了几个插件后,会话响应变慢。原因:资源密集型插件按全局作用域加载,每个工作区都在跑。 处理:把这类插件降到工作区级,只在需要的项目里启用。
现象:两个插件功能冲突,行为不可预期。原因:插件提供了同名工具或命令,加载顺序不确定。 处理:二选一禁用其一,或给插件配置优先级;我一般会把冲突方降级为「备用」,确认稳定再启用。
现象:工作区越用越乱,配置改来改去找不到底。原因:手工改了 config.json 又没留记录。 处理:把工作区配置纳入版本控制,每次调整留一次提交;定期清理没在用的插件和技能,保持 plugins 和 skills 列表精简。
把第一个本地插件跑通,再把 config.json 的 plugins、skills、settings 调顺手,OpenWork 就会开始按你的习惯工作。现在就去 Extensions 视图里,给你的当前工作区加一个插件试试。
【免费下载链接】openworkThe open-source alternative to Claude Cowork (powered by opencode)项目地址: https://gitcode.com/GitHub_Trending/ope/openwork
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考