BOT Chain 交付部 · 内部说明 · 2026-08

交付 Bot:按交付链路说明

按真实交付顺序:建群归集 → 进群欢迎 → 对接答疑 → 主网上线收尾 → 钱包入库 → 飞书日报。 Telegram 侧只跑一个交付号(@Roy4by4 / python -m bot.main); 钱包地址由 Google Form + Apps Script 独立回写飞书。

① 进群归集 / 欢迎 ② 对接 FAQ ③ 操作员口令上线 ④ 表单 · Logo · 钱包 ⑤ 飞书日报
目录

按交付顺序阅读

从前到后即一条完整交付路径;权限与口令紧挨「上线收尾」。配置以生产 config/config.yaml 为准。

01 · 交付全流程

从建群到收钱包,一条链路

生产仅保留一份交付号会话(systemd:botchain-qa)。 下图按交付时间顺序排列;后文各页与此一一对应。

① 进群 Folder + 欢迎

标题匹配归入 Botchain 夹;入群即时欢迎

交付号
② 对接 FAQ / absorb

Folder 内自动答疑;测试号 absorb 沉淀知识

交付号
③ 上线 口令收尾

操作员发「项目已上线」→ 改状态 · 发表单 · Logo

交付号
④ 收地址 钱包入库

项目方填 Google Form → Apps Script 写飞书

Google
⑤ 复盘 飞书日报

每日 00:00(上海)汇总前一日钱包表

交付号
交付号负责
  • Folder、欢迎、FAQ、absorb
  • 操作员口令与上线收尾
  • Webhook / 约 60s 状态侦测(5 分钟轮询关闭)
  • 飞书钱包日报;按需交付周报
云端独立负责
  • Google Apps Script onFormSubmit
  • 表单 → 飞书「项目方钱包地址搜集」
  • 交付号停机时仍可写入
  • 地址不向 Telegram 群广播
02 · ① 进群

Folder 归集与即时欢迎

Folder 归属影响 FAQ 等群内自动能力。操作员上线口令不强制要求群已在 Folder, 但群名仍须能匹配飞书项目名。欢迎语入群即发,无需等待群内先有消息。

Folder
  • 标题含 botchain / bot chain 即纳入
  • 归入 Botchain #1、#2…(单夹容量约 100)
  • 满容后按前缀自动新建编号
  • 入群、启动扫描、每 2 分钟补扫
  • 与试点名单无关,全局生效
欢迎(即时)
  • min_messages_before_welcome: 0
  • 优先依据近期消息识别语言,其次群标题;默认英文
  • 中/英各三条:自我介绍、集成文档、引导继续提问
  • 状态文件防重复;已 baseline 群不会被扫描回刷
  • 试点关闭后:标题匹配即欢迎
03 · ② 对接期

FAQ、absorb 与 Agent 词条

对外答疑以本地 knowledge/(含 learned)为主。Wiki 同步文件默认不参与检索。

FAQ
  • 仅 Folder 内;@ 或问句形态触发
  • 跟随用户语言回复;资料不足则不答
  • 文档、帮助中心、表单链接可附带时附带
  • 不反问澄清;多选项一次列全
  • FAQ 附页脚;欢迎与工作流消息不附
absorb
  • 触发词:absorb
  • 先写本地 knowledge/learned/
  • 成功后 upsert 飞书 Agent 表
  • 表:tblP28CyWdY5ml8r
  • base:Kb6rbLenJa4FzWsi6pzlTkdjg0e
边界说明
  • 报价、合同、排期等敏感题自动拒答
  • 同群同用户约 120 秒冷却;发送前约 10 秒延迟
  • Wiki 仅为内部备份,不作对外 FAQ 主源
  • 进程停机时 FAQ 与 absorb 同步不可用
04 · ③ 上线前 · 权限

FAQ 与交付口令分轨管理

FAQ 面向 Folder 内项目方。状态变更、发表单、拉取周报等口令仅 操作员白名单可用。口令明细见下一页;配置说明见 docs/delivery-operator-whitelist.md

操作员白名单
  • 配置项:workflow.operators
  • 交付号:@Roy4by4(始终可用)
  • 操作员:@Josh_0zh@Xuanxi_zhao
  • QA:@Trent_one(qa_testers.yaml)
  • 未列入账号:口令无效
操作员权限范围
  • 标记主网上线:改飞书状态 + 发表单 + 抓 Logo
  • 仅发送上线表单(不改状态)
  • 拉取 交付周报 / /stats
  • 口令不要求群已在 Folder(群名仍须对齐飞书项目名)
与 BD 忽略名单区分
  • whitelist.yaml → ignore_users:FAQ 黑名单
  • operators:交付口令白名单
  • 交付同学入白名单后,宜同步移出 ignore
  • FAQ / 欢迎 / Folder 规则独立,不依赖 operators
05 · ③ 上线前 · 口令

口令须整句精确匹配

交付日常可仅在 Telegram 发送口令完成上线收尾:更新飞书状态、发送表单、尝试抓取 Logo。 钱包地址仍由项目方填表收集,口令不会自动抓取地址。

主网上线(改状态 + 表单 + Logo)
  • 项目已上线
  • 上线完成
  • /mark_live
  • mark live
  • 在对应项目群发送;按群名匹配飞书「项目名称」
仅发表单 / 数据报告
  • 仅发表单:/send_form · 发送上线表单 · send form
  • 短版周报:交付周报 · 交付报告 · /report
  • 明细统计:交付统计 · /stats
  • 周报为按需回复,无定时推送
与系统触发的关系
  • 群口令:即时(交付主路径)
  • 飞书 Webhook:状态变更后秒级(自动化就绪时)
  • 状态侦测:约 60 秒,补齐 Webhook 漏网
  • 表单 / Logo 具备去重,避免重复刷群
交付同学最短流程
  • 进入项目对接群(群名与飞书项目名对齐)
  • 上线收尾发送:项目已上线
  • 仅需表单时发送:发送上线表单
  • 查看周数据:私聊 @Roy4by4 发送 交付周报
  • 当前可操作:@Josh_0zh · @Xuanxi_zhao · 交付号本人

增删操作员:更新服务器 config.yamlworkflow.operators,执行 systemctl restart botchain-qa。 若账号仍在 whitelist.yaml 的 ignore_users,交付角色通常应同步移除。 完整说明:docs/delivery-operator-whitelist.md

06 · ④ 主网上线收尾

表单发送与 Logo 补全

统一动作:匹配项目群、发送 Google Form、尽量补全 Logo。 交付主路径为操作员群口令;飞书改状态依赖 Webhook, 漏网由约 60s 状态侦测补齐。5 分钟全量轮询已关闭; 启动补扫关闭;群名无法匹配时使用 /send_form 向当前群直发。

触发路径(可并存,互相去重)
① TG 口令 mark-live 交付主路径
ON
触发
操作员整句发送:项目已上线、/mark_live、mark live、上线完成
行为 / 现状
更新飞书 Live 后立即发表单与 Logo。白名单:Roy4by4 / Josh_0zh / Xuanxi_zhao / Trent_one
② 飞书 Webhook 表上状态变更推送
待联调
触发
飞书自动化:进度变为 Live → POST /workflow/live
行为 / 现状
发表单、抓 Logo。:8787 与隧道已监听;需以真实状态变更验收
③ 状态侦测 Webhook 漏网补齐
ON · ~60s
触发
约每分钟检测「新变为 Live」的行(live_status_watch,非 5 分钟全量轮询)
行为 / 现状
仅处理新变 Live;启动时对存量 Live 建基线,不群发
④ 启动补扫 重启回溯
OFF
触发
进程启动时扫描历史 Live(live_startup_scan)
行为 / 现状
已关闭。开启后重启可能对历史 Live 项目重复群发
⑤ 手动 /send_form 匹配失败时的兜底
ON
触发
授权账号在目标群发送:/send_form、发送上线表单、send form
行为 / 现状
仅向当前群发表单;不依赖群名匹配,不修改飞书状态
进入处理流程后
  • 以群标题模糊匹配飞书「项目名称」
  • 匹配成功后发送 Google Form 文案与链接
  • 有官网 / 已上线链接则抓取 Logo,写入「项目logo」
  • 本地状态去重;首次 baseline 不会对存量 Live 全量群发
注意事项
  • 无匹配或多匹配:跳过;人工对齐群名,或使用路径 ⑤
  • Logo 抓取失败即停止,不自动重试
  • Webhook 未通时:飞书改 Live 依赖路径 ③,或直接使用路径 ①
  • 状态侦测与 Webhook 均要求服务器交付号进程在线
07 · ⑤ 钱包与日报

地址仅写入飞书

钱包地址只进入飞书多维表格。Telegram 内部群广播已关闭。零点日报由交付号进程按上海时区推送。

Google Form → Lark
  • Apps Script onFormSubmit
  • 表:项目方钱包地址搜集
  • 按项目名 upsert
  • 交付号停机时仍可写入
  • 表单字段变更时需同步更新脚本映射
TG 钱包通知 · 关闭
  • wallet_notify_enabled: false
  • 财务 / 运营 / 技术 TG 群均不接收地址
  • 查阅地址请前往飞书表格
飞书零点日报 · 启用
  • 每日 00:00 Asia/Shanghai
  • 统计前一自然日:新增条数、地址填写情况
  • 推送至配置的固定飞书群
  • 交付号当日未运行则日报缺失
08 · 运行开关

生产配置一览(运维附录)

以服务器 /opt/botchain-qa-tg-bot/config/config.yaml 为准。 变更开关后需重启 botchain-qa

表单 / Logo 5 分钟轮询 form_logo_poll_enabled · 已关闭,改由 Webhook + 状态侦测承接
OFF
Live 状态侦测 live_status_watch · 约 60s,仅处理新变为 Live 的行
ON
飞书 Live Webhook :8787 + 隧道监听中;飞书自动化待状态变更验收
待联调
启动时补扫 Live live_startup_scan · 避免重启后对历史 Live 群发
OFF
钱包地址 TG 广播 wallet_notify_enabled
OFF
飞书钱包零点日报 lark_digest_enabled · Asia/Shanghai 00:00
ON
交付指标 / 周报 metrics · 按需口令拉取,无定时推送
ON
试点模式 pilot_enabled · FAQ / 欢迎已全量
OFF
欢迎语即时发送 min_messages_before_welcome = 0
ON
Agent KB 同步 absorb → tblP28CyWdY5ml8r
ON
FAQ 页脚 footer_enabled · 欢迎 / mark-live / 表单消息不加页脚
ON
Lark Wiki 同步 持续同步;默认不进入 FAQ 检索
内部

7×24 运行需部署于服务器并以 systemd 常驻。本机休眠将中断扫描、Webhook 与日报调度。 飞书秒级推送依赖稳定公网 HTTPS(见 scripts/LARK_LIVE_WEBHOOK.md); 临时隧道仅适合联调,不宜作为长期生产入口。交付主路径以操作员群口令为准。

09 · 已知限制

主路径可用,以下事项需人工关注

自动化无法覆盖全部边界场景。下列项为当前主要限制与运维约束。

群标题与项目名不一致
  • 匹配依赖群标题与飞书「项目名称」相似
  • 差异过大或一对多时跳过,避免误发
  • 人工对齐群名,或在目标群使用 /send_form
Webhook 公网入口
  • 本机 :8787/workflow/live 与 /health 正常
  • 飞书外网回调需稳定 HTTPS(域名或长期 Tunnel)
  • 联调完成前:交付以群口令为主,飞书改状态依赖约 60s 侦测
部署与会话约束
  • 生产:云服务器,服务名 botchain-qa
  • 禁止本机与服务器同时登录同一交付号
  • 迁移需携带:代码、.env、Session、config、data/*.json
  • Logo 抓取需外网及 Playwright 环境
10 · 要点回顾

按交付顺序记住这些

  • ① 进群:标题匹配进 Folder,即时欢迎(默认英文)。
  • ② 对接:Folder 内 FAQ;absorb 写入 learned 并同步 Agent 表。
  • ③ 上线:操作员整句发「项目已上线」;Webhook + 约 60s 侦测托底;5 分钟轮询关闭。
  • ④ 表单 / Logo:匹配失败用 /send_form;Logo 失败不重试。
  • ⑤ 钱包:Google Form → 飞书;TG 不广播;零点日报启用。
  • 操作员:@Josh_0zh、@Xuanxi_zhao;完整手册见后文附录(同源 docs/delivery-operator-whitelist.md)。
  • 周报 / 统计按需口令拉取;生产单进程常驻服务器。
① 进群 ② FAQ ③ 口令上线 ④ 表单 / Logo ⑤ 钱包 / 日报
附录 A · 操作员白名单手册

「白名单」指什么,谁能操作

面向交付同学:谁能触发交付动作、发什么口令、与「BD 忽略名单」有何区别。 生产交付号:@Roy4by4(systemd:botchain-qa)。 完整文档:docs/delivery-operator-whitelist.md

白名单 = workflow.operators
  • 配置路径:服务器 /opt/botchain-qa-tg-bot/config/config.yaml
  • 键名:workflow.operators
  • 未列入账号发口令:无效
  • 交付号本人始终可用,无需写入 operators
当前名单(2026-08-10)
Telegram说明
@Josh_0zh交付操作员
@Xuanxi_zhao交付操作员
@Roy4by4交付号本人(始终可用)
@Trent_oneQA(qa_testers.yaml,权限类似)
操作员能做什么
能力说明
标记主网上线改飞书「项目状态」→ 主网上线,并触发 Google 表单 + Logo 抓取
仅发上线表单不改飞书状态,只在当前群发送 Google 表单
交付周报 / 统计拉取管理层短版周报或运维明细
不强制 Folder任意群可发口令;群名仍须能匹配飞书项目名
附录 B · 口令一览

须整句完全一致,勿加减字

多出的字(如「请项目已上线」)不会触发。钱包地址不会被口令自动抓取,仍由项目方填表。

主网上线(改状态 + 表单 + Logo)
项目已上线 上线完成 /mark_live mark live
  • 对应项目群发送上述任一整句
  • 按当前群名匹配飞书「项目名称」
  • 状态设为:BOT主网上线 Live on BOT Chain Mainnet
  • 立即发表单;尝试抓 Logo(失败不重试)
  • 匹配失败会回复,不会乱改其他行
仅发表单 / 数据报告
/send_form 发送上线表单 send form
  • 只向当前群发表单,不改飞书状态
口令内容
交付周报 / 交付报告 / /report管理层短版
交付统计 / /stats运维明细长版

周报无定时推送,仅口令触发。可私聊交付号或在其所在群发送。

附录 C · 关系说明

上线触发路径,以及与 BD 忽略名单的区别

同一套结果(Live → 表单 + Logo)可多入口并存、互相去重。交付日常可只在 Telegram 发口令,不必再手动改飞书。

上线触发对照
入口谁触发延迟
群口令(主路径)操作员在项目群发关键词立刻
飞书改状态 → Webhook进度表改为主网上线秒级(自动化就绪时)
状态侦测表上已是 Live,但 Webhook 未打到约 1 分钟内
BD 忽略名单(勿混淆)
  • 文件:config/whitelist.yamlignore_users
  • 文件名含 whitelist,实际是黑名单
  • 作用:这些人发言时,Bot 不做 FAQ 自动回复
  • 常见于 BD / 内部拉群账号,避免刷屏式答疑
操作员白名单
  • 文件:config.yamlworkflow.operators
  • 作用:交付口令权限(上线 / 表单 / 周报)
  • 若某人既要口令、又曾在 ignore:应加入 operators,并视需要移出 ignore
  • 示例:@Xuanxi_zhao 已按此处理
附录 D · 运维与转发

如何增删操作员,以及可转发的最短说明

增删需服务器权限;改完后重启服务生效。

新增 / 移除操作员
  1. 编辑 /opt/botchain-qa-tg-bot/config/config.yaml
  2. 维护 workflow.operators
  3. 执行 systemctl restart botchain-qa
  4. 日志应出现:Workflow operator @xxx -> user_id=...
workflow: operators: - username: Josh_0zh - user_id: 1359647881 username: Xuanxi_zhao - username: NewPerson

若需其发言可被 FAQ 处理,请同步从 ignore_users 删除后重启。

给交付同学的最短说明(可转发)
  1. 用你的号进项目对接群(群名尽量与飞书一致)
  2. 上线收尾时单独发一行:项目已上线
  3. Bot 会改飞书状态、发表单、尝试填 Logo
  4. 只要表单时发:发送上线表单
  5. 看周数据:私聊 @Roy4by4 发 交付周报

当前可操作:@Josh_0zh@Xuanxi_zhao,以及交付号本人。

相关配置位置
路径
操作员 / 口令config.yaml → operators / mark_live_commands / manual_commands
BD 忽略名单whitelist.yaml → ignore_users
QA 测试号qa_testers.yaml
飞书 Webhookscripts/LARK_LIVE_WEBHOOK.md
服务状态systemctl status botchain-qa
1 / 16