飞书到工作电脑:控制台、中继、执行器
想在飞书里丢一句话,让家里或公司那台电脑去改代码。飞书看不到磁盘,小服务器也不该跑 Agent。于是拆成三层:飞书当控制台,服务器当中继,工作电脑当执行器。
为什么拆开
Agent 要读仓库、跑补丁、偶发起子进程。这些只能发生在「文件已经在磁盘上」的那台机器。把 Cline、Aider 塞进 VPS,等于把工作区拷上去,还要长期占内存。飞书开放平台回调也进不了内网电脑。
反过来,让飞书机器人直接 SSH 到电脑,机器人就握着登录凭证,电脑还得对公网暴露。中继只做一件事:收飞书事件,写成任务;电脑主动来取。服务器从不连你的电脑。
三层各管什么
飞书是人机界面。私聊或群里 @ 机器人发文字、图片、语音。用卡片选电脑、Agent、模型、目录。取消、停、换地方也是对话里的口令。它不执行,不存仓库。
中继跑在有公网 HTTPS 的机器上。飞书把事件 POST 到回调地址。中继校验 token,按会话记住模式,把工作任务写成队列项。电脑用请求头里的令牌来轮询、领取、回写结果。队列是一份 JSON,过期丢掉,不引入数据库。
工作电脑上常开一个 worker。它报到:机器名、能跑的 Agent 和模型、仓库名单。领到任务后在指定目录执行,把摘要打回飞书。电脑关机或 worker 停了,中继会把进行中的任务标成中断,不会在服务器上顶替执行。
一次任务怎么走
还没选过环境时,中继先问四件事:哪台在线电脑、哪个 Agent、哪个模型、在哪个目录干。目录可以是已有仓库、新建仓库、整棵工作区,或一条绝对路径。整份用户主目录和带空格的路径直接拒绝,避免 Agent 扫到不该碰的地方。
同一会话会记住这四项。下一条消息默认沿用,不必每句重选。换地方就忘掉。清空上下文同样忘掉环境。记住的是「在哪干」,不是上一轮对话。每条飞书消息都是一次新任务,不把历史结果拼进下一次提示词。本地 CLI 本来也不是多轮会话。
执行器用的提示词就是你在飞书里发的那句,外加工作目录的一份快照。不往用户仓库里写站方的规则文件。没有工作目录就停,不回退到主目录。
电脑怎么连上来
worker 只出站访问中继的 HTTPS。令牌放请求头,和网页登录不是一把。轮询间隔按秒计,心跳超时则视为掉线。图片和语音先落到中继的临时目录,worker 再拉到本机,体积有上限。
可以有多台电脑同时在线。飞书里选哪台,任务就进哪台的领取范围。执行力在电脑上,中继这边多几台轮询也只是多几次 HTTP。
不做的事
中继不跑模型,不编译,不 SSH 进内网。飞书不持有仓库路径。Agent 不在「未选定目录」时自作主张。群里不 @ 就不接话,避免把闲聊当成任务。
电脑必须开着,这是这套结构的前提。换来的是:凭证和文件留在工作电脑,公网机器只看见排队用的元数据。