浏览器持久化(bh-chrome-keepalive 计划任务+幂等守护脚本)+记忆:技能重载/孤儿锁自动解除/环境三样齐

This commit is contained in:
WorkBuddy committed 2026-10-09 07:41:18 +08:00
1 parent a98999c765
commit 0638609f15
3 files changed
+91 -1

No files matched your search

+2 -1
View File
@@ -57,6 +57,7 @@
- 🔴 **开关 `off`,但常驻仍在跑**(开关只挡「自动续命」,⛔ 别把 off 读成「没在跑」)。2026-10-08 23:4x 实测:常驻 ✅ 活 pid 40016/心跳 2 秒前 | 看板在听 20099 | 保活任务 `collabd-keepalive-contentm_agent` = Ready。要真起/真停 ⇒ `collabctl.py on|off --ws E:/ProgramData/AIProject/contentm_agent`。
- 🔴 机制登记**已全改现名** `contentm_agent`:`collabd.config.json` + `collabctl.py` 的 `WORKSPACES`/`KEEPALIVE_TASKS`(**源 + 3 个区副本共 4 份**)+ ai1net 的 `peer_workspaces`(改完**看板要重启**)。旧空壳目录 `content_marketing_agent.RETIRED-20261008` 保留(零删除)。⚠️ `collabctl.py off --ws` 曾越区(`kill_all()` 全机扫描杀到他区+看板),已修;⛔ 改这文件记住源+3 副本。
- **域锁**:域目录=**工作区下的第一层目录**;⛔ 别在域目录外套公共父目录(所有子目录会算成同一个域键 ⇒ 域锁失效)。抢锁 `handoff-guard.sh --claim-exec "<会话名>" --domains "<域目录>"`(包在 `skills/session-mechanism/scripts/lock/`);抢不到 ⇒ **停手报告**。释放 `--release-exec "<会话名>"`(或 `ME=<名>`;⛔ 取不到名 fail-closed,不静默清空)。🔴 **孤儿锁怎么来的(2026-10-09 两次实查)**:锁是**磁盘持久物**(`.locks/<域目录转义>/OWNER`),而会话**无论怎么结束都不释放**它 —— ① 被宿主终止(第一次:`a257d30f` 遇 daemon 冷启动换代,`status=terminated`);② **被用户手动关**(第二次:`cc07347c` 卡死后用户关窗,`status=completed`,⚠️ 手动关是标 `completed` 不是 `terminated`)⇒ 都不会跑 `--release-exec`。而域冲突判定**只比会话名、不判死活**,R9 又禁 AI 删锁 ⇒ 只能用户处置。**第二把已实证在 06:33 建、07:10 成孤儿**。**同型第二例**:`ai1net-dsh-anywhere ← [协作]N9复测-2248`(09-29 建)已挂 10 天。
- **域锁**:域目录=**工作区下的第一层目录**;⛔ 别在域目录外套公共父目录(所有子目录会算成同一个域键 ⇒ 域锁失效)。抢锁 `handoff-guard.sh --claim-exec "<会话名>" --domains "<域目录>"`(包在 `skills/session-mechanism/scripts/lock/`);抢不到 ⇒ **停手报告**。释放 `--release-exec "<会话名>"`(或 `ME=<名>`;⛔ 取不到名 fail-closed,不静默清空)。🔴 **孤儿锁怎么来的(2026-10-09 两次实查)**:锁是**磁盘持久物**(`.locks/<域目录转义>/OWNER`),而会话**无论怎么结束都不释放**它 —— ① 被宿主终止(第一次:`a257d30f` 遇 daemon 冷启动换代,`status=terminated`);② **被用户手动关**(第二次:`cc07347c` 卡死后用户关窗,`status=completed`,⚠️ 手动关是标 `completed` 不是 `terminated`)⇒ 都不会跑 `--release-exec`。而域冲突判定**只比会话名、不判死活**,R9 又禁 AI 删锁 ⇒ 只能用户处置。**第二把已实证在 06:33 建、07:10 成孤儿**。✅ **2026-10-09 已有自动解除工具**:`session-mechanism/scripts/lock/orphan-lock.py`(用户 2026-10-09 逐字授权「可以授权 检查会话自解除孤儿锁」= **R9 的唯一例外**)—— 判据是**查宿主库 `sessions.status`**(⛔ 不靠目测 `OWNER`):`working` 不动|`terminated`/`error`/`archived` 可解|`completed` 要过时间闸(`--idle-min` 默认 30 分钟)|查不到 sid ⇒ fail-closed 不动;先 `--dry-run`。本区实测已解开两把(含挂了 10 天的 `ai1net-dsh-anywhere ← [协作]N9复测-2248`)。
- 🔴 **本机浏览器实例要用「计划任务」保活,⛔ 别用后台任务**(2026-10-09 实测):「后台任务」=只活到发起它的那个会话结束(07:18 起的 pid 8236,07:37 已被回收)。正解=计划任务 **`bh-chrome-keepalive`**:动作 `pythonw.exe "E:/ProgramData/AIProject/contentm_agent/bh_chrome_keepalive.py"`(幂等:端口在听就退出),每 5 分钟触发 + `MultipleInstances=IgnoreNew` + `ExecutionTimeLimit=0`;脚本**放工作区根**(⛔ `tmp/` 会被清)。端口 9223,验证=`netstat` 见 LISTENING + `curl --noproxy '*' http://127.0.0.1:9223/json/version` 回 JSON。**同型第二例**:`ai1net-dsh-anywhere ← [协作]N9复测-2248`(09-29 建)已挂 10 天。
- ⚠️ **本目标(`…-071c5b`)产物落点分岔**:目标目录合同判「不在目标目录内」,而域门禁要求「只许写域目录」。①棒取域目录 `产品规划/`(收到软提醒,非拒收);②③棒改取**域目录 `执行会话`**(第一层目录 ⇒ 能盖住目标目录)+ 产物落目标目录 —— 两种都记在案,口径待用户裁定。
- ⚠️ `--report <sid> --state done --artifact "<路径>"`:产物**读不到**⇒硬拒收;**落点不在目标目录**只给软提醒(不拒收)。**sid 取法**:查宿主库 `E:/ProgramData/.workbuddy/workbuddy.db` 的 `sessions` 表(按 `cwd` + `created_at desc`,本区会话 `is_background_automation=1`)。