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

# 飞书

## 功能说明

`FeishuChannelExtension` 把飞书机器人的入站消息桥接到 VeADK `Runner`。

<Note>
  本页是把飞书**作为入站消息渠道**：飞书用户发来的消息会触发智能体运行。若需反过来——让智能体**调用飞书能力**（发消息、处理云文档、管理日历），请参见[飞书 Lark MCP](/productions/veadk/archives/1.0.1/zh/components/tools/lark)。
</Note>

它监听飞书机器人的消息事件，并把飞书的会话身份映射到 VeADK：以消息发送者作为 `Runner` 的用户标识，以消息所在的话题作为会话标识；话题不存在时，回退到当前群聊或单聊作为会话标识。借此，VeADK 现有的短期记忆、长期记忆、Tracing 与多租户隔离能力都能按用户、按会话直接复用。

## 环境变量与前提

安装：

```bash lines theme={null}
pip install veadk-python[extensions]
```

如果只想要这一项能力，也可以单独安装：

```bash lines theme={null}
pip install lark-oapi
```

环境变量：

* `TOOL_FEISHU_CHANNEL_APP_ID`
* `TOOL_FEISHU_CHANNEL_APP_SECRET`
* `TOOL_FEISHU_CHANNEL_TRANSPORT`：默认 `ws`
* `TOOL_FEISHU_CHANNEL_STREAMING`：是否开启流式输出，默认 `false`
* `TOOL_FEISHU_CHANNEL_REACTIONS`：是否在收到消息时回复“收到”表情，默认 `false`

或在 `config.yaml` 中配置：

```yaml title="config.yaml" lines theme={null}
tool:
  feishu_channel:
    app_id: cli_xxx
    app_secret: xxx
    transport: ws
    streaming: true
    reactions: true
```

## 使用方法

```python title="examples/channel/feishu_bot.py" lines theme={null}
import asyncio

from veadk import Agent, Runner
from veadk.extensions import FeishuChannelExtension
from veadk.memory.short_term_memory import ShortTermMemory

agent = Agent(
    name="feishu_agent",
    model_name="doubao-seed-1-8-251228",
    instruction="你是一个通过飞书机器人与用户沟通的助手。",
)

runner = Runner(
    agent=agent,
    app_name="veadk_feishu_demo",
    user_id="veadk_feishu_default_user",
    short_term_memory=ShortTermMemory(),
)

channel = FeishuChannelExtension(
    runner=runner,
    channel_kwargs={"transport": "ws"},
)


async def main():
    await channel.connect()


if __name__ == "__main__":
    asyncio.run(main())
```

## 额外说明

* 默认使用飞书的 WebSocket 长连接模式，因此只要机器人已订阅消息事件，即可直接启动连接。
* 默认以回复原消息的形式发送，使 VeADK 的输出挂在当前飞书消息线程下。
* 可以通过 `session_id_factory` 与 `user_id_factory` 覆盖默认的身份映射逻辑。
