Files
proxycast/docs/exec-plans/upstream-runtime-alignment-plan.md
T
2026-04-15 02:09:45 +08:00

23 KiB
Raw Permalink Blame History

参考运行时主链对齐计划

状态:进行中
更新时间:2026-04-14
对照基线:本地参考运行时源码镜像(2026-04-14 快照)
目标:把 Lime 与参考运行时的“运行时主链”对齐工作,收口成一份唯一的排期与差距事实源,避免路线图、治理减法和专题计划继续并行漂移。

1. 先给结论

Lime 当前不是“能力不够”,而是“主链不够单一”。

已确认的现状:

  • Tool Runtime / MCP / evidence / replay / review / subagent 已具备较强底座
  • Query Loop、Task / Agent taxonomy、Remote runtime 与 Memory / Compaction 已完成 current 主链收口
  • 现有对齐文档散落在 roadmap/、tech/、develop/、exec-plans/,导致排期和治理容易串线

本计划固定一个判断:

后续“对齐上游运行时”默认指向运行时主链对齐,而不是目录、UI 或命名的 1:1 复制。

2. 对齐口径

2.1 对齐什么

默认对齐下面六条运行时主链:

  1. Query Loop
  2. Tool Runtime
  3. Memory / Compaction
  4. Remote / SDK / Server Mode
  5. Task / Agent / Coordinator
  6. State / History / Telemetry

2.2 不对齐什么

  • 不以上游运行时的目录结构作为目标
  • 不先追求 UI 行为逐像素一致
  • 不为了对齐而回退 Lime 已有的 GUI、Artifact、Provider、Workspace 优势
  • 不把已有专题路线图全部重写成新体系;已有文档保留为下游专项

2.3 当前进度

  • M0 统一排期事实源:done
  • M1 Query Loop 收口:done
  • M2 Task / Agent taxonomy 收口:done
  • M3 Remote runtime 收口:done
  • M4 Memory / Compaction 收口:done
  • M5 State / History / Telemetry 收口:done
  • 当前阶段:六条运行时主链 current 入口已补齐,后续转入守 current 边界与 compat / deprecated 退场
  • 当前进度日志:docs/exec-plans/upstream-runtime-alignment-progress.md

3. 主链差距矩阵

主链 参考运行时基线模块 Lime 当前事实源 当前判断 主要差距 下一刀
Query Loop QueryEngine.ts、query.ts、query/deps.ts、services/tools/*、services/compact/* src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs、runtime_api.rs、tool_runtime.rs、docs/aiprompts/query-loop.md aligned Query Loop current 事实源与主循环入口已收口;旧的 alignment/state-model/conversation-efficiency 专项文档都已退回 compat 历史档案,Artifact 文档族也已改回 current 入口引用;TurnInputEnvelope -> SessionConfig 的 turn context snapshot 分叉、action_runtime 辅助恢复链旁路,以及 compact_session 控制回合的最小上下文边界都已显式化;剩余散落在 persona_cmd / theme_context_cmd 的一次性临时会话配置已收口为专用 helper,零入口的旧 AsterAgentWrapper::send_message 已删除;Tauri 命令层原始 agent.reply / stream_reply_with_policy 扫描结果也已固定为 action_runtime(current) + persona/theme_context(compat) 三处,并补了源码扫描守卫 维持 aligned 主链;下一刀转向继续盘点 src-tauri/src 非命令层与 README/示例面是否还残留会误导实现者的原始执行旁路叙事
Tool Runtime src/tools/*、services/tools/*、services/mcp/*、ToolSearchTool src-tauri/src/agent_tools/catalog.rs、inventory.rs、src-tauri/src/commands/aster_agent_cmd/tool_runtime/*、docs/aiprompts/commands.md、docs/aiprompts/command-runtime.md、docs/prd/tools/architecture.md aligned 能力基本齐,但仍需持续防止命名、inventory、mock、MCP 注入回退到第二事实源 维持 current 主链,后续只做减法和守卫,不新增并行入口
Memory / Compaction services/compact/*、services/SessionMemory/*、memdir/* docs/aiprompts/memory-compaction.md、src/lib/api/memoryRuntime.ts、src-tauri/src/commands/memory_management_cmd.rs、src-tauri/src/services/memory_source_resolver_service.rs、src-tauri/src/services/auto_memory_service.rs、src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs、src-tauri/src/commands/aster_agent_cmd/command_api/runtime_api.rs、src/lib/api/unifiedMemory.ts、src-tauri/src/commands/unified_memory_cmd.rs aligned M4 已建立统一主链:来源链解析 -> 单回合 prefetch -> runtime_turn prompt augmentation -> session compaction -> working/durable memory 沉淀 -> GUI 稳定读模型;project_memory_get 退回 compat 附属层,memory_feedback_cmd 退回 deprecated 转入 M5,固定 session / thread / turn / request / evidence / history 的 current 状态地图
Remote / SDK / Server Mode remote/*、server/*、entrypoints/sdk/*、cli/transports/* docs/aiprompts/remote-runtime.md、src/lib/api/channelsRuntime.ts、src-tauri/src/commands/gateway_channel_cmd.rs、src/lib/webview-api.ts、src-tauri/src/commands/browser_connector_cmd.rs、src-tauri/src/commands/webview_cmd.rs、src-tauri/src/commands/browser_runtime_cmd.rs、src-tauri/src/dev_bridge/*、src-tauri/src/services/openclaw_service/*、src-tauri/src/commands/telegram_remote_cmd.rs aligned M3 已建立统一 remote 主链:消息渠道 runtime + 浏览器连接器 / ChromeBridge 是 current ingress,DevBridge / OpenClaw 退回 compat,telegram_remote_cmd 退回 deprecated;后续残余减法转入 compat surface 继续处理 维持 aligned 主链,后续只做 compat / deprecated 退场减法
Task / Agent / Coordinator tasks/*、tools/AgentTool、Task*Tool、EnterWorktreeTool、RemoteTriggerTool、coordinator/* docs/aiprompts/task-agent-taxonomy.md、docs/aiprompts/query-loop.md、src-tauri/src/commands/aster_agent_cmd/subagent_runtime.rs、src-tauri/src/services/execution_tracker_service.rs、src-tauri/src/services/automation_service/*、src-tauri/src/app/scheduler_service.rs aligned M2 已建立统一 taxonomy:agent turn / subagent turn / automation job 是 current 一等执行实体,ExecutionTracker 是统一执行摘要层,SchedulerService 退回 compat 触发壳;后续残余减法转入 execution tracker / scheduler 专项继续处理 维持 aligned 主链,后续只做定点减法与回归修复
State / History / Telemetry state/*、bootstrap/*、assistant/sessionHistory.ts、cli/transports/ccrClient.ts、services/analytics/* docs/aiprompts/state-history-telemetry.md、src-tauri/crates/agent/src/session_store.rs、src-tauri/src/commands/aster_agent_cmd/dto.rs、src-tauri/src/commands/aster_agent_cmd/command_api/runtime_api.rs、src-tauri/src/services/thread_reliability_projection_service.rs、src-tauri/src/services/runtime_handoff_artifact_service.rs、src-tauri/src/services/runtime_evidence_pack_service.rs、src-tauri/src/services/runtime_replay_case_service.rs、src-tauri/src/services/runtime_review_decision_service.rs、scripts/harness-eval-history-record.mjs aligned M5 已建立统一状态地图,并继续完成 compat/deprecated 收口:reliability / state-model / alignment / conversation-efficiency 这些重型 compat 文档都已压成历史摘要档案,telemetry_cmd.rs 只再保留原始日志面定位 维持 current 主链;文档侧重型 compat 路线图已基本收完,下一刀优先回到 current 代码边界继续做减法

4. 现有文档归位

本计划是排期总入口,不替代现有专题方案。现有文档按下列方式归位:

文档群 归属主链 角色
docs/roadmap/lime-aster-codex-alignment-roadmap.md、docs/roadmap/lime-aster-codex-state-model-implementation-plan.md Query Loop、State / History / Telemetry Aster/Codex 历史专项档案,不再承担仓库级总排期或 current 实施入口职责
docs/roadmap/reliability/* State / History / Telemetry Reliability control plane 专项
docs/tech/harness/*、docs/roadmap/harness-engine/* State / History / Telemetry、Memory / Compaction Evidence / replay / review / observability / cleanup 专项
docs/develop/execution-tracker-technical-plan.md、docs/develop/execution-tracker-p1-p2-roadmap.md、docs/develop/scheduler-task-governance-p1.md Task / Agent / Coordinator 长时执行与治理专项
docs/aiprompts/commands.md、docs/aiprompts/command-runtime.md、docs/prd/tools/* Tool Runtime 当前工具面与协议事实源

如果后续新增专项文档,必须先标明它属于哪条主链;如果说不清主链归属,就不允许单独立项。

5. 排期纪律

从本计划起,后续排期默认遵守以下规则:

  1. 同一时间只允许 1 条主链作为主任务。
  2. 每轮最多再搭配 1 条服务主链的治理任务。
  3. 所有任务必须声明:
    • 所属主链
    • 当前分类:current / compat / deprecated / dead
    • 阶段出口
  4. 治理减法如果不能直接缩短主链,就登记到 docs/exec-plans/tech-debt-tracker.md,不直接插队。
  5. 专题路线图完成后,必须回写本计划的矩阵状态,避免“专题 done,但总盘子仍 unknown”。

6. 推荐推进顺序

M0 统一排期事实源

  • 建立本计划,固定六条主链
  • 把现有对齐文档回挂到单一总入口
  • 把当前未收口差距登记进技术债追踪

M1 Query Loop 收口

  • 为 Lime 补一份单一 Query Loop 事实图
  • 明确 submit_turn -> turn runtime -> tool orchestration -> compaction -> evidence 的 current 主链
  • 退出条件:不再需要横跳多份文档才能解释 Lime 主循环

当前进度(2026-04-14):

  • 已完成第一刀:docs/aiprompts/query-loop.md 已成为 Query Loop current 入口
  • 已完成第二刀实现:runtime_turn.rs 已将 run_start_metadata、runtime_status_session_config、build_session_config 的重复拼装收口为稳定 helper,主循环可读性继续提升
  • 已完成第三刀实现:单次流式执行成功后的 Artifact 自动落盘与记忆沉淀已收口为统一 helper,主成功分支与降级成功分支不再各自维护重复收尾逻辑
  • 已完成第四刀实现:两处 stream_reply_once 的运行时事件记录闭包已收口为统一 helper,主分支与降级分支共享同一条事件记录路径
  • 已完成第五刀实现:RunFinishDecision 组装与 terminal result 收尾已收口为统一 helper,主循环不再内联 success/error 两套终态处理
  • 已完成第六刀实现:主执行分支与降级到 ReAct 的分支已共用“单次流式尝试” helper,build_runtime_user_message(...)、build_session_config()、stream_reply_once(...) 与成功收尾逻辑不再在主循环中重复展开
  • 已完成第七刀实现:CodeOrchestrated 的扩展启用、失败降级、扩展清理已收口为统一策略 helper,with_run_custom(...) 内只保留一次 Query Loop 执行入口
  • 已完成第八刀实现:runtime turn 初始化、status 投射与 service preload 事件已收口为统一前奏 helper,主循环的前置准备阶段已压成单一语义块
  • 已完成第九刀实现:run_start_metadata、timeline_recorder、runtime_status_session_config 与流式 session_config 构建状态已收口为统一 execution context,主循环不再散落拼装这组前置状态
  • 已完成第十刀实现:run_observation、run_finish decision 与 terminal finalize 链路已回收到 execution context,主循环不再手工拼接 tracked execution 与终态收尾
  • 已完成第十一刀实现:skill_tool_session_access 与 cancel_token 已收口为统一 session scope,异常路径与正常路径共享同一套会话级清理边界
  • 已完成第十二刀实现:runtime_snapshot -> runtime_projection_snapshot -> turn_state -> turn_input_envelope 已收口为统一 build_runtime_turn_artifacts(...) helper,主循环不再内联读取 snapshot、派生 thread/turn 和构建 turn 输入诊断
  • 已完成第十三刀实现:service_skill_preload -> prepared execution -> prelude/execute handoff 已收口为 prepare_runtime_turn_execution(...) 与 RuntimeTurnPreparedExecution,submit 主路径已压成更明确的 prepare -> execute 语义块
  • 已完成第十四刀实现:provider_continuation -> workspace sandbox apply -> tracker/session scope bootstrap 已收口为 prepare_runtime_turn_submit_bootstrap(...),submit 主路径不再内联铺开这组前置副作用和运行期参数拼装
  • 已完成第十五刀实现:request.provider_config -> configure_provider/configure_provider_from_pool -> persist_session_provider_routing 已收口为 apply_runtime_turn_provider_config(...),submit 主路径不再内联铺开 provider apply 分支
  • 已完成第十六刀实现:resolved_prompt -> prompt augmentation -> requested/effective strategy persist 已收口为 prepare_runtime_turn_prompt_strategy(...),submit 主路径不再内联铺开 prompt/strategy 组装与持久化
  • 已完成第十七刀实现:tool surface metadata -> MCP warmup -> skill launch metadata normalize -> turn_input_builder seed 已收口为 prepare_runtime_turn_request(...),submit 主路径不再内联铺开 request prepare 分支
  • 已完成第十八刀实现:runtime_chat_mode -> web_search/request_tool_policy -> execution_profile 已收口为 prepare_runtime_turn_policy(...),submit 主路径不再内联铺开 policy resolve 逻辑
  • 已完成第十九刀实现:auto_continue -> workspace repair warning -> session_state_snapshot/working_dir update -> session_recent_runtime_context 已收口为 prepare_runtime_turn_session(...),submit 主路径的 session 级前置准备已压成单一 helper
  • 已完成第二十刀实现:session/policy/request/prompt_strategy -> provider apply/bootstrap 已收口为 prepare_runtime_turn_submit_preparation(...),submit 主路径已提升为单一 preflight 准备块
  • 已完成第二十一刀实现:sync_browser_assist_runtime_hint -> prepare_runtime_turn_execution -> agent guard -> emit_prelude_and_execute 已收口为 execute_runtime_turn_submit(...),submit 主路径当前已压成 prepare -> scoped execute 两段主骨架
  • 已完成第二十二刀实现:provider_config resolve -> harness metadata normalize -> workspace resolve/turn id/runtime_config 已收口为 prepare_runtime_turn_ingress_context(...),入口上下文边界不再散落在主路径中
  • 已完成第二十三刀实现:agent init/session_store check -> support tools register 已收口为 prepare_runtime_turn_entry(...),主路径的运行时入口准备已形成独立阶段
  • 已完成第二十四刀实现:model_skill_tool_access derive -> with_runtime_turn_session_scope -> execute_runtime_turn_submit 已收口为 execute_runtime_turn_with_session_scope(...),主路径不再拆包又重组 submit_preparation
  • 已完成第二十五刀实现:execute_aster_chat_request(...) 已把 entry -> ingress -> submit_preparation -> session_scope_execute 提升为单一 execute_runtime_turn_pipeline(...) 调用,M1 外层 orchestration 收口完成
  • 已补最小 Rust 定向校验:env CARGO_TARGET_DIR="/Users/coso/Documents/dev/ai/aiclientproxy/lime/.codex-target-runtime-turn-2" cargo test --manifest-path "src-tauri/Cargo.toml" -p lime --lib commands::aster_agent_cmd::runtime_turn::tests:: -- --nocapture 通过(37 passed,仅剩 workspace_tools.rs 既有 dead_code warning)
  • 已补文档新鲜度校验:npm run harness:doc-freshness 通过(clean)
  • 已补格式化校验:cargo fmt --manifest-path "src-tauri/Cargo.toml" --all 通过
  • M1 退出判断:已满足“不再需要横跳多份文档才能解释 Lime 主循环”的出口条件,后续不再继续细切 M1

M2 Task / Agent taxonomy 收口

  • 为 Lime 定义统一的 task / agent / coordinator 分型
  • 将 execution tracker / scheduler / subagent / automation 收回同一语义层
  • 退出条件:所有长时执行入口都能归到唯一 taxonomy

当前进度(2026-04-14):

  • 已完成第一刀:docs/aiprompts/task-agent-taxonomy.md 已成为 Task / Agent / Coordinator current 入口
  • 已完成第二刀:ExecutionTracker / subagent runtime / automation service / scheduler trigger 的 current / compat / deprecated / dead 已有明确归类
  • 已完成第三刀:docs/README.md、docs/aiprompts/README.md、docs/aiprompts/overview.md、AGENTS.md 已同步回挂新入口,仓库导航不再继续把 scheduler/heartbeat 叙事误当 current 主线
  • M2 退出判断:已满足“所有长时执行入口都能归到唯一 taxonomy”的出口条件,后续不再把 execution tracker、scheduler、subagent、automation 分散解释为多条平级主线

M3 Remote runtime 收口

  • 盘点 remote/dev bridge/browser remote/IM remote 入口
  • 声明唯一 current remote runtime
  • 退出条件:remote 不再是多个并列产品旁路

当前进度(2026-04-14):

  • 已完成第一刀:docs/aiprompts/remote-runtime.md 已成为 Remote runtime current 入口
  • 已完成第二刀:gateway_channel_* + browser connector / ChromeBridge 已明确为 current remote ingress,DevBridge / OpenClaw 已归到 compat,telegram_remote_cmd 已归到 deprecated
  • 已完成第三刀:docs/README.md、docs/aiprompts/README.md、docs/aiprompts/overview.md、AGENTS.md 已同步回挂新入口,仓库导航不再继续把 debug 桥或单通道 Telegram 入口误当 remote 主线
  • M3 退出判断:已满足“remote 不再是多个并列产品旁路”的出口条件,后续只在 current ingress 上新增能力,其余 remote 面默认只做减法与兼容维护

M4 Memory / Compaction 收口

  • 固定压缩边界、记忆预取、恢复和用户可见状态的主链
  • 退出条件:memory_runtime_* 与 compact_session 不再被当成分散能力点看待

当前进度(2026-04-14):

  • 已完成第一刀:docs/aiprompts/memory-compaction.md 已成为 Memory / Compaction current 入口
  • 已完成第二刀:来源链解析 -> 单回合 prefetch -> runtime_turn prompt augmentation -> session compaction -> working/durable memory 沉淀 -> GUI 稳定读模型 已明确为 current 主链
  • 已完成第三刀:project_memory_get 与角色/世界观/大纲资料链已明确退回 compat 附属层,memory_feedback_cmd 已退回 deprecated,memory_search_cmd.rs.bak 已标记为 dead
  • 已完成第四刀:docs/README.md、docs/aiprompts/README.md、docs/aiprompts/overview.md、AGENTS.md 已同步回挂新入口,仓库导航不再继续把项目资料聚合或旧 feedback 侧链误当成记忆 / 压缩主线
  • M4 退出判断:已满足“memory_runtime_* 与 compact_session 不再被当成分散能力点看待”的出口条件,后续只允许在 current 边界继续长记忆 / 压缩能力

M5 State / History / Telemetry 收口

  • 把 reliability、harness、history、review、replay 的事实源统一成一张状态地图
  • 退出条件:session / thread / turn / request / evidence / history 的读模型叙事收口

当前进度(2026-04-14):

  • 已完成第一刀:docs/aiprompts/state-history-telemetry.md 已成为 State / History / Telemetry current 入口
  • 已完成第二刀:agent_sessions / agent_messages -> SessionDetail -> AgentRuntimeThreadReadModel -> RequestLog 关联键 -> handoff/evidence/replay/analysis/review -> history-record/trend/cleanup/dashboard -> HarnessStatusPanel / AgentThreadReliabilityPanel 已明确为 current 主链
  • 已完成第三刀:docs/roadmap/lime-aster-codex-state-model-implementation-plan.md、docs/roadmap/reliability/* 与 telemetry_cmd.rs 已明确退回 compat;cleanup 报表里残留的 requestTelemetry:unlinked 旧语义已明确为 deprecated
  • 已完成第四刀:docs/README.md、docs/aiprompts/README.md、docs/aiprompts/overview.md、AGENTS.md 已同步回挂新入口,仓库导航不再继续把状态模型专题计划、reliability 计划或原始 request log 控制台误当成 current 主链
  • 已完成第五刀:docs/roadmap/reliability/README.md 已补成 compat 目录入口;cleanup 核心脚本已把旧 requestTelemetry:unlinked 样本折叠为 known_gap,避免旧历史语义继续充当现役状态类别
  • 已完成第六刀:docs/roadmap/reliability/*.md 全部补上 compat 提示,正文开头先回挂 state-history-telemetry.md;telemetry_cmd.rs 也已明确只暴露原始 RequestLog 与聚合统计,不再和 thread read / evidence 主链抢解释权
  • 已完成第七刀:docs/roadmap/reliability/*.md 顶部重复的上位文档列表已压成统一 README + current 主链 + PR 对应映射 导航,专项正文不再继续堆叠第二套入口说明
  • 已完成第八刀:整组 docs/roadmap/reliability/* 已进一步压缩为 compat 历史摘要档案,只保留落地结果、current 映射与延后增强项;重复的目标/问题/范围/实施清单正文已回退到仓库历史
  • 已完成第九刀:docs/roadmap/lime-aster-codex-state-model-implementation-plan.md 已进一步压缩为 compat 历史摘要档案,alignment-roadmap 顶部导航也已改回 query-loop / state-history-telemetry / upstream-runtime-alignment-plan 这组 current 入口
  • 已完成第十刀:docs/roadmap/lime-aster-codex-alignment-roadmap.md 已进一步压缩为 compat 历史摘要档案,只保留阶段映射、历史判断与 current 回看入口
  • 已完成第十一刀:docs/roadmap/lime-conversation-execution-efficiency-roadmap.md 已进一步压缩为 compat 历史摘要档案,docs/roadmap/artifacts/* 对运行时边界的引用也已统一改回 query-loop / task-agent-taxonomy / state-history-telemetry / upstream-runtime-alignment-plan
  • M5 退出判断:已满足“session / thread / turn / request / evidence / history 的读模型叙事收口”的出口条件,后续只允许在 current 边界上继续长能力

7. 当前默认判断

  • Tool Runtime 继续视为 current
  • Query Loop、Task / Agent / Coordinator、Remote / SDK / Server Mode、Memory / Compaction、State / History / Telemetry 视为 aligned

当前最值得继续推进的一刀固定为:

文档侧重型 compat 路线图已基本压成历史摘要档案;当前已收口 TurnInputEnvelope -> SessionConfig 的 turn context snapshot 分叉、action_runtime 辅助恢复链的 turn context 旁路,并显式化 compact_session 控制回合的最小上下文边界;剩余散落在 persona_cmd / theme_context_cmd 的一次性临时会话配置也已收口为专用 helper,零入口旧发送壳已删除;Tauri 命令层原始执行面也已固定为 3 处并补了源码扫描守卫。下一刀转向继续盘点 src-tauri/src 非命令层与 README/示例面是否还残留会误导实现者的原始执行旁路叙事。

这样做的原因是:六条运行时主链的 current 入口已经补齐;cleanup 的旧 unlinked 语义、telemetry 原始浏览面定位,以及 reliability / state-model / alignment / conversation-efficiency 这些重型 compat 文档都已经被收紧。继续留在文档治理上的边际收益已经明显下降,下一步更值得回到 current 代码边界继续做减法。