herdr+pi+pi-telegram plugin,这套工作流里,怎么做项目识别呢,就是我说让改某个部分xxx,因为有时候会说一些不具体的话,比如那个,之前等等,那怎么能具体把任务正确分发正确项目的pane里面的agent呢

比如你同时开着“博客前端”和“维修 Agent”两个项目,你说“把之前那个上传问题修一下”——如果两个项目都聊过上传,光靠模型理解这句话,没法保证分发正确。 这事要拆成两步:先确定你指的是哪个项目、哪条任务,再找到对应的 pane。不要让模型直接猜 pane。 先说你这套工具的边界 如果你指的是 badlogic/pi-telegram,README 明确写了:桥接是 session-local,同一个 Telegram bot 同时只应该连接一个 Pi session。它负责把 Telegram 消息送进这个 session,并不是现成的跨项目智能路由器。 所以可以让这个 Pi session 专门当调度入口,再由你补一层路由逻辑,把任务交给 Herdr 里的目标 agent。下面是建议的设计,不是这些工具已经自带的功能。 核心是维护三种绑定 项目绑定:项目 ID、名称和别名,以及它有哪些工作区。 执行绑定:工作区、分支或 worktree、Pi session、Herdr pane 的对应关系。一个项目可能同时有两个 agent,不能只记“项目对应哪个 pane”。 对话绑定:Telegram 的会话、话题或某条回复,对应哪个项目、哪条任务。 pane 只是执行位置,不是项目身份。pane 重建之后,项目和任务的身份还应该保持不变。 “那个”“之前”怎么处理 优先看明确的关联,再用语义理解补充。 你回复“博客项目的上传修复结果”那条消息,说“这个还是不行”,就通过被回复消息的 ID 找回原任务,不用让模型猜“这个”是什么。需要桥接层保留 reply_to_message,并记录发出消息与任务的映射。 如果你在一个已经绑定“博客”的 Telegram topic 里说“改一下上传”,就优先在博客项目里理解。topic 路由需要支持它的插件或自行扩展,不能默认上述 DM 插件已经支持。 如果没有回复关系、也没有固定话题,就看你在当前会话里明确选中的项目和最近任务。这个状态要按用户、会话保存;切换话题或长时间间隔后,不应一直沿用。 最后才检索历史任务:比如你说“之前那个 XLSX 上传报错”,查到只有维修 Agent 有对应记录,才有比较可靠的候选。最好保存结构化任务记录:项目、任务摘要、报错关键词、时间、执行 session,而不是每次把全部聊天记录塞给模型。 如果仍然有两个合理候选,就问一句: “你指博客的图片上传,还是维修 Agent 的 XLSX 上传?” 这不是智能程度不够,而是输入本来就缺信息。 路由时再加一道硬校验 模型只提出“候选项目/任务+依据”;程序验证候选是否在登记的项目中,目标 session 和 pane 是否仍有效、工作区是否匹配。 尤其不能因为原 pane 消失了,就把任务发给当前聚焦的 pane。如果 agent 正忙,也要明确排队还是追加到原任务,不要直接把文本打进未知的终端状态。 发出去后回一句“已交给维修 Agent 的上传修复任务”,让你能立即发现是否分错。 我的建议是:先做“显式选项目+记住当前绑定+回复消息关联原任务+有歧义就追问”。这四项比一开始做复杂的语义分类更有性价比。模型适合处理“上传那个 bug”这种补充理解,不适合替代确定的身份映射。 插件原始说明: https://github.com/badlogic/pi-telegram