opencode-feishu 是一个为 OpenCode Agent 设计的 飞书消息桥插件。
该插件仅支持飞书(Feishu / Lark)平台,通过飞书 Bot 实现 AI Agent 与用户的消息互通。
-
飞书 / Feishu / Lark
- 功能完整、稳定
- 支持图片/文件解析
- 支持 '/' 命令
- 支持 Webhook 与 WebSocket 两种模式
- 适配 OpenCode 插件体系
-
飞书消息桥接
- 一个 OpenCode Agent,对接飞书 Bot
-
即插即用
- 完全兼容 OpenCode 插件系统
-
多通信模式
webhook:推荐用于生产环境ws(WebSocket):适合本地开发调试,无需公网 IP
-
配置驱动
- 所有配置集中在
opencode.json
- 所有配置集中在
本插件优先用 OpenCode API 实现关键命令,其余自定义命令再走 session.command。
UI 相关命令(主题/编辑器/退出等)不适合聊天场景,因此不支持。
根据官方 TUI 文档,内置命令包括:
/connect/compact(别名:/summarize)/details/editor/exit(别名:/quit、/q)/export/help/init/models/new(别名:/clear)/redo/sessions(别名:/resume、/continue)/share/theme/thinking/undo/unshare/maxFileSize/maxFileRetry
以下命令在桥接层通过 API 直接实现:
/help→ 列出自定义命令/models→ 列出 provider 与模型/new→ 创建并绑定新会话/rename <title>→ 重命名当前会话(若重名自动追加(2)、(3))/abort→ 强制终止当前会话生成/sessions→ 列出会话(回复/sessions <id>切换)/maxFileSize <xmb>→ 设置上传文件大小限制(默认 10MB)/maxFileRetry <n>→ 设置资源下载重试次数(默认 3)/savefile→ 进入"直接保存上传文件"模式(不经过大模型)/sendfile <path>→ 按本地路径强制回传文件/share//unshare/compact(别名/summarize)/init/agent <name>→ 绑定后续对话的 Agent
/connect/details/editor/export/exit(/quit、/q)/theme/thinking
支持以下方式定义自定义命令:
opencode.json中的command字段,或.opencode/commands/*.md文件。
/sessions 会返回会话列表与可选项,结果会直接回到聊天窗口,你只需回复 /sessions <id> 或 /sessions <序号> 即可切换并绑定到目标会话。
文件上传大小限制可通过 /maxFileSize <xmb> 调整(默认 10MB)。
如果你的 OpenCode 环境提供了其它 slash 命令,且未在上面专门适配,则仍会走 session.command 透传。
插件提供两条直接文件能力:
/sendfile <path>:根据本地路径直接通过 Bot 回传文件。/savefile:进入上传等待态;你下一条上传的文件会直接保存到本地并返回路径。
以上流程都由桥接层直接处理,不经过大模型。
桥接日志已统一收口到同一套 logger,并默认写入文件。
可用环境变量:
BRIDGE_LOG_FILE:自定义日志文件路径(默认:logs/bridge.log)BRIDGE_LOG_STDOUT:是否输出到终端(默认true)BRIDGE_DEBUG:是否开启 debug 级别日志(默认false)
示例:
BRIDGE_DEBUG=true BRIDGE_LOG_FILE=/tmp/bridge.log opencode web也可以通过 /status 查看当前日志路径(logFile 字段)。
在 OpenCode Agent 配置目录中执行:
npm install opencode-feishu
⚠️ 由于 OpenCode 当前存在已知问题,暂时需要使用开发模式,详见下文。
注意: 强烈建议所有配置项均使用 字符串类型,以避免解析问题。
-
飞书配置
可选文件桥配置(agent.message-bridge.options):
auto_send_local_files("true"/"false",默认false)auto_send_local_files_max_mb(默认20)auto_send_local_files_allow_absolute("true"/"false",默认false)file_store_dir(上传文件本地保存目录;支持相对路径/绝对路径/file://;默认bridge_files)
由于 OpenCode 官方当前存在以下问题:
Issue:
fn3 is not a functionanomalyco/opencode#7792
暂时无法直接通过 npm 包使用插件,需要使用本地开发模式。
git clone https://github.com/lyhue1991/opencode-feishu.git
cd opencode-feishu
bun install在 opencode.json 中引用本地路径即可。
欢迎提交:
- Bug 修复
- 文档改进
- 架构与设计讨论
MIT License