灵犀桥是一个用于连接 Codex / Claude(未来支持其他 vibe coding 工具) 与飞书、QQ(未来支持其他机器人)机器人的双向智能网关服务。
- 作者:Albert_Luo
- 邮箱:480199976@qq.com
- 更新日期:2026-04-30
- 已完成
Task 1:Fastify + TypeScript 服务骨架 - 已完成
Task 2:SQLite 初始化与基础仓储层
维护规则:
- 每次执行
npm publish成功后,会自动触发postpublish -> npm run release:update-readme更新本表。 - 发布时间以 npm registry 实际时间为准(脚本自动执行
npm view @tauchun/viblect time --json查询)。 - 发布说明自动取当前 Git 提交日志(
git log -1),并优先写入 GitHub 提交链接,确保发布记录可追溯。
| 版本 | 发布时间(UTC) | 说明 |
|---|---|---|
| 0.1.15 | 2026-05-13T09:29:09.511Z | 793cfc1 chore: release 0.1.15 |
| 0.1.14 | 2026-05-13T03:21:54.405Z | 789d049 chore: bump viblect to 0.1.14 |
| 0.1.13 | 2026-05-02T03:07:12.955Z | 1dcba68 feat: 支持飞书与QQ图片输入并接入任务派发链路 |
| 0.1.12 | 2026-05-02T02:10:27.490Z | 1dcba68 feat: 支持飞书与QQ图片输入并接入任务派发链路 |
| 0.1.11 | 2026-05-01T15:32:50.263Z | 7d5b151 feat: 落地发布加固阶段B并修复运行时验证稳定性 |
| 0.1.10 | 2026-04-30T10:34:41.957Z | 85880d9 feat: update dashboard, feishu integration, and branding assets |
| 0.1.9 | 2026-04-30T10:22:05.665Z | 85880d9 feat: update dashboard, feishu integration, and branding assets |
| 0.1.8 | 2026-04-30T10:08:31.861Z | Codex watcher 最近 open_id 回退与发布记录补齐 |
| 0.1.7 | 2026-04-30T09:54:29.147Z | 仪表盘升级、飞书联调、品牌资源补齐 |
| 0.1.6 | 2026-04-29T04:20:06.072Z | 飞书 Codex 流程和发布记录整理 |
| 0.1.5 | 2026-04-28T15:49:55.539Z | CLI 与网关稳定性改进 |
| 0.1.4 | 2026-04-28T15:38:47.342Z | 发版链路修复 |
| 0.1.3 | 2026-04-28T15:00:14.377Z | 打包内容调整 |
| 0.1.2 | 2026-04-28T14:58:03.787Z | 功能迭代发布 |
| 0.1.1 | 2026-04-28T05:38:37.951Z | 初始能力增强 |
| 0.1.0 | 2026-04-28T02:24:46.846Z | 首次发布 |
完整安装方案见:项目安装流程设计(V1)
L0 基础依赖层(必做):执行npm run install:check(自动按系统选择安装脚本)L1 网关运行层(必做):执行npm run dev,访问http://127.0.0.1:3000/healthL2 飞书接入层(按需):在飞书后台启用长连接并订阅im.message.receive_v1,执行npm run feishu:wsL3 Codex 回推层(按需):执行npm run codex:run -- --session <session> --title "<title>" -- <你的命令>或npm run codex:watch -- --session <session> --recipientOpenId <open_id>
安装后可直接执行短命令:vct
npm install -g @tauchun/viblect
vct本地仓库试用全局命令(不发布 npm):
npm link
vct说明:
- npm 包名与 scope 必须全小写,
@Tau/vibleCt这种包含大写的写法会被 npm 拒绝 - 全局命令入口由
package.json -> bin提供(当前支持vct、viblect、vible-gateway) - 发布时会通过
prepack自动构建dist,确保全局 CLI 可运行 - 发布时会执行
prepublishOnly -> npm run publish:check,自动拦截.env、data/、docs/、tests/等非发布文件进入 npm 包 - Windows/macOS/Linux 都可使用该命令(前提:Node.js 和 npm 在 PATH 中)
cp .env.example .envnpm installnpm run dev- 打开
http://127.0.0.1:3000/health
开发期热重载(可选):
npm run dev:watch(会监听文件变化;在 watch 终端按回车会触发重启)
跨平台统一命令(推荐):
npm run install:check系统专用命令:
# macOS / Linux
bash scripts/install.sh# Windows PowerShell
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install.ps1:: Windows CMD
scripts\install.cmd# Windows npm 脚本
npm run install:check:win说明:
- 自动补齐
.env(若不存在) - 自动执行
npm install - 自动启动临时
dev进程并探活/health - 验证完成后自动结束临时进程(如服务已在运行则直接复用)
环境变量加载说明:
npm run dev/npm run dev:watch都会自动加载当前目录下的.env.local、.env(按此顺序)- 已存在的系统环境变量优先级更高,不会被
.env覆盖 - 默认采用“终端精简 + 文件落盘”日志策略,日志按天写入
LOG_DIR/gateway-YYYY-MM-DD.log(默认目录./logs) - 自动清理超过
LOG_RETENTION_DAYS的历史日志(默认保留 7 天)
- 先启动网关:
npm run dev - 在飞书后台选择“使用长连接接收事件”,并订阅
im.message.receive_v1 - 启动桥接器:
npm run feishu:ws - 在飞书后台点击“重新验证”
说明:
- 桥接器优先读取环境变量
FEISHU_APP_ID/FEISHU_APP_SECRET - 若未设置,则自动读取网关中的
/api/connectors/feishu/config - 可通过
GATEWAY_URL指定网关地址,默认http://127.0.0.1:3000 - 若网关配置了
FEISHU_VERIFY_TOKEN,请在启动桥接器时同时提供相同值
webhook:需要在 QQ 开放平台配置回调地址(公网可达)。websocket:不需要公网回调,推荐本地开发和内网环境使用。
启动方式:
# 独立启动 QQ WS 桥接
npm run qq:ws可选自动启动(跟随网关):
# .env
QQ_WS_AUTO_START=true- 任务状态通知:普通文本消息(
msg_type=0) - 指令引导 / 快捷入口:Markdown 消息 + Inline Keyboard 按钮(
msg_type=2) - 按钮回调:支持
INTERACTION_CREATE,并自动 ACK,避免按钮一直 loading
指令帮助/帮助/help查看项目选择项目查看session/查看会话新建session/新建会话查看模型列表查看网关状态当前选择
说明:
- 对上述“面板类快捷词”,QQ 端会优先返回 Markdown 引导(而不是直接创建任务)。
- 真正执行任务建议使用固定格式:
#session:<会话ID> <任务内容>线程 ID:<线程ID>,任务内容:<任务内容>
推荐结构化 JSON,便于后续扩展:
{"action":"dispatch","sessionId":"qq-demo","prompt":"修复登录接口500并补单测"}也兼容直接文本命令(例如 #session:qq-demo 修复xx)。
- 看不到按钮消息:
- 先确认网关版本已包含 QQ Markdown/按钮能力
- 发送
指令帮助或选择项目验证是否回msg_type=2 - 若仍无按钮,检查 QQ 平台侧按钮能力是否开通/审核通过
- 点按钮后一直 loading:
- 检查日志是否出现
PUT /interactions/{id}回执成功
- 检查日志是否出现
当你希望“任务执行完自动推送到飞书”时,使用 codex:run 包装执行命令:
npm run codex:run -- --session feishu-codex-demo --title "修复登录接口" -- npm run test说明:
- 该命令会自动上报
running->succeeded/failed到/api/codex/events - 默认会尝试复用该
session下最新running任务(由飞书#session指令创建) - 可通过
--task <taskId>指定任务 - 可通过
--gateway <url>指定网关地址 - 若配置了 ingress 安全,可用环境变量:
CODEX_INGRESS_TOKENCODEX_INGRESS_SIGNING_SECRET
下面这套方式不需要你发 #session、线程 ID、查看项目、选择项目 这类交互指令。
你只发自然语言任务,让 Codex 自己在工作区里完成“识别项目、切换目录、执行命令、回报结果”。
你可以直接对机器人说:
切换到 D:\\WorkSpace\\AlbertLuo\\vible-coding-tool 项目,先读 AGENTS.md,然后继续修复 QQ 交互按钮问题。在当前工作区里列出所有项目,进入 my-docker-project,执行构建并修复报错。从现在开始后续任务都在 itmcManage 项目里完成,先跑一次测试并告诉我失败点。
推荐写法(更稳定):
- 明确项目路径或项目名
- 明确目标动作:
进入项目 -> 构建/测试 -> 修复 -> 回报 - 明确约束:
不要改其他项目文件
你可以这样发:
先处理 vible-coding-tool 的 QQ 问题,完成后再切换到 termTool 做打包检查。项目A只修后端,项目B只修前端,分别完成后汇总风险和变更清单。
建议:
- 一条消息里写清楚顺序和边界,减少误切换
- 指定“每个项目完成标准”(例如:测试通过、构建通过、给出 diff)
你可以直接说:
在当前项目做一次发布前检查:安装依赖、跑测试、跑 build、输出失败项和修复建议。把本项目从拉代码到可运行完整走一遍,缺什么自动补什么,最后给我可复制命令。
为了让 Codex 在“只用自然语言”模式下更可控,建议每次附带约束语句:
仅修改当前项目目录,不要改其他仓库。不要执行破坏性命令(reset --hard / 强制删除)。先最小可运行,再做增强。每一步都要回报:做了什么、改了哪些文件、测试结果。
你可以直接复制给机器人:
在当前工作区自动完成以下任务:先识别目标项目并进入(项目名:<项目名或路径>),
然后执行“安装依赖 -> 运行测试 -> 修复失败 -> 再次测试 -> 构建验证”。
要求仅修改该项目,不要碰其他目录;不要用破坏性命令;
每个阶段都汇报命令、结果、改动文件和下一步。
网关现已支持飞书消息直接下发到指定 Codex 线程执行,推荐格式:
线程 ID:<机器人回推里的线程ID字段>,任务内容:<你的任务指令>
示例:
线程 ID:019dca61-0d90-7f01-b1b0-f1bb79eb955e,任务内容:完成我所说的需求进行下一步
说明:
- 当前飞书对话会自动复用该发送人的最近会话,默认不需要重复带
#session - 首次对话若还未建立会话,可先发一次
#session:<id> <任务>完成绑定 - 网关会优先解析
线程 ID字段中的完整 thread UUID;若只有简写前缀(例如019dca59-发布线程),会在本机~/.codex/sessions扫描结果中做唯一匹配 - 也支持直接粘贴 rollout 文件名:
线程 ID:rollout-2026-04-26T23-12-34-019dca59-78b8-7d10-88fd-b6f9b8a7c409.jsonl - 如果消息没有明确指令格式,网关会先拦截并回一条指令提示,不会直接下发到 Codex
- 高风险命令仍会进入确认流,确认后自动继续下发到 Codex 执行
除了手动输入 #session / 线程 ID,现在也支持对话式连续选择,建议按下面顺序使用:
查看项目选择项目:<项目名/路径/序号>选择session:<threadId/rollout名/前缀>- 直接发送任务内容,或
开始任务:<任务内容>
可用指令:
查看项目查看session/查看会话查看当前项目session/查看当前项目会话查看模型列表查看网关状态当前选择指令帮助选择项目:<selector>选择session:<selector>选择模型:<selector>开始任务:<任务内容>在当前session继续:<任务内容>会话指令(可通过卡片按钮触发)线程定向(可通过卡片按钮触发)
说明:
- 飞书卡片按钮点击(
card.action.trigger)会进入同一套指令处理逻辑。 - 点击
会话指令按钮后,下一条文本会优先按会话指令模板路由(有已选 session 时可直接输入任务内容)。 - 点击
线程定向按钮后,下一条文本会优先按线程定向模板路由(有已选 session 时可直接输入任务内容)。 - 点击
当前项目会话按钮后,会基于当前已选项目直接刷新 session 列表,便于快速切换会话。 - session 列表卡片支持
上一页 / 下一页分页按钮,避免大列表刷屏(默认每页 8 条)。 - session 列表卡片支持
全部 / 最近24h / 最近7d快速筛选按钮,切换筛选会自动回到第 1 页。 - 选中
session后,普通文本会默认作为任务直接进入该 session,不需要每次再带参数。 - 模型列表来源是本机 Codex CLI:
codex debug models(网关会读取并缓存)。 - 默认模型来自
~/.codex/config.toml的model = "..."。
第一次使用建议按下面顺序发消息:
绑定姓名:张三查看项目选择项目:vible-coding-Tool查看session选择session:<threadId>开始任务:<任务内容>(或直接发送任务内容)
线程直达(无需先选 session):
线程 ID:<uuid>,任务内容:<任务内容>
常用查询:
指令帮助查看模型列表查看网关状态
说明:
- 运行
npm run dev后的终端窗口只用于看日志,不接收业务指令。 - 业务指令请发送到飞书机器人对话中。
- 飞书卡片正文建议使用“纯文本分段”样式(例如
【标题】+ 换行字段),避免依赖###、**这类在部分客户端不稳定的 Markdown 渲染。
网关会定时扫描本机 ~/.codex/sessions,并按目录结构 YYYY/MM/DD 聚合展示 rollout 会话:
- 接口:
GET /api/codex/local-sessions?limit=1000&refresh=false - 返回:
items(扁平列表) +groups(按年/月/日分组) - 每条会话包含:
threadId、rolloutFileName、rolloutPath、year/month/day、updatedAt
可选环境变量:
CODEX_LOCAL_SESSIONS_SCAN_ENABLED=true|falseCODEX_LOCAL_SESSIONS_ROOT=~/.codex/sessionsCODEX_LOCAL_SESSIONS_SCAN_INTERVAL_MS=15000
网关启动后会默认自动拉起全局 watcher,把当前这台机器上的 Codex 完成事件回推到飞书。
如果你想单独手动启动 watcher,也可以直接运行:
npm run codex:watch -- --session feishu-codex-demo --recipientOpenId <你的open_id>说明:
- watcher 监听
~/.codex/sessions下rollout-*.jsonl的task_complete事件 - 默认
--bootstrap tail,首次启动只跟踪后续新增事件,不会回放历史 --session可指定统一回推会话(建议与你飞书里#session:<id>一致)--recipientOpenId会作为发送者标识上报,网关可自动识别并回推给该用户- 如果不传
--recipientOpenId,watcher 会先去网关读取/api/feishu/open-ids/recent的最新 open_id,再作为回推目标 - 状态文件默认写入
./data/codex-watcher-state.json,用于断点续扫去重 - 常用参数:
--gateway http://127.0.0.1:3000--pollMs 3000--bootstrap tail|replay
--scanArchived true|false
调试接口:
GET /api/debug/watcher:查看 watcher 是否在线(running)与最近一次成功推送时间(lastSuccessfulPostAt)
如果你不想让网关自动拉起 watcher,可以在环境变量里设:
CODEX_WATCH_AUTO_START=false飞书模板支持占位符:
{taskTitle}:任务标题{detail}:任务详细内容(完成内容){summary}:摘要(兼容旧配置){status}/{statusLabel}:状态值 / 中文状态{taskId}/{sessionId}/{actorId}
npm run testnpm run build
prepack已升级为:npm run build && npm run build:clean-maps && npm run publish:checkpublish:check会拦截打包:*.map、src/**、tests/**、docs/**、.env*、data/**- 推荐每次发布前执行:
npm run buildnpm run build:clean-mapsnpm run publish:checknpm pack --dry-run --json
prepack已升级为:npm run build && npm run build:protect && npm run build:clean-maps && npm run verify:runtime && npm run publish:check- 新增
build:protect:默认对dist/src/**/*.js执行混淆,支持环境变量:PROTECT_LEVEL=basic|strong(默认strong)PROTECT_ENABLED=false(紧急回滚时可跳过)
- 新增
verify:runtime:自动校验viblect --help与http://127.0.0.1:<port>/health - 推荐发布前命令:
npm run buildnpm run build:protectnpm run verify:runtimenpm run publish:checknpm pack --dry-run --json

