欢迎光临
我们一直在努力

规则核心库:AI系统的认知框架

摘要
AI编程智能体(如 Cline)正被赋予对文件系统、外部 API 和开发环境的自主操作权,但自主性的提升伴随着系统级的可靠性危机:缓存与物理文件漂移导致幻觉输出,工具空结果无限重试引发死循环挂起,跨会话推理链断裂造成认知失忆,上下文窗口溢出致使任务中途崩溃。这些瞬态与稳态故障使智能体频繁陷入反复重试、状态错乱和资源浪费,严重削弱了 IDE 级自动化开发工具的工程价值。

本文提出“规则核心库”——一个为 Cline 类智能体量身打造的形式化、可执行操作系统内核。其设计围绕三条认知状态公理构建:内部一致性(operationLog 杜绝悬挂操作)、外部一致性(SyncGuard 强制缓存与物理文件同步)、历史完整性(CompactProcedure 持久化推理链)。通过 StateManager 统一治理会话状态变量,ConfigInjection 与 ConflictResolution 元机制确保参数优先级与规则裁决的确定性。规则体系严格分层为公理(不可变逻辑)、策略(决策选择)、规范(约束边界)、反模式(错误知识库)和流程(可执行步骤),实现“决策”与“执行”的彻底解耦,将原本依赖 LLM 内省的启发式试探升级为可验证、可恢复的系统工程。

针对 Cline 日常开发场景(文件读写、编译诊断、代码搜索、模块重构),该规则库带来五大可量化性能提升:

输入 Token 成本直降 40%~55%:IdempotencyGuard 结合文件哈希与操作标识,将冗余文件 I/O 减少 60%~75%,避免重复读取与重复工具调用。

无限重试挂起事件降低 95% 以上:OnError 区分首次空结果(瞬态,零成本重试一次)与重复空结果(稳态,三阈值强制熔断),单次故障恢复时间从约 120 秒压缩至 15 秒内。

上下文溢出崩溃率降低 80%:CompactDecision 在上下文水位超 85% 时触发紧急纯文本转储(≤500 字符),ReadStrategy 对大文件分段索引按需检索,窗口利用率从 ~30% 提升至 80%。

决策路径延迟压缩 90%:将“选工具”“定策略”转化为确定性查表([CM]/[CD]),每轮决策从 ~200ms 降至 <10ms,大幅减少 API 往返。

状态恢复二次循环轮次减少 70%:StateRecovery 写入恢复标记阻断“恢复→检查→再恢复”死锁,平均恢复耗时从 45 秒降至 15 秒。

综合端到端指标:多文件批处理任务耗时缩短 50%~65%,单次编译修复循环 API 调用次数从 12~18 次降至 5~8 次(减少 ~55%),长会话(100+ 轮)任务崩溃率从约 40% 降至 <8%,月度 LLM 调用费用预估节省 35%~50%。该规则核心库为 Cline 等自主智能体提供了一部“认知宪法”和一套“操作规范”,使自动化开发从高风险实验走向高可靠工程实践。

规则核心库


〇、元规则(Meta-rules)

RuleMetaModel

规则分类层级
层级性质可变性职责约束
公理 (Axiom) 不可变基础规则 不可变 声明"什么是逻辑上必然的" 仅限认知状态三定律等底层规则,不含操作决策
策略 (Strategy) 操作决策 可变 定义"选哪个方案" 只做决策判断,不含步骤序列
规范 (Standard) 约束条件 可变 定义"必须/禁止" 可引用公理、策略
反模式 (Anti-pattern) 负面模式 可变 集中管理已知错误 可引用公理、策略、规范
流程 (Procedure) 步骤序列 可变 定义"按什么顺序执行" 只含步骤序列,不含决策逻辑
公式类型定义
标识名称语义输出类型
[AX] 公理声明 声明逻辑上必然的命题 逻辑命题
[TD] 阈值决策 基于阈值比较输出决策 枚举值
[CM] 分类映射 输入→类别的映射 类别标签
[CD] 条件决策 基于条件分支输出决策 枚举值
[SM] 序列映射 输入→有序步骤的映射 步骤列表
[QA] 质量评估 基于标准输出质量等级 pass/warn/fail
[CC] 成本计算 基于参数输出量化成本 数值

StateManager [元机制]

会话级状态变量的统一管理入口。所有规则通过 StateManager 读写状态,不直接操作状态变量。

变量名类型初始值说明读权限写权限
operationLog Map<OpID, Status> {} 操作状态记录 StateValidity、OnError ErrorHandler、执行体
fileCache Map<Path, {timestamp, hash}> {} 已读文件路径、缓存时间戳、内容哈希 StateValidity、SyncGuard、ReadStrategy ReadStrategy、SyncGuard
externalConsistency bool true 外部一致性标志(fileCache 与物理文件是否一致) StateValidity SyncGuard
last OpID null 上一次操作标识 IdempotencyGuard 执行体
lastFileHash Hash null 上一次操作时文件的内容哈希 IdempotencyGuard 执行体
retryCounter int 0 连续重试计数 OnError OnError
switchCounter int 0 连续策略切换计数 OnError OnError
forceHalt bool false 熔断标志 OnError OnError
toolCallHistory Map<ToolCallKey, {count, lastResult}> {} 工具调用历史(count 为调用次数) OnError 执行体
callCount Map<CallKey, int> {} 按调用键(工具+参数)统计的调用次数 FirstCallTransient、RepeatedCallStable 执行体
  • 状态一致性:遵循 StateSnapshot、StateMerge、StateIsolation 公理。在 @parallel 场景下,并行步骤使用独立的状态快照,执行完成后按工具链顺序合并回主状态。
  • 初始化钩子:skipExternalConsistency 和 skipHistoricalIntegrity 标志由 StateManager 的初始化钩子自动管理,LLM 代码不可手动修改。
    • 触发条件:当 fileCache = ∅ 或 forceHalt = true 时,系统底层自动置位这两个标志。
    • 清除条件:首次 StateValidity 评估完成后,系统底层自动清除这两个标志。

ConfigInjection [元机制]

参数来源优先级:运行时参数 > 项目配置(→ project.md)> 环境变量(→ env:VAR)> 默认值(→ default:val)

参数缺失处理:按 project.md 定义的降级策略处理(必需参数缺失→规则降级,可选参数缺失或类型不匹配→使用默认值)。

ConflictResolution [元规则]

同层规则冲突时,按以下优先级裁决:① 参数来源优先级(由 ConfigInjection 定义)→ ② 规则特异性(更具体的规则优先于通用规则)→ ③ 时间顺序(后定义的规则覆盖先定义的规则)。跨层优先级由 RuleMetaModel 的层级定义隐含保证:公理 > 规范 > 策略 > 流程 > 反模式。


一、公理(Axioms)

认知状态元公理

StateValidity(cognitiveState, worldState) [QA]

Provides: stateValidity评估结果(valid/invalid/degraded)

认知状态有效性(三定律联合评估)。
InternalConsistency ∧ ExternalConsistency ∧ HistoricalIntegrity → valid · ¬InternalConsistency → invalid · InternalConsistency ∧ (ExternalConsistency ⊕ HistoricalIntegrity) → degraded · otherwise → invalid

  • InternalConsistency=false 时直接判定为 invalid(对应 StateRecovery 的 full_reset),不进入 degraded 路径。
  • 三定律:
    • InternalConsistency:¬∃partialOperation → true。真值由 operationLog 提供。
    • ExternalConsistency:∀f∈fileCache : f.timestamp ≥ f.lastModifiedTime → true。真值由 SyncGuard.sync_check 的物理校验结果提供,结果写入 StateManager.externalConsistency。
    • HistoricalIntegrity:∀phase∈completed : phase.reasoningTrace ≠ ∅ → true。真值由 CompactProcedure.persist_reasoning 的执行记录提供。
  • 评估前置条件:调用 StateValidity 前应先通过 SyncGuard.sync_check 刷新 fileCache(fileCache 非空时)。若 sync_check 不可用,评估结果应标注 ExternalConsistency 维度的可信度。
  • 空状态处理:当 fileCache = ∅(系统首次启动或空状态)时,由 StateManager 初始化钩子自动置位 skipExternalConsistency 和 skipHistoricalIntegrity 标志,跳过 ExternalConsistency 和 HistoricalIntegrity 两个维度的评估,仅评估 InternalConsistency。详见 StateManager 初始化钩子。

状态一致性公理

StateSnapshot [AX]

∀op∈Operations : op.readsFrom(snapshot) → op.result.deterministic

  • 每个操作应基于一致的状态快照执行。同一快照下的重复操作应产生相同结果。
  • @parallel 场景:并行步骤各自持有独立快照,互不干扰。
StateMerge [AX]

∀merge∈Merges : merge.conflictFree → merge.result.consistent

  • 状态合并应保持一致性。当多个操作的结果需要合并时,后完成的写入不应覆盖先完成的写入所依赖的读取值。
  • 冲突处理:合并时若检测到冲突,以先完成的步骤为准,后完成的步骤回退并重试。
StateIsolation [AX]

∀op₁,op₂∈Parallel : op₁.snapshot ∩ op₂.snapshot = ∅ → op₁∥op₂

  • 并行操作应隔离执行。当两个并行步骤访问不同的状态变量时,可安全并发。访问同一状态变量时,应序列化执行。

空值元公理

NullExistence [AX]

∀x ∈ SystemState : x = null → LegalInitialState

  • 系统首次启动时各组件处于空状态是预期行为。空集合是合法的中间状态。
ToolDeterminism [AX]

∀T, params, state : T(params, state) = T(params, state)

  • 若两次调用同一工具+相同参数得到不同结果,说明系统状态已变化。此公理是幂等性检查和空结果熔断的理论基础。
NullResultLegitimacy [AX]

∀T, params : T(params) = ∅ → LegalOutput

  • 空结果与错误有本质区别:空结果是合法输出,错误是异常状态。
  • 瞬态空结果:首次调用返回空(callCount=0),根据 FirstCallTransient 公理,应重试一次(不递增 emptyCount)。详见 OnError 策略①.5分支。
  • 稳态空结果:重试后仍返回空(callCount≥1),根据 RepeatedCallStable 公理,触发熔断逻辑。详见 OnError 策略②分支。
  • 连续空结果的熔断处理由 OnError 策略定义。

瞬态与稳态公理

FirstCallTransient [AX]

∀x∈SystemState : callCount(x)=0 → x.mayBeTransient

  • 首次观测到的状态可能是瞬态的(如网络抖动导致的空结果),应重试一次以排除瞬态因素。
  • callCount 由 StateManager.callCount 维护,执行体在每次工具调用后递增对应 CallKey 的计数。
RepeatedCallStable [AX]

∀x∈SystemState : callCount(x)≥1 → x.isStable

  • 重复观测到的状态是稳态的。重试后仍返回相同结果,说明该状态是稳定的,应触发正常处理逻辑。
TransientRetryNoCost [AX]

∀x∈SystemState : x.mayBeTransient → retry(x).cost = 0

  • 瞬态重试不产生错误计数。首次空结果的重试不递增 emptyCount 或 retryCounter。
  • cost=0 的含义:不递增 retryCounter、emptyCount、callCount 中的任何错误相关计数器。

二、策略(Strategies)

工具策略

DeprecateStrategy(D, hasReference) [CD] Provides: 废弃决策(cannot_delete/can_delete/no_action)

D ∧ hasReference → cannot_delete · D ∧ ¬hasReference → can_delete · ¬D → no_action

AmbiguityStrategy(semantics, phase) [CD] Provides: 歧义处理决策(extract_to_shared_config/use_alias/remove_alias)

same → extract_to_shared_config · different ∧ transition → use_alias · different ∧ migration_done → remove_alias

ReferenceStrategy(depA→B, depB→A) [CD] Provides: 循环引用检测结果(true/false)

depA→B ∧ depB→A → true · otherwise → false

RefactorStrategy(error) [CD] Provides: 重构优先级决策(refactor_first/normal_priority)

error ∈ RefactorScope → refactor_first · otherwise → normal_priority · RefactorScope = {模块迁移, 接口变更, 架构级改动}

ConflictStrategy(hasReference, isFirstTime, deprecationConfig) [CD] 处理决策(delete/firstTimeAction/retryAction)

¬hasReference → delete · hasReference ∧ isFirstTime → deprecationConfig.firstTimeAction · hasReference ∧ ¬isFirstTime → deprecationConfig.retryAction

ToolStrategy [CM] Provides: 工具选择决策({tools, timeout, mode} 三元组)
  • ToolPriority(toolType):available(external) → external · ¬available(external) ∧ available(builtin) → builtin · otherwise → cli
  • ToolSelect(taskType):∈{file_io} → direct_file_ops · ∈{analysis,processing} → sandbox_processing · ∈{reasoning,decomposition} → structured_reasoning · ∈{batch,multi_query} → batch_processing · otherwise → builtin
  • Toolchain(scene):scene → guidesSceneMap[scene](查表模式)。@parallel 标注表示该步骤可并发执行。新增场景只需在 guides.md 映射表中添加条目。
  • Toolchain fallback:若 guidesSceneMap[scene] 未定义,回退到 ToolSelect 分类路径(ToolSelect(taskType)),由 ToolSelect 根据任务类型选择工具。若 ToolSelect 也未匹配,使用 builtin 兜底。
OnError(error, stepIndex, toolchain) [CD]

Provides: 错误处理决策(retry/switch_strategy/halt/continue/skip_remaining/forcehalt)

工具链错误处理策略。空结果(∅)与错误(exception)共用同一套熔断机制。输出纯决策值,不含流程动作(动作由 ErrorHandler 执行)。内部查询 StateManager.callCount 和 StateManager.emptyCount 获取调用计数和空结果计数。

① forceHalt=true? → true: forcehalt | false: 进入①.5
①.5 瞬态重试?(依据 NullResultLegitimacy 公理——首次空结果重试一次,不递增 emptyCount)
├─ result=∅ ∧ callCount(T, params)=0 → retry
└─ 否则 → 进入②
② 重试/空结果熔断?
├─ retryCounter ≥ 3 ∨ emptyCount(T) ≥ 3 → forcehalt
├─ emptyCount(T, params) ≥ 2 → switch_strategy
├─ result=∅ ∧ callCount(T, params)≥1 → switch_strategy
└─ 均不满足 → 进入③
③ 错误分类处理:
├─ error∈{timeout, execution_failure} ∧ stepIndex<len(toolchain) → halt+persist
├─ error∈{partial_output, warning} → continue
├─ error∈{resource_exhausted} → skip_remaining
└─ error∈{irrecoverable} → halt

  • 计数器递增:error ∈ {execution_failure, compilation_error} 时 retryCounter += 1(在①的 false 分支之后、进入②之前执行)。入口处 forceHalt=true 时跳过所有计数器递增。
  • forceHalt 通知机制:forceHalt=true 状态在连续 N 轮 OnError 调用(N=5)无新错误触发后,向用户报告当前熔断状态并请求确认是否清除 forceHalt 标志。用户确认前 forceHalt 保持有效。StateRecovery 是主动恢复的唯一路径。
  • 空结果熔断:emptyCount 是工具连续返回空结果的计数器,分两个粒度——emptyCount(T)(不限参数)和 emptyCount(T, params)(特定参数)。两者共享同一套熔断模式:超过阈值(T≥3 或 T+params≥2)触发 forcehalt 或 switch_strategy。emptyCount 与 retryCounter 独立计数但共享 forceHalt 标志。
  • emptyCount 与 switchCounter 联动:当工具 T 返回非空结果时,emptyCount(T) 重置为 0(工具能返回非空结果说明该工具本身正常,无需保留历史错误痕迹);emptyCount(T, params) 同样重置为 0。当 switch_strategy 被触发时 switchCounter += 1,且 emptyCount(T, params) 重置为 0(策略切换意味着参数已变更)。switchCounter ≥ 3 时后续 switch_strategy 输出降级为 forcehalt,防止无限策略切换循环。注意:switchCounter 仅在 switch_strategy 输出时递增,不因工具返回非空结果而重置,确保防循环机制不受参数变更后非空结果的影响。
  • switchCounter 衰减:switchCounter 在阶段变更(phaseChanged=true)时减半(switchCounter = floor(switchCounter × 0.5)),保留防循环所需的累积信息而非完全清零。连续 N 轮(N=10)无 switch_strategy 触发时,switchCounter 减 1(不低于 0),避免早期环境问题导致的计数器累积在系统稳定运行后仍持续影响。注意:衰减仅降低 switchCounter 的数值,不改变其防循环语义——当 switch_strategy 再次触发时,switchCounter 仍从衰减后的值继续递增,switchCounter ≥ 3 的 forcehalt 降级阈值不变。
KnowledgeDedup(entity, kb) [CD] Provides: 去重检查结果(skip/record)

hash(entity.name + entity.content) ∈ kb.hashes → skip · otherwise → record + kb.hashes.add(hash)

  • 备策略:当 kb.hashes 未初始化时,先 search(entity.name) 检查同名实体。存在则 add_observations,不存在则 record。
PathStrategy(execEnv, projectConfig) [CM] Provides: 路径格式映射

execEnv → projectConfig.path.format[execEnv] · execEnv∈{direct_api, cli, sandbox}

  • 通用路径原则:① 绝对路径原则 ② 禁止 cd ③ 兜底策略:路径解析失败时尝试 projectConfig.path.root ④ 沙箱转义:sandbox 路径使用 \\\\ 或 /

上下文策略

CB(actionType) [CM] Provides: 上下文预算模式

file_read→partial_read · code_execution→summary_only · batch_operation→batch_with_queries · doc_web→index_no_content

BudgetAlloc(phase) [CC]

P_plan→较多预算用于信息收集 · P_exec_prep→中等预算用于结构分析 · P_exec_core→最大预算用于编码实现 · P_exec_verify→少量预算用于验证 · P_complete→不分配预算

PD(phase) [CM] Provides: 阶段定义

P_plan→(规划,{需求分析,方案设计,信息收集}) · P_exec_prep→(执行-准备,{文件读取,代码理解,结构分析}) · P_exec_core→(执行-核心,{编码,修改,重构,配置变更}) · P_exec_verify→(执行-验证,{构建,测试,审查,验证}) · P_complete→(完成,{attempt_completion})

StateRecovery(stateValidity) [SM]

invalid → full_reset · degraded → targeted_recovery · valid → no_action

  • 死锁消除:统一为 full_reset,消除 persistenceFileStatus 状态依赖。推理链持久化文件在 full_reset 中被清空并写入恢复标记,因为原内容基于已失效的运行时状态,保留可能导致恢复后推理链与重建状态不一致。
  • full_reset:① 清空运行时缓存(operationLog、fileCache)→ ② 清空推理链持久化文件并写入恢复标记(标记格式:# FULL_RESET at {timestamp})→ ③ 重新扫描文件系统建立 fileCache → ④ 向用户报告状态已重置,请求确认 → ⑤ 用户确认后继续
  • 进度标记不受影响:full_reset 不清除 task_progress(由外部系统维护)。
  • 恢复后首次 StateValidity:full_reset 完成后首次 StateValidity 检查由 StateManager 初始化钩子自动跳过 ExternalConsistency 和 HistoricalIntegrity 两个维度(fileCache 刚重建,推理链持久化文件仅含恢复标记),仅评估 InternalConsistency。详见 StateManager 初始化钩子。
  • 二次恢复防护:推理链持久化文件中的恢复标记(# FULL_RESET at {timestamp})在 full_reset 步骤②写入后,CompactProcedure 的 persist_reasoning 将其作为当前阶段的推理记录写入推理链。后续 StateValidity 检查 HistoricalIntegrity 时,该记录满足 phase.reasoningTrace ≠ ∅ 条件,不会因推理链文件为空而误判为 degraded/invalid,从根本上消除二次恢复循环风险。
  • targeted_recovery:① 识别 degraded 的具体维度 → ② 仅恢复对应维度 → ③ 向用户报告部分状态已刷新
  • 任何压缩操作前必须先执行 StateValidity 检查,invalid 状态不压缩先恢复。
CompactDecision(phaseChanged, moduleDone, ctx_critical, stateValidity) [CD] Provides: 压缩类型决策(none/phase_compact/module_compact/emergency_dump)

ctx_critical → emergency_dump · phaseChanged → phase_compact · moduleDone ∧ ¬phaseChanged → module_compact · otherwise → no_action

  • 优先级:ctx_critical > phaseChanged(上下文截断风险 > 阶段压缩收益)。
  • ctx_critical 由系统信号触发(任一满足即为 true):上下文水位警告(>85%)、文件重读需求、输出截断检测。不依赖 AI 内省。
Background(taskType) [CM] Provides: 后台运行判断

taskType∈{dev_server,watcher,daemon}→true · otherwise→false

MergeServerRequest(hasServer, hasRequest) [CD] Provides: 合并决策(merge_in_one_call/separate)

hasServer∧hasRequest→merge_in_one_call · otherwise→separate

CohesionLowStrategy(methods, context) [CD]

methods > 40 → suggest_refactor + request_confirmation · 30 < methods ≤ 40 → record_as_intent + keep_structure · methods ≤ 30 → no_action

  • 上帝类(methods > 40)→ 建议解耦;聚合类(30 < methods ≤ 40,安全缓冲带)→ 不触发解耦,记录意图;正常范围(methods ≤ 30)→ 不处理。
  • 隐式聚合与无法区分场景:当 context 显示功能分散但无统一入口时,即使 methods ≤ 40,也输出 suggest_convergence + request_confirmation;当类型无法区分时,默认按聚合类处理(record_as_intent + keep_structure)。
  • 阈值关系:CohesionCheck 的 Low 阈值(methods>30)是"触发进一步评估"的门槛,本策略的 god_class 阈值(40+)是"触发重构"的门槛。30<methods≤40 的区间为安全缓冲带,判定为 aggregate 不触发重构。

读取策略

ReadStrategy(S, filePath, projectConfig) [CD] Provides: 读取档位决策(direct/process/process_segmented)

S < SMALL → direct · SMALL ≤ S ≤ LARGE → process · S > LARGE → process_segmented

  • 三档说明:direct=轻量预览,process=全量加载(摘要进对话),process_segmented=分段索引(按需检索)。
  • 读取完成后更新 fileCache:按 StateManager 规范更新。
  • degraded 状态处理:当 StateValidity 输出 degraded 时(InternalConsistency=true 且 ExternalConsistency=false),优先选择 direct 或 process 模式并强制重新读取(跳过 fileCache),读取完成后更新 fileCache 为后续恢复提供基础。若 StateValidity 输出 invalid(InternalConsistency=false),应先执行 StateRecovery 而非继续读取。
IdempotencyCheck(current, last, currentFileHash, lastFileHash) [QA]Provides: 幂等性检查结果(skip/proceed/null_input)

current = null → null_input · current ≠ null ∧ last = null → proceed · current ≠ null ∧ last ≠ null ∧ current = last ∧ currentFileHash = lastFileHash → skip · otherwise → proceed

  • 两维检查:操作标识 + 文件哈希都相同才 Skip。任一维度不同都重新执行。
  • null 保护:current=null → 返回 null_input(不跳过也不执行,由调用方处理空输入场景);current≠null ∧ last=null → 进入 proceed(首次执行)。
  • 状态变量更新:执行完毕后通过 StateManager 更新 last = current 和 lastFileHash = currentFileHash。
InfoDomain(task, readStrategy, projectConfig) [CM] Provides: 信息域评估结果

single_file → (scope=single, type=code, complexity=readStrategy档位对应) · single_module → (scope=module, type=mixed, complexity=moderate) · cross_module → (scope=multiple, type=mixed, complexity=complex) · full_project → (scope=all, type=mixed, complexity=complex)

  • 档位对应:complexity 由 ReadStrategy 的输出档位决定——direct→simple,process→moderate,process_segmented→complex。
CalculateCost(N, T_i, R_perOp, R_batch) [CC] Provides: 操作成本估算

Cost_sequential(N)=ΣT_i + N×R_perOp · Cost_batch(N)≈max(T_1,…,T_N)+R_batch · 推论:N>1∧T_i分布均匀→Cost_batch<Cost_sequential


三、规范(Standards)

错误处理规范

FailMode(errorType) [CM] Provides: 失败模式(FailFast/FailSafe/FailGraceful)

errorType∈{unrecoverable,precondition_violation}→FailFast · ∈{user_input,optional_feature}→FailSafe · ∈{non_core,third_party_timeout}→FailGraceful

ThrowRule(violationType, language, projectConfig) [CM] Provides: 异常类型映射

violationType → projectConfig.exceptions[violationType] · 新增语言只需在 project.md 中配置异常类型。

FixPriority(errorType, projectConfig) [CM] Provides: 修复优先级映射

errorType → projectConfig.fixPriority[errorType]

CodeStandard(code) [QA] Provides: 代码质量评估(pass/block)

¬emptyCatch ∧ ¬consoleLog ∧ ¬magicNumber ∧ ¬unusedImport ∧ ¬hardcodedPath ∧ ¬todoFIXME → pass · otherwise → block

  • 项目可覆盖:各项目可在 project.md 中声明 AllowedCodeViolations。
  • Warn 级(不阻断,仅注释建议):预留抽象、注释替代命名、冗余注释/配置。

架构规范

SCA(condition) [CD] Provides: 服务聚合锚点判断

condition∈{external_dependency,dataflow_boundary,capability_exit,change_hotspot}→true · otherwise→false

VB(boundary) [CD] Provides: 边界验证结果(valid/invalid:multiple_responsibilities/invalid:incomplete_coverage)

single_responsibility∧complete_coverage→valid · ¬single_responsibility→invalid:multiple_responsibilities · single_responsibility∧¬complete_coverage→invalid:incomplete_coverage

CommunicationMode(syncMode, processBoundary, crossSystem) [CM] Provides: 通信方式(method_call/remote_call/event_delegate/message_queue/data_object)

sync ∧ same_process ∧ ¬crossSystem → method_call · sync ∧ ¬same_process ∧ ¬crossSystem → remote_call · async ∧ same_process ∧ ¬crossSystem → event_delegate · async ∧ ¬same_process ∧ ¬crossSystem → message_queue · crossSystem → data_object

  • crossSystem=true 时无视 syncMode 和 processBoundary,统一输出 data_object。
CohesionCheck(scope) [CM] Provides: 内聚性评估结果({rating, method_count, lines})

methods≤30 ∧ lines≤1000 → {rating: "High", method_count: methods, lines}
methods>30 ∨ lines>1000 → {rating: "Low", method_count: methods, lines}

  • CohesionCheck 输出 Low 时由 CohesionLowStrategy 进一步评估具体类型和处理策略。CohesionCheck 的 methods>30 阈值是"触发进一步评估"的门槛,具体类型判定(god_class/aggregate/normal)由 CohesionLowStrategy 统一处理。

输出规范

ShouldWrite(isRedundant, simpler, costExceedsValue) [CD] Provides: 写入决策(true/false)

isRedundant→false · simpler_exists→false · costExceedsValue→false · otherwise→true

OA(state, scope, recoverable) [CD] Provides: 输出动作(replace/rewrite/deprecate/delete)

modify∧local→replace · modify∧global→rewrite · deprecate∧recoverable→deprecate · deprecate∧¬recoverable→delete


四、反模式索引(Anti-pattern Index)

各反模式与对应规则的快速查找表。详细处理逻辑见对应规则定义。

反模式对应规则严重等级自动修复
编译错误遗留 FixPriority
代码质量违规 CodeStandard 部分
异常处理不当 FailMode + ThrowRule
内聚性违规 CohesionCheck
循环聚合 ReferenceStrategy
过度设计 CohesionCheck + 架构意图
盲目读取 InfoDomain
逐点读取 CalculateCost
过度读取 ReadStrategy
深度不匹配 ReadStrategy
认知分裂 InternalConsistency 是(StateRecovery)
缓存幻觉 ExternalConsistency 是(SyncGuard)
推理失忆 HistoricalIntegrity 是(CompactProcedure)
阶段粘连 PD
模块膨胀 CohesionCheck
压缩决策不当 CompactDecision(阈值配置不当 / ctx_critical 检测延迟)
空结果死循环 OnError 是(OnError 熔断)
空结果钻牛角尖 OnError 是(OnError 熔断)
反复修改 IdempotencyCheck 是(IdempotencyGuard)

五、操作流程(Procedures)

SyncGuard [SM]

步骤序列:

  • [TOOL: sync_check(paths)]:对 fileCache 中所有条目执行物理校验
    • {status: "synced"} → 继续步骤 2
    • {status: "stale", stalePaths: […]} → 刷新 fileCache 中对应条目的时间戳和哈希,设置 StateManager.externalConsistency = false,继续步骤 2
    • {status: "error", message} → 委托 ErrorHandler 处理
  • 状态变量更新:sync_check 返回 stale → 设置 externalConsistency = false,触发 StateValidity 重新评估(不阻断当前工具链执行)
    • 默认在工具链执行前触发,可通过 @skip_sync_guard 标注跳过(由调用方在构建工具链时决定,适用于只读查询等无需前置校验的场景)。

    IdempotencyGuard [SM]

    步骤序列:

  • IdempotencyCheck:调用 IdempotencyCheck 策略进行幂等性检查
    • skip → 跳过本次执行(不进入执行体,不触发后处理)
    • proceed → 进入执行体
    • null_input → 跳过本次执行(当前操作标识为空,由调用方决定是否初始化新操作)
  • 状态变量更新:执行体完成后,通过 StateManager 更新 last 和 lastFileHash
    • 可选守卫,通过 @skip_idempotency_guard 标注跳过。与 SyncGuard 独立。

    ErrorHandler [SM]

    根据 OnError 输出的决策值执行对应动作:

    forcehalt → 停止工具链 → 设置 forceHalt=true → 报告用户 → 强制挂起(不执行后处理)
    halt → 停止工具链(不执行后处理)
    halt+persist → 停止工具链 → persist_reasoning(error_summary)(不执行 record)
    continue → 记录错误摘要到 operationLog → 继续执行后续步骤
    skip_remaining → 跳过剩余步骤 → persist_reasoning(error_summary)(不执行 record)
    retry → 验证参数和系统状态是否已变化 → 重试当前步骤
    switch_strategy → [回滚脏代码 → 换参数/换工具/报告用户]
    – **编译错误回滚**:当 `error = compilation_error` 时,先回滚到上次编译成功的代码版本(通过 git stash 暂存未提交更改后 git checkout,或通过 StateManager 文件快照恢复)。回滚范围仅限当前工具链中修改的文件。
    – **文件快照机制**:执行体在修改文件前通过 StateManager 记录文件原始内容快照(`fileSnapshots: Map<Path, string>`),回滚时从快照恢复。git stash 优先于文件快照(git 提供更完善的版本管理)。
    – **回滚失败处理**:回滚失败 → 输出 halt(不继续修复,避免进一步污染代码状态)。

    • ErrorHandler 是 SyncGuard 和工具链执行失败时的统一处理入口,不包含决策逻辑。
    • ErrorHandler 的 persist_reasoning 调用仅用于在异常终止时保存错误摘要,与 CompactProcedure 的阶段边界持久化职责不同。三种 persist_reasoning 的职责区分见 ReasoningPersistence 流程。

    ReasoningPersistence [SM]

    职责区分:persist_reasoning 有三种调用场景,职责互不重叠:

    调用方触发条件写入内容用途
    CompactProcedure 阶段/模块边界 当前阶段的完整推理链 后续会话恢复推理上下文
    ErrorHandler 异常终止(halt+persist / skip_remaining) 错误摘要 记录异常终止原因
    PostProcess 工具链执行完毕 不调用 persist_reasoning 仅记录事实/结论到知识图谱

    PostProcess [SM]

    步骤序列:

  • 推理 (reasoning):调用 sequentialthinking_tools 分析执行结果,形成结论
  • 记录知识 (record_knowledge):调用 create_entities / create_relations / note 持久化关键发现(执行前引用 KnowledgeDedup 去重)
    • 与 CompactProcedure 的关系:PostProcess 的 record_knowledge 存事实/结论,CompactProcedure 的 persist_reasoning 存推理链。两者职责不同,避免重复记录。

    FileDeprecationFlow [SM]

    参数:deprecatedDir(默认 _deprecated/)、excludeMethod(compile_exclude/runtime_ignore/module_exclude)、excludeConfig、cleanTrigger
    步骤:check_references → move_to_deprecated → apply_exclusion → verify_isolation → register_cleanup

    CompactProcedure(compactType) [SM]

    阶段动作映射:

    阶段变更动作
    P_plan→P_exec_prep record_plan_to_graph
    P_exec_prep→P_exec_core index_structure_to_kb
    P_exec_core→P_exec_verify note_changes + persist_reasoning
    P_exec_verify→P_complete update_progress

    phase_compact → [执行阶段动作 → mark_phase_done → clear_context → 新会话从进度标记恢复,加载推理链末3条到元提示]
    module_compact → [record_module_summary + persist_reasoning → record_notes → update_progress_marker → clear_context]
    emergency_dump → [输出极简纯文本状态摘要(≤500字符) → clear_context → 强制 Halt,等待用户输入]

    • emergency_dump 不执行阶段动作:ctx_critical=true 时 LLM 生成大型 JSON 的成功率极低,跳过阶段动作映射,仅输出极简摘要(当前阶段、已完成模块列表、关键决策点最多3条)。
    • ctx_critical 前置检测:ctx_critical 信号应在当前步骤执行前检测(而非执行中),检测到后立即触发 emergency_dump,避免 LLM 在上下文即将截断时执行复杂操作。ctx_critical 为最高优先级,检测到后不等待当前操作完成,立即触发 emergency_dump。
    • 下次会话恢复:由 Bootstrap 从进度标记(task_progress)重建上下文,不依赖本次转储的完整性。
      none → no_action
    • persist_reasoning 在阶段/模块边界和 module_compact 时强制执行。emergency_dump 跳过 persist_reasoning(截断风险 > 持久化收益)。
    赞(0)
    未经允许不得转载:171主机测评 » 规则核心库:AI系统的认知框架
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址