merge(gitea): 同步漏檔/push 衝突回報/clone 新功能/錯誤訊息
衝突:scripts/selftest.mjs 檔尾兩份都各自 append 一個測試區塊 (guard 的「注入區塊不可被人格檔案逸出(S6)」與 gitea 的「㉒ 從 Gitea 匯入本機還沒有的人格」)。兩塊都保留,各自收好自己的 `}`。
This commit is contained in:
@@ -352,6 +352,10 @@ node scripts/persona.mjs sync verify --session <id> --area wiki # 確認 Wiki
|
||||
- **本機永遠是工作副本**:hook 每輪讀寫本機檔案,不經網路;Gitea 掛掉照樣能聊天。
|
||||
**同步失敗永遠不阻斷對話。**
|
||||
- 載入人格時會先 `pull`;兩邊都改過同一個檔案就**停下來不覆蓋本機**,由使用者決定保留哪一邊。
|
||||
- `push` 撞到「遠端比較新」時以**本機為準**覆蓋遠端(本機才是這台機器的真相來源),
|
||||
但會回報**蓋掉哪些檔案、上一版是哪個 commit**,記在 `state/sync.json`,
|
||||
`sync status` 列得出來、下一輪的 `Stop` hook 提醒一次;舊版仍可從 clone 的歷史取回。
|
||||
- 發新編號前會先問遠端已經用掉哪些編號——`nextCode` 只看本機,換一台機器會重複發號。
|
||||
- Gitea 的 wiki 只有根目錄的 `.md` 會變成頁面(1.27 實測子目錄頁面 404),所以
|
||||
`memory/long-term/xxx.md` 攤平成 `Memory-xxx.md`,原始路徑記在 `_paths.json`;
|
||||
Wiki 首頁自動列出所有長期記憶的連結,變成真的讀得下去的「設定百科」。
|
||||
@@ -363,11 +367,29 @@ export PERSONA_GITEA_OWNER=<帳號或組織> # 選填,預設 token 本人
|
||||
export PERSONA_GITEA=off # 需要時整個關掉
|
||||
|
||||
node scripts/persona.mjs code assign --session <id> --romaji Asuna --rename # 既有人格遷移
|
||||
node scripts/persona.mjs sync status|init|push|pull --session <id> [--area files|wiki|all]
|
||||
node scripts/persona.mjs sync status|init|push|pull|verify --session <id> [--area files|wiki|all]
|
||||
```
|
||||
|
||||
存取庫**預設私有**——人格裡是使用者的個人記憶,公開必須由使用者明講(`--public`)。
|
||||
|
||||
### 換一台機器接續同一個人格
|
||||
|
||||
本機**已經有**這個人格 → `load` 再 `sync pull` 就好。
|
||||
本機**還沒有**它 → 用 `clone`:`sync` 的每個動作都要求先載入該人格,而本機沒有它就 load 不了它,
|
||||
所以另開一個只驗 session、不驗 host 的入口(跟 `import` 同一類)。
|
||||
|
||||
```bash
|
||||
node scripts/persona.mjs clone --session <id> # 遠端有哪些人格、哪些本機還沒有
|
||||
node scripts/persona.mjs clone --code ASUNA-01 --session <id> # 整個拉回來
|
||||
node scripts/persona.mjs clone --code ASUNA-01 --session <id> --persona asuna-copy --load
|
||||
```
|
||||
|
||||
- 遠端人格清單 = `GET /user/repos` 裡**名稱符合編號格式**的存取庫(會分頁撈完)。
|
||||
- 拉回來的是完整人格:Wiki 區帶回身分與長期記憶,檔案區帶回情緒與短期記憶,
|
||||
拉完補寫 `config.code`、重建長期記憶索引與關係圖。鎖與租約那類執行期狀態不跟著跑。
|
||||
- 本機已有同名人格時**預設不覆蓋**(`--force` 才蓋,`--persona` 可並存兩份);
|
||||
拉回來的東西沒有 `IDENTITY.md` 就中止並清掉半成品。
|
||||
|
||||
## 匯出 / 匯入(人格搬家)
|
||||
|
||||
```bash
|
||||
@@ -380,6 +402,7 @@ node scripts/persona.mjs import --session <id> --file ~/backup/lumi.persona.json
|
||||
- 不帶 `state/lock.json`/`guests.json`(鎖屬於那台機器的那個程序);`journal/` 預設不帶。
|
||||
- 換名匯入(`--persona <新 slug>`)可讓同一個人格並存兩份,`config.json` 會記下來歷。
|
||||
- bundle 內的 `../` 逃逸路徑一律拒收;checksum 不符要 `--force` 才吃。
|
||||
- 有 Gitea 的話不必經過檔案:`clone --code <編號>` 直接從存取庫拉一份回來(見上一節)。
|
||||
|
||||
## 劇場模式(多人格對話只顯示對話)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user