# dsh-dot 总体规划（2026-10-23）

## 一句话

dot 是一个**在自己手机上过日子的角色**：有自己的手机、账号、作息；你是她 QQ 里的一个联系人；两次对话之间她在过自己的生活。能干活是附带的，不是主体。

## 现在在哪

| 层 | 状态 | 证据 |
|---|---|---|
| 手机（`phone`） | ✅ 开箱即用：自动下载/建 AVD/开机/接管，live view 标签页，`mcp__phone__*` | 真机：装好 → 她自己装了 QQ、登录、回了消息 |
| 通知 → 叫醒 | ✅ 事件 + 快照模型，任何 App，按 App 静音，后台不冻结 | 真机：发出 → 叫醒 2–4 s（原 3.5 min） |
| 她回消息 | ⚠️ 能回，一条 ~78 s；连发时第二条叫醒会撞上她正在跑的一轮，上下文残缺 | 真机 09:07 |
| 幕间（`interlude`） | ✅ HDSI 移植：Canon、剧本、连续性、打算、web/vm/phone 三路"去看"（只读无审批） | 真机跑了 14 轮；0 次 browserIntent（剧情没给理由） |
| 联系人层（`dot`） | ✅ 定时结果→IM、审批/设备提醒、工作规则、通知唤醒 | 真机 |
| 电脑（`computer`） | ✅ 可选 | `DSH_DOT_COMPUTER=off` |
| IM 通道 | ⚠️ 仍是 dsh-im 的 QQ **官方机器人**；她的"真 QQ"只在手机上 | — |
| "玩"（点赞/评论/发帖） | ❌ 未做；提示词要从社区找 | — |

## 架构（不再变的部分）

```
                 ┌─ phone ──── Android 模拟器 ── mcp__phone__* ── 通知事件
dot (联系人层) ──┼─ computer ─ microVM（可选）── mcp__vm__*
                 └─ interlude ─ 幕间：剧本/连续性/打算/去看/主动联系
          ▲ 叫醒（通知、定时、幕间观察）        ▼ 投递（dsh-im send / 未来 qq_send）
        她的会话（dsh 自己跑对话，人设 = Canon 段 + 工作规则段）
```

原则：**她只能看，不能瞒着你动**（幕间只读；有后果的动作走审批或不给）；**不替她做她该自己做的事**（装 App、登录后的日常）；**不重复造轮子**（模拟器、mobile-mcp、HDSI 预设、dsh-im、dsh 定时）；**可审计**。

## 分期

### P0 · 把"聊天"这条线做扎实（本周）

目标：你在 QQ 里和她聊一天，不漏、不串、不重复。

1. **忙时攒消息**（dot，~40 行）：她在跑一轮时来的通知攒到那轮结束，同一对话的多条按顺序列出，QQ 的 `(N条新消息)` 标题归一。→ 解决"连发撞车"。
2. ~~夜间静音~~：撤回。`notifyHours` 默认不设，任何时候来通知都叫醒她（10-25，Kevin 没要过这个）。
3. **回消息的速度**：先接受 ~1 min（人也不秒回）；记录每次回复的耗时和工具调用数，一周后看数据再决定要不要快路。
4. **观察一周**：`calls.jsonl`、`web-context.jsonl`、两份审计日志。不加功能。

完成标准：连发 5 条她一次回齐；夜里不叫；一周内 0 条漏回（审计可查）。

### P1 · 让她"过日子"真的发生（下周）

目标：幕间不再只是躺床上；她会拿手机、会去看、会有话题。

1. **定时拿起手机**（`phoneCheckEveryMinutes`，活跃时段内，默认 30）：正常轮次，"看看手机有没有新消息/新动态，有事处理，没事 `DOT_SILENT`"。这是通知之外的兜底，也是她"刷手机"的来源。
2. **`phoneApps` 填上**她装的 App（小黑盒、B 站…），`vmSites` 给电脑。幕间的 browserIntent 才有地方去。
3. **她关注什么**：由你给（账号/话题），原样写进 Canon 的 `world`；或者等她在对话里自己长出来。我不编。
4. **intent 空转**：`intent` 轮只结算不新建（现在每天 7 轮 intent 滚自己）。
5. **幕间观察结果回流**：`webContext` 已进下一轮；检查剧本里有没有真的用上。

完成标准：一周内剧本里出现 ≥3 次"她在手机上看到的东西"；幕间 intent 轮 ≤ 2/天。

### P2 · "玩"：轻动作（待你给提示词）

目标：点赞、评论、发帖、关注——在她的账号上，按她的人设，低频。

1. 提示词来源：社区（NapCat 陪伴机器人们的 proactive 提示、HDSI 社区的 agency 讨论），不自己写。
2. 机制：幕间产出 `playIntent`（想做什么、为什么、意愿值）→ dot 以**正常轮次**执行（不是只读观察）→ HDSI 的 agency 门控（活跃时段、意愿阈值、每日上限）。
3. 审批策略：点赞/评论/关注在白名单内不审批；发帖、私信陌生人、付款审批；账号资料改动不给。
4. 风险接受：小号，封了就封了。

完成标准：一周 ≤ N 次动作（N 你定），审计里每次都有"为什么"。

### P3 · 通道与第二设备（按需，不排期）

- **NapCat 当她的"电脑端 QQ"**（`dsh-dot/qq`，~150 行 + 一个容器）：只在 P0 数据说明手机 App 这条路不可靠或太慢时做。它解决两件事：秒回（`qq_send`）、群消息完整性。手机照旧。
- **dsh-im 官方机器人通道**：降级为可选（给想用的人），她的 IM 身份以真 QQ 为准。
- **真机 / PVE 24 小时**：`serial` 配置项接真安卓机（去模拟器检测、Mac 睡眠也在线）；或手机搬到 PVE 的 Redroid。等有需要。
- **NotificationListenerService APK**：只在 dumpsys 快照被证明会漏时做。

### 持续

- README/DESIGN 随代码；每个真机实测写进 DESIGN 的"验证情况"。
- 不做：长期记忆库、多个 dot、自我进化、自己的 IM/定时框架、替她装 App。

## 要你定的（按出现顺序）

| 决定 | 我的建议 |
|---|---|
| 夜间静音时段 | 跟 `activeHours` 走：08:00–23:00 |
| 回消息快路（NapCat）做不做 | P0 观察一周后用数据定 |
| 她关注什么（账号/话题） | 你给几个，或让她自己长 |
| "玩"的提示词从哪来 | 你指路，我去找 |
| "玩"的每日上限 N | 3 |
| 电脑组件以后留不留 | 留，可选 |

## 风险

- **平台检测 / 封号**：模拟器 + 自动化违反各家条款。小号、低频、不绕验证码。
- **模型成本**：每次叫醒一轮 + 幕间一天 ≤12 轮 + 定时看手机 ≤30 轮/天。flash 下可接受；换大模型前先看 `calls.jsonl` 的用量。
- **AGPL**：幕间提示词按 HDSI 原文，整包 AGPL；已在 README 写明。
- **单点**：Mac 睡眠 = 她下线。P3 的真机/PVE 解决。
