新增全新安裝的「可刪除預設庫」(leo 2026-08-08 拍板)

全新使用者第一次連上知識庫時,自動在 Documents 建一個
「Arcrun 範例庫(可刪除)」,裡面放三份 .md 示範內容,
不必自己選資料夾就能立刻走完「丟檔→知識卡→搜得到」。

四條紅線都有測試釘住(default_library_test.go/
default_library_e2e_test.go,含真的建 binary 跑 --dry-run 驗證):
1. 可刪——刪掉就真的消失,marker 檔擋住重種
2. 只有第一次——已有帳號的機器不會冒出來
3. 不污染——只在自己的資料夾裡寫檔
4. 不留幽靈資料——資料夾被刪後,config 殘留引用會被清掉(GetState 自我修復)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-08 00:22:03 +08:00
parent 89d9b314fb
commit 361f1f1f9d
5 changed files with 495 additions and 0 deletions
+6
View File
@@ -109,6 +109,7 @@ func (a *App) Connect(portalURL, email, password string) error {
}
// 不同實例=新增一個帳號。**不覆蓋舊帳號**——t86 事故的教訓:
// 舊實例的資料夾若被帶進新實例,等於把別人的檔案同步到另一個知識庫(個資外洩)。
wasFirstEver := len(cfg.Accounts) == 0 // 這台機器至今從沒連過任何知識庫帳號
cfg.Accounts = append(cfg.Accounts, accountCfg{
InstanceName: r.Config.InstanceName,
Email: r.Config.Email,
@@ -116,6 +117,11 @@ func (a *App) Connect(portalURL, email, password string) error {
Namespace: r.Config.Namespace,
APIKey: r.Config.Namespace,
})
if wasFirstEver {
// leo 2026-08-08:全新安裝自動裝一個「可刪除的預設庫」,讓使用者不必
// 自己選資料夾也能立刻看到「丟檔 → 知識卡 → 搜得到」整條路(見 default_library.go)。
seedDefaultLibraryIfFirstEver(cfg, len(cfg.Accounts)-1)
}
return saveCfg(cfg)
}