Skip to content

refactor: context#155

Merged
minorcell merged 8 commits into
1024XEngineer:mainfrom
wynxing:new_Feat-manual
Apr 5, 2026
Merged

refactor: context#155
minorcell merged 8 commits into
1024XEngineer:mainfrom
wynxing:new_Feat-manual

Conversation

@wynxing

@wynxing wynxing commented Apr 5, 2026

Copy link
Copy Markdown
Collaborator

变更说明

这次改动主要重构了 internal/context 模块,将 context 构建、project rules/system state 注入,以及 compact 的裁剪与摘要链路拆成更清晰的职责边界,减少 builder 和 compact runner 内部耦合,并补齐相关测试。

主要改动

  • 拆分 context builder 内部职责

    • 引入 prompt source 抽象,分别处理核心 prompt、项目规则和系统状态
    • 引入 message trim policy,避免 builder 直接持有裁剪细节
    • 修正合并过程里 builder.go 的重复定义与重复拼装问题
  • 增强 project rules 与 system state 的构建逻辑

    • AGENTS.md 的发现、读取、裁剪和缓存收敛到独立 source
    • 基于路径、文件大小和 mtime 判断 project rules 缓存是否可复用
    • 将 workdir、shell、provider、model 和 git 状态的收集独立为 system state source
  • 拆分 compact 内部链路

    • 增加 compact planner,统一规划 archived / retained 消息边界
    • 增加 compact summary validator,负责摘要结构校验、规范化和按预算收缩
    • 增加 transcript store,按项目维度安全落盘 compact 前 transcript
    • 抽出 internal/context/internalcompact 共享消息 span 逻辑,统一处理 tool block 原子性和“最近明确用户指令”保护
  • 优化 compact prompt 与消息裁剪行为

    • compact prompt 改为更紧凑的 transcript 视图,降低摘要输入噪音
    • trim 逻辑改为基于 span 裁剪,避免拆散 tool call / tool result
    • 显式保护最近一条明确用户指令所在尾部,减少 compact 后的上下文断裂风险
  • 补充测试

    • 新增/更新 context 相关单测,覆盖 source、trim policy、message span、summary validator 等边界
    • 更新 runtime 中 compact generator 相关测试,校验 compact 请求格式与约束

影响范围

主要影响以下模块:

  • internal/context
  • internal/context/compact
  • internal/context/internalcompact
  • internal/runtime(测试)

验证

  • go build ./...
  • go test ./...

备注

这次 PR 以重构和可维护性提升为主,不改变 TUI -> Runtime -> Provider / Tool Manager 主链路职责边界。

@minorcell minorcell changed the title 这次改动主要重构了 internal/context 模块,将 context 构建、project rules/system state 注入,以及 compact 的裁剪与摘要链路拆成更清晰的职责边界,减少 builder 和 compact runner 内部耦合,并补齐相关测试。 refactor: context Apr 5, 2026
@minorcell minorcell merged commit 8ce86fe into 1024XEngineer:main Apr 5, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants