概述
v15.7.0 於 2026-10-30 18:18 UTC 發布(台灣時間 2026-10-31 02:18)。本版主軸有四:
- My Work 的 refresh 留在你的 agent(#5190):被拒答案不再讓整個 refresh 跳到下一個登入的 agent——這正是 #5189 通報、會在裝有 Codex 的機器上觸發隱藏
codex exec --ephemeral執行的問題。 - Note-taker 永遠使用最新 Haiku(#5195):預設模型從釘住的 Haiku 4.5 ID 改為 Claude Code 的
haikualias。 - My Work 與 worker 的穩定性:背景重建合併、Work View 等資料庫啟動、worker 日誌修剪。
- 大幅安全強化:執行檔探索、安裝來源、worker 端點、Postgres 金鑰與 redaction。
My Work:refresh 留在你的 agent(#5190)
問題背景(#5189)
官方原文描述原本的行為:「When My Work’s automatic refresh got an answer from Claude Code that claude-mem refused (most often a review over 1,200 characters), the whole refresh moved on to the next logged-in agent.」
也就是說:當 My Work 的自動刷新從 Claude Code 拿到一個 claude-mem 拒絕的答案(最常見是超過 1,200 字元的 review)時,整個 refresh 會轉往下一個登入的 agent。
後果在裝有 Codex 的機器上尤其嚴重:「that meant hidden codex exec --ephemeral runs on the owner’s ChatGPT account, even with CLAUDE_MEM_PROVIDER=claude」——即使你明確設定 CLAUDE_MEM_PROVIDER=claude,工作仍會以隱藏的 codex exec --ephemeral 在你的 ChatGPT 帳號上執行。官方數字:四天約 230 次執行。
新行為
- 被拒答案現在會終止該 agent 上的該次 refresh:refresh 停在給出答案的那個 agent 上,不會再跳給別的 agent。
- 下一次排程執行會再試同一個 agent,並沿用既有的 failure backoff(失敗退避)。
- 完全無法執行的 agent(未登入、crash)仍會把 run 交給下一個——修復只針對「agent 有給答案但被拒」的情況。
Feedback 按鈕
My Work header 的 Star 按鈕旁新增 Feedback 按鈕,點擊後開啟簡短的 “My Work feedback” issue 表單。
Note-taker 永遠使用最新 Haiku(#5195)
note-taker 的預設模型改為 Claude Code 的 haiku alias——它永遠解析到最新的 Haiku,不再是釘住的 Haiku 4.5 ID。三個重點:
- 已存設定自動遷移:仍帶著出廠釘選 ID 的設定,升級時會移到 alias。
- 自己輸入的模型不受影響:只有「從未改過預設」的安裝會被移動。
- 成為政策:repo 的 CLAUDE.md 現在明言——永不把有日期的 model ID 當作預設(never pin a dated model ID as a default)。
My Work 與 worker 的穩定性
- 背景重建合併(coalesced):activity 驅動的 My Work 背景重建會被合併——開啟中的 My Work 頁面不再於每次 database commit 時重建(#5133,減緩 #5124)。
- Work View 等資料庫就緒:Work View 會等 database 完成啟動後才建置(#5157)。
- 串流中斷後對齊:viewer 的處理狀態會在串流中斷(stream gap)後重新對齊(#5139)。
- 日誌修剪:每日 worker log 超過
CLAUDE_MEM_LOG_RETENTION_DAYS(預設 30 天;設0為永久保留)即被修剪;今天與昨天的檔案永遠保留(#5186)。
Projects
- 命名環境的明確繼承:父 Git repository 內的命名環境(named environments)可以宣告明確繼承(explicit inheritance),無關的父專案記憶不再洩漏進其 context(#5022)。
- Oh My Pi:將暫時性(transient)專案記憶保留在 model context 中(#5183)。
- Claude Duet:支援 capture 與 recall(#5188)。
Media:image-aware observations 第一階段(預設關閉)
本版加入 image-aware observations 的第一階段(#4341):
- 有界的媒體契約(bounded media contracts) 與 lazy 載入的 Sharp 0.35.5 轉換器,附大小(size)、像素(pixel)與期限(deadline)限制。
- 兩個開關
CLAUDE_MEM_MEDIA_CAPTURE_ENABLED與CLAUDE_MEM_MEDIA_INFERENCE_ENABLED預設皆為false——不安裝媒體功能,行為不變。
Security 強化
| 範圍 | 內容 | PR |
|---|---|---|
| 執行檔探索 | 絕不查看當前目錄(current directory) | #5148 |
| 安裝 | 安裝器 URL 一律 https;Bun 從 owner 控制的目錄執行 | #5149 |
| Worker 端點 | 拒絕跨源(cross-origin)瀏覽器寫入 session endpoints 與 POST /api/memory/ingest |
#5162、#5161 |
| Postgres | API keys 以加鹽 scrypt 雜湊儲存;所有 sslmode 皆被遵守 |
#5160、#5152 |
| 檔案寫入 | atomic writes 改用 exclusive-create 的隨機暫存名稱 | #5151 |
| 標籤與閘門 | private tags 在 caps 之前先剝除;Hermes 的最後一輪加上閘門 | #5150 |
| Redaction | 涵蓋 GitLab、Hugging Face 與 npm tokens | #5174 |
| Redaction | URL credentials 中的密碼 | #5173 |
| Redaction | 本地 redaction 開啟時,inbound sync 文字也被處理 | #5171 |
修復精選
- Hook stdin:在完整時即被框化(framed),不再等待 EOF(#5126)。
- EPIPE:已關閉 session 的 EPIPE 不再記為 fatal(#5177)。
- Windows Codex:sandbox 拒絕附帶說明(#5140)。
- OpenAI-compatible provider:從帶文字碼的 200 error envelope 讀取 HTTP status(#5191)。
- SessionStart:memory-use block 計入預算、不含 TeamBrain(#5181)。
- 資料目錄:
CLAUDE_MEM_DATA_DIR開頭的~會被展開(#5179)。 - 日誌讀取:log tail 只讀取完整行(#5166)。
- Chroma:過濾後的 fallback 收窄至 SQLite row ids(#5154)。
v15.7.0 之前,My Work 自動 refresh 遇到 Claude Code 給出被 claude-mem 拒絕的答案(如超過 1,200 字元的 review)時,會發生什麼?
💡 想先看個提示?
問題不在重試,而在「換人做」——而且換到的可能是你沒同意的 provider。
v15.7.0 起,note-taker 的預設模型是什麼?
💡 想先看個提示?
關鍵字是 alias(別名)而非固定 ID。
動手升級檢查清單
升級 v15.7.0:動手檢查清單
逐項勾選,確認你已完成升級必要的步驟(進度會保存在此瀏覽器)
延伸閱讀
- 官方 v15.7.0 release notes
- 前一課:
v1550-v1560-mywork-zustand-store——My Work 單一 Zustand store 與元件翻新