添加 RuntimeContext 类用于捕获模型运行时的日期时间信息, 包括UTC时间、本地时间和时区信息,并在系统提示中显示这些信息。 同时增加最大上下文消息数和工具迭代次数的配置选项, 将验证服务从引擎加载器中移除,并更新相关的数据结构和接口。 BREAKING CHANGE: 移除了验证服务,相关字段被替换为证据状态和接受状态。 - 添加 RuntimeContext 类和相关渲染方法 - 增加 max_context_messages 和 max_tool_iterations 配置 - 移除 ValidationService 相关代码 - 更新消息记录中的验证状态字段 - 添加原始工具调用检测和回退处理
64 lines
4.0 KiB
HTML
64 lines
4.0 KiB
HTML
<!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">-></div>
|
||
<div class="step"><strong>run start</strong>ensure session + frozen memory</div><div class="arrow">-></div>
|
||
<div class="step"><strong>能力装配</strong>skills + tools</div><div class="arrow">-></div>
|
||
<div class="step"><strong>上下文构建</strong>ContextBuilder messages</div><div class="arrow">-></div>
|
||
<div class="step"><strong>循环</strong>provider chat -> tool calls -> tool results</div><div class="arrow">-></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_messages:system -> skill messages -> history(跳过 system) -> current user input。</div>
|
||
<div>add_assistant_message/add_tool_result:tool 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>
|