更新时间:2026-04-14
本文是对 #268 的修订版,目标是解决前序评审指出的关键问题:
- 停止规则无唯一判定与优先级
- progress 判定易被伪进展欺骗
- capability / token estimation 缺少一致性与误差治理
- 阶段 1 过载、验收不可量化
- 与现有 issue(Gateway / Skills / Todo / TUI)存在排期冲突
0. 关系声明与冲突处置
本计划作为 #268 的修订执行版本,原则上以本 issue 为后续拆分依据。
0.1 与现有 issue 的关系矩阵
#243(runtime 职责重构):merge(并入本计划阶段 1A/1B,作为控制面收敛子任务)。
#247(架构 2.0):merge(保留“分层方向”,但主链路阶段不要求 Gateway 必经)。
#249(Gateway 研讨):defer(保留为远期架构议题,不阻塞当前主链路演进)。
#250(Gateway 进程骨架):keep as experiment(保持实验属性,不作为本计划依赖)。
#255~#260(Skills):keep + reschedule(纳入本计划中后段,明确依赖边界)。
#261/#262(Todo):keep + advance(从原阶段 8 前置到阶段 3,作为 progress 证据输入)。
#266(TUI 简化):merge(与统一执行入口阶段联动,不独立走分叉语义)。
#268:superseded-by-this-issue(保留历史记录,不再作为执行主单)。
0.2 顶层拍板(避免双轨)
- 当前主链路仍为
TUI -> Runtime -> Provider/ToolManager;Gateway 不是近期必经入口。
- Todo 不再后置,前置进入运行时判定链路。
- Skills 不再“未定义顺序”,明确安排在 Repository 分层之后。
1. 术语与判定规范(先于阶段实施)
1.1 统一 StopReason(互斥 + 优先级)
运行停止必须产出唯一 StopReason,优先级固定如下(从高到低):
STOP_FATAL_ERROR
STOP_BUDGET_HARD_TURN
STOP_BUDGET_WALL_TIME
STOP_BUDGET_TOOL_CALLS
STOP_BUDGET_ESTIMATED_PROMPT
STOP_BUDGET_OBSERVED_TOKENS
STOP_NO_PROGRESS
STOP_REPEAT_CYCLE
STOP_COMPLETED
STOP_USER_INTERRUPT
约束:
- 同一轮只能有一个 StopReason(唯一写入事件与 ledger)。
- 预算类与行为类冲突时,按优先级决议,不允许并列。
- 事件层与持久化层使用同一枚举,禁止字符串散落。
1.2 Progress 证据模型(Evidence)
progress 不再基于“看起来在动”,而是基于证据计分(可持久化):
EVIDENCE_TASK_STATE_CHANGED:Todo/Task 状态发生合法迁移。
EVIDENCE_WRITE_APPLIED:写工具成功且产生有效文件差异。
EVIDENCE_VERIFY_PASSED:验证命令或验证工具通过。
EVIDENCE_NEW_INFO_NON_DUP:工具结果产生新信息哈希。
EVIDENCE_PHASE_ADVANCED:phase 合法推进。
规则:
- 仅
EVIDENCE_NEW_INFO_NON_DUP 不能单独抵消 no-progress(防噪声)。
- 每轮计算
ProgressScore,低于阈值则 streak +1。
- compact 成功仅重置
repeat-cycle,不直接记作业务进展。
1.3 事件协议(Runtime Event Schema)
新增并冻结最小事件集合:
phase_changed
budget_checked
progress_evaluated
compact_applied
stop_reason_decided
permission_requested
permission_resolved
ledger_reconciled
每个事件最小字段:run_id, turn, phase, timestamp, payload_version。
2. 目标边界(修订版)
2.1 runtime(控制面)
负责:budget/phase/progress 判定、tool 回灌编排、permission 等待与恢复、事件发射。
不负责:规则解析、repo 检索、tokenizer 细节、Git 语义、审批策略判定。
2.2 provider(协议与计数能力)
负责:模型协议适配、能力基线解析、token 分段估算器、流式解析、usage 原始采集。
不负责:stop 决策、context 选择策略、progress 判定、repo-aware 检索。
关键修订:provider 输出“分段估算值”,runtime 汇总并执行预算判定。
2.3 config(静态配置)
负责:预算档位/profile、provider/model 选择、capability override。
不负责:运行中 streak、动态缓存、reconciled 账本。
2.4 session(持久化)
负责:transcript、run ledger、todo/task state、resume checkpoint。
2.5 context / instructions / repository / tools / tui
instructions:规则发现与合并,输出 InstructionBundle。
repository:repo-aware 结构化输入,输出有 token 上限与来源字段。
context:纯 composer,不做规则发现与 repo 检索。
tools:统一可调用能力与参数校验(含 git/review/workspace checkpoint)。
tui:展示与控制,不直接执行工作区操作。
3. 能力基线与估算治理
3.1 Capability 解析一致性协议
解析顺序:config override > catalog cache > builtin table > live discovery > conservative fallback。
必须补齐:
cache_ttl 与 stale-while-revalidate。
invalidation 触发:model 切换、provider 版本变化、显式刷新。
conflict_resolution:高优先级来源覆盖低优先级来源并记录来源链。
CapabilitySource 与 CapabilityConfidence 统一枚举。
3.2 Token Estimation 误差治理
provider 输出:
EstimatedPromptTokens
EstimatedInjectedTokens
EstimatedToolSchemaTokens
EstimationConfidence
runtime 维护误差统计:
error_ratio = |observed-estimated| / max(observed,1)。
- 按
provider+model 维护滑动窗口(如最近 N 轮)。
- 超阈处理:降级使用更保守预算系数,并发出
estimation_degraded 事件。
4. 运行模型(修订后)
- Capability Baseline(含一致性协议)
- Preflight Estimation(分段估算)
- Budget + Phase + Evidence Progress
- Usage Reconciliation(estimated/observed/reconciled)
- Resume Checkpoint(原子性定义)
- Context Health(compact + retrieval)
- Delivery Surface(git/review/workspace checkpoint)
5. 分阶段实施(重排)
阶段 1A:判定语义最小闭环(runtime + config)
目标:先把“怎么停、怎么判进展、怎么发事件”定死。
完成项:
- StopReason 枚举、优先级与互斥规则。
- Phase 最小机(plan/execute/verify)与并行 tool call 决议规则。
- Progress evidence 与 no-progress/repeat-cycle 计数器。
- runtime 事件协议最小集合。
不做:capability/estimation/ledger/checkpoint。
验收(量化):
- StopReason 决议一致性测试通过(冲突输入下 100% 唯一结果)。
- phase 迁移测试覆盖并行 tool call 场景。
- progress 判定误触发回归用例覆盖完成。
阶段 1B:预算与 compact 预算化(runtime + provider + catalog + config)
目标:在 1A 语义稳定后接入预算。
完成项:
- capability 一致性协议(TTL/失效/冲突仲裁)。
- provider 分段 token estimation 接口。
- budget stop 生效(estimated + observed 两条线)。
auto_compact_budget 与 reactive_compact_budget。
验收(量化):
- discovery 缺失时能力基线仍可回退且来源可追踪。
- estimation 与 observed 误差统计可落库并可查询。
- 预算耗尽触发的 stop reason 与事件一致。
阶段 2:Run Ledger 与 Usage 调和(runtime + session + provider)
目标:把预算从“临时判断”升级为“可恢复账本”。
完成项:
- session 持久化
estimated / observed / reconciled。
- 每轮调和策略与异常保留策略。
- compact / budget 判定切换到 reconciled ledger。
验收:usage 缺失、usage 异常、usage 正常三类路径均稳定。
阶段 3:Todo 前置接入(session + runtime + context,关联 #261/#262)
目标:让 progress 有任务语义证据,不再依赖文本猜测。
完成项:
- 结构化 todo/task state 持久化与恢复。
- context 暴露 todo 给模型。
- runtime 使用 todo 变化参与 progress 判定。
验收:todo 状态迁移与 no-progress 判定一致可测。
阶段 4:Resume Checkpoint(session + runtime)
目标:预算耗尽可断点续跑。
完成项:
ResumeCheckpoint 最小字段集。
- checkpoint 写入原子性:
transcript/tool_result/ledger/checkpoint 同事务提交。
- 恢复冲突策略:checkpoint 版本不匹配时降级为新 run 并保留告警。
验收:中断恢复后 phase、预算、todo、ledger 一致。
阶段 5:Instructions 分层(instructions + context + app)
目标:把规则解析从 context 抽离。
完成项:
- 规则发现与合并迁入
internal/instructions。
- context 仅消费
InstructionBundle 进行 composer。
- AGENTS/CLAUDE 等规则加载边界与截断策略测试补齐。
阶段 6:Repository 能力层(repository + context + runtime)
目标:context health 从“只压缩”升级为“压缩+检索”。
完成项:
RepositoryBundle 契约:summary, changed_files, entrypoints, retrieval_hits。
- 每类输出 token budget 上限与排序规则。
- 每条检索结果带来源字段(path/line/hash)。
验收:context 注入在 token 预算内,且来源可追踪。
阶段 7:Skills 与 Tools/Security 边界收敛(关联 #255~#260)
目标:把技能能力放入既有执行治理链路,而非旁路。
完成项:
- skills activation 与 context 注入链路。
- skills 调工具必须经过 ToolManager/PermissionEngine/Sandbox。
- 会话可观测字段与 runtime 事件对齐。
阶段 8:Git / Review / Workspace Checkpoint 工具化(tools + security + runtime)
目标:补齐交付面,避免 verify 依赖裸 bash。
完成项:
tools/git、tools/review、tools/workspacecheckpoint。
- 权限拒绝行为矩阵:
retry / degrade / stop 明确。
- runtime 仅消费结果,不吸纳 Git 语义。
阶段 9:TUI 收口与文档归真(tui + docs)
目标:统一执行入口,清理语义分叉。
完成项:
- 收敛
& <command> 到工具链并提供替代提示。
- slash 命令保留控制面职责。
- 文档与真实实现对齐(含 gateway 的定位说明)。
6. 失败路径与降级策略(统一)
- capability discovery 失败:使用 cache/builtin/fallback,标记低置信度。
- usage 缺失:走 estimated + 低置信度,继续运行。
- 权限被拒:按工具策略执行 retry/degrade/stop,并发
permission_resolved。
- compact 失败:不终止 run,递增 retry 计数并保留 stop 判定权。
7. 配置策略(防止过度暴露)
只对外暴露高阶配置:
runtime_profile(safe/balanced/aggressive)
budget 核心上限(turn/time/token/tool_calls)
compact 双预算
细粒度阈值默认留在 runtime policy 常量或 profile 映射,不直接散落在用户配置。
8. 测试映射(阶段 -> 测试类型)
- 阶段 1A:判定优先级表驱动测试、phase 迁移测试、事件快照测试。
- 阶段 1B:capability 来源仲裁测试、估算误差测试、预算停止测试。
- 阶段 2:ledger 调和测试、缺失/异常 usage 回归。
- 阶段 3~4:todo 与 checkpoint 一致性测试、恢复回归。
- 阶段 5~9:分层边界测试、权限拒绝矩阵测试、TUI 迁移行为测试。
9. 全程禁止事项(保持不变)
- 不保留旧新运行模型双轨。
- 不让 runtime 吸纳规则解析/repo 检索/Git 语义/tokenizer 细节。
- 不让 config 保存动态运行态。
- 不做无结构化信号的语义猜测。
- 不拆空心模块。
- 不混淆
resume checkpoint 与 workspace checkpoint。
10. 预期结果
完成后,NeoCode 将具备:
- 可判定、可测试、可恢复的运行控制面。
- 有一致性协议的能力基线与可治理的 token 估算。
- 基于结构化证据的 progress 判定(含 todo 语义)。
- 清晰的规则层、仓库输入层、交付工具层边界。
- 与现有 issue 体系不冲突的统一实施路径。
0. 关系声明与冲突处置
本计划作为
#268的修订执行版本,原则上以本 issue 为后续拆分依据。0.1 与现有 issue 的关系矩阵
#243(runtime 职责重构):merge(并入本计划阶段 1A/1B,作为控制面收敛子任务)。#247(架构 2.0):merge(保留“分层方向”,但主链路阶段不要求 Gateway 必经)。#249(Gateway 研讨):defer(保留为远期架构议题,不阻塞当前主链路演进)。#250(Gateway 进程骨架):keep as experiment(保持实验属性,不作为本计划依赖)。#255~#260(Skills):keep + reschedule(纳入本计划中后段,明确依赖边界)。#261/#262(Todo):keep + advance(从原阶段 8 前置到阶段 3,作为 progress 证据输入)。#266(TUI 简化):merge(与统一执行入口阶段联动,不独立走分叉语义)。#268:superseded-by-this-issue(保留历史记录,不再作为执行主单)。0.2 顶层拍板(避免双轨)
TUI -> Runtime -> Provider/ToolManager;Gateway 不是近期必经入口。1. 术语与判定规范(先于阶段实施)
1.1 统一 StopReason(互斥 + 优先级)
运行停止必须产出唯一
StopReason,优先级固定如下(从高到低):STOP_FATAL_ERRORSTOP_BUDGET_HARD_TURNSTOP_BUDGET_WALL_TIMESTOP_BUDGET_TOOL_CALLSSTOP_BUDGET_ESTIMATED_PROMPTSTOP_BUDGET_OBSERVED_TOKENSSTOP_NO_PROGRESSSTOP_REPEAT_CYCLESTOP_COMPLETEDSTOP_USER_INTERRUPT约束:
1.2 Progress 证据模型(Evidence)
progress 不再基于“看起来在动”,而是基于证据计分(可持久化):
EVIDENCE_TASK_STATE_CHANGED:Todo/Task 状态发生合法迁移。EVIDENCE_WRITE_APPLIED:写工具成功且产生有效文件差异。EVIDENCE_VERIFY_PASSED:验证命令或验证工具通过。EVIDENCE_NEW_INFO_NON_DUP:工具结果产生新信息哈希。EVIDENCE_PHASE_ADVANCED:phase 合法推进。规则:
EVIDENCE_NEW_INFO_NON_DUP不能单独抵消 no-progress(防噪声)。ProgressScore,低于阈值则 streak +1。repeat-cycle,不直接记作业务进展。1.3 事件协议(Runtime Event Schema)
新增并冻结最小事件集合:
phase_changedbudget_checkedprogress_evaluatedcompact_appliedstop_reason_decidedpermission_requestedpermission_resolvedledger_reconciled每个事件最小字段:
run_id, turn, phase, timestamp, payload_version。2. 目标边界(修订版)
2.1 runtime(控制面)
负责:budget/phase/progress 判定、tool 回灌编排、permission 等待与恢复、事件发射。
不负责:规则解析、repo 检索、tokenizer 细节、Git 语义、审批策略判定。
2.2 provider(协议与计数能力)
负责:模型协议适配、能力基线解析、token 分段估算器、流式解析、usage 原始采集。
不负责:stop 决策、context 选择策略、progress 判定、repo-aware 检索。
关键修订:provider 输出“分段估算值”,runtime 汇总并执行预算判定。
2.3 config(静态配置)
负责:预算档位/profile、provider/model 选择、capability override。
不负责:运行中 streak、动态缓存、reconciled 账本。
2.4 session(持久化)
负责:transcript、run ledger、todo/task state、resume checkpoint。
2.5 context / instructions / repository / tools / tui
instructions:规则发现与合并,输出InstructionBundle。repository:repo-aware 结构化输入,输出有 token 上限与来源字段。context:纯 composer,不做规则发现与 repo 检索。tools:统一可调用能力与参数校验(含 git/review/workspace checkpoint)。tui:展示与控制,不直接执行工作区操作。3. 能力基线与估算治理
3.1 Capability 解析一致性协议
解析顺序:
config override > catalog cache > builtin table > live discovery > conservative fallback。必须补齐:
cache_ttl与stale-while-revalidate。invalidation触发:model 切换、provider 版本变化、显式刷新。conflict_resolution:高优先级来源覆盖低优先级来源并记录来源链。CapabilitySource与CapabilityConfidence统一枚举。3.2 Token Estimation 误差治理
provider 输出:
EstimatedPromptTokensEstimatedInjectedTokensEstimatedToolSchemaTokensEstimationConfidenceruntime 维护误差统计:
error_ratio = |observed-estimated| / max(observed,1)。provider+model维护滑动窗口(如最近 N 轮)。estimation_degraded事件。4. 运行模型(修订后)
5. 分阶段实施(重排)
阶段 1A:判定语义最小闭环(runtime + config)
目标:先把“怎么停、怎么判进展、怎么发事件”定死。
完成项:
不做:capability/estimation/ledger/checkpoint。
验收(量化):
阶段 1B:预算与 compact 预算化(runtime + provider + catalog + config)
目标:在 1A 语义稳定后接入预算。
完成项:
auto_compact_budget与reactive_compact_budget。验收(量化):
阶段 2:Run Ledger 与 Usage 调和(runtime + session + provider)
目标:把预算从“临时判断”升级为“可恢复账本”。
完成项:
estimated / observed / reconciled。验收:usage 缺失、usage 异常、usage 正常三类路径均稳定。
阶段 3:Todo 前置接入(session + runtime + context,关联 #261/#262)
目标:让 progress 有任务语义证据,不再依赖文本猜测。
完成项:
验收:todo 状态迁移与 no-progress 判定一致可测。
阶段 4:Resume Checkpoint(session + runtime)
目标:预算耗尽可断点续跑。
完成项:
ResumeCheckpoint最小字段集。transcript/tool_result/ledger/checkpoint同事务提交。验收:中断恢复后 phase、预算、todo、ledger 一致。
阶段 5:Instructions 分层(instructions + context + app)
目标:把规则解析从 context 抽离。
完成项:
internal/instructions。InstructionBundle进行 composer。阶段 6:Repository 能力层(repository + context + runtime)
目标:context health 从“只压缩”升级为“压缩+检索”。
完成项:
RepositoryBundle契约:summary, changed_files, entrypoints, retrieval_hits。验收:context 注入在 token 预算内,且来源可追踪。
阶段 7:Skills 与 Tools/Security 边界收敛(关联 #255~#260)
目标:把技能能力放入既有执行治理链路,而非旁路。
完成项:
阶段 8:Git / Review / Workspace Checkpoint 工具化(tools + security + runtime)
目标:补齐交付面,避免 verify 依赖裸 bash。
完成项:
tools/git、tools/review、tools/workspacecheckpoint。retry / degrade / stop明确。阶段 9:TUI 收口与文档归真(tui + docs)
目标:统一执行入口,清理语义分叉。
完成项:
& <command>到工具链并提供替代提示。6. 失败路径与降级策略(统一)
permission_resolved。7. 配置策略(防止过度暴露)
只对外暴露高阶配置:
runtime_profile(safe/balanced/aggressive)budget核心上限(turn/time/token/tool_calls)compact双预算细粒度阈值默认留在 runtime policy 常量或 profile 映射,不直接散落在用户配置。
8. 测试映射(阶段 -> 测试类型)
9. 全程禁止事项(保持不变)
resume checkpoint与workspace checkpoint。10. 预期结果
完成后,NeoCode 将具备: