Auto-Reply 管道
一句话概括
Auto-Reply 管道是入站消息到 LLM 调用之间的决策引擎 — 它解析命令、解析指令、门控 agent 执行、管理流式传输,并投递回复。
职责
- 将入站消息通过多阶段决策管道分发
- 解析斜杠命令(
/help、/new、/model、/think、/status等) - 解析指令(thinking level、verbose、reasoning、elevated)并持久化到会话
- 决定是否触发 LLM 调用或本地处理消息
- 编排 agent 执行并支持模型降级链
- 管理流式传输(部分回复、块回复、工具结果、推理)
- 处理跨渠道路由(如 Telegram 消息由 Slack 会话处理)
- 配置启用时对出站 payload 应用 TTS
架构图
关键源码文件
数据流
入站
跳过条件(不调 LLM)
管道在以下情况跳过 LLM 调用:
- 消息归一化后为空(且无媒体)
- 检测到未授权的控制命令
- 纯指令消息(如仅
/think:high) - 内联命令已直接处理(如
/status) - 快速终止被触发(stop 命令)
- 检测到重复消息
出站
Token 优化影响
Thinking level 层级
错误恢复(agent-runner-execution.ts)
与其他模块的关系
-
依赖:
agents/pi-embedded-runner/—runEmbeddedPiAgent()用于执行sessions/— 会话条目管理、模型/级别覆盖config/— agent 配置、模型解析channels/— 跨渠道路由、输入指示器skills/— skill 命令处理memory/— 回复后记忆刷新
-
被依赖:
gateway/— 接收分发的消息cron/— 使用隔离 agent 执行路径- Channel plugins — 触发
dispatchInboundMessage()
我的认知盲区
- 完整命令注册表 — 有多少命令以及哪些能短路 LLM 调用
- 块回复管道内部 — 合并策略和块大小
- 群聊激活逻辑 — agent 如何决定是否在群聊中响应
-
reply/queue/— 用于速率限制或排序的消息队列 - 精确的流式回调顺序和竞态条件处理
-
followup-runner.ts— 何时以及如何触发后续运行 -
elevated-allowlist-matcher.ts— 提权权限解析
相关贡献
- 暂无
变更频率
dispatch-from-config.ts:高 — 路由逻辑、hooks 和投递随新功能演进agent-runner-execution.ts:高 — 随边缘情况发现添加错误恢复模式thinking.ts:中 — 新模型发布时添加新 thinking level 或 provider 特定处理dispatch.ts:低 — 薄入口层,很少变更tokens.ts:低 — token 常量稳定