﻿[根目录](../CLAUDE.md) > **extensions**

# extensions 模块总览（插件生态）

## 目录定位

`extensions/` 是插件工作区，每个子目录通常是一个独立包。
插件用于扩展：
- 渠道（如 `kook`、`matrix`、`msteams`）
- Provider/Auth（如 `google-gemini-cli-auth`）
- 能力插件（如 `llm-task`、`voice-call`、`memory-*`）

## 你会看到的典型结构

```text
extensions/<plugin>/
  index.ts
  package.json
  openclaw.plugin.json
  src/*
```

## 关键约定（非常重要）

- 插件安装时会在插件目录执行 `npm install --omit=dev`。
- 运行时依赖必须放在插件自己的 `dependencies`。
- 不要在插件 `dependencies` 使用 `workspace:*`。
- 一般让 `openclaw` 出现在 `devDependencies` 或 `peerDependencies`。

## 当前主要插件目录

- 渠道类：`bluebubbles`、`discord`、`feishu`、`googlechat`、`imessage`、`kook`、`line`、`matrix`、`mattermost`、`msteams`、`nextcloud-talk`、`nostr`、`signal`、`slack`、`telegram`、`tlon`、`twitch`、`whatsapp`、`zalo`、`zalouser`
- 认证/Provider 类：`copilot-proxy`、`google-antigravity-auth`、`google-gemini-cli-auth`、`minimax-portal-auth`、`qwen-portal-auth`
- 能力类：`diagnostics-otel`、`llm-task`、`lobster`、`memory-core`、`memory-lancedb`、`open-prose`、`voice-call`

## 新增插件最小步骤

1. 新建目录与 `package.json`。
2. 添加 `openclaw.plugin.json`。
3. 在 `index.ts` 默认导出插件定义。
4. 在 `src/` 实现 channel/tool/hook/provider 注册逻辑。
5. 增加最小测试与 README。

## TypeScript 新手建议

- 先读 `src/plugins/CLAUDE.md` 了解宿主如何加载插件。
- 再读一个简单插件（如 `extensions/kook/index.ts`）照着实现。
- 优先写小步测试，验证插件发现/注册/调用流程。

## 调试与验证

```bash
pnpm build
pnpm test
pnpm openclaw plugins list
pnpm openclaw channels status --probe
```

## 常见坑

- 插件能编译但运行时报缺包：通常是依赖放错位置。
- 渠道插件只改了发送没改接收：会导致链路不完整。
- 只验证核心渠道，没验证扩展渠道兼容性。
