LLM 输出路径

August 6, 2026 · View on GitHub

本页标出普通聊天与接话的代码入口,方便改接线。用户向说明见 LLM 对话与复读

普通 @ 聊天走 Bot Provider,在 Bot 进程内完成;不要为这条路径增加 Pallas-Bot-AI / :9099 / HTTP callback。媒体与遗留 RWKV 另见 Agent 生命周期 与运维文档。

两条出口

群消息
 ├─ @ / to_me → packages/llm_chat/chat_message.py
 │     persona +【表达参考】→ client.submit_chat_task

 └─ 非 @ 接话 → packages/repeater/handlers/message.py
       resolve_scene_tier → opportunity → decide_llm_attempt
       → 原始候选安全过滤、排名、精确去重
       → 有真实竞争且共享 LLM 完全空闲 → select
       → callback 与 500ms 本地回退原子 claim 同一任务
       → 赢家投递一次;另一方静默退出
       → 其余情况 → 原语料发出

普通聊天与接话均在 Bot 进程内执行:submit_chat_task 安排 kernel_runner,后者调用 Provider、运行工具循环,并通过 pallas/product/llm/delivery.pydeliver_llm_chat_result 交给既有投递入口。

工具循环会在模型提出 tool call 后执行工具、将结果追加回上下文并继续补全。默认工具集会按场景选择;延迟公开的工具可由 tools.find 发现,并在后续轮次加入可调用集合。延迟完成的外部工具只派发任务;任务结果由其自身通道回传,不阻塞当前 LLM 回复。

关键锚点

步骤位置
强弱场景 / 抽签packages/repeater/opportunity_gate.pyresolve_scene_tierdecide_llm_attempt
接话选句提交pallas/product/llm/select.pymaybe_submit_repeater_llm_select
接话人格pallas/product/llm/repeater_persona_context.py
表达库存取 / 学习pallas/product/persona/expression_*.py
进程内投递pallas/product/llm/delivery.pydeliver_llm_chat_result);kernel_runner.py 调用 delivery
媒体 / HTTP callback 壳pallas/core/platform/ai_callback/runner.py(薄壳,复用 delivery)
配置键pallas/product/llm/config.py;WebUI 段见 env_sections.py(侧栏 AI 配置

约束

  • 日常接话主出口仍是语料select 只能从原始候选中选句,不能生成、润色、拼接或向 llm_chat 注入语料。
  • select 不等待槽位;即使强场景也只能使用完全空闲的共享 LLM 容量。超时后的本地回退会使迟到 callback 失效。
  • @、follow-up 与工具回合独立走 llm_chat,其 LLM 资源优先于 select
  • 表达库当前是单群;跨群另开任务,不要默认同库检索。

后续阅读