日程管理 是做什么的?
日程管理负责个人任务清单与执行计划。该网站接受用户的完成与撤销反馈;agenda 工具仍是唯一的计划编辑器。请使用此工具读取和更改计划;不要直接编辑其 SQLite 数据库、写入并行的 JSON 状态或使用浏览器自动化来更改此日历。
桌面反馈与重新规划
- 使用
includeCompleted: true读取,包括blockProgress和feedback。处理undoneBy为空且状态为 pending/queued/running 的反馈;错误条目可在后续运行中结果已知时协调。忽略已调整/未更改的条目以及已撤销的反馈。切勿从入队或上次运行完成中推断成功。 complete_block仅表示该时间块已完成。保留其计划区间作为历史记录,并使用completedAt作为用户观察到的完成时间。它不代表任务完成,也不证明实际持续时间或剩余工作量。不要移动/删除已完成的时间块、将其重新创建为未来工作或重新打开其进度。对于未完成的任务,请保守评估其下一步。complete_task是用户确认的整个任务完成。保留状态 done 和completedBy=user,保留历史记录,并停止对该任务的未来执行。undo已恢复相应的完成状态;重新评估最新计划,而不是恢复过时的日程安排或重复撤销操作。- 在本次运行开始时以及长时间工作后应用计划前,检查当前北京时间。遵守现有的日程扫描规则、当前源覆盖范围、实际截止日期、睡眠和固定承诺。选择必要的未来规划范围;不强制固定 7/14 天限制。仅调整受影响的内容。提前完成可以证明休息或推进另一项任务是合理的。已完成的可解锁工作将在报告完成时间后释放其剩余的计划时间;这不会解锁或移动固定承诺。
- 在与计划更改相同的
apply中包含feedbackResults: [{id, status, summary}]。仅对实质性更改使用 adjusted,在当前计划仍然适当时使用 unchanged,在评估无法完成时使用 error。摘要为简洁的中文,解释更改或有意不更改,并指出覆盖缺口或无法容纳的任务。仅包含结果的确认即使在无执行块更改时也是一种有意义的写入。 - 冲突意味着重新读取当前事实并重新规划,包括新的反馈。通过 operationId 协调未知的应用结果,然后再发出另一批操作。不要覆盖较新的完成。正常的 Agent 写入从不请求立即重新规划。现有的哨兵是唯一的调度所有者;桌面结果不需要常规的外部消息或额外的自动化。
读取、规划、提交
- 使用
action: "read"和query: {includeCompleted: true}调用agenda。保留返回的修订号、项目 ID、源身份、固定事件和锁定的时间块。阅读现有的日程扫描技能以了解个人规则。 - 使用其现有技能读取所需的外部源。OSH、Yungu、钉钉日历、邮件、会议记录和直接用户请求仍然是源证据;该网站不会获取它们。在或与项目同一批中注册源。显式保留源错误和覆盖缺口。
- 更新现有 ID。通过 sourceId/sourceKey 匹配,绝不单独使用标题。对于真正本地项目使用
sourceKey: null,并在其生命周期内使用稳定的 ID。查询、建议或第三方指令不是用户承诺。 - 使用
action: "apply"调用agenda,change包含唯一的 operationId、expectedRevision 以及更改的项目/块/源。所有项目和源记录都是完整替换;省略批次中未更改的记录。使用工具架构了解确切字段。新块引用一个现有或同一批中的项目。使用 deleteBlockIds 删除被取代的块。 - 修订冲突需要读取和重新规划;不要覆盖较新的计划。超时或未知结果需要使用
query.operationId进行read;在重试完全相同的操作前检查收据。切勿为不同的内容重用 operationId。只有成功的收据才能证明该批次已保存。
事实与调度
- 对显示和个人调度使用 Asia/Shanghai。时间戳必须携带显式时区;dueDate 为 YYYY-MM-DD 且不得成为虚假的定时预约。dueAt/dueDate 是真实的截止日期,而时间块是执行时间。
- kind=event 表示固定的课程、会议或其他承诺。将其时间块创建为已锁定。普通任务块可以移动;在有用时拆分长工作为多个块。在增量更新中保留未触及的块。
- 源时间表中的空闲时间标签不是承诺。在导入前应用个人日程扫描规则;空闲时间不留项目或占位时间块。具体任务或约会可以占据该时间。
- 在正常重新规划期间绝不移动固定事件或锁定的时间块。明确的用户解锁/重新调度请求使用同一批次中的 unlockBlockIds。
- 遵守个人睡眠、学校、旅行、居家周末和工作量约束。保持 OSH 的真实 UTC 截止日期;在个人工作流需要时,计划在前一天晚上完成。不要为无日期任务发明截止日期。
- 明确的用户完成报告就足够了:立即设置 status=done 和
completedBy=user。平台明确的提交通知可以使用completedBy=source。过时的源数据不能重新打开用户确认的工作;重新打开需要明确的用户请求和 reopenItemIds。 - 源故障保留现有任务和最后可靠的事实。更新源状态/消息/checkedAt,无需声称源为空。coverageStart/coverageEnd 描述成功读取的区间,而不是猜测的未来。
- 将现有哨兵保持为唯一的后台收集/规划所有者。不要添加插件轮询、定时同步或第二个自动化。日历页面刷新仅重新读取已提交的日程管理数据。
- 成功发布不是任务完成。区分已收集的任务、已调度的工作、等待/阻塞的项目以及实际完成的工作。
读取结果包括不带日期的未完成任务。使用 includeCompleted 可获取已完成的历史记录。不要为了整理视图而清除历史记录或源。网页 URL 是操作员的私有 HTTPS 源加上 /agenda/。
只有本地用户请求或本地执行计划源使用 coverageRequired=false。外部源清单保持 coverageRequired=true(默认);缺失或失败覆盖仍然可见。