Skip to content

重构 Cortex 拆分结构,以提升可维护性并明确 Primary / Attention / Cleanup 所有权 #14

@xiaoland

Description

@xiaoland

摘要

core/src/cortex/runtime/primary.rs 已经增长成接近 2k 行的混合职责模块。
Runtime orchestration、Primary cognition、attention-like control、cleanup-like mutation 与 control-signal routing 仍然交织在一起,这使代码难读、难改,也更容易形成错误的心智模型。

这个 issue 是一次结构性重构,目标是在代码中把 Cortex 的三 chat 模型做成可维护的真实结构,而不是只停留在 prompt wording 上。
它也是修复 #13 的主要实现路径,并有意吸收之前由 #12 跟踪的 ownership concerns。

动机

在继续修改更多行为之前,代码必须先如实暴露所有权边界。
否则 Primary / Attention / Cleanup 就仍然只是套在一个巨型执行路径上的命名层,这会同时伤害可读性、可维护性与正确性。

从第一性原理看,拆成三个 chat 的目的并不是“chat 更多”本身,而是要把不同职责在代码中明确表达出来:

  • Primary 持有 sense consumption、reasoning、act emission 与显式 break signal。
  • Attention 持有 afferent-pathway gating 与 sleep signal。
  • Cleanup 持有 goal-forest mutation、prompt / state ownership cleanup 与 context reset。
  • Runtime 持有 admitted-tick scheduling、derived-chat creation、parallel execution 与 control-state application。

规格

将 Cortex 重构为能够直接体现这些 owner 的代码结构。
至少包括:

  • 将当前单体化的 Primary 执行路径拆解为更清晰的、面向职责的模块与类型。
  • 让 runtime orchestration 与 Primary chat logic 显式分离。
  • 将 attention-like 输出移出 Primary 的内部工具路径。
  • 将 cleanup-like 输出移出 Primary 的内部工具路径。
  • 将 runtime-only control metadata 显式化,尤其是 Primary break 与 Attention sleep。
  • 让 Cleanup 成为以下事项的显式 owner:
    • goal-forest patch application
    • reset_context
    • 可变 goal / task state ownership
    • 去除 system prompt 中对可变 goal state 的重复承载
  • 在重构过程中保持或提升 停止 idle self-talk loop,并修正内部 self-model 输入 #13 所跟踪的 idle self-talk loop / self-model 问题的正确性。

验收标准

  • 当前单体化的 Cortex 执行路径被拆分为更清晰的、面向职责的模块与类型。
  • Runtime orchestration 的职责被显式表达,而不是与 Primary cognition logic 交织。
  • Primary 的职责被限制在 sense handling、reasoning、act emission 与显式 break-signal emission。
  • Attention 的职责包括 afferent-pathway rule generation 与 sleep-signal emission。
  • Cleanup 的职责包括 goal-forest patching、reset_context 与 goal / prompt ownership cleanup。
  • Attention 与 Cleanup 在每个 admitted tick 上通过克隆已提交的 Primary thread 创建。
  • Attention 与 Cleanup 继承完整的、已提交的 Primary 历史,包括 tool results 与生效中的 system-prompt 历史。
  • Primary break signal 不会传播到 Attention 或 Cleanup 的继承上下文中。
  • Attention 发出的 sleep signal 被显式路由,且不再由 Primary 持有。
  • 该重构为解决 停止 idle self-talk loop,并修正内部 self-model 输入 #13 的 idle self-talk loop 与 self-model confusion 留下清晰、可维护的路径,而不仅仅是把代码搬位置。
  • Goal-forest / reset_context / prompt ownership 不再依赖模糊的 Primary-side 行为。

技术约束

  • 除非重构明确要修改外部行为,否则应保持对外行为不变。
  • 不要引入只为了命名对称而存在的新抽象层。
  • 优先优化可读性与可维护性;结构清晰度本身就是交付内容的一部分,而不是副产物。
  • 跨 chat 的 ownership 必须在 runtime code 中真实成立,而不是只存在于 prompts 或 docs。
  • break-signal 与 sleep-signal 的路由必须显式,而不是隐含在可继承 message text 中。

向后兼容

除非明确要求,否则不需要。

参考

Metadata

Metadata

Assignees

Labels

type:featureNew capability or user-facing featuretype:refactorunit:coreBeluna core runtime and domain logic

Projects

Status

Ready

Relationships

None yet

Development

No branches or pull requests

Issue actions