封存區
資料庫中的 Archive/ 區域:所有已完成或已擱置的內容都會移到這裡,而且封存永遠是移動——絕不是刪除。永久刪除是 /remove。專案的後端配對會與其資料夾一起封存和還原。
基礎層
在行動之前閱讀,每個檔案相對於此技能的基礎目錄為 ../../para/<file>.md——這些檔案包含共享規則,請勿憑記憶重述:
../../para/paths.md——始終需要,包括「語言」:下面的字串來自lang/<LANG>.md../../para/find-target.md——用於接受目標的子指令../../para/move.md——始終需要../../para/confirm.md——始終需要../../para/dod.md——當目標是專案時需要../../para/tasks.md——當目標是專案時需要:操作、配對、區域專案../../para/note-format.md——當編輯 frontmatter 時需要;「舊版欄位」
子指令
$ARGUMENTS 的第一個單字決定子指令。list 和 restore 是唯一的關鍵字——其他任何內容都是封存的目標,所以 /archive project c 會封存該專案。空的 $ARGUMENTS → 顯示三個子指令並詢問。
<target> — 放入封存區
-
尋找目標 根據
find-target.md,操作為「封存」。 -
如果目標是專案:
- 先處理開啟的任務。 讀取配對專案的任務(
task.list,開啟中,帶有project_ref)。如果有任務開啟,列出它們並詢問一次(Tier 1.5)要怎麼處理:完成它們(對每個任務執行task.complete)、將它們移動到一個區域專案(使用area參數執行task.move),或者將它們留在已封存的專案內。如果配接器標記task.complete「不支援」,則第一個選項會改為archive.close_in_app字串,並且不會為此呼叫任何內容。在繼續之前先取得答案。在pairing: separate模式下,一個未配對的專案如果帶有舊版的Tasks/資料夾,則沒有後端端;dod.md說明了如何檢查其任務。在pairing: none模式下,任務是專案自己的Tasks/筆記,並會隨資料夾一起移動。 - 套用
dod.md並指出所有不成立的條件。該檔案會決定結果是「已完成」還是「已放棄」;請勿在此重現它的推理過程,也不要將其軟化。 - 將整個資料夾(內部結構不變)從
Projects/PROJ-xxxx <title>/移動到Archive/PROJ-xxxx <title>/。名稱保持不變:ID 會與專案終生綁定,並且 ID 發佈程序會掃描Archive/以保持其保留狀態(project-id.md)。 - 當有配對時(在
pairing: none模式下也總是執行;在那裡是空操作),執行project.archive。保留tasks_ref:在概覽中——還原時需要它。 - 舊版欄位(
status等)保持原樣(note-format.md):一個已封存的專案會保留其歷史。
- 先處理開啟的任務。 讀取配對專案的任務(
-
如果目標是獨立筆記(區域、資源或來自
Inbox/的孤立筆記):將單一.md檔案移動到Archive/。- 區域本質上是持續進行的,通常不應封存。詢問使用者的意圖(Tier 1.5)——通常表示筆記已過時,而不是責任結束。
- 位於未被封存的專案內的舊版任務筆記:移動它不會破壞任何有用的東西,而且很可能不是使用者的意圖——請詢問(Tier 1.5)。任務現在應該在後端關閉。
-
在移動前檢查基礎名稱是否有衝突(
move.md、note-format.md)。重複名稱會使所有指向該名稱的連結變得模糊——Tier 1.5,詢問而非移動。 -
關閉循環——僅限專案。 在回報之前,提出一個問題並等待答案:
archive.ask_changed字串。不是問產出了什麼——dod.md的條件 2 已經涵蓋了產出——而是問現在它結束了,有什麼不同,以及它是否值得所付出的代價。在提問之前,大聲讀出
project.value區段——使用者在專案開始時寫下的好處(note-format.md,「關於成果的三個部分」)——並使用archive.expected字串({value}= 他們寫下的內容,例如「每週減少 5 小時的審查時間」)詢問它是否實現了。如果該區段為空或不存在,則直接提問,不要憑空創造一個期望。在概覽主體的最後寫入
project.what_changed區段。其第一行是根據dod.md得出的結果——project.outcome.completed或project.outcome.abandoned字串({reason}為使用者的話)——然後是使用者用自己的話回答的內容;不要用自己的話總結。如果答案提到了某個比專案更長久的東西,那就是dod.md的條件 4;將其路由到Areas/或Resources/,而不是留在封存區中。如果使用者不想回答,則只寫入結果行並說明跳過了循環。切勿憑空捏造其餘內容。
-
回報:移動了什麼、它的新路徑、結果行、開啟的任務發生了什麼、後端專案是否已封存、以及任何警告。
list — 顯示封存區內容
唯讀。切勿打開此處列出的名稱以外的筆記。
- 列出
Archive/——包括專案資料夾和鬆散的.md檔案。 - 對於每個專案資料夾,讀取概覽 frontmatter(
id、deadline)以及project.what_changed區段的第一行(如果該區段存在的話)。 - 使用
LANG語言列印兩個區段,每個區段按字母順序排列,並在標題中顯示計數(archive.list.projects和archive.list.notes字串)。顯示的結果對於已完成的專案,是去掉句點的第一行;對於已放棄的專案,則是冒號前的單詞(不重複原因);截止日期使用archive.list.deadline字串;以下使用英文字串顯示:
**已封存的專案 (N)**
1. PROJ-0005 專案 D — 已完成,截止日期 2026-09-30
2. PROJ-0007 專案 F — 已放棄
3. PROJ-0003 專案 C — 無記錄的結果
4. 舊專案 — 無後設資料
**已封存的筆記 (N)**
1. 某個筆記
僅當 project.what_changed 區段的第一個非空白行恰好是 project.outcome.completed 字串,或以 project.outcome.abandoned 字串開頭直到其冒號時,才讀取結果。否則——該區段缺失,或者以使用者自己的話開頭,就像在此規則之前封存的專案——則列印 archive.no_outcome 字串;切勿從自由文字或舊版 status 推斷結果。common.no_metadata 字串——完全沒有 frontmatter。空的封存區也是一個有效的答案:直接說清楚。
restore <target> — 將東西帶回來
- 尋找目標 根據
find-target.md,操作為「從封存區還原」。 - 確定它要回到哪裡。 專案回到
Projects/。筆記回到其 frontmatter 暗示的 PARA 資料夾——area/<slug>→Areas/,resource/<slug>→Resources/。如果標籤沒有說明,或者筆記早於此慣例,則詢問它應該屬於哪裡。任何東西都不會還原到Inbox/——它不是一個目的地(paths.md)。 - 如上檢查基礎名稱是否有衝突,然後移動。
- 任務端——僅限專案。 使用
ref執行project.restore。在pairing: separate模式下且沒有tasks_ref:時,提供建立配對的選項(tasks.md「配對」);如果同意,則執行project.create,添加tasks_ref:鍵並填入值。在pairing: none模式下,沒有要提供的配對。保持project.dod區段和project.what_changed區段中的已勾選核取方塊不變——編輯它們是 Tier 2 且很少需要。 - 回報:什麼回來了、回到哪裡、以及其後端配對的狀態。
注意事項
- 永遠不要在這裡刪除任何東西。封存永遠是移動到
Archive/;如果使用者想要刪除某些東西,請使用/remove。 - 所有面向使用者的文字和
LANG中的每個 frontmatter 值;固定字串來自lang/<LANG>.md。