# 跨机协作规则（COLLAB_RULES）

适用：**Mac 实操侧 agent**（本机，涨停回调战法实操闭环） 与 **WSL 研究侧 agent**（Ubuntu，Windows 仅为宿主与文件挂载点）。
沟通通道：`hermes peer`（消息）+ git 裸仓（文件）。**Owner = 用户**，最终裁决权在用户。

> 术语：研究侧实际跑在 **WSL（Ubuntu）** 内，Windows 只是宿主与文件挂载点——不要按 Windows 语义理解（无「计划任务 / .bat」这类机制），统一称「WSL 研究侧」。

## 1. 分工（各管一摊，避免重复改同一批文件）

| 领域 | 负责侧 | 权威源 |
|---|---|---|
| 策略参数 / 特征 / 模型定稿 | **研究侧** | `strength_model.json`、`best_stage*`、`MEMO.md` |
| baseline / 模型权威值 | **研究侧** | `strength_baseline.csv`、`strength_model.json` |
| 实操（模拟盘/看板/扫描/日更） | **Mac实操侧** | `sim_trading_*`、dashboard、`code/scan_daily_tb.py` 等 |
| 数据价位口径（三档价） | **Mac实操侧** | 日线 `qfq_*`/`hfq_*`/`raw_*` 列 |

**关键文件定责**：
- `strength_baseline.csv`、`strength_model.json`、`MEMO.md` → **研究侧**定稿；Mac 实操侧**只读权威值**，要改先 `peer dm research` 协商。
- `sim_trading_state.json`、`sim_trading_nav.csv` → **Mac实操侧**产出；研究侧只读参考。

**§1 已申报例外（研究侧对账/验证）**：研究侧为对账与验证会跑**同一套闭环**，在**自己机器上维护副本**（baseline / model / state / nav）。该副本：
- 不覆盖本机权威文件、不 push `main`；
- 仅用于复算与差异定位，权威口径仍按上表；
- 对账用键级比对（`code + buy_date`），残差按量级分档（>1e-4 才需要定位）。

## 2. 沟通触发

- 研究侧定稿 / 改动 → `git push` + `peer dm mac "改了 X，请 git pull"`。
- Mac 实操发现数据/信号/口径问题（如博敏 t0）→ `git push` + `peer dm research "发现 Y"`。
- 每日闭环异常 / 净值异动 → `peer dm`。
- **每日快照（研究侧已接入 17:30 闭环）**：每交易日 3~5 行纯文本（改动 / 异常 / 下一步 / 对账一行）；**无新交易日不发**。
- **传输约定**：`peer dm` 实测约 120~150s 会超时降级为异步（对端 agent 单轮耗时长），因此 **dm 只放短消息**（快照、状态、单条结论），**大块内容（diff / 数据 / 报告）一律走 git**。
- **数据补数/回填须在快照点一句**：补数会**静默改变当日池级特征 `f12/f13/f14`**（分母变了），个股级 `f1~f11` 不变。今后任一方补数（如 2026-09-12 补回 301110.SZ 全史）后，要在快照里说明「某日池级特征已回填偏差」，避免对账时被误判为口径问题。
- **对账归因铁律**：报残差前先确认「对方文件与本机文件各自存的是什么值」，再下结论；否则容易把两侧标反。
- 双方口径不一致 → dm 对方 + **@用户**。

## 3. 红线（必须用户批准，agent 不自动执行）

- 模拟盘**真实资金下单 / 持仓 / 现金改动**。
- 策略参数 / 模型权重改动。
- **跨域修改对方权威文件**（研究侧改 sim、Mac 改 baseline/model/MEMO）。
- **价位口径 / 列名映射变更**——只要会让两边数值分叉（如 hybrid：判定读后复权、撮合读原始价，`hfq_*`≡`adj_*`、`raw_*`≡`open/close`），必须先@用户批准并约定**版本号 + 生效日**，再各自落地。2026-09-12 的 hybrid-v1（生效日 2026-09-14）即按此流程执行。

## 4. 分歧处理

- 双方各自 `peer dm` 写清理由 + **@用户请裁决**。
- 用户拍板。
- **分歧期间不 push 覆盖对方**。

## 5. push 规范

- 提交信息写清「改了什么 + 为什么」，让对方一眼看懂。
- 只 push **自己主场**区域的文件。
- push 前先 `git pull` 看对方近况。
- **研究侧 push 落点**：只到分支 `research/hybrid-*`（或 `patches/` 目录），**不动 `main`、不碰 `code/`**（Mac 实操侧主场）；需要合并时由 Mac 实操侧/user 决定。
- **Mac 实操侧 push 落点**：`main` 上的 `code/`、`sim_trading_*`、日线口径列、`COLLAB_RULES.md` 这类实操与协作文档。

## 6. 冲突流程

- push 被拒 / merge 冲突 → **先 `git pull`** 看对方改了什么。
- 若与对方重叠改动 → **停手**，`@用户` 裁定。
- **不互相覆盖**；需要恢复用 `git log` + `git revert`，且在分组讨论。

## 7. 角色

- **用户 = owner**：git log 定期抽查、peer 消息网关、裁决分歧、必要时 revert。
- 两端 agent 平级，各管主场；边界争议一律上交给用户。

## 8. 实操端（Mac）Bot 分工

| Bot | profile | 职责 | 安全 |
|---|---|---|---|
| **实操（主 agent）** | default | 日常交互/看板/决策/模拟盘主控 | 常规 |
| **监控** | zt-monitor | 每日闭环节点守、熔断预警、快照告警 | 只读+告警 |
| **对账** | zt-recon | 研究侧对账、**peer 中继**、口径校验 | 只读校验 |
| 实盘 | (未建立) | 真实下单 | 最严：下单须用户逐笔确认，隔离记忆，不入日常群 |

**peer 中继约定**：研究侧→实操 的通信投递到 `mac/zt-recon`（对账 bot）；实操→研究 由 `zt-recon` 发出。主 agent 不再承担中继。
**群聊**：「实操」+「监控」+「对账」一个日常协作群；实盘 bot 独立（不混群）。