open-index/open-npm huggingface dataset:
npm package: @pfyuan/openclaw-feishu-hono
Description: OpenClaw Feishu channel plugin built with Hono
Latest version: 0.1.0

# OpenClaw Feishu Hono Plugin

使用 `Hono` 的 OpenClaw 飞书聊天插件（默认无外部数据库依赖）。

## 能力

- 接收飞书 `im.message.receive_v1` 文本消息（Webhook）
- 将消息交给 OpenClaw 标准 reply pipeline 生成回复
- 自动把回复发送回飞书（支持 replyTo）
- 通过稳定的 `sessionKey` 规则维护会话线程（`chat_id + thread_id`）

## 目录结构

- `index.ts`: OpenClaw 插件入口
- `src/channel/plugin.ts`: ChannelPlugin 定义（config/outbound/gateway）
- `src/gateway/server.ts`: Hono 服务生命周期
- `src/gateway/inbound.ts`: 入站消息 -> OpenClaw dispatch

## 环境变量

复制 `.env.example` 并填写：

```bash
cp .env.example .env
```

关键变量：

- `FEISHU_APP_ID`
- `FEISHU_APP_SECRET`
- `FEISHU_VERIFICATION_TOKEN` (可选但建议)
- `FEISHU_WEBHOOK_PORT` / `FEISHU_WEBHOOK_PATH`

## 安装与构建

```bash
pnpm install
pnpm typecheck
pnpm build
```

构建后会生成：
- `dist/index.mjs`（插件入口）
- `bin/openclaw-feishu-hono.js`（CLI bin 包装器）

## OpenClaw 配置示例

`~/.openclaw/config.json` 中加入：

```json
{
  "channels": {
    "feishu-hono": {
      "enabled": true,
      "appId": "cli_xxx",
      "appSecret": "xxx",
      "verificationToken": "verify_xxx",
      "webhookPort": 8787,
      "webhookPath": "/webhook/feishu"
    }
  }
}
```

## 飞书事件订阅

在飞书开放平台：

1. 添加事件 `im.message.receive_v1`
2. Request URL 配置为：
   `http://<your-host>:8787/webhook/feishu`
3. 如果开启 verification token，确保与插件配置一致

## 说明

- 当前仅处理文本消息，非文本消息会忽略。
- `sendMedia` 会降级为文本形式发送媒体 URL。
- 线程 key 规则：`<route.sessionKey>:thread:<thread_id>`。