Files
beaver_project/projcet_review/backend_blueprint/engine.html
steven_li 6e9e74d1ee feat(engine): 添加运行时上下文支持并重构工具迭代限制
添加 RuntimeContext 类用于捕获模型运行时的日期时间信息,
包括UTC时间、本地时间和时区信息,并在系统提示中显示这些信息。

同时增加最大上下文消息数和工具迭代次数的配置选项,
将验证服务从引擎加载器中移除,并更新相关的数据结构和接口。

BREAKING CHANGE: 移除了验证服务,相关字段被替换为证据状态和接受状态。

- 添加 RuntimeContext 类和相关渲染方法
- 增加 max_context_messages 和 max_tool_iterations 配置
- 移除 ValidationService 相关代码
- 更新消息记录中的验证状态字段
- 添加原始工具调用检测和回退处理
2026-05-26 11:18:35 +08:00

64 lines
4.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="zh-CN">
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Engine 模块蓝图</title><link rel="stylesheet" href="blueprint.css"></head>
<body><main class="page">
<header class="topbar"><h1>Engine</h1><p>Engine 是执行内核:加载 runtime 依赖、捕获 memory、选择 skill/tool、组装 prompt、调用 provider、执行 tool loop并把全过程写回 session。</p></header>
<nav class="nav"><a href="index.html">索引</a><a href="providers.html">Providers</a><a href="tools.html">Tools</a><a href="skills.html">Skills</a><a href="prompt-atlas.html">Prompt Atlas</a></nav>
<section class="content">
<h2>大模块流程</h2>
<div class="flow">
<div class="step"><strong>boot</strong>EngineLoader 加载配置/registry/stores/services</div><div class="arrow">-&gt;</div>
<div class="step"><strong>run start</strong>ensure session + frozen memory</div><div class="arrow">-&gt;</div>
<div class="step"><strong>能力装配</strong>skills + tools</div><div class="arrow">-&gt;</div>
<div class="step"><strong>上下文构建</strong>ContextBuilder messages</div><div class="arrow">-&gt;</div>
<div class="step"><strong>循环</strong>provider chat -> tool calls -> tool results</div><div class="arrow">-&gt;</div>
<div class="step"><strong>收尾</strong>run_completed + receipts</div>
</div>
<h2>小模块拆分</h2>
<article class="module">
<h3>loader</h3>
<p>EngineLoader 是依赖装配根。它创建 config、session manager、memory service、tool registry/executor/assembler、skills loader/assembler、task services、MCP manager 等。</p>
<div class="subflow">
<div>读取 workspace/config。</div>
<div>初始化 stores 与 registries。</div>
<div>注册内置工具与 MCP 工具。</div>
<div>返回 EngineLoadResult 供 AgentLoop 复用。</div>
</div>
</article>
<article class="module">
<h3>AgentLoop</h3>
<p>AgentLoop 是所有 root agent 和 delegated agent 共用的执行 kernel。它支持直接 process也支持 run queue 的 submit_direct 串行消费。</p>
<div class="subflow">
<div>解析 provider/model/max_tokens/temperature/tool iteration。</div>
<div>确保 session记录 run_started、intent decision、skill/tool selection snapshot。</div>
<div>调用 provider若返回 tool_calls则逐个 ToolExecutor 执行并追加 tool message。</div>
<div>到达工具迭代上限时,追加 finalizer system message 再要求模型无工具收尾。</div>
<div>记录 run_completed、usage、skill effect receipts。</div>
</div>
<p>Prompt 相关:主链 context、tool failure guidance、tool limit finalizer 都在 <a href="prompt-atlas.html#agent-loop">Prompt Atlas</a> 展开。</p>
</article>
<article class="module">
<h3>ContextBuilder</h3>
<p>唯一负责 provider messages 形状的组件。它把身份、base system prompt、session、execution context、memory、extra sections 拼成 system prompt再把 skill 正文作为 user-role activation message 插入。</p>
<div class="subflow">
<div>build_system_prompt固定顺序拼 section<code>---</code> 分隔。</div>
<div>build_skill_activation_messages每个 SkillContext 变成一条 user 消息。</div>
<div>build_messagessystem -> skill messages -> history(跳过 system) -> current user input。</div>
<div>add_assistant_message/add_tool_resulttool loop 中追加 provider 兼容消息。</div>
</div>
</article>
<article class="module">
<h3>session</h3>
<p>session store/manager/search 负责把运行过程落成可追溯事件。可见历史和审计事件分离,避免 internal snapshots 进入下一轮 prompt。</p>
<div class="subflow">
<div>append_message 记录 role/event_type/content/tool_calls/context_visible。</div>
<div>get_history 给 ContextBuilder 提供裁剪后的可见上下文。</div>
<div>search/FTS 支持 session_search 工具和 UI 检索。</div>
</div>
</article>
</section></main></body></html>