# Engine

Engine 是执行内核：加载 runtime 依赖、捕获 memory、选择 skill/tool、组装 prompt、调用 provider、执行 tool loop，并把全过程写回 session。

## 大模块流程

bootEngineLoader 加载配置/registry/stores/services
->
run startensure session + frozen memory
->
能力装配skills + tools
->
上下文构建ContextBuilder messages
->
循环provider chat -> tool calls -> tool results
->
收尾run_completed + receipts

## 小模块拆分

### loader

EngineLoader 是依赖装配根。它创建 config、session manager、memory service、tool registry/executor/assembler、skills loader/assembler、task services、MCP manager 等。

读取 workspace/config。
初始化 stores 与 registries。
注册内置工具与 MCP 工具。
返回 EngineLoadResult 供 AgentLoop 复用。

### AgentLoop

AgentLoop 是所有 root agent 和 delegated agent 共用的执行 kernel。它支持直接 process，也支持 run queue 的 submit_direct 串行消费。

解析 provider/model/max_tokens/temperature/tool iteration。
确保 session，记录 run_started、intent decision、skill/tool selection snapshot。
调用 provider；若返回 tool_calls，则逐个 ToolExecutor 执行并追加 tool message。
到达工具迭代上限时，追加 finalizer system message 再要求模型无工具收尾。
记录 run_completed、usage、skill effect receipts。

Prompt 相关：主链 context、tool failure guidance、tool limit finalizer 都在 Prompt Atlas 展开。

### ContextBuilder

唯一负责 provider messages 形状的组件。它把身份、base system prompt、session、execution context、memory、extra sections 拼成 system prompt，再把 skill 正文作为 user-role activation message 插入。

build_system_prompt：固定顺序拼 section，用 `---` 分隔。
build_skill_activation_messages：每个 SkillContext 变成一条 user 消息。
build_messages：system -> skill messages -> history(跳过 system) -> current user input。
add_assistant_message/add_tool_result：tool loop 中追加 provider 兼容消息。

### session

session store/manager/search 负责把运行过程落成可追溯事件。可见历史和审计事件分离，避免 internal snapshots 进入下一轮 prompt。

append_message 记录 role/event_type/content/tool_calls/context_visible。
get_history 给 ContextBuilder 提供裁剪后的可见上下文。
search/FTS 支持 session_search 工具和 UI 检索。