Written-by: Dev (2026-10-26, found while finishing the board card "飞书做成连接器行(Connect apps 里点连接就可用)") Owner 原话(2026-10-26):**「飞书是做成一个连接器,左下角点击连接应用的时候可以连接」**。这句话对**发出去**已经成立,对**收进来**还不成立。 ## 已经成立的部分(main `63f81f03`,实测) - `core/src/host/connectors.js:395-410` —— `DEFINITIONS[FEISHU]` 是 `kind: 'sender'`,`paste: 'Paste a webhook URL first'`,`check` 走 `feishuCheck`,`post` 走 `feishuPost`。 - `core/src/client/connectors.js` —— Connect apps 对话框对 sender 行只渲染一个 `Feishu webhook URL` 输入框(`ConnectorRow`,`sender = connector.kind === 'sender'`),连上后显示 `Send` 字段。点 Connect → 粘 webhook → 就能发。这条是 #1269 加的,`agents` 侧 `#1278`(已合入 main)又给这一行加了 `inbound` 状态。 ## 还不成立的部分(同一行,同一个「点连接就可用」) 入站要三样东西,**没有一样能从 Connect apps 里点出来**: 1. `FEISHU_APP_ID` / `FEISHU_APP_SECRET` —— 只能 `secret-set`(CLI 或 Secrets 页),对话框不认这两个名字; 2. `config.feishu.enabled === true` —— `feishu-inbound` 的策略是 `enabled: rt.config?.feishu?.enabled === true`(`connectors.js:462-463`),而**整个 host 没有任何写 config 的入口**(`secret-set` 只写密钥,`connectors.js` 只写自己那条 record); 3. `config.feishu.ownerOpenId` 同上,只能手写。 所以现在的现实是:用户在左下角点 Feishu → 粘 webhook → 能发;但要收到飞书消息起 turn,还得回去开终端 `secret-set` 两个 app 凭据、再手改 config 打开开关。用户那句「点连接就可用」在入站这一半是空的。行 view 里已经有 `inbound: { app: 'missing' | 'set', ... }`(`connectors.js:605`),但客户端**一处都没读**(`grep -n inbound core/src/client/*.js` 为 0 命中),是死数据。 ## 要做成什么样(两条路,选一条) - **A(对话框)**:Feishu 行的 Connect 表单在 webhook 之后加 `App ID` / `App Secret` 两个字段(走现成的 `rt.secretEndpoint('secret-set', …)`,`connectors.js:639` 就是这么写的),再加一个开关「Turn on Feishu messages」;开关的落点决定要不要新增 config 写入通道,或把它存进 connector record(`keep(c, record)` 已有)并让 `feishuInbound` 读 record。 - **B(只在行上显示、不写入)**:行读 `inbound.app` / `inbound.started`,缺 app 凭据时在行上直接说「Save the app credentials with secret-set」,不假装能点。这条更小,但没解决「点连接就可用」。 倾向 A(用户说的是「点连接就可用」,B 等于把 CLI 说明搬到 UI 上)。 ## 验收 - 关闭 `feishu.enabled` 的实例里,点 Feishu 行 → 填 webhook + App ID + App Secret → 打开开关 → 不碰终端,飞书里发一句就能起 turn(这需要真 app,见下); - 至少一条用例钉住「对话框提交的 app 凭据落到 `FEISHU_APP_ID` / `FEISHU_APP_SECRET`,且开关为开时才 dial」,撤掉源码改动该用例变红。 ## 明确不做 - 不做飞书的事件回调 URL(主机前面 401,见 #1266 的测量),只走长连接; - 不动 `nameOf` / Settings 把飞书会话画成「朋友的 Bot」那条(`#1278` 正文 Risk 里仍 open,另开单再说)。
Activity
feat(feishu): connect Feishu on its connector row (#1266)
feat(feishu): connect Feishu on its connector row (#1266)
feat(feishu): connect Feishu on its connector row (#1266)
feat(feishu): connect Feishu on its connector row (#1266)