飞书接入 · 让第二大脑对外答疑
一句话:给你的知我配一个飞书机器人,飞书联系人就能在手机上 1:1 私聊向它提问——能读到什么、用什么模型答、答完存不存,都由你为每一位访客单独决定。默认它只读你编译好的 Wiki,碰不到 raw 原始笔记。
0.8.0 起可用;现已支持为访客分配通讯录 agent、单独选应答模型、设会话保留策略。
它解决什么
你的知识库里,有些内容可以对外说(编译好的 Wiki 词条、公开方法论、对外 FAQ),有些是绝对私密的原始笔记(日记、工作机密、个人资料)。「飞书接入」让别人来问,同时用**「给访客绑定什么应答身份」**来控制他到底能读到什么:
- 别人在飞书里私聊机器人,知我用你给这位访客绑定的应答助手 / agent 来回答;
- 能力集就是可见边界——默认的 wiki 助手只能读编译好的 Wiki,碰不到 raw 原始笔记;你可以把某访客切到空间助手(能读原始笔记,高危),或更进一步分配一个通讯录里的 agent(把该 agent 的工作目录与权限一起交给这位访客)。
这是源头隔离:外部回答用的是一套能力集固定的应答身份,能读什么由身份决定,而不是事后对内容脱敏。
架构上,知我用飞书的长连接(WebSocket)接收消息:由本地 app 主动连飞书云,无需公网 URL、无需 webhook、无需内网穿透。凭证加密存在你本机,app 关掉连接就断,飞书 SDK 都不加载。
前置:一个飞书企业自建应用
你需要一个飞书企业自建应用 + 机器人(个人可在飞书开放平台免费创建)。
1. 创建应用
- 打开 飞书开放平台 → 「创建企业自建应用」。
- 填应用名称 / 图标(如「知我」),创建后进入应用详情页。
- 在「凭证与基础信息」页记下两个凭证:
- App ID(形如
cli_xxxxxxxxxxxxxxxx) - App Secret(点「查看」获取,注意保密)
- App ID(形如
2. 开启机器人能力
应用详情 → 「添加应用能力」 → 启用 机器人(Bot)。
3. 事件订阅选「长连接接收」(关键)
- 应用详情 → 「事件与回调」 → 「事件配置」。
- 订阅方式选 「使用长连接接收事件」(不是「将事件发送至开发者服务器地址」)。
- 选长连接后无需填 webhook URL、无需 verify_token / encrypt_key、无需公网暴露。
- 添加事件:「接收消息
im.message.receive_v1」。
4. 申请权限
「权限管理」中开通(1:1 问答最小集):
im:message(获取与发送单聊消息)im:message:send_as_bot(以应用身份发消息)
5. 发布版本
「版本管理与发布」→ 创建版本 → 提交发布(个人企业自建应用通常即时生效;组织下可能需管理员审批)。
在知我里填凭证并启用

- 知我 → 设置(
⌘,)→ 「访问与回复」组 → 「通道接入」。 - 进入「飞书接入」,填 App ID 与 App Secret → 保存凭证。
- App Secret 经系统
safeStorage加密存本机,保存后不再回显(只显示 App ID 与状态)。
- App Secret 经系统
- 打开连接开关(需已保存凭证才可点)。
- 重启知我——凭证在 app 启动时才建长连接,所以启用后需重启一次以连线。
多账号:同一个「飞书接入」下可以管理多个机器人(多个企业自建应用),各自独立填凭证、独立启停。适合你想为不同用途开不同 bot 的场景。
连接成功后,机器人就在线待命了。
决定外部能读到什么:给访客绑定应答身份
外部能读到什么,由你给这位访客绑定的「应答身份」决定——它的能力集就是可见边界。有两类可选:
一、内置只读助手(默认、最安全)
| 应答助手 | 能读到 | 说明 |
|---|---|---|
| wiki 助手(默认) | 只读编译好的 Wiki 词条 | 每个新批准的访客默认就是这档,碰不到 raw 原始笔记 |
| 空间助手(高危) | 全库,含 raw 原始笔记 | 能读原文,风险高——切到它时会二次确认 |
默认情况下外部只能问到你的 Wiki,不会读到任何原始笔记。这是源头隔离:wiki 助手的工具集里根本没有读原文的能力。
二、通讯录 agent(把指挥权交出去)
除了两个内置助手,你还可以把访客的应答身份切换成一个通讯录里的 agent(如你配的本地 opencode / codex agent)。这一步的语义比「切助手」更重——
分配一个 agent 给外部访客 = 把这个 agent 的指挥权交给他。 这位访客的每条提问,都会由该 agent 在**它自己配置的工作目录(cwd)里、以它的权限档(tier)**去真实执行来回答。
因此 agent 的 cwd + tier 就是安全边界(由底层引擎强制):
- cwd:agent 只能在这个目录里工作。分配给外部访客的 agent,务必配一个专用、圈定好的工作目录——没配工作目录的 agent 不允许对外分配。
- tier:
read-only(只读)/approval(需审批,即将支持)/yolo(放开)——决定这个「被外部指挥」的 agent 能做到什么程度。
普通对外答疑用内置 wiki 助手即可;只有你确实需要「让某人直接指挥某个 agent 在某个目录里干活」时,才分配通讯录 agent,并为它圈好 cwd、选对 tier。
为访客单独选应答模型
给访客绑定了通讯录 agent后,可以在协作配置面板里为这位访客单独指定应答模型(复用与消息 tab 一致的模型选择)。这样同一个 agent,回答 A 访客用 GLM,回答 B 访客用 GPT,互不影响。留空则用该 agent 模板配置的默认模型。
内置 wiki / 空间助手没有独立模型概念,此项只在绑定了通讯录 agent 时出现。
会话保留策略:这位访客的对话存不存
每位访客可单独设置对话在知我本地的保留策略(不影响 agent 侧的上下文连贯):
| 模式 | 含义 |
|---|---|
| 完整存储(默认) | 该访客的问答完整留档,协作 tab 可回溯全部历史 |
| 仅留最近一轮 | 只保留最近一问一答,每轮覆盖旧的——不长期留档,但列表活动时间仍准确 |
选「仅留最近一轮」的访客,左侧列表头像上会有一个不留痕徽标提示。
批准联系人(capture-then-approve)
飞书联系人首次私聊机器人时,其身份会被捕获为待审批,此时不会得到答案。你需要先批准:

- 进入知我的协作 tab(Agent Fleet 下)——新访客会以内联接入卡片出现在顶部。
- 找到该联系人 → 批准。
- 批准后,该联系人后续的 1:1 提问才会被服务。
有新访客待审批时,即使你在知识模式,侧栏也会有一个跨模式提示 badge,不用一直守在协作 tab。
在协作 tab 里配置每位访客

选中一位已批准的访客后,上述所有 per-访客设置都在协作对话窗里就地完成,有几个等价入口:
- 头部「···」按钮:弹出配置面板——切换应答助手 / agent、选应答模型、切会话保留策略、看访客详情、复制 open_id、清空对话、撤销授权。改动选完即生效(无需再点保存)。
- 对话区 / 左侧访客列表条目右键:弹原生菜单,快捷切换会话模式(当前档带 ✓)、看详情、复制、清空、撤销。
- 输入框左下角芯片:点 agent 名芯片就地切换应答 agent;点「Bot 直发」芯片查看发信身份。
任一入口改了 agent,输入框芯片会即时同步;左侧列表条目第二行也直接显示该访客当前的应答 agent 名。
当前能力边界
老规矩,把话说清楚——当前版本的范围:
- 仅 1:1 文本私聊。把机器人拉进群 @它不会触发问答。
- 默认只读编译好的 Wiki(wiki 助手),碰不到 raw 原始笔记;要读原文切空间助手(高危,二次确认),要让访客直接指挥某 agent 则分配通讯录 agent(cwd+tier 即边界)。
- 回答基于你的知识库 / 被分配 agent 的工作目录,由绑定的应答身份来答,不是让外部凭空翻你的文件系统。
- 需要你自建飞书应用:凭证是你的、连接是你本机发起的,知我不经手你的飞书账号。
主动推送、审批档(approval)relay、更复杂的对外协作能力,是后续版本的方向。
排障
| 现象 | 排查 |
|---|---|
| 启动后连不上 / 报鉴权错 | App ID / App Secret 是否正确;应用是否已发布;权限是否开通 |
| 收不到消息 | 事件订阅是否选了「长连接接收」并添加了「接收消息」事件;机器人能力是否开启 |
| 联系人问了没回 | 是否仍在待审批(需先在协作 tab 批准);连接开关是否开启;保存凭证后是否重启过 app |
| 问到的内容答「没有这个信息」 | 内容是否已编译进 Wiki(wiki 助手只读 Wiki);要让访客读到原始笔记,需把他切到空间助手 |
| 分配了 agent 但答「暂无法服务」 | 该 agent 是否配了工作目录(cwd)——没配 cwd 的 agent 不允许对外分配 |
| 切了模型却没生效 | 该访客是否绑的是通讯录 agent(内置助手无独立模型);切换后下一轮生效 |
| 群里 @ 没反应 | 正常——当前仅服务 1:1 私聊 |
想让 AI agent(Claude Code / Cursor)也读你的知识库?看 MCP 接入。