> ## Documentation Index
> Fetch the complete documentation index at: https://openidea.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# 概览

> OpenIDEA 插件能做什么、插件的两种类型，以及插件 API 的当前状态。

OpenIDEA 插件可以为 IDE 增加命令、编辑器功能、工具窗口、主题、图标和语言。插件就是一个带 `plugin.toml` 清单（manifest）的文件夹；如果包含代码，代码是一个运行在沙箱里的 WebAssembly 组件，只能做用户允许的事。

> [!WARNING]
>
> 插件系统目前是**预览版**。**设置 › 插件** 页面上的 **预览** 标记会提示：“插件系统目前是预览版：API
> 和插件都可能还会变化。”已发布的 API 版本只增不改，为 API 1.0 构建的插件在之后的 1.x IDE 中仍能加载（见 [API
> 版本与兼容](https://openidea.sh/zh/plugins/versioning.md)）。

## 插件能做什么

* 添加**命令**。命令就是 IDE 操作：可以在 **查找操作** 和 **随处搜索** 中找到、绑定快捷键，也可以放进菜单、主工具栏和状态栏。
* 读写项目文件和当前编辑器，响应工作台事件（文件打开或保存、VCS 变化、执行了某个操作），并以带进度的后台任务运行工作。
* 为任意语言提供**编辑器功能**：补全、行内补全、快速修复、导航、悬停、内嵌提示、语义高亮、输入时诊断、格式化、代码透镜、装订区标记等。
* 显示**工具窗口**和**自定义编辑器**，可以是声明式的（树、列表、表单、表格），也可以是沙箱中的网页。
* 提供**运行配置**、测试结果解析器和运行目标、**数据库数据源**，以及给内置 MCP 服务器用的 **MCP 工具**。
* 调用 Web 服务、把密钥存进系统钥匙串、在自己的存储里保存数据、运行用户批准过的程序。
* 提供**设置页**、**文件模板**、**代码片段**、**主题**、**文件图标主题**和**语言**。

## 两种插件

| 类型 | 包含 | 需要代码 | 示例 |
| - | - | - | - |
| 纯数据插件 | 清单和数据文件：主题、图标主题、语言定义、菜单、快捷键、设置、文件模板、代码片段、运行检测器 | 否 | [harbor-night](https://github.com/l0ng-ai/openidea/tree/main/plugins/official/harbor-night)、[material-icons](https://github.com/l0ng-ai/openidea/tree/main/plugins/official/material-icons) |
| 代码插件 | 以上内容，外加一个 WebAssembly 组件（`wasm = "dist/plugin.wasm"`） | 是 | [string-tools](https://github.com/l0ng-ai/openidea/tree/main/plugins/official/string-tools)、[git-toolbox](https://github.com/l0ng-ai/openidea/tree/main/plugins/official/git-toolbox) |

插件一启用，声明的贡献就生效，不需要先加载代码：命令出现在 **查找操作** 里、主题可以应用、设置页已经存在。代码只在第一次需要时才加载（执行了它的命令、打开了它声明的语言的文件等），空闲 5 分钟后再卸载。

代码插件是面向 [`wit/`](https://github.com/l0ng-ai/openidea/tree/main/wit) 中 `plugin` world 的 WebAssembly 组件。官方支持用 Rust SDK（[`sdk/rust/openidea-plugin`](https://github.com/l0ng-ai/openidea/tree/main/sdk/rust/openidea-plugin)）编写；任何有组件模型工具链的语言（`componentize-py`、`jco componentize`、TinyGo）也都可以面向同一个 world。

## API 版本

| | |
| - | - |
| 最新已发布 API | **1.4.0**，随 OpenIDEA 0.1.40 发布 |
| 开发中 | `main` 分支上的 **1.5.0**，计划随下一个版本发布 |
| WIT 包名 | `openidea:plugin@<version>` |

在清单里用 `engines.openidea` 声明插件需要的 API，例如 `engines.openidea = "^1.4"`。

## 插件从哪里来

* **插件市场：** **设置 › 插件 › 可用** 列出官方插件和[社区登记仓库](https://github.com/l0ng-ai/openidea-plugins)中的社区插件。见 [发布到市场](https://openidea.sh/zh/plugins/publishing/marketplace.md)。
* **磁盘：** 在 **设置 › 插件** 的齿轮菜单中选择 **从磁盘安装插件…**（文件夹）或 **从插件包文件安装…**（`.oiplugin` 或 `.zip`）。
* **链接的文件夹：** `openidea-plugin link` 让 IDE 直接加载你正在开发的文件夹，无需安装。
* **项目插件：** 放在 `<project>/.openidea/plugins/<name>/` 下的插件包，只在受信任的项目中、且你批准其权限后才会加载。

## 下一步

> [card] [快速开始](https://openidea.sh/zh/plugins/quickstart.md)
>
> 几分钟内生成、构建并运行一个插件。

> [card] [示例插件](https://openidea.sh/zh/plugins/examples.md)
>
> 逐个了解 `plugins/official` 里的插件。

> [card] [架构与沙箱](https://openidea.sh/zh/plugins/architecture.md)
>
> 插件代码如何运行、受到哪些限制。

> [card] [Manifest](https://openidea.sh/zh/plugins/manifest.md)
>
> `plugin.toml` 的每个字段。

最完整、最权威的指南是仓库里的 [`plugins/README.md`](https://github.com/l0ng-ai/openidea/blob/main/plugins/README.md)。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.