a4phone 内置外出模式(手机优先)与终端优先模式两种交互模式:外出模式下提问与权限请求优先推送到手机,超时后终端兜底;终端优先模式下一切交互直接走终端,手机完全不参与。两种模式通过 a4p out / a4p home 一键切换、即时生效,无需重启会话。本文章介绍两种模式的行为差异、切换命令与续聊期间的自动切换机制。
1. 模式对比
| 维度 | 外出模式(out) | 终端优先模式(home,默认) |
|---|---|---|
| 切换命令 | a4p out |
a4p home |
| 提问交互 | 推送到手机点选 / 文字作答,超时终端兜底 | 直接走终端,手机不参与 |
| 权限请求 | 推送到手机 Approve / Deny / Always Approve | 直接走终端审批 |
| 任务完成通知 | 电脑弹窗 + 手机推送 | 电脑弹窗 + 手机推送(不受模式影响) |
| 适用场景 | 离开电脑外出办公 | 坐在电脑前正常使用 |
| 生效方式 | 即时生效,无需重启会话 | 即时生效 |
1.1 模式判断流程
提问 / 权限请求] --> B{读取模式
mode.json} B -->|home| C[终端原生交互
手机不参与] B -->|out| D[推送到手机] D --> E{手机是否
按时回复} E -->|是| F[决策回传
注入会话] E -->|否| C style A fill:#e8f4f8,stroke:#1a6b8a,stroke-width:2px style B fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style C fill:#fdebd0,stroke:#b7950b,stroke-width:2px style D fill:#fadbd8,stroke:#c0392b,stroke-width:2px style E fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style F fill:#d5f5e3,stroke:#27ae60,stroke-width:2px
2. 模式存储与切换
2.1 模式存储
当前模式存储在 ~/.a4phone/mode.json:
{
"mode": "out"
}
模式读取失败时默认按终端优先模式(home)处理,保证配置异常时行为安全。
2.2 切换命令
a4p out # 切换为外出模式(手机优先)
a4p home # 切换为终端优先模式(默认)
a4p status # 查看当前模式
切换即时生效:Hook 每次事件都会重新读取模式文件,无需重启 AI 会话。
3. 模式对各项功能的影响
| 功能 | 外出模式 | 终端优先模式 |
|---|---|---|
| 任务完成通知 | 电脑弹窗 + 手机推送 | 电脑弹窗 + 手机推送(无差别) |
| AI提问交互 | 手机点选 / 文字作答 | 终端原生提问 |
| 权限请求交互 | 手机 Approve / Deny / Always | 终端原生审批 |
| 远程续聊 | 正常(续聊期间自动锁定外出模式) | 正常 |
4. 续聊期间的自动切换
远程续聊(a4p resume / a4p listen)期间,人在手机端操作,a4phone 会自动临时切换为外出模式,确保续聊回合内触发的提问与审批推送到手机,形成完整闭环;续聊结束后自动恢复原模式,不影响你回到电脑后的使用习惯。
人在手机端] --> B[记录原模式] B --> C[临时切换
外出模式] C --> D[续聊回合
提问/审批走手机] D --> E[续聊结束] E --> F[恢复原模式] style A fill:#e8f4f8,stroke:#1a6b8a,stroke-width:2px style B fill:#d6eaf8,stroke:#1a6b8a,stroke-width:2px style C fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style D fill:#fadbd8,stroke:#c0392b,stroke-width:2px style E fill:#d5f5e3,stroke:#27ae60,stroke-width:2px style F fill:#fdebd0,stroke:#b7950b,stroke-width:2px
5. 常见问题
问:外出模式下手机没收到提问推送,AI 会卡住吗?
答:不会。提问推送后 a4phone 等待 timeout 秒(默认 60,planTimeout 默认 300),超时后自动回退终端原生提问,AI 不会被永久阻塞。
问:模式切换需要重启 Claude Code / Codex / DSH 会话吗?
答:都不需要。模式存储在 ~/.a4phone/mode.json,三个 Agent 都在每次事件时实时重新读取:Claude Code / Codex 的 Hook 每次事件读取模式文件,DSH 的 dsh-hook 插件同样在每次 tools/execute、approval/request 事件时调用 readMode() 判断,切换即时生效,无需重启任何会话。
问:任务完成通知受模式影响吗?
答:不受影响。任务完成通知在两种模式下都会推送到手机(前提是已配置话题)。
举手提问