Skip to content

feat(compaction): 跨压缩边界携带未完成任务 + 强化 task 对账提示#203

Merged
yishuiliunian merged 1 commit into
mainfrom
feat/compaction-task-carryover
Jun 25, 2026
Merged

feat(compaction): 跨压缩边界携带未完成任务 + 强化 task 对账提示#203
yishuiliunian merged 1 commit into
mainfrom
feat/compaction-task-carryover

Conversation

@yishuiliunian

Copy link
Copy Markdown
Contributor

Summary

  • cron 驱动的长跑 session 里,agent 标了 in_progress 的任务在一次压缩后从上下文消失(TaskCreate/TaskUpdate 记录被摘要掉),于是再也不回头关闭 —— 生产 session 攒了 6 个孤儿 in_progress + 5 个没消费的 pending
  • 根因:任务这种持久状态在压缩边界丢失,且没有机制提醒 agent 对账。两层修复:awareness(压缩携带任务)+ action(提示对账)。

Changes

  • loopal-tool-api:新增 OutstandingTasksDigest trait(outstanding_tasks.rs)。
  • loopal-agent:AgentShared 实现它,从 TaskStore 拉未完成任务拼 digest(独立文件 outstanding_tasks_impl.rs,含纯函数 + 单测)。
  • loopal-runtime:params/builder 注入字段;compaction_runCompactionSummary.summary_text 末尾确定性追加 digest(仅压缩时一次,resume 自动覆盖,不做每轮注入)。
  • loopal-agent-server:factory + agent_setup 注入 agent_shared(复刻 one_shot_chat 注入链,runtime 依赖 trait 抽象、无新增跨层依赖)。
  • loopal-prompt-system:task-decomposition.md 加 "Reconcile your task list every turn" 段(关闭已完成 / 绝不遗留 in_progress / drain pending / resumed 轮次先 TaskList)。
  • 测试:loopal-test-support harness 加注入选项。

Test plan

  • 单测:outstanding_digest 格式化(非完成/状态/active_form/空→None)。
  • e2e:compaction_summary_carries_outstanding_tasks_forward —— mock digest 经 harness 注入 → force_compact → 断言 CompactionSummary 携带任务。
  • 本地全量 94/94、clippy 零警告、rustfmt、所有文件 ≤200 行。
  • CI passes

cron 驱动的长跑 session 里,agent 标了 in_progress 的任务在一次压缩后
就从上下文消失(TaskCreate/TaskUpdate 记录被摘要掉),于是再也不回头
关闭它们 —— 生产 session 攒了 6 个孤儿 in_progress + 5 个没消费的 pending。
根因是任务这种持久状态在压缩边界被丢失、且没有机制提醒 agent 对账。

两层修复:
- **awareness**:新增 `OutstandingTasksDigest` trait(loopal-tool-api),
  AgentShared 从 TaskStore 拉未完成任务拼成 digest;compaction 在
  CompactionSummary.summary_text 末尾确定性追加(仅压缩时一次,resume
  自动覆盖,不做每轮注入)。注入链复刻 one_shot_chat 模式,runtime 依赖
  trait 抽象、由 agent-server 注入,无新增跨层依赖。
- **action**:`task-decomposition.md` 加 "Reconcile your task list every
  turn" 段 —— 关闭已完成、绝不遗留 in_progress、drain/prune pending、
  resumed/scheduled 轮次先 TaskList。

测试:`outstanding_digest` 格式化单测(非完成/状态/active_form/空→None)
+ e2e 证明 digest 端到端进入 CompactionSummary。全量 94/94、clippy 零警告。
@yishuiliunian yishuiliunian merged commit 5d7685c into main Jun 25, 2026
4 checks passed
@yishuiliunian yishuiliunian deleted the feat/compaction-task-carryover branch June 25, 2026 14:26
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.

1 participant