--- description: NixMsg 多 Agent 开发的分工、分支提交和测试隔离约束 alwaysApply: true --- # NixMsg 开发协作 开工前先读 `docs/TASKS.md`,确认自己是哪条线、做哪个任务。产品行为以 `docs/PRD.md` 为准,实现以 `docs/DEVELOPMENT.md` 为准,库用法特别看它的第 5 节和第 15 节。 ## 分工 - 只改自己线负责的目录(TASKS.md 第 5 节);要动共享文件,按 TASKS.md 第 4.2 节的规则。 - 文档没写清或互相矛盾时,停下来问总控,不要自己改产品行为。实现和文档不一致,必须写进 `docs/DEVIATIONS.md` 自己那一节。 ## 分支与提交 - 在自己的工作树和 `feat/<任务号>-<简述>` 分支上工作,不直接改 `main`;只有总控合并 `main`。 - 一功能一验证一提交:补测试 → `task check` 通过 → 提交 → 推送自己的分支。 - 提交信息 `type: 中文一句话`,type 取 feat、fix、refactor、style、docs、test、chore、revert。 - 不提交构建产物、`web/dist`、数据库文件、证书私钥、密码和令牌、`aidocs/`。 - 任务完成:rebase 到 `origin/main`,全部验证通过后推送,在 MemRelay 存标签为 `ready-to-merge` 的检查点。 - rebase 后用 `git push --force-with-lease` 更新自己的 `feat/*`、`fix/*` 分支(负责人已同意);任何时候都不许强推 `main`。 ## 测试隔离 - 测试里的服务监听随机端口(`:0`),数据放临时目录,不写死 7443。 - Docker 容器、网络、卷的名字带线名前缀,用完删除。 - 不改全局 git 配置、系统环境变量和全局 npm 配置。 ## 技术栈 - 后端:Go 标准库 `net/http`、`database/sql` 手写 SQL、SQLite;不引入 Web 框架、ORM、Redis。 - 前端:Vue 3 + TypeScript + Naive UI,只用这一套组件库。 - 缺工具用 scoop 安装;已确认的决定和依赖库核对结论在 MemRelay 项目记忆(项目 NixMsg)里。 ```yaml # ✅ 测试用的配置:随机端口,数据放临时目录 listen: "127.0.0.1:0" data_dir: "<临时目录>/data" # ❌ 写死 listen: ":7443",多个 Agent 同时跑会端口冲突 ```