飞书 Channel 扩展¶
veadk.extensions.FeishuChannelExtension 用于把飞书机器人的入站消息桥接到 VeADK Runner。
它默认基于 lark_oapi.channel.FeishuChannel 的 message 事件工作,并按下面的规则映射会话身份:
sender.union_id -> Runner.user_idconversation.thread_id -> Runner.session_id- 如果线程 ID 不存在,则回退到
chat_id -> Runner.session_id
这样做的好处是,VeADK 现有的短期记忆、长期记忆、Tracing 和多租户隔离能力可以直接复用。
安装¶
如果你只想安装这个能力,也可以单独安装:
配置¶
环境变量:
TOOL_FEISHU_CHANNEL_APP_IDTOOL_FEISHU_CHANNEL_APP_SECRETTOOL_FEISHU_CHANNEL_TRANSPORT,默认ws
或在 config.yaml 中配置:
最小示例¶
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",
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())
说明¶
- 默认使用飞书
Channel的 WebSocket 模式,因此只要机器人已订阅消息事件,就可以直接启动连接。 - 默认回复会使用
reply_to=原消息 message_id,让 VeADK 输出继续挂在当前飞书消息线程下。 - 你可以通过
session_id_factory和user_id_factory覆盖默认映射逻辑。