OpenHands技能与插件体系深度解析:Skills与Plugins如何为你的AI开发团队扩展能力
【免费下载链接】OpenHands🙌 OpenHands: AI-Driven Development项目地址: https://gitcode.com/GitHub_Trending/ope/OpenHands
OpenHands 是一个 AI 驱动开发(AI-Driven Development)控制中心,它把编码 Agent 变成一支 7×24 小时在线的自托管工程团队。而让这支团队不断变强的关键,正是它的技能(Skills)与插件(Plugins)体系——技能为 AI Agent 安装一个个"专业能力模块",插件则把这些能力打包成可安装、可更新、可共享的扩展单元。本文将用最短的篇幅,帮你搞懂这两套扩展机制如何分工、如何协同,以及如何在新手级别就快速用起来。
一、先分清概念:技能与插件到底是什么?
在 OpenHands 中,两者是"零件"与"集装箱"的关系:
| 技能(Skill) | 插件(Plugin) | |
|---|---|---|
| 定位 | 单一的能力单元(提示词、知识、工作流) | 包含多个技能与文件的可安装扩展包 |
| 类型 | repo/knowledge/agentskills三种 | 市场插件 + 本地插件 |
| 管理方式 | 启用 / 禁用 | 安装 / 启用 / 禁用 / 卸载 / 刷新 |
| 入口 | 设置 → Customize → Skills | 设置 → Customize → Plugins |
技能的三种类型定义在 src/types/settings.ts 中,每个技能都带有名称、描述、触发条件(triggers)、分类、许可协议等元数据,AI Agent 正是根据这些信息决定"什么时候调用哪个技能"。
二、技能(Skills):给 AI Agent 装上专业模块
技能从哪里来?
OpenHands 的技能来自三个渠道,前端由 src/api/skills-service.ts 统一聚合:
- 官方公共技能目录:来自
@openhands/extensionsnpm 包,在构建时打包进前端,无需联网即可使用; - 用户与项目技能:放在本地
.agents/skills/目录下的自定义技能,会由 Agent 服务器自动发现; - 云端技能:当后端为 Cloud 时,直接拉取云端技能列表。
也就是说,你既可以开箱即用官方技能,也可以把自己的团队经验写成技能文件放进项目里——技能即代码(Skill as Code)。
技能管理页面:搜索、筛选、一键启停
技能页面(路由定义见 src/routes/skills-settings.tsx)提供了完整的筛选维度:
- STATE(状态):按 Enabled / Disabled 过滤,被禁用的技能不会加载进 Agent 上下文;
- RECOMMENDATION(推荐):区分官方"推荐"技能与其他技能;
- CATEGORY(类别):如 Writing & docs(写作文档)、Environment & tooling(环境工具)、Code hosting & CI(代码托管与 CI)、Agent authoring(Agent 编写)等。
点击技能卡片即可查看详情、触发词与安装方式;Add Skill按钮支持从 GitHub 仓库直接导入新技能(见 add-skill-modal.tsx)。技能的启用状态通过设置项enabled_skills/disabled_skills持久化,前端逻辑集中在 src/hooks/use-skill-enablement.ts 中。
技能如何进入对话?
技能不只是设置项:在会话面板中可以直接查看与启用技能(skill-item.tsx、skills-modal.tsx),通过斜杠命令快速发起(slash-command-menu.tsx),甚至点击技能即可在聊天中启动对应工作流(use-launch-skill-in-chat.ts)。当 Agent 调用了某个技能,对话流会展示"技能就绪"卡片,帮助你看清 AI 到底用了什么能力(skill-ready-content-list.tsx)。
三、插件(Plugins):可安装、可更新的能力包
如果说技能是"散装"能力,插件就是装好货的集装箱——一个插件目录里包含SKILL.md形式的技能定义和配套文件,安装一次,能力全套就位。
插件的两大来源
插件数据模型定义在 src/api/plugins-service.ts 中:
- 市场插件(Marketplace):运行时从本地 Agent 服务器动态拉取目录,列表始终最新,无需重新构建前端;
- 本地插件(Local):扫描
~/.agents/plugins、~/.openhands/plugins等用户级目录自动发现,作为只读分组展示。
插件全生命周期管理
安装、启用/禁用、卸载、刷新等操作由 src/api/plugins-management-service.ts 负责,已安装插件存放在本地 Agent 服务器的~/.openhands/plugins/installed/下。核心操作一览:
| 操作 | 说明 |
|---|---|
| 安装 | 支持从 Git 源(含指定分支 ref 与子路径)或本地路径安装 |
| 启用 / 禁用 | 不删除文件,只切换是否加载进会话 |
| 卸载 | 移除本地已安装的插件 |
| 刷新 | 重新拉取插件最新内容 |
插件页面(src/routes/skills-plugins.tsx)支持搜索、查看详情与文件内容。点击插件卡片打开详情弹窗(plugin-detail-modal.tsx),其中 plugin-files-section.tsx 能直接在线预览插件内的文本文件——装之前先"验货",透明可审计。
四、新手上手:3 步扩展你的 AI 开发团队
- 逛技能市场:进入 Customize → Skills,先勾选
Recommended筛选器,浏览官方推荐技能,按需开启(例如code-review、agent-memory); - 让技能进对话:在聊天输入框输入
/唤起技能菜单,或在会话侧栏直接点击技能卡片启用; - 安装插件打包能力:进入 Customize → Plugins,在市场列表中搜索目标插件 → 查看详情与文件 → 安装并启用。
整个过程无需写代码、无需重启服务,插件安装后会自动进入新会话。
五、关键源码地图
想深入这套扩展体系,可以从以下入口读起:
- 技能数据模型:src/types/settings.ts
- 技能聚合服务:src/api/skills-service.ts
- 插件目录与本地插件:src/api/plugins-service.ts
- 插件安装管理:src/api/plugins-management-service.ts
- 技能 UI 组件:src/components/features/skills/
- 插件 UI 组件:src/components/features/plugins/
- 架构总览:docs/architecture.md
- 开发指南:docs/DEVELOPMENT.md
总结
OpenHands 的扩展哲学非常清晰:技能负责"AI 会做什么",插件负责"能力如何分发"。技能以轻量元数据驱动 Agent 的行为,插件以目录为单位实现能力的一键分发与更新。两者叠加,让 OpenHands 不只是一个单点编码工具,而是一个可持续进化的 AI 开发团队底座——今天装一个代码审查技能,明天加一个 CI 插件,团队的战斗力随之平滑生长。
【免费下载链接】OpenHands🙌 OpenHands: AI-Driven Development项目地址: https://gitcode.com/GitHub_Trending/ope/OpenHands
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考