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 ¶
- type Todo
- func (t *Todo) Capabilities() []capability.Capability
- func (t *Todo) Clear(agentName, sessionID string)
- func (t *Todo) ClearCurrent(ctx context.Context)
- func (t *Todo) FinishCheck(ctx context.Context) string
- func (t *Todo) GoalCheck(ctx context.Context) string
- func (t *Todo) Nudge(caps []capability.Capability) []capability.Capability
- func (t *Todo) PlanSection(ctx context.Context) string
- func (t *Todo) Snapshot(agentName, sessionID string) string
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 (*Todo) Capabilities ¶
func (t *Todo) Capabilities() []capability.Capability
Capabilities 返回 todo_write / todo_read 两个能力(闭包捕获 t.kv)。
func (*Todo) ClearCurrent ¶
ClearCurrent 清空 ctx 当前执行域的计划。组件级临时清单在调用结束时 用它即弃——草稿纸和窗口同生命周期,不留跨调用状态。
func (*Todo) FinishCheck ¶
FinishCheck 是主循环的计划收口检查(装配层经 loop.CheckedFinish 注入): 模型即将以纯文本收尾时,若本轮写过计划且清单仍有非 completed 项,返回 纠正指令弹回一次(每轮最多一次,经轮内状态袋去重)——把"正文说完成了、 状态还是 pending"的漂移在轮内抹平,不靠模型自觉。本轮没动过计划 (纯问答轮/残留计划未被认领)不催,残留由 PlanSection 的遗留标注处理。
func (*Todo) GoalCheck ¶
GoalCheck 是主循环的目标达成核对(U4.1,轻量自检):模型即将以纯文本收尾 且本轮用过计划(=多步任务)时,强制一次"对照原始目标逐条核对答案"的 自检——把"计划都标完成了、答案却答偏/漏了原问题一部分"的静默失败在轮内 抹平。每轮最多一次(经轮内状态袋去重),故最多多一次重生成,不会死循环。 诚实说明做不到/部分完成+原因被视为达成,不弹回——避免对本就完不成的 目标空转。纯问答轮(没用过计划)不介入,不给简单问答加负担。
func (*Todo) Nudge ¶
func (t *Todo) Nudge(caps []capability.Capability) []capability.Capability
Nudge 给能力集套上计划卡住提醒(Ring 0):存在进行中任务时,连续 nudgeAfterCalls 次非 todo 工具调用都没有更新计划,就在下一个工具结果后 附加提醒——纪律靠 harness 兜底,不靠模型自觉。
func (*Todo) PlanSection ¶
PlanSection 渲染当前执行域的计划,供 L 层每轮注入消息尾部 (loop.PromptLayers.Plan)。计划为空时返回空串(不注入)。 本轮尚未写过计划时(经 runctx.TurnState 判定),标注为"遗留计划"并 指示清理——否则旧问题的残留计划配上"全部完成前不要停"的祈使,等于 指示模型把旧账抄进新清单,pending 项跨问题无限累计。