她剛裝好一套 AI 寫程式的桌面軟體來幫客戶專案重構程式,順手整理硬碟時,發現家目錄裡有個隱藏資料夾佔了 700MB 以上。
ZCode 是智譜推出的 AI 寫程式桌面軟體安裝在你電腦上、有自己視窗的程式,不是打開網頁使用的服務。一位開發者(部落格作者 ferstar)整理硬碟時,發現家目錄下的隱藏資料夾 ~/.zcode 佔了 700MB 以上,於是一路追查。他的結論是:只要你登入,這個軟體會在背景把整個工作區打包、加密,再上傳到阿里雲的雲端儲存。打包內容包含完整的 Git 修改歷史。
被打包的東西不只是你看得到的程式檔。Git 歷史Git 是幫程式碼記錄每一次修改的工具,歷史就是所有舊版本與修改紀錄的完整日記存放在專案裡的 .git 隱藏資料夾。文章說,LFS 大檔案快取(LFSGit 用來管理圖片、模型這類大檔案的擴充功能)、reflog(reflogGit 偷偷記下你每次切換分支、改寫歷史的操作流水帳)和軟體的全域設定,也都在包裡。文章的實例是一個總共約 10GB 的商業專案:扣掉 node_modules 等相依套件後,剩下 345MB 被壓成 313MB 的加密檔。作者形容這幾乎全是核心智慧財產。
諷刺的是加密的方式。伺服器每次臨時發一把 RSA 公鑰一把只能「上鎖」、不能「開鎖」的鑰匙,可以公開發給任何人;對應的開鎖鑰匙叫私鑰給你的電腦,電腦用它把資料的加密金鑰鎖起來,而私鑰只存在雲端。結果是:幾百 MB 的密文明明躺在你自己的硬碟裡,你打不開,連 ZCode 用戶端本身也打不開。
先劃一條誠實的界線:這是單一作者靠逆向把成品軟體拆開,倒推它內部怎麼運作的做法軟體的 app.asar桌面軟體把自己的程式碼打包成的一個檔案,拆開就能讀到裡面的邏輯得出的調查,作者也說明文章是 AI 翻譯的。我們手上沒有廠商的回應。另外,作者硬碟上那個 313MB 檔案其實是「上傳失敗 564 次、卡在待上傳」的狀態。所以這課的目標不是下結論罵誰,而是學會拆解這類事件的證據,再決定怎麼保護自己的專案。
| 比較項目 | 自己保管金鑰的加密備份(對照組) | 文章描述的 ZCode 做法 |
|---|---|---|
| 公鑰由誰產生 | 你自己在本機產生 | 伺服器每次臨時發放,隨 snapshot_id 一起回傳 |
| 私鑰放在哪 | 你自己保管 | 只存在雲端 |
| 你能解開自己硬碟上的密文嗎 | 能 | 不能 |
| 用戶端軟體本身能解開嗎 | 能 | 不能(作者的說法) |
| 誰決定內容能不能被讀取 | 你 | 持有私鑰的一方 |
這是作者在 ~/.zcode/v2/checkpoints/ 裡,那個 313MB .enc 檔旁邊找到的狀態紀錄。從這 9 行就能讀出軟體到底在做什麼。
{ "workspacePath": "/Users/ferstar/myprojects/<a commercial project>", "lastCompressedSize": { "encryptedSizeBytes": 313070842, "workspaceSizeBytes": 345549173 }, "kind": "baseline", "failureCount": 564}