部落格

為什麼在 AI 對話裡做的決定會不見,又該放在哪裡

在 ChatGPT 或 Claude 裡做的決定,會隨著對話捲走而消失;把它們記在看板上、連到任務,讓下一個 AI 工作階段先讀到它們。

Weft 是為獨立創業者和小團隊打造的 AI 任務管理工具。

全部文章

作者: Andrei Finogeev ·

在 ChatGPT 或 Claude 對話裡做的決定會不見,是因為對話沒有狀態。裡面沒有任何東西把某一行標成「這是我們決定的」,沒有任何東西把那一行跟它影響的工作綁在一起,而新的對話一開始是空的。解法是讓 AI 把決定寫在工作所在的地方,成為一筆附上理由的簡短紀錄,並讓下一個工作階段在動手之前先讀那些紀錄。

Weft 是我們做的。關於其他產品的資訊都來自它們的官方頁面,查證日期為 2026 年 10 月 27 日。「討論串沒有狀態」這個概念出自 Hypertask 關於 Slack 討論串的文章。這份指南把它套用到 AI 對話上。

為什麼跟 ChatGPT 或 Claude 一起做的決定會消失?

你花了四十分鐘跟助理權衡兩家資料庫供應商、兩種定價模式,或兩種 API 結構。你選定了一個。推理很紮實,助理也同意,然後你就去做下一件事了。

一週後,結論還在那段對話裡,埋在兩百則訊息的上面某處。新的對話對它一無所知。隊友從來沒看過它。而如果你隔天打開另一個 AI 客戶端,例如終端機裡寫程式的代理人,那個客戶端會從零開始,還可能興高采烈地提出你已經否決的那個選項。

這不是紀律的問題。對話是一連串的訊息。它沒有「已決定」的欄位、沒有負責人、沒有連到任務,也沒辦法表示「這個取代了我們星期二說的」。一個已經決定的問題和一個被放棄的問題,一旦捲走之後看起來一模一樣。

對話記憶不是已經解決這個問題了嗎?

對這件事來說沒有。現在很多助理都能在不同對話之間記住你的事,這對偏好和背景資訊很有用。但那份記憶屬於某一個產品、某一個帳號。它是寫給那個助理用的,不是一份人可以逐行審閱的紀錄,其他 AI 客戶端也讀不到它。它也不會說明某個選擇是關於哪個任務,或取代了哪個先前的選擇。

決策紀錄有不同的要求。它必須讓參與專案的人和代理人找得到、讓接手工作的任何 AI 客戶端讀得到、跟那份工作綁在一起,而且對歷史誠實:當決定改變時,舊的應該仍然看得見,並附上它被取代的理由。

什麼樣的決定值得記錄?

當有人原本可以合理地做出不同選擇,而這個選擇會影響之後的工作時,就把它記下來。好的例子:

  • 選了某個工具、廠商或函式庫,而不是另一個。
  • 刻意放棄某件事(「這一季不做推薦計畫」)。
  • 訂下工作必須遵守的規則(「在歐盟顯示的價格一律含增值稅」)。
  • 改變先前的選擇,並附上理由。
  • 吃過苦頭才學到的教訓(「不要在上班時間跑資料庫遷移」)。

不要記錄:

  • 你提過但沒有採用的點子。
  • 工作本身的步驟(那屬於任務和它的結果)。
  • 任何對方還沒同意的事,除非清楚標為提案。
  • 任何人一分鐘內就能再查到的事實。

一個好用的測試:如果一個新的 AI 工作階段正要推翻這個選擇,你會希望它先停下來讀讀理由嗎?如果會,就記下來。

一筆好的決策紀錄長什麼樣子?

保持簡短,保留理由。下面的格式是 MADR(Markdown Architectural Decision Records)的精簡版,也就是 Weft 的 record_decision 工具所用的格式:

標題:   檔案上傳:用物件儲存,不用資料庫
結論:   上傳的檔案放進物件儲存;資料庫只保留
      檔案金鑰和中繼資料。
狀態:   accepted
背景:   使用者會附加最大 50 MB 的檔案。把它們放在
      資料庫裡會讓備份又慢又大。
選項:   1. 物件儲存 + 便宜,備份保持精簡
            - 多一個要設定的服務
      2. 資料庫欄位 + 所有東西都在同一個地方
            - 每次上傳都讓備份變大
後果:   下載需要簽名網址。
      刪除任務時也必須刪除它的檔案。
重新檢討: 當我們需要搜尋檔案內容時。
任務:   檔案上傳
  • 標題替決定命名,讓你掃一眼就找得到。
  • 結論是一句新來的人能據以行動的話。
  • 背景是當時成立的事實。這是最先從記憶裡消失的部分。
  • 選項只列出真正權衡過的,不是事後才想出來的替代方案。
  • 後果包括你接受的缺點,這樣之後就沒有人會把它們當成 bug「發現」。
  • 重新檢討說明什麼情況會讓這個選擇變成錯的。

Weft 怎麼保存決策紀錄?

Weft 是一塊任務看板,你的 AI 客戶端透過 MCP 在 https://letsweft.com/api/mcp 存取它。它的 32 個工具裡,有三個負責處理決定:

  • record_decision 接收標題和結論,加上背景、最多五個附優缺點的選項、後果,以及重新檢討的條件。它可以連到一個任務(taskId)或一個專案。紀錄是不可變的:要改一筆,AI 會記錄一筆新的決策,用 supersedesId 指向舊的那筆,而舊紀錄會留著,並標為已被取代。
  • get_context 回傳工作區裡現行的決定和教訓,最新的在前,並壓縮在 token 預算內(預設 800 個 token)。它可以縮小到某個專案或任務。每一行都帶有日期,已被取代的決定永遠不會出現,而放不下的行會被計數,而不是被藏起來。
  • get_task_history 的 decisions 模式會列出關於某個任務記錄過的每一個決定,包括審閱的裁決和它們的理由。

record_decision 還有第二個用途:轉達對方在對話中針對等待審閱的工作所做的裁決(接受、重做、捨棄或延後)。工具說明告訴 AI,這時它是傳話的人,不是做決定的人,所以絕對不能用這個來接受它自己的工作。

因為紀錄從不就地修改,歷史就會保持誠實。如果你在三月換了供應商,一月的決定仍然在那裡,標為已被取代,而三月的紀錄說明了為什麼。

怎麼請我的 AI 記錄決定?

把 Weft 接上你的 AI 客戶端,然後在對話開始時貼上類似下面的指示,或者如果客戶端有自訂指示或專案檔,就貼在那裡:

當我們在這段對話裡做出真正的選擇時(選了某個選項而不是另一個、
放棄某件事,或改變先前的選擇),在繼續之前用 record_decision
把它記錄到 Weft:
- title:用幾個字替這個決定命名
- outcome:用一句話說明這個選擇
- context:當時有哪些事實迫使我們做這個選擇
- options:只列我們真正權衡過的選項,附上優缺點
- consequences:接下來會發生什麼,好的和壞的
- confirmation:什麼時候應該重新檢討
- taskId 或 project:這是關於哪個任務或專案
如果它改變了先前的決定,就傳 supersedesId,而不是去修改。
不要記錄閒聊、猜測,或我還沒同意的事。
如果我還沒拍板,就用 status "proposed"。
在開始任何不簡單的工作之前,先呼叫 get_context,並告訴我
哪些過去的決定適用。

連接只要一分鐘。在 ChatGPT 裡,Weft 是外掛目錄裡已上架的 App,所有方案都能用,包含免費版(設定)。在 Claude Code 裡是一行指令(設定)。Claude.ai 和 Claude Desktop 以自訂連接器加入。登入是在瀏覽器裡用 OAuth,所以沒有金鑰要複製,而且 Weft 會發 refresh token,所以客戶端會自己續期登入。其他客戶端的設定頁面,包括 Cursor 和 Codex,都在文件裡。

隔天我從 ChatGPT 換到 Claude Code,會發生什麼事?

這正是那段指示要處理的情況。

  1. 星期一,你在 ChatGPT 裡規劃一個功能。你決定把上傳檔案放進物件儲存而不是資料庫,ChatGPT 呼叫 record_decision,附上背景、兩個選項和後果,並連到「檔案上傳」這個任務。
  2. 星期二,你在程式庫裡打開 Claude Code。如果你還沒接上它:claude mcp add --transport http weft https://letsweft.com/api/mcp。
  3. 你請它接下上傳的任務。在寫程式之前,它會針對那個任務呼叫 get_context,或用 decisions 模式呼叫 get_task_history,拿回星期一的紀錄。
  4. 它照著物件儲存來做,而不是重新打開這個問題。如果它找到這個選擇是錯的真正理由,它可以提出一筆新的決定來取代星期一的那筆,由你來決定。

兩個客戶端讀的是同一塊看板、同樣的決定,因為紀錄住在 Weft 裡,不在任何一段對話裡。每個 OAuth 連線都是獨立的行為者,看板會顯示每個客戶端註冊時用的名稱,所以你看得到哪個連線建立了哪個任務。要讓好幾個代理人在一塊看板上跑而不互相衝突,請看多個 AI 代理人共用一塊看板。

來自 ChatGPT 的決定最後該放在哪裡?

四個常見的地方,依照決策紀錄的需求來比較:

決定最後放在哪裡之後找得到其他 AI 讀得到跟工作綁在一起能附上理由被取代
對話紀錄只有在你記得是哪段對話、而且搜尋找得到時不行,其他客戶端打不開它沒有不行,後來的訊息會跟它矛盾,卻不會標示出來
文件或筆記頁面可以,如果有人把它寫下來只有在那個 AI 接上了那份文件時鬆散地,透過連結通常是直接修改,這往往會抹掉原本的推理
任務留言可以,在那個任務上如果 AI 讀得到追蹤工具的留言有沒有明確標示,新的留言不會把舊的標為已被取代
Weft 看板上的決策紀錄可以,透過 get_context 和 get_task_history可以,任何透過 MCP 連到這個工作區的客戶端有,依任務或專案可以,supersedesId 會保留舊紀錄,並標為已被取代

重點不是對話或文件不好。對話是你思考的地方。決定需要在做出的那一刻,由已經在對話裡的那一方,也就是 AI,從對話中複製到一個有狀態的地方。

這會取代我們的文件或 wiki 嗎?

不會。Weft 沒有文件或 wiki 功能,也不打算成為那樣的東西。長篇說明、新人指南和設計文件,屬於你的文件工具。決策紀錄刻意做得很小:一個選擇、它的理由,以及什麼取代了它。如果你的團隊已經把決策紀錄放在 wiki 裡,而你用的每個 AI 客戶端都讀得到它,那可能就夠了。當決定是在 AI 對話裡做出、而下一個讀者常常是另一個 AI 時,Weft 才派得上用場。如果你在考慮用 Notion 做這件事,請看 給 AI 任務用的 Notion 替代方案。

另外兩個坦白的限制。Weft 不會讀你的對話:只有當 AI 呼叫 record_decision 時,決定才會被記錄,這就是為什麼上面那段指示很重要。而且 AI 可能會誤判什麼算是決定,所以不時讀一下 get_context,把它弄錯的地方取代掉。

這要多少錢?

記錄和讀取決定在免費版上就能用,免費版包含 50 個進行中的任務和每月 200 次 AI 工具呼叫。每次 record_decision 或 get_context 呼叫都算一次。Pro 是每席次每月 $7 或每席次一年 $60,任務和呼叫都不限(定價)。Weft 沒有 AI 額度:思考發生在你自己的 AI 客戶端裡,Weft 只保存看板和它的紀錄。

我不能在對話結束時,直接請 ChatGPT 整理一下決定嗎?
可以,而且有幫助。但那份整理還是住在那段對話裡,或你貼上的任何地方。它沒有跟任務綁在一起,其他 AI 客戶端讀不到它,而當決定改變時,也沒有紀錄顯示它取代了什麼。在每個決定做出時就記錄下來,這三個問題都能避免。
AI 會在沒被要求的情況下記錄決定嗎?
record_decision 的工具說明告訴 AI,只要使用者在對話中做出真正的選擇就要用它,所以有些客戶端會這麼做。別依賴這一點。貼上的指示會讓它變得明確,而你隨時都可以說「把那個決定記下來」。
如果決定記錯了,可以修改嗎?
不能就地修改。紀錄是不可變的。用 supersedesId 指向錯的那筆,記錄一筆更正後的決定。舊紀錄會留著,標為已被取代,get_context 也不會再顯示它。
決定一定要有任務嗎?
不用。決定可以連到一個任務、一個專案,或兩者都不連。連到任務代表 get_task_history 會把它顯示在那份工作旁邊,而 get_context 也能縮小到那個任務。
這跟 Weft 的工作記憶是同一個東西嗎?
不是。工作記憶(簡短的學習筆記)是另一個 Pro 功能。決策紀錄來自 record_decision,程式碼並沒有把它限制在 Pro。
如果我用不只一個 AI 客戶端呢?
這正是要這麼做的主要原因。連到同一個 Weft 工作區的 ChatGPT、Claude Code、Cursor 或 Codex,都透過 get_context 讀到同樣的決定,所以第二個客戶端不會重新打開第一個已經解決的問題。