• 主体由另一个会话完成(其会话已关闭,由我接手核对并提交),我补了两处修复
    与一条守卫。
    
    ## 它修的是什么
    六处「服务端自己给某个 agent 发一条 chat」各自写死
    `hostname:'localhost', port: systemConfig.port`(3010)。单测把路由挂到
    `app.listen(0)` 的临时端口上,回调却照样打进**线上 3010** —— 每跑一次汇报
    用例就给真 CEO 发一条 chat、起一个常驻 claude CLI 子进程、留一个
    callback-T-* 会话目录。症状完全静默:测试全绿,只有进程数和内存在涨。
    
    (这条是被我在批 5 新加的 task-dispatch-store 用例触发出来的:那之前没有
    任何测试会走到汇报回调。)
    
    抽成 selfChat:端口从 req.socket 取(收到这条请求的那个监听端口,天然就是
    「我自己」),测试环境整体短路。
    
    ## 我接手时发现并修掉的两处
    `task/transition` 的两个调用点删掉了 `const chatReq` / `const postData` 的
    声明,**却留下了 `chatReq.write(postData); chatReq.end();` 两行**。
    `node --check` 照样通过 —— 那是运行时 ReferenceError 不是语法错;而它在
    `setImmediate` 里抛就是未捕获异常,**直接杀进程**。
    
    真起服务打了一遍 POST /api/agent/ceo/task/transition:200,服务仍在。
    修之前这条路必炸。
    
    ## 守卫:server/tests/unit/self-chat-callbacks.test.js
    1. chatReq / postData 只许出现在 selfChat 函数体内 —— 「删了声明留下调用」
       这类改造残留,语法检查和单测都抓不到,只有真跑到那条路径才炸;
    2. 不许再有第二处自己拼 http.request 打 systemConfig.port(分叉的开始);
    3. 测试环境必须短路。
    
    第一版守卫把 selfChat 上方那段**注释**里引用的写法当成漏改报了红 ——
    那是文档不是代码,已跳过注释行。
    
    全量:135 文件 / 1272 测试全绿。
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    yibo authored
     
    Browse File »