user-vibeloop

← 返回面板

默认端口 8765 与 WorkBuddy Copilot 冲突:改为系统自动分配端口 待报告者确认

t-20260713-6317d1 · Bug · 创建于 2026-07-13 07:29:38 · 版本 main@95f7581 · macOS 15 (Darwin 25.5.0)

问题描述

背景:本机另一项目 WorkBuddy Copilot 的 Hook、学员端、导师端固定依赖 127.0.0.1:8765,而本工具 src/cutpoint_lab/studio/server.py 的 --port 默认值恰为 8765。两者同机运行时,WorkBuddy 的导师台地址会命中本工具的服务,导致页面/API 版本不一致等故障。双方已协商:8765 永久保留给 WorkBuddy,本工具让出。期望改动:① --port 默认值从 8765 改为 0(由操作系统自动分配空闲端口);② 启动时打印、以及 --open 自动打开的地址必须使用实际绑定的端口(server 绑定后可从 socket 取真实端口);③ 保留 --port 显式指定的能力且行为不变(需要固定端口的用户仍可指定);④ scripts/studio_web.py 的 usage 文案与相关文档同步更新。验收标准:不带 --port 连续启动两个实例可同时运行互不冲突;--open 打开的地址真实可用;显式 --port 8765 时行为与现在完全一致;python3 scripts/run_tests.py 全绿。备注:这是创始人已拍板的产品决策(让出 8765),属于启动配置默认值变更,不涉及 HTTP API 的行为语义——不应被约束第 5 条误伤。

用户日志

lsof -nP -iTCP:8765 -sTCP:LISTEN → python3.1 11039 michael TCP 127.0.0.1:8765 (LISTEN)(本工具进程);WorkBuddy 侧 AI 确认导师台因此命中错误服务

分诊结论

结论:accept

修复摘要

将 server.py 的 --port 默认值从 8765 改为 0(OS 自动分配),并在测试中添加正确的回归断言:通过 patch bind_server 捕获 main([]) 实际传入的 port 参数断言为 0,不再创建独立 ArgumentParser。

改动文件:

合并提交 29440fd1de52f96f907fc2ca0355fec457ee9188

事件时间线