Skip to content

Bot 内置 Agent 生命周期

字数
989 字
阅读时间
4 分钟

Pallas-Bot 的普通 LLM 聊天在 Bot 进程内完成。本文说明维护者修改这条路径时的职责边界和排查入口。

用户侧的配置和能力选择见 LLM 对话、媒体与 AI Runtime

一次对话如何执行

text
消息入口
  → 任务决策
  → 上下文与工具装配
  → Provider 调用和工具循环
  → 投递结果与运行追踪
环节责任主要位置
消息入口@ 聊天或接话请求转换为 LLM 任务packages/llm_chat/packages/repeater/
任务决策根据场景、开关和抽签决定是否进入生成路径pallas/product/llm/kernel/
上下文装配组织会话、人格、记忆和知识上下文pallas/product/llm/assembler/context.py
工具装配按场景选择工具,携带已激活的延迟工具pallas/product/llm/assembler/tools.pytools/registry.py
工具循环执行 tool call,将结果回填给模型继续生成pallas/product/llm/tool_loop.py
投递与追踪发送结果,并记录状态、工具调用和拒绝原因kernel_runner.pyruntime_debug.py

Pallas-Bot-AI 不参与这条普通聊天路径。它负责媒体任务和遗留 RWKV;不要为普通 @ 聊天增加 AI Runtime callback。

工具与可见性

工具注册表保存名称、参数、能力标签和可见性。默认工具集只包含当前场景需要的能力,避免把所有工具放进每次请求。

visibility控制台文案行为
visible(默认)相关即带 / 话题相关就带上意图域命中后随场景注入
deferred触发才带 / 说到触发词才带上仅自身 hints 命中,或经 tools.find 激活后注入

模型需要低频能力时,可以调用 tools.find。匹配到的延迟工具会加入本轮后续调用,并在短时间内保留给同一会话范围。副作用工具仍经过既有安全和确认策略;被拦截的原因会写入运行追踪。

WebUI 可覆盖单工具的描述、hints 与可见性(AI 配置 → 对话 → 工具)。联网搜索工具 web.search 依赖 WEB_SEARCH_API_URLTAVILY_API_KEY,见 AI 扩展 · 联网搜索

新增工具优先复用注册表与能力标签,不要绕过工具循环直接在消息入口执行。

记忆和检索

上下文装配会按开关读取会话、群记忆、关系便签和知识源。检索模式由 effective_vector_retrieve_mode 决定:

  • 配置 stub embedding,或 embedding 调用失败时,使用关键词检索。
  • 配置并成功调用真实 embedding 时,才使用向量或混合检索。

这是运行时降级策略,不应把配置中的 hybrid 直接当成实际检索方式。排障时查看运行追踪和 LLM 与 AI 运维

观察队列、人物事实与口癖

除传统群记忆条目外,运行时还可维护:

能力用途控制台
观察队列待整理的候选片段,供后续沉淀AI 观测 → 人物
人物事实群内稳定偏好;跨群复用需同意AI 观测 → 人物
账号口癖成功回复抽短语气习惯;审批后注入人设AI 观测 → 人物
任务编排提醒、周期与异步调研;结果只回群AI 观测 → 任务

HTTP 契约见 Agent Platform API。主要代码:pallas/product/llm/memory/orchestration/persona/catchphrase_bank.py

修改后的验证

改动优先验证
上下文、工具装配tests/product/llm/test_context_assembler.pytest_tool_assembler.py
工具循环或发现tests/product/llm/test_tool_discovery_loop.py、相关工具测试
检索或 embeddingtests/features/test_embedding_client.pytest_vector_retrieve_backend.py
投递、会话或接话tests/features/test_llm_client.pytest_conversation_kernel.pytests/plugins/repeater/

完成局部验证后,执行仓库约定的 Ruff 检查。完整的入口与投递接线见 LLM 输出路径