Skip to content

lyhue1991/opencode-feishu

 
 

Repository files navigation

OpenCode 消息桥插件(Message Bridge - Feishu Only)

opencode-feishu 是一个为 OpenCode Agent 设计的 飞书消息桥插件

该插件仅支持飞书(Feishu / Lark)平台,通过飞书 Bot 实现 AI Agent 与用户的消息互通。


✨ 当前状态

✅ 已完全支持

  • 飞书 / Feishu / Lark

    • 功能完整、稳定
    • 支持图片/文件解析
    • 支持 '/' 命令
    • 支持 WebhookWebSocket 两种模式
    • 适配 OpenCode 插件体系

✨ 特性

  • 飞书消息桥接

    • 一个 OpenCode Agent,对接飞书 Bot
  • 即插即用

    • 完全兼容 OpenCode 插件系统
  • 多通信模式

    • webhook:推荐用于生产环境
    • ws(WebSocket):适合本地开发调试,无需公网 IP
  • 配置驱动

    • 所有配置集中在 opencode.json

✅ Slash 命令支持

本插件优先用 OpenCode API 实现关键命令,其余自定义命令再走 session.command。 UI 相关命令(主题/编辑器/退出等)不适合聊天场景,因此不支持。

官方内置命令(TUI)

根据官方 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

UI 命令(聊天不支持)

  • /connect
  • /details
  • /editor
  • /export
  • /exit/quit/q
  • /theme
  • /thinking

自定义命令

支持以下方式定义自定义命令:

  • opencode.json 中的 command 字段,或
  • .opencode/commands/*.md 文件。

会话 / Agent 切换

/sessions 会返回会话列表与可选项,结果会直接回到聊天窗口,你只需回复 /sessions <id> /sessions <序号> 即可切换并绑定到目标会话。 文件上传大小限制可通过 /maxFileSize <xmb> 调整(默认 10MB)。

如果你的 OpenCode 环境提供了其它 slash 命令,且未在上面专门适配,则仍会走 session.command 透传。

本地文件直传/直存(不走 LLM)

插件提供两条直接文件能力:

  • /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 当前存在已知问题,暂时需要使用开发模式,详见下文。


🚀 快速开始

⚙️ 配置 (opencode.json)

注意: 强烈建议所有配置项均使用 字符串类型,以避免解析问题。

可选文件桥配置(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 function anomalyco/opencode#7792

暂时无法直接通过 npm 包使用插件,需要使用本地开发模式。

使用步骤

git clone https://github.com/lyhue1991/opencode-feishu.git
cd opencode-feishu
bun install

opencode.json 中引用本地路径即可。


🤝 参与贡献

欢迎提交:

  • Bug 修复
  • 文档改进
  • 架构与设计讨论

📄 License

MIT License

About

opencode connect at feishu

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 100.0%