FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

HeiGeAi/feishu-pet: 小绝 · 飞书干活宠物:悬浮桌面的干活搭子。飞书 bot 干活实时联动换动作,消息气泡点击跳转会话,LLM 群汇报(API / Codex / Claude Code),飞书工作台(审批 / 任务 / 日程 · 自然语言预览确认),双击唤出小绝助手,5 皮肤 × 双形态换装 · GitHub

Repository files navigation

小绝 · 飞书干活宠物(feishu-pet)

飞书 bot 在替你干活,桌面上得有个小家伙让你看见它在干活。

悬停工作一览 · 默认两条 近期日程 · 独立展开

小绝诞生于 2026 年 7 月 25 日 · 飞书绝活大会北京场,画风来自大会点位海报的贴纸语言。


我为什么做这个

现在大家的飞书里都养着几个 bot:写周报的、跑流程的、回消息的。

但 bot 干活是个黑盒。它什么时候开始干、干到哪一步、干成了还是干砸了,你得自己切回飞书、翻到那个会话、往上翻聊天记录才知道。群里有人 @ 你、私聊来了新消息,也一样——飞书不在前台,世界就安静得好像什么都没发生。

小绝是把这层状态从飞书里拽出来、放到桌面上的一只宠物:

  • bot 开始干活,它抱起电脑敲代码;
  • bot 干完了,它蹦起来撒花;
  • 群里有人 @ 你,它歪头冒泡;私聊来消息,气泡直接告诉你谁说了什么;
  • 你扫一眼桌面就知道现在该不该回去看飞书。不用切窗口,状态自己长脚走到你眼前。

它不止是个状态灯。点一下气泡,直接跳进飞书那条消息所在的会话;右键菜单能给它派活——整理今日待办、总结过去 6 / 12 / 24 小时的飞书消息,它跑去翻你的群和私聊,让大模型总结好,再私聊发回给你。

它能干什么

  1. 六档状态实时联动——待机 / 理解中 / 干活中 / 搞定 / 出错了 / 摸鱼中。你的 bot 在关键节点 POST 一个事件(一行 curl),小绝立刻换动作换台词。协议极简,任何语言任何框架都能接。
  2. 飞书消息气泡提醒——监工(feishu/group-watcher.mjs)轮询你指定的群 + 最近活跃的私聊,新消息变成宠物头顶的气泡;@你、@所有人、刷屏、发图发文件,各有专属反应。气泡带 ↗ 角标,点一下直接 applink 唤起飞书跳到对应会话。
  3. 小绝的绝活——右键菜单派活:「整理今日待办」「过去 6 / 12 / 24 小时消息总结」。lark-cli 按时间窗捞消息 → LLM 生成待办清单或摘要 → 看板展示 + 私聊发你。每天 18:00 还有一份自动日报。
  4. 大模型自己选——看板里可视化切换 LLM 后端:自定义 OpenAI 兼容 API(baseUrl + key + model)、本机 Codex CLI、本机 Claude Code CLI。配置即存即用,不用重启。没有 key 的新用户直接选 CLI 模式,用自己已登录的账号就能跑。
  5. 消息归档看板——宠物身上都是碎片化的气泡,想看全的时候打开 http://localhost:7100/archive(看板「事件日志」右上角和宠物右键菜单都有入口):消息提醒 / 绝活汇报全文 / 干活指令,按天分组持久化归档,支持筛选和搜索,每条消息带「去飞书看 ↗」直达会话。
  6. 换装与形态——5 套卡通贴纸皮肤(像素猫 / Q 版财神 / 小绿芽 / 彩虹独角兽 / 飞书配色小飞机)× 幼年 / 成年两种形态,右键即换,重启保持。
  7. 桌面宠物与小绝助手——按住拖动、单击摸头;鼠标悬停直接查看待办、待审批和未来 30 天日程,每栏默认显示 2 条并可独立展开;双击打开“小绝助手”。助手顶部可展开全部未完成待办、待审批和今日日程;待办可在二次确认后完成,审批可展开摘要并跳转飞书或网页工作台。Esc 会优先取消当前确认,没有待确认操作时才进入关闭流程。
  8. 飞书工作台——http://localhost:7100/workbench 集中处理审批、任务和日程。审批支持递归解析表单 JSON、费用明细、附件元数据(默认不下载)、带内容哈希缓存的 LLM 风险评估、飞书深链,以及填写可选审批意见后二次确认通过或拒绝;任务支持手动和自然语言创建、修改、完成;日程支持普通日程、视频会议、参与人、地点和提醒。所有自然语言写操作都先生成结构化预览,再由用户确认执行。

桌面助手与工作台

鼠标悬停桌面宠物会打开“工作一览”:待办、待审批和近期日程分别显示总数与前 2 条,超过 2 条时可独立展开或收起。展开复用同一份 60 秒缓存,不会因为查看更多内容再次请求飞书。

双击桌面宠物,或从右键菜单选择“打开小绝助手”,可以打开 Electron 桌面助手。网页端的完整功能入口是 http://localhost:7100/workbench;直接在浏览器打开网页不会显示桌面助手的小型展开面板。

桌面助手支持两类操作:

  • 在对话框中用自然语言创建、修改或完成任务,创建或修改日程,以及处理审批。大模型只生成受限的结构化计划,写操作仍需用户确认。
  • 在顶部“工作概览”直接查看和处理飞书数据:全部未完成待办、当前待审批和 Asia/Shanghai 当天的日程。

发送后输入框立即清空;自然语言写操作先生成结构化预览,再由用户确认。

任务与日程范围

  • 待办列表合并“分配给当前用户”和“由当前用户创建”的未完成飞书任务,不按截止日期过滤;未来、已过截止时间和未设置截止时间的任务都会显示。
  • 创建任务未指定执行人时,默认分配给当前用户。自然语言只有在明确提到“提醒”时才创建任务提醒,且提醒必须同时有截止时间。
  • 桌面助手点击任务左侧圆圈后会先显示内联确认,确认成功后任务从待办列表移除。网页工作台的任务卡目前点击完成按钮后直接提交。自然语言完成任务仍会先生成计划预览。
  • 悬停“工作一览”查询今天零点至未来 30 天,排除已结束、已取消、已拒绝和已移除的日程,默认展示最近 2 条;展开后显示当前缓存中的全部结果。
  • 双击打开的桌面助手只展示今日日程。网页工作台默认查询今天到未来第 7 天,并允许调整起止日期;创建会议和查询空闲时间可能需要额外日历权限。
  • 右键菜单里的“整理今日待办”是对近期飞书消息做 LLM 摘要,不等同于飞书任务列表,也不会自动创建飞书任务。

关闭与上下文

点击桌面助手右上角关闭按钮,或在没有其他待确认操作时按 Esc,会询问是否保留上下文:

  • 保留并关闭:在本机保存最近对话、输入草稿、工作概览展开状态和当前标签页,重新打开后可继续对话。
  • 清空并关闭:只清除本地助手的对话上下文和草稿,不会删除或修改飞书里的审批、任务和日程。
  • 待执行的结构化计划和待确认的任务完成操作不会缓存。

勾选“今天不再询问”后,当天后续关闭会自动沿用本次的“保留”或“清空”选择;偏好按本机日期保存,次日自动失效并重新询问。若选择了“清空”,当天新产生的对话在后续关闭时也会自动清空。目前界面内没有提前重置当天偏好的入口。

Esc 的处理顺序是:关闭“是否保留上下文”弹窗、取消任务完成确认、进入关闭流程。折叠工作概览或从待办切换到其他标签页,也会取消尚未提交的任务完成确认。

桌面与网页审批的差异

能力 桌面助手 网页工作台
列表交互 点击审批后在当前条目内展开主要摘要 左侧列表只负责选择,右侧显示完整详情,不在列表内展开缩略卡
审批内容 发起人和主要摘要 完整表单、出差等结构化字段、费用明细与附件元数据
LLM 评估 不在摘要面板中自动评估 选择审批后自动读取缓存或生成风险建议,可手动重新评估
审批操作 跳转飞书、在网页端打开、无意见快捷通过或拒绝;提交前仍需确认 可填写或留空审批意见,二次确认后通过或拒绝
附件 不展示、不请求附件内容 只列出附件元数据;用户点击“按需打开”后才访问附件 URL

LLM 评估只是辅助建议,不会自动提交审批决定。若审批没有返回可操作的 task_id,或飞书标记为不支持 API 审批,应使用“飞书中打开审批”。

费用区会并列展示两个来源:“飞书公式返回”直接读取审批表单中名为“费用汇总”的字段;“明细计算”由网页前端对每一项可识别的金额求和。只有所有明细都带有效金额时才计算总数,缺少公式字段或金额时显示“未返回”或“待核验”,不会用 ¥0.00 代替缺失数据。

快速开始

需要 Node.js ≥ 22.22.0 和 macOS。

npm install
npm run pet        # 构建 + 启动桌面宠物(日常启动用 npm run pet:run)

宠物窗口内嵌事件服务器(desktop/server.cjs,:7100),看板同时挂在 http://localhost:7100/,不依赖浏览器和 Vite 也能跑

打通飞书消息感知和工作台前,需要安装 lark-cli。首次使用先初始化应用配置;收到版本更新提示时使用内置更新命令:

lark-cli config init --new   # 首次配置应用
lark-cli update              # 同时更新 CLI 和配套 Skills

更新后,如果正在通过 AI Agent 使用 lark-cli Skills,需要退出并重新打开 Agent。右键菜单的消息总结会按需启动一次性任务,不需要再单独启动 watcher;需先在飞书开放平台开通同名 scope,再完成用户授权:

lark-cli auth login --scope "im:chat:read im:message.history:readonly im:message.group_msg:get_as_user im:message.p2p_msg:get_as_user im:message.reactions:read contact:user.base:readonly"

只有需要持续监控指定重点群的消息气泡和 18:00 日报时,才需要额外配置并启动长驻监工:

cp feishu/.env.local.example feishu/.env.local   # 可选:填入要重点监听的群 chat_id
npm run pet:watch                                # 启动监工(PET_REPORT_DRYRUN=1 时总结只上看板不发飞书)

chat_id 可通过 lark-cli im +chat-list --as user 查找。当前用户 open_id 默认从 lark-cli auth status --json 自动读取,无需写入 .env.local。

工作台操作的是用户自己的审批、任务和主日历,需要额外完成用户授权:

lark-cli auth login --scope "approval:task:read approval:instance:read approval:task:write task:task:read task:task:write calendar:calendar.event:read calendar:calendar.event:create calendar:calendar.event:update"

应用还需要在飞书开放平台开通相同 scope。也就是说,工作台权限同时受“应用已开通权限”和“当前用户已授权”两层控制;多次 auth login --scope 会增量补充用户授权。工作台顶栏会检测用户 token 状态,授权过期或 scope 不足时显示并可复制最小权限命令。

日程查询、创建和修改都直接使用飞书的 primary 主日历别名,不额外申请读取日历资料的权限。calendar:calendar.free_busy:read 只用于查询空闲时间,不影响指定时间创建日程或会议。如果授权返回 These permissions are restricted by your organization's security policy,说明该权限被组织策略限制,重复登录或在个人授权页勾选权限无法解决,需要组织管理员调整策略;在策略放开前,对应能力不可用,其他已获授权的功能不受影响。

如需使用“查找空闲时间”建议,再单独增量授权:

lark-cli auth login --scope "calendar:calendar.free_busy:read"

审批通过或拒绝属于高风险写操作,必须在界面确认具体审批和动作后才会提交,审批意见可以留空。

接进你自己的 bot

在你 bot 干活的代码里,关键节点 POST 一下就行:

curl -X POST http://localhost:7100/api/event \
  -H 'Content-Type: application/json' \
  -d '{"state":"working","label":"正在生成周报"}'

六档状态:idle / thinking / working / success / error / sleeping。 也可以直接用 feishu/pet-hook.mjs 脚本,或参考 feishu/pet-bot.example.mjs (飞书官方 SDK 长连接模式,不用公网回调,群里发「摸摸」「投喂」就能逗宠物)。 完整协议见 feishu/README.md

数据、隐私与本机安全

哪些数据会交给大模型

  • 自然语言操作会把本轮指令、最近对话,以及当前审批摘要、未完成任务和日程上下文交给已配置的大模型,用于解析指代和生成结构化计划。
  • 网页审批评估会把审批表单 JSON 交给大模型。临时签名的附件 URL 会先替换成占位文本,不会请求、下载或解析附件内容,也不会进入审批缓存哈希。
  • 使用 OpenAI 兼容 API 时,上述数据会发送到你填写的 baseUrl。使用 Codex CLI 或 Claude Code CLI 时,提示词交给本机已安装的 CLI,但后续数据处理和联网行为仍受对应 CLI 与账号服务条款约束,不能视为离线模型。

审批建议按脱敏后的审批内容和模型配置计算哈希,缓存到 ~/.xiaojue-pet/approval-evaluations.json。审批内容或模型配置未变化时会复用缓存,避免每次选择审批都消耗 token;点击“重新评估”会强制发起新请求。缓存最多保留 200 条,没有自动过期时间(TTL);它保存评估结果、哈希和时间戳,不保存原审批 JSON 或附件文件。

本机保存的数据

数据 位置 说明
LLM 配置与 API Key ~/.xiaojue-pet/llm.json API Key 在界面回显时会脱敏,但文件本身是本机明文 JSON,不存入系统 Keychain;程序会将文件权限设为 0600
审批评估缓存 ~/.xiaojue-pet/approval-evaluations.json 最多保存 200 条评估结果,无 TTL,新建时仅当前用户可读写
消息、汇报和指令归档 ~/.xiaojue-pet/archive.json 可能包含飞书消息摘要和 LLM 汇报正文
桌面助手上下文与当日关闭偏好 Electron/Chromium 的本地存储 包含最近对话、草稿和界面状态,不包含待执行计划
消息监工配置 feishu/.env.local 保存群 chat_id 和用户 open_id,已被 .gitignore 排除

这些数据都没有端到端加密。不要把 ~/.xiaojue-pet/、feishu/.env.local、lark-cli 登录目录或终端中的 token 提交到 Git、发到群里或复制给不可信程序。共享电脑上建议限制 llm.json 和 archive.json 的文件权限,例如设置为仅当前用户可读写。清空桌面助手上下文不会清除 LLM 配置、消息归档或审批评估缓存。

本地服务边界

事件服务器默认只监听 127.0.0.1:7100,并校验浏览器来源;写请求还要求 JSON 和本地客户端标识。这些检查用于减少普通网页误调用,不能防御已经能在本机运行的恶意进程。不要把 PET_HOST 改为 0.0.0.0,也不要通过公网代理或端口转发暴露工作台,否则其他人可能借用你的 lark-cli 用户权限发起飞书操作。

飞书访问令牌由 lark-cli 管理,项目固定使用用户身份访问个人审批、任务和主日历。不要把用户身份和 bot 身份混用,也不要在日志或问题反馈中粘贴 access token、app secret 或完整临时附件 URL。

目前的边界(诚实版)

  • 只测过 macOS。Electron 本身跨平台,但托盘图标、快捷键、applink 唤起都没在 Windows / Linux 上验证过,欢迎 PR
  • 消息感知依赖 lark-cli 的本机登录态,走的是你的用户权限,不是独立 bot 应用;飞书侧限流策略变了可能会影响轮询。
  • 飞书 CDN 附件默认只展示元数据。点击“按需打开”后,PDF 可能因 CDN 响应头而直接下载;项目不会在后台解析发票或附件正文。
  • 日历和空闲时间能力最终受组织安全策略控制。用户已授权不代表组织一定允许,策略限制需要管理员处理。
  • 还没有 electron-builder 打包,分发需要本机有 Node 环境(路线图第一项)。
  • 私聊会话的 applink 跳转依赖飞书 Mac 客户端,没装客户端会打开网页版。

路线图

  • electron-builder 打包成 .app / .dmg(免 Node 环境分发)
  • 多皮肤与换装(5 皮肤 × 幼年/成年双形态)
  • 消息归档看板(/archive · 消息/汇报/指令按天分组持久化)
  • 飞书工作台(审批 / 任务 / 日程 / 自然语言预览确认)
  • 桌面上随机游走 / 卖萌待机动作
  • 互动回执:被摸后 bot 在飞书群里回一句撒娇文案
  • Windows / Linux 适配

目录

desktop/    Electron 主进程 / 托盘 / 内嵌事件服务器
feishu/     飞书 CLI 封装 / 监工 / LLM 客户端 / hook 与互动 bot 示例
src/pages/  网页看板 / 消息归档 / 飞书工作台 / 桌面助手界面
src/lib/    工作台前端 API、数据归一化与类型
src/pet/    像素 sprite 与动画舞台(网页看板与桌面窗口共用)
public/     皮肤形象 / 海报画风素材 / 实拍截图
pet.html    桌面宠物窗口页(透明底)
index.html  网页调试看板

共创作者

欢迎更多 PR,合入即列名。

License

MIT © 黑哥 (heigeai)

About

小绝 · 飞书干活宠物:悬浮桌面的干活搭子。飞书 bot 干活实时联动换动作,消息气泡点击跳转会话,LLM 群汇报(API / Codex / Claude Code),飞书工作台(审批 / 任务 / 日程 · 自然语言预览确认),双击唤出小绝助手,5 皮肤 × 双形态换装

Resources

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages


Back | FazBrowse Home | New Git URL