todo

package
v0.0.0-...-1c978d5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 17, 2026 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Overview

Package todo 提供内置的计划外化能力(todo_write/todo_read)。

todo 的纪律是 harness 强制的,不靠模型自觉,三道保证:

  • 写入校验:状态枚举、最多一个 in_progress、内容规模,违规拒绝并纠正;
  • 每轮可见:PlanSection 供 L 层把当前计划渲染进每轮消息尾部;
  • 卡住提醒:Nudge 检测"有进行中任务却久未更新",在工具结果后附提醒。

计划按 (agent, session, 执行域) 隔离:子 agent 压执行域后与宿主分键, 互不覆盖。todo 只属于主循环(agent 与子 agent)——能结构化的任务用 steps/引擎表达,不能预先结构化的任务流才需要外化计划。

存储由装配层构造并注入(New(kv, ttl)):消费方持有自己的后端,不读 任何全局单例——同进程多 agent 各持各的 todo 后端,互不覆盖。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Todo

type Todo struct {
	// contains filtered or unexported fields
}

Todo 是 todo 计划外化的持有型对象:持有存储后端(store.KV)与保留时长, 由装配层用 New 注入。能力/提醒/计划渲染/清理都是它的方法,全部走 t.kv,不读任何全局。ttl 为计划保留时长,0=不过期。

func New

func New(kv store.KV, ttl time.Duration) *Todo

New 用注入的后端构造一个 todo 持有对象。

func (*Todo) Capabilities

func (t *Todo) Capabilities() []capability.Capability

Capabilities 返回 todo_write / todo_read 两个能力(闭包捕获 t.kv)。

func (*Todo) Clear

func (t *Todo) Clear(agentName, sessionID string)

Clear 清空某会话主执行域的计划,供通道/运维主动终结。

func (*Todo) ClearCurrent

func (t *Todo) ClearCurrent(ctx context.Context)

ClearCurrent 清空 ctx 当前执行域的计划。组件级临时清单在调用结束时 用它即弃——草稿纸和窗口同生命周期,不留跨调用状态。

func (*Todo) FinishCheck

func (t *Todo) FinishCheck(ctx context.Context) string

FinishCheck 是主循环的计划收口检查(装配层经 loop.CheckedFinish 注入): 模型即将以纯文本收尾时,若本轮写过计划且清单仍有非 completed 项,返回 纠正指令弹回一次(每轮最多一次,经轮内状态袋去重)——把"正文说完成了、 状态还是 pending"的漂移在轮内抹平,不靠模型自觉。本轮没动过计划 (纯问答轮/残留计划未被认领)不催,残留由 PlanSection 的遗留标注处理。

func (*Todo) GoalCheck

func (t *Todo) GoalCheck(ctx context.Context) string

GoalCheck 是主循环的目标达成核对(U4.1,轻量自检):模型即将以纯文本收尾 且本轮用过计划(=多步任务)时,强制一次"对照原始目标逐条核对答案"的 自检——把"计划都标完成了、答案却答偏/漏了原问题一部分"的静默失败在轮内 抹平。每轮最多一次(经轮内状态袋去重),故最多多一次重生成,不会死循环。 诚实说明做不到/部分完成+原因被视为达成,不弹回——避免对本就完不成的 目标空转。纯问答轮(没用过计划)不介入,不给简单问答加负担。

func (*Todo) Nudge

func (t *Todo) Nudge(caps []capability.Capability) []capability.Capability

Nudge 给能力集套上计划卡住提醒(Ring 0):存在进行中任务时,连续 nudgeAfterCalls 次非 todo 工具调用都没有更新计划,就在下一个工具结果后 附加提醒——纪律靠 harness 兜底,不靠模型自觉。

func (*Todo) PlanSection

func (t *Todo) PlanSection(ctx context.Context) string

PlanSection 渲染当前执行域的计划,供 L 层每轮注入消息尾部 (loop.PromptLayers.Plan)。计划为空时返回空串(不注入)。 本轮尚未写过计划时(经 runctx.TurnState 判定),标注为"遗留计划"并 指示清理——否则旧问题的残留计划配上"全部完成前不要停"的祈使,等于 指示模型把旧账抄进新清单,pending 项跨问题无限累计。

func (*Todo) Snapshot

func (t *Todo) Snapshot(agentName, sessionID string) string

Snapshot 返回某会话主执行域的计划渲染文本,供通道(飞书卡片等)展示进度。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL