PRODUCT
今天凌晨,OpenAI 為 Codex 推出了名為「Chronicle」的全新功能,讓 Codex 能直接根據使用者的螢幕畫面進行工作。
Codex 多了個記憶來源:你的螢幕
從現在開始,當你與 Codex 對話時,無需再反覆解釋「這個」、「那個」究竟指涉為何。它能理解你目前正瀏覽的內容、剛才發生的錯誤回報,甚至兩週前正在進行的專案進度。
Chronicle 是繼上週推出的「memories」預覽版後的擴充功能。若說 memories 的資料來源是對談歷史,那麼Chronicle 則是額外疊加了「螢幕上下文」這一層。
目前此功能僅對 macOS 系統上的 ChatGPT Pro 用戶開放,歐盟、英國及瑞士地區暫時不支援,狀態標記為需主動啟用的研究預覽版(opt-in research preview)。
場景一:直接檢視螢幕進行除錯(Debug)
在官方釋出的影片中展示了三個示範案例,第一個稱為「Use what's on screen」(利用螢幕上的內容)。
畫面左側顯示的是一段 CI(持續整合)失敗的日誌。使用者開啟 Codex 後僅問了一句:「why is this failing?」(為什麼這個會失敗?)
Codex 並未要求使用者貼上錯誤訊息,也沒有追問是哪個倉庫(repo)。它透過 Chronicle 捕捉螢幕上的上下文,耗時 1 分 43 秒自行完成了排查。
Codex 檢視了螢幕上的 CI 日誌,自行定位到了具體的任務(job)、檔案以及行號。
最終鎖定問題出在 GitHub Actions 的 build-preview 任務,具體位置位於 src/pages/preview-build-fixture.astro 的第 2 行:
astro
const articleCount: string = 404;
結論是出現了 TS2322 類型錯誤,數值 404 是 number 類型卻被錯誤宣告為 string。Codex 還進一步注意到,該次 Pull Request (PR) 的標題寫著「exercise CI failure handling」,推斷這是為了測試而故意植入的類型錯誤範例(fixture)。
在回答的底部標註了 1 個記憶引用(memory citation),引用了 MEMORY.md 第 2122 行中關於 repo 特定驗證循環的上下文,作為本地重現前的參考依據。
官方也提供了一張關閉 Chronicle 功能後的對比截圖。同樣面對「why is this failing」這個問題,Codex 直接回應:「I do not know what this refers to yet」(我還不知道這指的是什麼):
當關閉 Chronicle 時,Codex 會反過來要求使用者提供具體的錯誤文字或連結。
場景二:利用螢幕上下文補全「這個/那個」的指涉
第二個場景稱為「Fill in missing context」(填補缺失的上下文)。
使用者輸入指令:「Sync with the latest docs draft changes and message Romain」(同步最新文件草稿的變更並傳訊給 Romain)。
使用者並未說明「latest docs draft」是哪一份文件,也未交代「Romain」是誰。
Codex 透過 Chronicle 的記憶庫解析出指的是哪份草稿以及哪位 Romain,隨後同步檔案並發送 Slack 訊息。
Codex 利用 Chronicle 找到了使用者正在編輯的文件草稿,同步了 chronicle.mdx,接著調用 Slack 技能向 Romain 發送私人訊息,告知其同步狀態與建構(build)結果。
若仔細觀察過程,你會發現 GPT 正從 Chronicle 中推論「Romain」的身分,而其內部推理過程在記憶解析中寫得更為明確:Memory points to the Google Doc Chronicle docs draft and Romain Huet on Slack(記憶指向 Google Doc 中的 Chronicle 文件草稿以及 Slack 上的 Romain Huet)。
Chronicle 的記憶庫中記錄了最近的那份草稿以及 Romain Huet 的 Slack ID。
在整個過程中,對於「this」、「that」、「latest」這些詞彙,使用者皆未明確說明,全由 Codex 自行補全。
場景三:記住你常用的工具與流程
第三個場景稱為「Remember tools and workflows」(記住工具與工作流程)。
使用者說道:「Create an empty draft doc for the Chronicle launch copy to share with the team」(為 Chronicle 的發布文案建立一份空白草稿文件以分享給團隊)。
Codex 在記憶庫中查詢到使用者習慣使用 Google Drive 來存放草稿,因此直接建立了 Google Doc 文件。
Codex 先查詢了記憶庫,確認使用者習慣將草稿置於 Google Drive,隨即調用 Google Drive 工具建立了名為 Chronicle Launch Copy [DRAFT] 的檔案。過程中彈出了權限確認對話框。
在關閉 Chronicle 的對照版本中,Codex 則會反問使用者想要什麼格式:「What format should this be? I can draft it here, create a Google Doc, or prepare a Slack post」(這應該是甚麼格式?我可以在這裡起草、建立 Google Doc 或準備 Slack 貼文)。
若沒有 Chronicle 的記憶功能,Codex 無從得知發布溝通內容(launch comms)該存放於何處。
OpenAI 自身的解釋是:Codex 會先利用 Chronicle 定位源頭,當真正需要執行任務時,再去讀取具體的檔案、Slack 討論串、Google Doc、儀表板或是 PR。
如何啟用
除了前述提到的 Pro 訂閱戶及 macOS 系統限制外,還需授予「螢幕錄製」(Screen Recording)與「輔助功能」(Accessibility)權限。
啟用路徑如下:
01 開啟 Codex 的設定值(Settings)
02 進入「個人化」(Personalization),確認「Memories」功能已開啟
03 開啟 Memories 下方的「Chronicle」選項
04 點擊確認對話框中的「Continue」(繼續)
05 當 macOS 彈出權限申請視窗時,授予「螢幕錄製」與「輔助功能」權限
在選單列圖示中可隨時選擇「Pause」(暫停)或「Resume」(恢復)。建議在會議开始前或瀏覽敏感內容前先進行暫停。
技術細節
螢幕截圖暫存於 CODEX_HOME/memories_extensions/chronicle/,預設路徑為 ~/.codex/memories_extensions/chronicle/。
記憶本體為未加密的 Markdown 檔案,使用者可讀取、修改或刪除。OpenAI 建議不要手動新增條目,但支援局部的修改與刪除。
用於生成記憶的模型預設與 Codex 使用的模型一致。若想更換其他模型,可在 config.toml 中設定:
toml
[memories]
consolidation_model = "gpt-5.4-mini"
Codex 不會立即生成記憶,它会跳過活躍的會話,過濾掉金鑰等敏感資訊,等待執行緒(thread)閒置一段時間後,再於背景進行寫入。
風險與代價
官方文件列出了三項主要風險:
第一,速率限制(Rate limits)。Chronicle 在後台運行的沙盒代理程式(sandboxed agent)會持續消耗額度,OpenAI 原話指出這會「快速消耗速率限制配額」(uses rate limits quickly)。
第二,提示詞注入(Prompt injection)。若螢幕上出現帶有惡意代理指令的網頁,Codex 可能會誤判並執行螢幕上的惡意指令。
第三,資料可見性。記憶檔案並未加密,同一台電腦上的其他應用程式理論上也能讀取到這些檔案。
此外,Chronicle 不會擷取麥克風或系統音訊,僅獲取螢幕截圖。OpenAI 特別提醒,切勿在未獲得他人同意的情況下,使用 Chronicle 錄製會議內容。
當 Chronicle 擷取螢幕畫面用以生成記憶時,選中的螢幕截圖、OCR 識別出的文字、時間戳記以及本地檔案路徑會一同傳送至 OpenAI 伺服器進行處理。處理完成後,截圖將不予保留,也不會用於模型訓練。
為何目前僅為研究預覽版?
官方部落格文章指出:「展望未來,OpenAI 正致力於將 Codex 開發成為軟體工程師以外更多建構者(builders)適用的強大工具,而 Chronicle 正是邁向此目標的一步。」
官方在 X(原 Twitter)上的原話是:「在我們了解它最能發揮效用的場域並改善體驗之前……」
因此,目前的版本採「主動啟用」(opt-in)模式,有興趣嘗試的 Pro 用戶需自行前往設定中開啟。
參考材料
→ Chronicle 官方文件:developers.openai.com/codex/memories/chronicle
→ Memories 官方文件:developers.openai.com/codex/memories
→ Codex 官方部落格:openai.com/index/codex-for-almost-everything
→ OpenAI Developers X:x.com/OpenAIDevs