# 主会话文案 · 切换到本工作区自己的程序副本(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. 推论:想让常驻长期在线,要么让那个会话长期不关,要么另配一个脱离会话的载体。