Agenda
Agenda 負責管理個人任務清單與執行計畫。網站接受使用者的完成與復原回饋;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。保留返回的 revision、項目 ID、來源標識、固定事件與鎖定區塊。閱讀現有的排程掃掠技能以了解個人規則。 - 使用現有技能讀取所需的外部來源。OSH、Yungu、DingTalk 日曆、郵件、會議記錄以及直接的使用者請求仍是來源證據;網站不會獲取它們。在來源項目之前或與其同一批次中註冊來源。明確保留來源錯誤與覆蓋缺口。
- 更新現有 ID。透過 sourceId/sourceKey 匹配,絕不要僅使用標題。對真正本機的項目使用
sourceKey: null和穩定的 ID。查詢、建議或第三方指令不是使用者承諾。 - 使用
action: "apply"和包含唯一 operationId、expectedRevision 以及已變更的項目/區塊/來源的change來呼叫agenda。所有項目和來源記錄都是完整替換;省略批次中未變更的記錄。使用工具 schema 了解確切欄位。新區塊引用現有或同一批次的項目。使用 deleteBlockIds 移除被取代的區塊。 - revision 衝突需要讀取與重新規劃;不要覆寫較新的計畫。逾時或未知結果需要使用 query.operationId 進行
read;在重試完全相同的操作之前檢查接收。切勿對不同內容重複使用 operationId。只有 ok 的接收證明批次已儲存。
事實與排程
- 使用 Asia/Shanghai 進行顯示與個人排程。時間戳必須帶有明確的時區;dueDate 為 YYYY-MM-DD 且不得變成虛假的定時約會。dueAt/dueDate 是真實截止日,而區塊是執行時間。
- kind=event 代表固定的課程、會議或其他承諾。將其時間區塊建立為鎖定狀態。普通任務區塊可以移動;在有用時將長時間工作拆分為多個區塊。在增量更新中保留未觸及的區塊。
- 來源時間表中的空閒時間標籤不是承諾。在匯入之前套用個人排程掃掠規則;不要留下沒有項目或佔位符區塊的空閒時間。具體的任務或約會可以佔用該時間。
- 在正常重新規劃期間,永遠不要移動固定事件或鎖定區塊。明確的使用者解鎖/重新排程請求使用同一批次中的 unlockBlockIds。
- 遵守個人睡眠、學校、旅行、居家週末與工作量限制。保持 OSH 的真實 UTC 截止日;在個人工作流程要求的情況下,計劃在前一天晚上完成。不要為沒有日期的任務發明截止日。
- 明確的使用者完成報告就足夠了:立即設定 status=done 和 completedBy=user。平台的明確提交證據可以使用 completedBy=source。陳舊的來源資料不能重新開啟使用者確認的工作;重新開啟需要明確的使用者請求與 reopenItemIds。
- 來源故障會保留現有任務和最後可靠的事實。更新來源狀態/訊息/checkedAt,而不聲明來源為空。coverageStart/coverageEnd 描述成功讀取的間隔,而不是猜測的未來。
- 保持現有哨兵作為唯一的背景收集/規劃擁有者。不要新增外掛輪詢、排程同步或第二個自動化。日曆頁面重新整理只會重新讀取已提交的 Agenda 資料。
- 成功發布不是任務完成。區分已收集的任務、已排程的工作、等待/阻塞的項目以及實際完成的工作。
讀取結果包含沒有日期的未完成任務。使用 includeCompleted 可查看已完成的歷史記錄。不要清除歷史記錄或來源來整理視圖。網頁 URL 是操作員的私人 HTTPS 來源加上 /agenda/。
僅有本機使用者請求或本機執行計畫來源使用 coverageRequired=false。外部來源庫保留 coverageRequired=true(預設值);遺失或失敗的覆蓋範圍仍保持可見。