v0.1.0-alpha.118
Pre-releaseWindows 預設下載 AI-Sister-Setup.exe。這是 current-user 安裝包,內嵌 WebView2
offline installer 與同版 sister.exe,設計為安裝時不需連網;代價是安裝包顯著變大,
exact 大小以該 tag 的 asset 為準。正式 artifact 的斷網安裝仍待實測。Release 也保留
sister.exe 與
sister-desktop.exe,只想跑 CLI、
免安裝使用或診斷 installer 問題時,請把兩個檔放在同一個資料夾。
目前 installer 沒有 code signing,也沒有內建自動 updater。升級是使用者手動下載新版
AI-Sister-Setup.exe,先自行結束 desktop 並停止 recorder,再重新執行。alpha.115 起,Setup
使用 pinned tauri-bundler 2.9.4 custom NSIS template;它不再巢狀執行已安裝的 NSIS
uninstaller。同版 repair 或舊版升新版會在 Setup 持有 lifecycle mutex 時,綁定 current-user
產品鍵所記的 exact install root 原地覆蓋,並與 uninstall key 交叉核對;GUI、/P 與 /S 都會在 WebView2、payload
或安裝登錄 mutation 前重新核對 DisplayVersion、root 與 quoted UninstallString。若 Setup
版本比已安裝版本舊,請關閉 Setup,再從 Windows「已安裝的應用程式」分開移除目前版本。
direct uninstaller 在 PREUNINSTALL 取得 mutex 後,也會重新核對 exact version、root 與
uninstall string,避免使用者確認移除後已有新版覆蓋,舊確認卻接著刪除新版。
本版產生的 sections 繼續覆寫 Tauri stock running-app macro;legacy current-user scanner
回報 sister-desktop.exe/sister.exe 命中時只拒絕,不提供或執行 forced kill。帶協定的
desktop/CLI 仍以 product event + mutex/event/mutex handshake 在產品狀態前和 installer
交接,無關的第二份 Setup 也不能同時進入 lifecycle。
alpha.117 起,Setup 與 uninstaller 在覆寫或刪除程式檔之前,還會對已安裝的
sister-desktop.exe/sister.exe 做檔案層獨佔開檔:只要有任何行程正在執行它(不論行程
名字、版本、有沒有 product event),開檔就會失敗,Setup/uninstaller 以 exit 32 拒絕、不
kill、不動任何檔案或登錄;拿到 handle 後舊檔先改名、handle 持到收尾,所以最後一次 scan 到
NSIS File 之間沒有窗。已經出貨或已複製到 temp 的舊 uninstaller 仍無法由新版 retroactively
改寫。
sister.exe doctor # 先看這個:她在這台機器上做得到什麼
sister.exe consent --grant local-recording --grant frame-storage
# 沒簽第一張,下一行會直接拒絕
sister.exe record --duration 60 # 錄一分鐘(省略 --duration 就錄到 Ctrl-C)
sister.exe stats # 記了多少
sister.exe query 電話 # 查,每筆都附出處
sister.exe stop-all # capture/brain/hands 一起停,不會自己恢復
sister.exe stop-all --off # 解除全停,不碰原本的 pause/拔手
sister.exe prune --dry-run # 保留期現在會刪掉什麼
第二行不是形式。沒簽第一張同意書,record 不會開始錄——不是印個
警告然後照錄。少簽第三張(frame-storage)她照樣記,但只記螢幕上的
字、一張截圖都不寫。sister.exe consent 不帶參數就是看現在簽了哪幾張。
使用者自己開桌面姊妹(sister-desktop.exe)的話,它會把那一頁跳出來。
alpha.107 的 Windows login mode 是窄例外:它不在登入背景啟動時自動彈同意頁。
記憶資料放在 %APPDATA%\ted-h\AI-Sister\data\,刪掉那個資料夾就等於
把記憶全部忘掉;config.toml 裡的機器設定(包括 alpha.100 的 URL 答案)不在其中。
也可以用 --data-dir .\test 錄到別的地方,測完直接刪。
這一版完成跨 capture/brain/hands 的 master stop。sister stop-all 不只放一個旗標:
它先擋住所有新工作,等已獲准的工作跨過最後一個不可逆邊界並排乾,最後才發佈 durable
master.stop、移除 pending 並回報「三層都停了」。
data dir 新增永久的 activity lock、turnstile lock、engage/release owner lock,以及排乾意圖
master.stop.pending。capture 的整拍 admission、privacy/截圖/OCR 後的 persistence,brain
的 CLI spawn、stdin 與 outbound audit,reviewer 的 L2/day-summary product mutation,以及
hands 最後的 OS call 都走同一份 guard;desktop 問答、守門員判決/回應與 Azure TTS 也在
碰產品狀態或送出前 admission。全停先在 turnstile 內發佈 pending,再放開 turnstile
等 activity readers 排乾,避免 boundary 與 engage 互等;解除和 engage 共用 owner 排隊,再在
turnstile 內清 latch/pending。它不拿 activity exclusive,但若前面已有 engage,會先等那次排乾,
所以解除成功後舊 engage 不會才補寫 latch,也不會形成 ABBA lock cycle。兩個同時送出的 stop
會沿用第一份 pending timestamp,不會把第一次停止時間洗成第二次。
「拒絕新工作」和「舊工作已排乾」現在是兩個答案。desktop IPC、系統匣、CLI query 與
BlindSpots 共用 clear/stopping/stopped/uncertain 四態:pending 只顯示「正在完成
全停」,孤立 pending、broken/symlink/non-regular protocol state 明講讀不到並 fail closed;只有 durable
latch 完成才顯示「已全停」。事件仍以 revision 壓過較早的 poll,重疊 poll 也只有最新 request
可落地。解除全停只清這組旗標,原本的 pause 與 hands stop 都保留。
data dir 目錄項本身若已是 symlink/Windows reparse,也固定進 uncertain 並拒絕 admission,
不會沿著現成的間接入口開始協定。這不是 pathname namespace pin:同權限程式在行程存活時
rename/替換該路徑或改指 ancestor 仍在既有 threat-model 邊界外;移動/修復資料目錄前須先關閉
所有 AI-Sister 行程。
若 interpreter/reviewer 已把原文交給使用者安裝的 CLI agent,CLI timeout 判定是 120 秒;
到點後還會終止整個 Unix process group/Windows Job Object、收完繼承 pipe 與本機 outbound
audit,所以 120 秒不是 stop 總等待上限。成功回條保證之後不會首次寫出新的產品記憶,不表示
provider 已收到的 request 被取消或撤回。Desktop 答案、守門員主動卡與 reaction 另用 native
presentation lease 跨到 renderer 的 begin/同步呈現/end,避免 IPC 回條晚到而在 stop 成功後
才顯示;未 begin 回條五秒回收,已 begin 的只在 end、window destroy 或 process teardown
釋放。本機答案朗讀持 lease 到 ended/error/Stop;已准入的 Azure POST 先持 activity guard
到完整 transport,再把它交給本機 MP3 playback lease。pending 可先發佈、新朗讀立刻拒絕;
POST transport 自己最長 45 秒,但 stop 還可能等待播放,不能承諾總上限。
doctor/bench 在全停時也不再探測 live focus、網址或螢幕。
自動驗證包含 reader-first drain、32 輪 release/admission/engage 排程、慢 privacy 後丟棄、
stale brain permit、完整 watch child 排乾、模型回來後停止、最後唯一 reviewer card、hands OS
closure、Gatekeeper/reaction/答案 presentation、本機與 Azure playback、Azure transport、
Windows provider suspended-before-Job composition、doctor production wiring、measured
release tick、四態 renderer 與定點 mutation;Windows desktop/CLI 的
cross-check 與 lint 已通過。這些仍不是正式 AI-Sister-Setup.exe 上的跨行程人工 smoke;
那一格繼續留在 Release 1.0 checklist。code signing 與官網也仍未完成。
隱私承諾與邊界見
PRIVACY.md、
THREAT_MODEL.md。
最有價值的回報是:「這條規則在我的機器上沒有生效。」
Full Changelog: v0.1.0-alpha.117...v0.1.0-alpha.118