Releases: teddashh/AI-Sister
Release list
v0.1.0-alpha.118
Windows 預設下載 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
v0.1.0-alpha.117
Windows 預設下載 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 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 錄到別的地方,測完直接刪。
這一版收掉 installer late-start 的跨版本窄窗:Setup 與 uninstaller 在覆寫或刪除程式檔之前,
改用 Windows 檔案層的獨佔開檔判定「這個 exe 現在有沒有被任何行程執行」,不再只靠行程名字
或 alpha.113 才有的版本協定。
Setup 在 product event 與 legacy image-name scan 之後、NSIS File 之前,對已安裝的
sister-desktop.exe 與 sister.exe 各開一個不分享讀取的寫入 handle。正在執行的 image 會讓
這個開檔以 sharing violation 失敗,與行程叫什麼名字、是哪個版本、有沒有持 product event
無關;Setup 因此以 exit 32 拒絕,不替使用者 kill,零 payload/安裝登錄 mutation。拒絕的位置
與既有「程式仍在執行」拒絕相同:在 WebView2 section 之後、任何產品檔或登錄改動之前。防毒
軟體短暫獨佔會先重試八次(約兩秒),之後照實拒絕,重跑 Setup 即可。
拿到 handle 之後,舊檔先改名成 .ai-sister-previous,handle 一直持到 POSTINSTALL 才刪掉
舊檔、關閉 handle;File 寫入失敗或中止時由 .onInstFailed 把舊檔搬回原路徑再關 handle(這條
只有 makensis 編譯檢查,沒有 CI lane)。改名到 File 寫完之間,原路徑不存在、舊檔又被 handle 擋著讀取,Windows
loader 沒有任何一刻能映射到舊的或寫到一半的 exe;成功後 install root 仍是 exact 三檔。direct
uninstaller 在 PREUNINSTALL 重驗 metadata 之後、刪檔之前做同一道開檔,拿不到就拒絕並保留
三檔與 uninstall 登錄。
這就是先前路線圖寫的 old-binary bridge。Windows CI 把公開 alpha.110 的舊 recorder 用 hard
link 別名執行——它不持 product event、image-name scan 也看不到那個名字——current Setup 仍
拒絕,舊 bytes 與 alpha.110 metadata 原封不動;另兩條 lane 證明只持一個讀取 handle(無名、
無 event)就會被拒絕,以及改名之後、File 之前試圖啟動任一個 exe 都以 Win32 error 2/32
失敗。這些是 /S automation,不是 GUI 訊息框的肉眼證據。
仍擋不住、照實留著的:已經出貨或複製到 temp 的舊 uninstaller(不能 retroactively 改寫)、
安裝根目錄之外的 portable 副本(installer 不管它)。code signing 與跨層 master stop 仍未完成。
隱私承諾與邊界見
PRIVACY.md、
THREAT_MODEL.md。
最有價值的回報是:「這條規則在我的機器上沒有生效。」
Full Changelog: v0.1.0-alpha.116...v0.1.0-alpha.117
v0.1.0-alpha.116
Windows 預設下載 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。
這仍不是跨版本完整原子 lifecycle。legacy scanner 沒有 Unknown,process 列舉或 token/SID
查詢失敗會和未找到合併;舊 binary 不持有 event。已經出貨或已複製到 temp 的 alpha.114
uninstaller 也無法由新版 retroactively 改寫;alpha.115 能保證的是自己的 Setup 不再啟動那個
舊 child。Windows loader 又在 Rust main 前映射
executable,最後一次 legacy scan 到 NSIS File 之間仍有窄窗。installer late-start 因此仍是
Release 1.0 未完成項。
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 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 錄到別的地方,測完直接刪。
這一版修正桌面問「她知道了什麼」時,設定頁上的「知道」兩字被全文搜尋命中,
最後把 OCR 片段當成答案的路徑。
桌面問答現在先用一個窄的 typed intent 分流「她/你/妳(現在/目前/到底)
知道/記得(了)什麼/哪些事/哪些事情」。命中後不跑 FTS、facts、時間章節、blind
diagnostic、follow-up 或 CLI,只讀已經落在本機資料庫的 current L2 理解卡;多出任何
主題字(例如「妳知道客服電話嗎」)仍走原本檢索,不會被總覽吞掉。
總覽最多顯示最近三張、來自最近四張候選且資料庫仍標有畫面出處的卡片,逐張列活動、
時間、作者與 frame 按鈕;同一段只取最新活著版本,fact: 出處會先解析回自己的 frame。
L2 是可修正的模型假設,不是 OCR 原文或確定事實:interpreter/reviewer 的數字分別標成
模型自報/原模型自報信心,使用者修正過的版本不掛模型信心。實體圖檔若在點擊前被外部
移走,開圖仍可能明確失敗;資料庫的 image_path 不冒充一次檔案存在檢查。
「目前沒有留下任何記憶內容」、「有原始紀錄但還沒有 L2」、「有 L2、但最近候選目前沒有畫面出處」
是不同結果。後兩者都不退回 OCR;沒有帶畫面出處的 L2 也不當答案。這個總覽不寫進既有
retrieval query log,也不顯示「我本來已經忘了」標記:那套統計、點擊與 replay schema
量的是檢索,拿 L2 卡片硬塞進去會把 miss、延遲和出處點擊都算成另一件事。
Azure 邊界沒有擴張:只有既有第四張同意、設定、typed region/voice 與 Credential
Manager key 全部有效時,最新總覽回覆中明確標成答案正文的開場、activity 或狀態句才會
沿用既有固定 POST;原問題、OCR、frame/fact id、出處 label、作者、信心,以及 ready
結果旁的截斷/額外缺出處計數都留在本機。三種無答案狀態的整句本身就是答案正文:其中
evidence-missing 狀態句會包含最近候選卡片數;Azure 開啟時這個數字會隨該句送出。本機
朗讀仍須 trusted click,兩條語音路徑不互相 fallback。
隱私承諾與邊界見
PRIVACY.md、
THREAT_MODEL.md。
最有價值的回報是:「這條規則在我的機器上沒有生效。」
Full Changelog: v0.1.0-alpha.115...v0.1.0-alpha.116
v0.1.0-alpha.115
Windows 預設下載 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。
這仍不是跨版本完整原子 lifecycle。legacy scanner 沒有 Unknown,process 列舉或 token/SID
查詢失敗會和未找到合併;舊 binary 不持有 event。已經出貨或已複製到 temp 的 alpha.114
uninstaller 也無法由新版 retroactively 改寫;alpha.115 能保證的是自己的 Setup 不再啟動那個
舊 child。Windows loader 又在 Rust main 前映射
executable,最後一次 legacy scan 到 NSIS File 之間仍有窄窗。installer late-start 因此仍是
Release 1.0 未完成項。
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 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 錄到別的地方,測完直接刪。
這一版修正「新版 Setup 先啟動已安裝 uninstaller,child 卻撞上 parent lifecycle mutex,
最後只能從 Windows 程式管理員移除舊版」的升級路徑。
alpha.113 的 inherited dynamic capability/borrow 設計沒有在這次真人互動流程成立;舊
Setup 的 child 把自己視為 direct uninstall,看到 parent 已持有 mutex 就停住。這一版不再
依賴那條 parent-child 傳遞,也不猜測傳遞在哪一層消失:pinned tauri-bundler 2.9.4 custom
NSIS template 讓 Setup 永遠不巢狀執行已安裝的 NSIS uninstaller。
同版 repair 與舊版升新版改為由 Setup 在 lifecycle mutex 下原地覆蓋,而且 install root
只能來自 current-user 產品鍵,並與 uninstall key 交叉核對。GUI、passive /P 與 silent /S 都會在
WebView2、payload 或安裝登錄 mutation 前重新核對已安裝的 DisplayVersion、exact root 與
quoted UninstallString;metadata 不再精確對應就先停。若這份 Setup 比已安裝版本舊,也不
執行新版 uninstaller:請關閉 Setup,從 Windows「已安裝的應用程式」分開移除,再自行執行
較舊 Setup。
direct uninstaller 仍在確認頁之後、任何移除 mutation 前的 PREUNINSTALL 取得 lifecycle
mutex,並再次核對 exact version、root 與 uninstall string。若使用者停在確認頁期間另一份
Setup 已把產品升級,它會拒絕,不讓舊確認刪掉新版。legacy scanner reported hit 繼續只拒絕;
本版 sections 不顯示或執行 forced kill。
Windows CI 新增會真正進入 PageReinstall 的 /P lane:以 alternate /D 加上把現有
uninstaller 換成 PING.EXE 的 child witness,證明 repair 綁回 registry root、沒有執行
child;另以 /S 驗 downgrade 在 mutation 前退出。這些是 native automation,不是滑鼠真人
互動通過紀錄。已經出貨或已複製到 temp 的 alpha.114 uninstaller 無法由本版 retroactively
改寫;本版修的是 alpha.115 Setup 不再啟動它。舊 binary scanner 沒有 Unknown、Windows
loader 到 File 的窄競態、code signing 與跨版本完整原子 lifecycle 仍未完成。
隱私承諾與邊界見
PRIVACY.md、
THREAT_MODEL.md。
最有價值的回報是:「這條規則在我的機器上沒有生效。」
Full Changelog: v0.1.0-alpha.114...v0.1.0-alpha.115
v0.1.0-alpha.114
Windows 預設下載 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.113 起,本版
產生的 sections 覆寫 Tauri stock running-app macro;legacy current-user scanner 回報
sister-desktop.exe/sister.exe 命中時只拒絕,不提供或執行 forced kill。Setup 在
.onInit 取得 lifecycle mutex,成功路徑持有到 POSTINSTALL;direct uninstall 在
PREUNINSTALL 取得,成功路徑持有到 POSTUNINSTALL。拒絕先釋放,取消由 process teardown
關閉;alpha.113+ PageLeave child 驗證 inherited dynamic capability 後借用 parent
marker。帶協定的 desktop/CLI 以 product event + mutex/event/mutex handshake 在產品狀態前
和 installer 交接,無關的第二份 Setup 也不能同時進入 lifecycle。
這仍不是跨版本完整原子 lifecycle。legacy scanner 沒有 Unknown,process 列舉或 token/SID
查詢失敗會和未找到合併;舊 binary 不持有 event。較舊 PageLeave child 執行時外層 marker
仍會擋 aware product,但 child 仍依自己的版本行為。Windows loader 又在 Rust main 前映射
executable,最後一次 legacy scan 到 NSIS File 之間仍有窄窗。installer late-start 因此仍是
Release 1.0 未完成項。
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 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 錄到別的地方,測完直接刪。
這一版把現有 17 套分層角色從「圓角相框裡的上半身」改成透明全身浮空。
素材沒有重抓或擴包:alpha.110 起出貨的 17 套 workplace rig 原本就是完整
1280×1280 透明全身,腿與鞋一直在同一批 402 張 PNG 裡。舊 runtime 只把 viewport
固定在 320,0,640,640,因此主動裁掉下半身;CSS 再加上底色、5 px 邊框、
圓角與厚投影,畫面才會長成頭像卡。
現在 selector、sanitized manifest 與 renderer 同時固定使用完整
0,0,1280,1280 viewport。角色座標格不再畫底色、邊框、圓角卡或裁切;投影
改為跟著 PNG alpha 的人物輪廓。主視窗最高用 300 px 顯示全身;有答案或 URL
問題時縮成 88 px,仍保留已 decode 的全身 rig,不再切回小相框。idle、thinking、
paused、asleep、speaking 與 reduced-motion 的狀態邏輯不變;狀態點和暫停斜槓改成
適合透明人形的尺寸與位置。
這版的 PNG image bytes 仍是 35,140,885 bytes,每次仍只解碼目前一人的
21–26 層。本機 5.2 GB 候選裡其他 19 組服裝與 reaction 沒有順手加入;
若後續做換裝,要另行精選、固定 hash 與授權邊界,不把整包丟進安裝檔。
原本 17 張 208×208、不透明方形半身 WebP 已換成由同一組 reel workplace canvas
縮出的 640×640 透明全身 WebP,合計 1,031,124 bytes。因此 JS 尚未 ready、
圖層解碼中、任一圖層損壞與設定頁選角都不會短暫倒回相框半身。這 17 張是固定
source-canvas hash 的輕量衍生預覽,不是把其他服裝或 reaction 加進來;沒有字母
fallback,也不連網自動修復。
應用程式圖示也不再沿用舊半身裁圖:五個 checked-in PNG/ICO 現在由同一張
ChatGPT 透明全身 preview 裁出,共 464,143 bytes。它們使用獨立 exact
manifest/NOTICE,固定 source WebP、icon.html/make-icons.sh recipe 與五個
輸出 hash;這份 owner grant 不借 17 張 preview 的文字替其他衍生圖背書。
本機已用 selector 從 canonical 素材樹重生 production manifest;public clone 不含該素材樹,
所以 CI 不冒充能重生圖。它仍會核對 selector 只接受 exact production Reel authority、
只准 exact 已審 WebP manifest/NOTICE 出貨,並在有 pinned codec 時另跑 synthetic
encoder determinism;shipped-byte checker 逐檔核對 402 張 PNG 的 bytes、SHA-256、
尺寸與授權 projection。另一道
Rust shipped-byte test 逐張 decode 17 張 WebP,核對 640×640、透明 alpha、上下全身
跨度、bytes/SHA-256,拒絕 personas 目錄任何第 18 張圖/子目錄/symlink,並交叉綁回
同角色的 reel manifest 與 canvas hash。app-icon checker 則核 exact 五檔、來源、recipe、
alpha、尺寸、manifest/NOTICE 與 owner grant。Persona renderer fixture
另驗完整 viewport、無相框 CSS、active-only
decode、原子切換、壞圖退路與 compact 全身,並確認 Tauri 不採信 screenshot query。
Linux Chromium 實際截過 340×560 的 idle、thinking、paused、asleep 主視窗;工具會等
頁面/人物 decode、核指定狀態與 exact PNG 像素,不再對空頁或未載完設定頁印成功。
這不等於正式 Windows WebView2 的人工肉眼驗收;該項仍留在
docs/WINDOWS-CHECKLIST.md。
隱私承諾與邊界見
PRIVACY.md、
THREAT_MODEL.md。
最有價值的回報是:「這條規則在我的機器上沒有生效。」
Full Changelog: v0.1.0-alpha.113...v0.1.0-alpha.114
v0.1.0-alpha.113
Windows 預設下載 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.113 起,本版
產生的 sections 覆寫 Tauri stock running-app macro;legacy current-user scanner 回報
sister-desktop.exe/sister.exe 命中時只拒絕,不提供或執行 forced kill。Setup 在
.onInit 取得 lifecycle mutex,成功路徑持有到 POSTINSTALL;direct uninstall 在
PREUNINSTALL 取得,成功路徑持有到 POSTUNINSTALL。拒絕先釋放,取消由 process teardown
關閉;alpha.113+ PageLeave child 驗證 inherited dynamic capability 後借用 parent
marker。帶協定的 desktop/CLI 以 product event + mutex/event/mutex handshake 在產品狀態前
和 installer 交接,無關的第二份 Setup 也不能同時進入 lifecycle。
這仍不是跨版本完整原子 lifecycle。legacy scanner 沒有 Unknown,process 列舉或 token/SID
查詢失敗會和未找到合併;舊 binary 不持有 event。較舊 PageLeave child 執行時外層 marker
仍會擋 aware product,但 child 仍依自己的版本行為。Windows loader 又在 Rust main 前映射
executable,最後一次 legacy scan 到 NSIS File 之間仍有窄窗。installer late-start 因此仍是
Release 1.0 未完成項。
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 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 錄到別的地方,測完直接刪。
這一版讓本版產生的 installer/uninstaller sections 不再走 Tauri forced-kill macro,並為
alpha.113-aware installer、desktop 與 CLI 加入雙向 admission;舊 binary 與 pre-main
loader/File 窄窗仍不是完整原子 lifecycle。
自訂 NSIS hook 覆寫 pinned CheckIfAppIsRunning。silent/interactive 都會檢查
sister-desktop.exe 與 sister.exe;scanner 回報命中時,目前 section 先釋放自己的
marker 或結束 borrow,再以 32 拒絕,不顯示「替你關閉」選項,也不呼叫 kill。但 pinned
FindProcessCurrentUser 沒有 Unknown;snapshot、OpenProcess、token 或 SID 查詢失敗會和
not-found 合併;它仍掃所有 matching image name,作為向後相容與 pre-main fallback,而不是
aware admission authority。若 Setup 在 PageLeave 執行較舊 installed uninstaller,外層 marker
仍會擋 aware product;但 child 保留自己的版本行為,不能由本版 no-kill 規則代為保證。
Setup 覆寫 pinned SetContext,在 .onInit 取得 fixed lifecycle mutex,早於
PageLeaveReinstall、WiX migration、WebView2 與 payload/registry;成功 mutation path 持有到
POSTINSTALL。它建立 per-parent dynamic named event,透過 Setup process environment 把名稱
傳給後續 child;alpha.113+ PageLeave uninstaller 必須同時驗證 parent mutex 與該 event,才
借用 marker,而且不關閉 parent handles。child 會把自己 OpenMutex 得到的 handle 持有到
POSTUNINSTALL;即使等待它的 parent 異常退出,fixed object 也不會在 child mutation 中途
消失。direct uninstaller 則在確認頁後、任何移除動作前的
PREUNINSTALL 自行取得 mutex,成功 mutation path 持有到 POSTUNINSTALL。拒絕先釋放;取消
或 process exit 由 OS 關閉 handle。無關的第二份 Setup 不信任 ambient capability,會在
.onInit fail closed。
alpha.113-aware desktop/CLI 在產品 log、DB、WebView、記憶或設定之前依序探測 installer
mutex、建立 shared product event、再探測 mutex,並把 event 持有到行程結束。installer 取得
mutex 後探測 event;只有明確的 missing 才繼續,present、close failure 或其他 native error
都拒絕。這個 mutex/event/mutex handshake 是 aware-product 的 admission authority,
image-name scan 不是。
原生 Windows release gate 的 installer lanes 只走 /S。acquire window 只接受 exact
15000,after-scan window 只接受 exact 5000;前者驗 installer-first 的 desktop/CLI early
exit 與第二份 Setup refusal,後者用一般可列舉的同名 fixture 驗 reported-hit/no-kill。/S
不執行 PageLeave callback,fixture 也沒有製造 snapshot/token/SID error,所以這些 receipts
不冒充 interactive child handoff 或 legacy scanner fail closed。
Release 1.0 的 installer late-start 格仍維持未勾。舊 binary 不持有 product event;legacy
scanner 可能漏掉無法查詢的 process。即使是 alpha.113-aware binary,Windows loader 也在
Rust main admission 前先映射 executable,因此最後一次 legacy scan → NSIS File 仍可能
撞到 image mapping。未加入 old-binary bridge 或 file-level exclusion 前,本版不承諾跨版本
install/uninstall 全段原子。
隱私承諾與邊界見
PRIVACY.md、
THREAT_MODEL.md。
最有價值的回報是:「這條規則在我的機器上沒有生效。」
Full Changelog: v0.1.0-alpha.112...v0.1.0-alpha.113
v0.1.0-alpha.112
Windows 預設下載 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,再重新執行;安裝檢查開始時
已活著的任一行程會讓這次操作拒絕,不會被自訂 hook 強制關閉。alpha.106 尚有一個窄
競態:desktop 若在 hook 放行後才啟動,Tauri stock silent check 仍可能強制結束它;
recorder 若此時才啟動則不會被 stock 重查,安裝/移除可能只做一部分。
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 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 錄到別的地方,測完直接刪。
alpha.111 tag 沒有公開 release 或下載資產;alpha.112 才是把 17 人圖像選角與
公開舊版到新版 installer gate 交到使用者手上的版本。
alpha.111 的同一份 commit 在一般 main Windows run 曾跑完整支升級腳本,但 tag run
多了一段 tag-only Windows 工作後,PowerShell 依賴 ambient native stdout encoding
來接 sister.exe 的 UTF-8 JSON。舊版查詢回來的電話、frame、chunk、app 與 URL 都符合,
中文視窗標題卻在進入 JSON parser 前變成 mojibake,因此 exact title assertion 正確變紅;
流程停在安裝舊版後、真正覆蓋新版之前。這不是「migration 已經失敗」的證據,也不能拿
main run 冒充 tag path 已通過。Windows job 失敗後 Release job 依 dependency gate 跳過,
遠端沒有建立 draft,更沒有發布任何 alpha.111 asset。
alpha.112 不刪中文斷言來換綠燈。升級腳本把 console input/output 與 PowerShell
$OutputEncoding 固定為無 BOM UTF-8;需要機器判讀的 native CLI stdout/stderr 另由
subprocess 分開收回,明確交給會拒絕非法位元組的 UTF-8 decoder。這讓同一份中文字串不再由
runner 當下 code page 決定,同時保留電話事實的 raw/value、frame/chunk、app、完整繁中
title 與 URL 全欄 exact compare。
設定頁直接使用已隨程式提供、manifest 逐檔 pin 住的 17 張 WebP,分成四姊妹與
13 位閨密的 native radio 圖像卡;不增加角色素材,也不在設定頁解碼 402 張 Reel layer。
卡片可用鍵盤操作,縮圖讀不到時仍保留完整名稱,不會生出 Neutral 或單字母替身。
點選只換本機預覽,並分清「尚未儲存」與設定檔目前是哪一位;只有頁尾儲存寫入成功
才嘗試通知主視窗,事件沒送出會明講重開 desktop 後生效。設定頁本身也要成功讀回,
才會把預覽稱為已存。選角過程不做 Persona GET、Azure POST、語音播放或 rig decode。
升級 baseline 仍是最後一個真的有公開安裝檔、使用者可能正在使用的 alpha.110:Setup
固定為 305,417,570 bytes、SHA-256
3e661803d1b1d867aae0281e56baeb6a165b9178069ad912dc0c8869d1521965,安裝後的舊
sister.exe 也另驗公開 bytes/hash。alpha.111 沒有 asset,所以腳本不捏造一份舊安裝檔,
也不依賴會過期的 Actions artifact;它明確只接受 alpha.110 → alpha.112 這組
last-public-to-current 路徑。這是真 old-binary → new-binary 升級,但不是數字相鄰版本。
Run value 原本不存在與 exact enabled 分兩條 lane;前者不可被自動打開,後者的 REG_SZ
與完整命令不可被清掉或改寫,無關 Run fixture 也不能動。installer 執行前後逐檔比對
install root 外的 DB、config、consent、sentinel 與 synthetic evidence;再由新版已安裝
sister.exe 解析舊版電話事實、frame/chunk/app/title 關聯、四張 consent 的原 timestamps,
以及 Persona/default-off Azure typed region/voice 的非密設定。replay 沒有截圖像素,
所以 gate 明確把 repo 內 pinned OCR PNG 接到隔離舊版資料庫的一筆 frame,升級後用
export --with-frames 搬出並重驗 hash、DB integrity 與 foreign keys。這證明的是可匯出的
synthetic evidence file association;沒有執行真人 OCR、frame_get 或 WebView2 出處 click。
正式 artifact 的圖像選角、真資料升級、Run 登入與出處點擊仍列在 Windows 人工清單。
隱私承諾與邊界見
PRIVACY.md、
THREAT_MODEL.md。
最有價值的回報是:「這條規則在我的機器上沒有生效。」
Full Changelog: v0.1.0-alpha.110...v0.1.0-alpha.112
v0.1.0-alpha.110
Windows 預設下載 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,再重新執行;安裝檢查開始時
已活著的任一行程會讓這次操作拒絕,不會被自訂 hook 強制關閉。alpha.106 尚有一個窄
競態:desktop 若在 hook 放行後才啟動,Tauri stock silent check 仍可能強制結束它;
recorder 若此時才啟動則不會被 stock 重查,安裝/移除可能只做一部分。
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 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 錄到別的地方,測完直接刪。
這一版讓已明確 opt in 的 Azure 在每份最新答案完成後自動朗讀,
也把 5.2 GB 本機 Reel 候選收斂成 17 人、33.5 MiB 的離線分層角色包。
Azure 仍預設關閉,而且仍要設定開關、typed region/voice、Windows
Credential Manager 裡的 key 與第四張 azure-tts 同意同時有效。差別是這些
條件齊全後,使用者每次問題、最新那份答案完成時就會送出該答案
正文並播放,不再要逐次按 Azure 按鈕。關閉設定或撤回第四張的操作成功回覆後,
之後的新答案不會送。若 transport 已先取得送出權,設定/key/consent mutation 或
native cancel 可能等到完成或最長 45 秒逾時;renderer 仍先停播,且操作成功回覆後
舊 request 不會才開始送。按鈕保留為手動重播;每次重播都是新 POST,不是從 cache
播舊 MP3。
新授權比 alpha.109 的「每次按下才送」寬,所以第四張另有獨立條文版本。
升級會把 alpha.109 的 Azure 簽名顯示為舊條文、不生效,必須重簽這一張;
前三張同意與時間原樣保留。第四張現在明寫「每份新答案完成後不再
逐次詢問」,並繼續明寫正文可能含姓名、電話與金額、不先遮罩;不送
截圖、來源連結、memory id、整份資料庫或其他文字。
自動入口只在 ask() 驗過「仍是最新那題」後建立一次。開機 demo、status
read、設定變更 event、五秒輪詢與舊答案重畫都不能補送;兩題亂序回來
時只最新那題能說話。自動與 trusted manual replay 共用同一個 renderer
outbound helper、native 四道 gate、single-flight 與 generation cancel;晚回 MP3 仍不播、
不落地、不 fallback。
Reel 沒有把 5.2 GB 整包塞進安裝檔。選材器固定只拿四姊妹與 13 位閨密
各一套 workplace rig:17 rigs、402 張 RGBA PNG,合計 35,140,885 bytes。
reaction、其餘服裝、raw source/receipt、私有絕對 path 與 debug 圖都排除。
每檔 bytes、SHA-256、圖層位置與尺寸固定在 sanitized manifest;圖像由
素材所有人 Ted Huang 明確提供給 AI-Sister source tree 與官方安裝包,
但不納入 Apache-2.0 程式碼授權。
畫面只建立當前角色的 21–26 個圖層,不會把 17 人同時解碼進 RAM。每張當前
圖層全部載入成功前繼續顯示 alpha.108 的 WebP;任一檔缺少或解碼失敗就
留在 WebP,不出現字母 fallback。成功後才切到 1280 canvas 的分層立繪,
用微小呼吸、眼睛與說話狀態讓她活著;關掉角色動作、切到背景分頁或
prefers-reduced-motion 時動畫停止。所有素材都是隨程式提供的本機檔,WebView
CSP 沒有加任何 remote img-src 或 connect-src。
這一版延續借 AIRI 的是可驗證的 pipeline 形狀:分層角色、一個 active owner、
有 generation 的取消,以及本機 TTS 分段依序播放。沒有把 AIRI 的整套 runtime、
WebSocket 或偏英語的較重模型帶進來。正式 Windows artifact 的 WebView2 自動播放、
17 人圖層切換、眨眼/說話微動與真 Azure 帳號的 packet trace 仍列在人工驗收清單,
沒有在這裡冒充已經實測。
隱私承諾與邊界見
PRIVACY.md、
THREAT_MODEL.md。
最有價值的回報是:「這條規則在我的機器上沒有生效。」
Full Changelog: v0.1.0-alpha.109...v0.1.0-alpha.110
v0.1.0-alpha.109
Windows 預設下載 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,再重新執行;安裝檢查開始時
已活著的任一行程會讓這次操作拒絕,不會被自訂 hook 強制關閉。alpha.106 尚有一個窄
競態:desktop 若在 hook 放行後才啟動,Tauri stock silent check 仍可能強制結束它;
recorder 若此時才啟動則不會被 stock 重查,安裝/移除可能只做一部分。
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 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 錄到別的地方,測完直接刪。
這一版加入可選的 Azure 繁中答案朗讀,但本機聲音仍是預設;Azure 預設關閉,
兩條路都不會互相自動 fallback。
Azure 不是 Persona 的 voice_enabled,也不借原本三張同意。設定頁要分別啟用 Azure、
選擇 eastasia、southeastasia 或 japaneast,把自己的 Azure Speech subscription
key 存入目前 Windows 使用者的 Credential Manager fixed target
ted-h/AI-Sister/AzureSpeech/v1,並簽第四張 azure-tts,最後親手按 Azure 朗讀,
才會建立請求。第四張條文明講:每次按下會送當前答案正文原文,其中可能含姓名、
電話與金額且不先遮罩;不送截圖、來源連結、memory id、整份資料庫或其他文字。沒簽
這一張時一次都不呼叫 Azure,本機朗讀不受影響。升級時,沒有 Azure 欄位的同版本舊
consent.toml 會保留原三張簽名,但第四張一律是未簽,不倒推授權。
非密設定只把 enabled、typed region 與三個 typed zh-TW voice 寫進
[shell.azure_tts];key 不進 config.toml、log、DB 或 export。輸入時會短暫經過
password 欄位與 Tauri IPC,保存後頁面清空;native 回條只讓頁面看
Present/Missing/Unreadable/Unsupported,不把已存 secret 讀回 renderer。region 以外的值、自訂 endpoint、多餘的
subscription key 欄位都 fail closed。刪記憶、設定檔、Persona cache 或改 --data-dir
不會順手刪 Credential Manager key;要在 Azure 設定裡明確刪除。
真正的 transport 在 native Rust,只對所選的
https://<region>.tts.speech.microsoft.com/cognitiveservices/v1 發一個 HTTPS POST;
不 redirect、不走 proxy、不 retry。WebView 仍只走 Tauri IPC,不能提供 URL,CSP 也
沒有 Azure host。唯一的使用者內容是當前答案正文;來源 chips、問題、舊答案、Persona
台詞、OCR 集合、截圖、memory id、DB 與其他 UI 文字都不夾帶。
這版不做文字或 MP3 的磁碟 cache,也沒有跨 click 重播的記憶體 cache;每次按 Azure
朗讀都可能是新 POST。按停止、換題或開始另一段會立即讓舊 playback generation 失效,
晚回的 MP3 不播放、不快取;但已開始的 blocking native POST 不能中途 abort,仍
可能跑到 45 秒 timeout,Azure 也可能已計入用量。畫面不會把「不再播放」說成「網路
請求已取消」。
第四張的 admission 與 CLI/desktop 撤回另由跨行程 shared lock 排序,guard 活過完整
transport;撤回若撞上既有 POST 可能等到 timeout,但成功回覆後舊 snapshot 不會才送。
Microsoft 目前公開列出的 Azure Speech F0 neural TTS 額度是每月 0.5 million
characters。這不是 AI-Sister 提供或保證的免費額度;能否使用、實際額度與費用仍以
你的 Azure 帳號、resource、方案及 Microsoft 當下規則為準。正式 Windows artifact
的三區 packet trace、真帳號播放、key lifecycle 與 in-flight cancel 時序仍列在人工
驗收清單,沒有在 release note 裡冒充已跑過。
隱私承諾與邊界見
PRIVACY.md、
THREAT_MODEL.md。
最有價值的回報是:「這條規則在我的機器上沒有生效。」
Full Changelog: v0.1.0-alpha.108...v0.1.0-alpha.109
v0.1.0-alpha.108
Windows 預設下載 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,再重新執行;安裝檢查開始時
已活著的任一行程會讓這次操作拒絕,不會被自訂 hook 強制關閉。alpha.106 尚有一個窄
競態:desktop 若在 hook 放行後才啟動,Tauri stock silent check 仍可能強制結束它;
recorder 若此時才啟動則不會被 stock 重查,安裝/移除可能只做一部分。
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 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 錄到別的地方,測完直接刪。
這一版把單一字母角色整條退場,直接帶四姊妹與 13 位閨密共 17 張角色圖;
也先接好零模型下載、低負擔的本機中文語音。
設定頁現在可選 ChatGPT、Claude、Gemini、Grok、DeepSeek、Qwen、Mistral、Llama、
Sakana、Perplexity、GLM、Kimi、Hunyuan、MiniMax、Nemotron、Cohere、MiMo。17 張
208×208 WebP 合計 225,082 bytes,全部隨安裝檔離線提供,主視窗與程式圖示預設直接
顯示 ChatGPT;沒有 Neutral,也沒有 S/T/C/G/X glyph fallback。每張圖的來源 commit、
byte size 與 SHA-256 都在 bundled manifest,圖像另列 NOTICE、不納入 Apache-2.0
程式碼授權。舊設定的 exact neutral 會遷移成 ChatGPT,但不把歷史殘值冒充語音同意;
其他未知 ID 仍拒絕。
聲音仍預設關閉、只能由真人 click/鍵盤啟動。四姊妹若已有通過舊 pack 驗證的固定
錄音就優先播放;沒有固定錄音時,只接受 WebView 明確回報 localService = true 的
繁中/中文系統 voice。只有 remote voice 或沒有中文 voice 時就保持安靜,不自動把
文字送上網。答案底下新增「用本機聲音朗讀」;它也是另一個明確 click,而且只讀當前
畫面答案,拿掉來源按鈕與操作列後再交給本機 voice。
長答案採用 AIRI speech pipeline 可重用的形狀:先按句切成短段、依序播放、整串可取消;
這版用原生 Web Speech 實作,沒有因此帶入模型、套件或背景服務。切換問題、停聲或撤回
fixed-voice pack 都會使較晚回來的播放失效,舊 pack 的立繪也不再覆蓋 current bundled
角色圖。
這版沒有新增雲端 TTS 出站路徑。本機聲音缺席時不會偷偷降級;免費額度的雲端選項
會另做 provider 選擇、文字出站揭露與 credential 保存後才接,不能借 Persona 素材那條
fixed GET 或三張記錄同意書取得權限。
隱私承諾與邊界見
PRIVACY.md、
THREAT_MODEL.md。
最有價值的回報是:「這條規則在我的機器上沒有生效。」
Full Changelog: v0.1.0-alpha.107...v0.1.0-alpha.108