11 KiB
Query Loop 主链
这份文档回答什么
本文件定义 Lime 当前运行时 Query Loop 的唯一主链,主要回答:
- 哪个入口才是当前回合提交的唯一开始点
- 请求在进入模型前,system prompt、工具策略、记忆、项目上下文、场景 metadata 是怎样被组装的
- runtime queue、tool runtime、流式执行、artifact 落盘、记忆沉淀、evidence 导出分别挂在哪一段
- 哪些旧路线图或专题文档只能作为下游实现说明,不能再反向充当 Query Loop 事实源
它是 当前运行时主循环的工程入口文档,不是通用架构总览,也不是单次专题路线图。
什么时候先读
遇到以下任一情况时,先读本文件:
- 调整
agent_runtime_submit_turn - 调整
agent_runtime_respond_action或 elicitation / ask 恢复路径 - 调整 turn 级 system prompt / metadata / provider routing / continuation
- 调整 runtime queue、流式执行、自动压缩或记忆预取
- 调整
@命令、/scene、service_scene_launch、*_skill_launch这类“提交前补 metadata”能力 - 调整 evidence / replay / review 与主回合执行的衔接
如果一个需求同时碰到“提交入口 + prompt/metadata 组装 + 工具执行 + 证据导出”里的两步以上,默认属于 Query Loop 改动。
固定主链
当前 Lime 的 Query Loop 统一按下面这条链理解:
agent_runtime_submit_turn -> runtime_turn 归一化与组包 -> TurnInputEnvelope -> runtime_queue -> stream_reply_once -> timeline / artifact / memory -> thread_read / evidence / replay / review
这条主链意味着:
-
统一入口是
agent_runtime_submit_turn其他@命令、/scene、图片/素材/站点搜索等场景,只允许在提交前补request_metadata.harness.*,不能绕开 submit turn 另建第二条执行链。 -
runtime_turn.rs是当前组包主边界 Provider 解析、workspace 解析、execution profile、request tool policy、prompt augmentation、sandbox、preload、turn state 都在这里收口。 -
TurnInputEnvelope是当前 turn 输入快照 它记录最终 system prompt、history source、provider routing、tool policy、continuation、turn context metadata,不允许下游再各自重组另一份“真实输入”。 -
runtime_queue.rs是当前排队执行边界 queue/resume/promote/remove 统一走 runtime queue,不允许每个调用方自己维护另一套忙碌态与排队状态。 -
工具面仍统一属于
tool_runtime.rs浏览器、workspace、search、service skill、subagent、social/image 等工具都从这里注册和裁剪,不允许在 Query Loop 外再长出第二套 registry 语义。 -
证据链是主链的下游消费,不是旁路真相
thread_read / evidence / replay / review只能复用主回合产生的 runtime facts,不能反向定义 Query Loop 真相。
代码入口地图
1. 提交入口
src-tauri/src/commands/aster_agent_cmd/command_api/runtime_api.rsagent_runtime_submit_turnagent_runtime_interrupt_turnagent_runtime_compact_sessionagent_runtime_get_sessionagent_runtime_get_thread_read
这里的固定规则:
agent_runtime_submit_turn是唯一提交入口agent_runtime_respond_action这类恢复路径只能复用当前 turn context snapshot 组装,不能再旁路拼第二份 turn context 真相get_session / get_thread_read负责消费稳定读模型,不负责重新解释提交逻辑compact_session是主链内的上下文治理动作,不是独立聊天系统
2. turn 归一化与输入组装
src-tauri/src/commands/aster_agent_cmd/runtime_turn.rssrc-tauri/crates/agent/src/turn_input_envelope.rs
当前 runtime_turn.rs 负责的关键步骤:
- 确保 agent、session store、runtime support tools 已准备好
- 解析 provider config、workspace、session recent harness/runtime context
- 归一化
request.metadata - 解析
request_tool_policy与execution_profile - 在 FullRuntime 下补
*_skill_launch/service_scene_launchmetadata - 组装 prompt augmentation:
- runtime agents
- memory / turn prefetch
- web search
- request tool policy
- artifact
- 各类 skill launch
- team preference / auto continue / service skill preload
- 生成
TurnState - 生成
TurnInputEnvelope与 diagnostics snapshot - 初始化 runtime turn、发出 runtime status
- 进入 tracker + stream 执行
TurnInputEnvelope 当前固定记录:
- session / workspace / project / thread / turn
- system prompt 来源与最终值
- prompt augmentation stages
- request tool policy snapshot
- provider routing snapshot
- provider continuation state
- effective user message
- turn output schema snapshot
- approval / sandbox policy
- turn context metadata
后续如果一个改动说不清应该落在 runtime_turn.rs 还是 TurnInputEnvelope,先判断它属于:
- 组包逻辑:落
runtime_turn.rs - turn 输入快照字段:落
turn_input_envelope.rs
3. queue 与恢复
src-tauri/crates/agent/src/runtime_queue.rs
当前 queue 主链固定为:
submit_runtime_turnresume_runtime_queue_if_neededclear_runtime_queuelist_runtime_queue_snapshotsremove_runtime_queued_turnpromote_runtime_queued_turnresume_persisted_runtime_queues_on_startup
这里的固定规则:
- queue busy / enqueue / start-now 统一由 runtime queue service 决定
- 启动恢复、回合完成后的下一条接力,都复用同一套 queue service
- 不允许前端、命令层或业务专题自己重建另一套排队真相
4. 工具面与沙箱
src-tauri/src/commands/aster_agent_cmd/tool_runtime.rs
当前这里负责:
- runtime support tools 注册
- fast chat 与 full runtime 的工具面裁剪
- workspace sandbox 权限注入
- browser / site / service skill / subagent / workspace / search 等工具面注册或下线
固定规则:
- Query Loop 不直接 new tool registry
- 所有工具面增删都先回到
tool_runtime.rs request_tool_policy只能在这里影响实际工具可见面,不能在别处再复制一套“隐藏工具”逻辑
5. 流式执行与主回合副作用
src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs
主回合执行当前固定通过:
ExecutionTracker::with_run_custom(...)stream_reply_once(...)
执行中的 current 副作用包括:
- runtime event -> timeline recorder
- artifact document persist / fallback
- runtime memory capture
- provider continuation state 更新
- runtime status / warning / preload 事件投影
如果一个功能想在“模型回复完成后”做收尾动作,应优先挂到这里,而不是在 UI 或单独 service 旁路触发。
6. 压缩、读模型与证据导出
当前 Query Loop 的下游消费统一挂在下面几处:
agent_runtime_compact_sessionagent_runtime_get_sessionagent_runtime_get_thread_readsrc-tauri/src/services/runtime_evidence_pack_service.rssrc-tauri/src/services/runtime_replay_case_service.rssrc-tauri/src/services/runtime_review_decision_service.rs
固定规则:
- 自动压缩与手动压缩都属于同一 runtime 主链
thread_read是稳定读模型,不重新定义提交逻辑evidence / replay / review必须消费 runtime facts,不允许自己拼第二份 Query Loop 真相
专项场景如何挂回主链
所有下列能力都只能视为 Query Loop 的“提交前 metadata / prompt 归一化扩展”,不能单独定义新的执行主链:
@配图/@封面/@视频/@播报/@素材@搜索/@深搜/@研报/@竞品@站点搜索/@读PDF/@总结/@翻译/@分析@转写/@链接解析/@抓取/@网页读取@排版/@网页/@PPT/@表单service_scene_launch
它们当前的正确角色是:
- 前端发送边界写入结构化
request_metadata.harness.* runtime_turn.rs在提交前归一化 metadata 与 prompt- Agent 首刀按系统提示走 skill / tool / service skill 主链
不允许回流成:
- 前端直建任务
- 前端直调云端 run
- viewer 自己推断执行状态
- 单个场景自己维护一套独立 queue / runtime / evidence
current / compat / deprecated
current
agent_runtime_submit_turnruntime_turn.rsTurnInputEnveloperuntime_queue.rstool_runtime.rsagent_runtime_get_session / get_thread_readagent_runtime_compact_sessionsrc-tauri/src/commands/aster_agent_cmd/action_runtime.rs::agent_runtime_respond_actionruntime_evidence_pack_service.rsruntime_replay_case_service.rsruntime_review_decision_service.rs
compat
docs/roadmap/lime-conversation-execution-efficiency-roadmap.mddocs/roadmap/lime-aster-codex-alignment-roadmap.mddocs/roadmap/lime-aster-codex-state-model-implementation-plan.mdsrc-tauri/src/commands/persona_cmd.rs::generate_personasrc-tauri/src/commands/theme_context_cmd.rs::aster_agent_theme_context_search
这些文档与专用命令仍可保留各自职责,但不再承担 Query Loop 唯一事实源职责。
这两条命令属于专用一次性会话能力:允许显式拼自己的临时 SessionConfig,但不能参与 submit turn、runtime queue、turn context snapshot 或 evidence 真相定义。
当前命令层允许保留的原始执行面只剩这 3 处:action_runtime 属于 current 恢复链,persona_cmd 与 theme_context_cmd 属于受控 compat 一次性命令。
deprecated
- 让任何
@场景、slash scene 或 viewer 自己维护执行状态 - 在 UI、专题 service 或证据导出层重新拼装“真实模型输入”
- 绕开
agent_runtime_submit_turn直接定义第二条主回合执行链 - 在 Tauri 命令层继续新增未分类的原始
agent.reply(...)/stream_reply_with_policy(...)调用
最低验证要求
如果本轮改动涉及 Query Loop,至少按边界选择最贴近的验证:
- Rust 定向测试:
runtime_turn.rsturn_input_envelope.rsruntime_queue.rs- 相关 evidence / replay / review service
npm run governance:legacy-report- 文档改动额外跑
npm run harness:doc-freshness
如果还改了命令边界、MCP 注入、GUI 时间线或工具展示,再回看:
docs/aiprompts/commands.mddocs/aiprompts/quality-workflow.mddocs/aiprompts/harness-engine-governance.md
一句话
Lime 当前 Query Loop 的唯一主链,是
agent_runtime_submit_turn驱动的 turn 组包、runtime queue、tool runtime、流式执行与 evidence 下游消费链;任何新能力都只能往这条链收敛,不能平行再长一套执行真相。