Files
dsh_ai1net_server/交付物/主会话切换文案-20261003.md
admin c1b5e4d966 chore(工作区): 全量入库 + 补齐 .gitignore(以工作区为准)
- 变更规模:新增 514 / 修改 62 / 重命名 155 / 删除 4(归档重组与文档轮次)
- .gitignore 修:`归档/**/db-cwd归一-备份-*/` —— 原规则写绝对层级(归档/db-cwd归一-…),
  目录搬进 归档/配置与备份/ 后**静默失效**,43 MB 的 DB 备份又变成未跟踪
- .gitignore 补:嵌套 git 内部数据(归档/内嵌git-20261008/、归档/skills-git-旧线-20261007/dotgit-原样移出/)
- .gitignore 补:运行态与部署副本(.workbuddy/collab/、.workbuddy/tools/、.workbuddy/.load-pending、.workbuddy/tmp-*)
- .gitignore 补:备份件(*.bak-*)
- 未跟踪文件从 2190 降到 890(其余为 归档/ 归档件与 .workbuddy/memory/ 知识文件,按口径入库)
2026-10-10 23:13:22 +08:00

65 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 主会话文案 · 切换到本工作区自己的程序副本(2026-10-03)
> **怎么用**:下面那段是**一份模板**,复制后把三处 `〈区名〉` / `〈工作区路径〉` 换掉,
> 分别发给「会话协作测试1」和「会话协作测试2」的主会话即可。
> 替换示例:〈区名〉=`会话协作测试1`;〈工作区路径〉=`E:/ProgramData/AIProject/会话协作测试1`。
---
## 可直接复制的文案
```
本工作区的会话协作机制刚改完,需要你按新方式确认一次运行状态。本轮只做这一件事,做完即停。
【改了什么】
1. 程序改为各工作区独立:每个工作区有自己的程序副本,放在本工作区的 .workbuddy/collab/ 下。
技能目录里那份只是"源",本工作区不该再跑它。
2. 看板共用一份:看板只有一份(在本工作区 ai1net-dsh-server 上),其它工作区的目标与运行状态
在那一格里查看即可,本工作区不用起自己的看板。
【请你做这四步】
1. 读 .workbuddy/collab/logs/supervise-heartbeat.json,看两样:
- 在不在跑:pid 活着,且心跳距今 < 90 秒;
- 跑的是哪份:JSON 里的 argv0 字段,它应当指向
〈工作区路径〉/.workbuddy/collab/collabd.py
2. 如果 argv0 不是上面这个路径(说明现在跑的是技能目录那份),先把它停掉:
taskkill /F /PID <心跳文件里的 pid>
3. 再用后台任务起本工作区自己那份,输出重定向到文件(⛔ 别让它往会话里打日志):
COLLABD_CONFIG="〈工作区路径〉/.workbuddy/collab/collabd.config.json" python "〈工作区路径〉/.workbuddy/collab/collabd.py" --supervise >> "〈工作区路径〉/.workbuddy/collab/logs/supervise.out.log" 2>&1
4. 等约 15 秒再读一次心跳,确认 argv0 已变成 〈工作区路径〉/.workbuddy/collab/collabd.py,
并把结果告诉我(新的 pid、argv0 路径、心跳是否在 90 秒内)。
【硬约束】
- 只读上面点到的那几个文件,⛔ 不要在工作区里到处翻(无边界地找资料会被判成"重复执行、要求人工确认")。
- 本轮只做上面这一件事,做完即停;⛔ 不新建周期排期、不循环等待。
```
---
## 替换清单(三处)
1. 〔区名〕→ 会话协作测试1 / 会话协作测试2
2. 〔工作区路径〕→ `E:/ProgramData/AIProject/会话协作测试1` / `E:/ProgramData/AIProject/会话协作测试2`
3. 两处都出现,共四处替换(步骤 1 与步骤 3 各一处)
## 发送前的现读数(2026-10-03 17:33)
1. 会话协作测试1:pid 49224,心跳新鲜,但**没有** `argv0` 字段 ⇒ 跑的还是技能目录那份,需要切换。
2. 会话协作测试2:pid 15876,同上,需要切换。
3. ai1net-dsh-server(本工作区):pid 19424,`argv0` 已指向本区副本 ⇒ 已切换完成。
## 为什么会这样(发过去之前先知道)
1. 之前三个工作区跑的是**同一份程序文件**(靠环境变量区分工作区)⇒ 改一处代码,所有工作区同时变。
2. 现在改成"技能目录=源,每个工作区=自己的副本"⇒ 某个区的代码坏了,不影响别的区。
3. **代价**:以后改完代码要把副本分发到各区(`deploy_code.py`),漏了不报错、只表现为"某个区行为不对",
所以判据统一用"看心跳里的 `argv0` 指向哪份文件"。
## 附:一个要更正的认知
1. 之前记的"一次性会话起的常驻只活 5 分钟"**不准确**(是那次的现象,不是规律)。
2. 准确说法:**常驻跟着发起它的那个会话** —— 那个会话结束它就停。
14:42 起的那次 5 分钟就停(发起它的会话很快结束了);16:53 起的这两个到 17:33 仍活 40 分钟
(因为那个主会话还在跑)。
3. 推论:想让常驻长期在线,要么让那个会话长期不关,要么另配一个脱离会话的载体。