Skip to content

[feat]增加todo模块 #46

@phantom5099

Description

@phantom5099
  • 增加todo模块

设计目的:解决 Agent 在复杂长任务中的“迷路”与“状态丢失”问题。
功能设计 :

  • 外部状态机 :传统的 LLM 依赖于对话历史(Context)来记忆进度,但随着 Token 剪枝,早期的任务目标极易丢失。Todo 模块将任务状态从“对话流”中剥离,持久化在内存(或 Repository)中。

  • ReAct 深度集成 :为 Agent 提供了 todo 原子化工具( add , update , list 等),强制要求 Agent 在执行前先拆解任务(Plan),执行中实时更新状态(Execute/Update)。

  • 架构解耦 (DIP) :严格遵循领域驱动设计(DDD),在 domain 层定义 TodoRepository 接口,Service 层仅依赖接口。这确保了未来可以无缝将内存存储切换为 SQLite 或远程数据库,而无需修改核心逻辑。

  • 优化token剪枝

设计目的:在有限的上下文窗口内,最大化保留有效信息,防止费用暴增与模型崩溃。
功能设计 :

  • 滑动窗口策略 (Sliding Window) :仅保留最近 3-5 轮工具执行的完整输出。这保证了 Agent 能够基于最新的环境反馈做决策。
  • 软压缩 (Soft Compression) :对于窗口之外的旧工具调用,不再彻底删除,而是采用“剥离正文、保留状态头”的方法。
  • 头尾保留截断 (Head-Tail Truncation) :针对超长文件读写或 Bash 输出,采用 60/40 比例保留开头(通常包含定义/Header)和结尾(通常包含报错/结果),中间部分用省略号替代。
  • 动态阈值配置 :在 app_config.go 中引入了 MaxToolContextOutputSize 等配置项,允许用户根据所使用的模型(如 128k 的 Claude 或 8k 的本地模型)灵活调整剪枝激进程度。
  • 制作PRD
    【设计目的】:确立项目技术边界,为后续功能迭代提供“北极星”指标。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions