博客
我的日常 Tactic Remote 工作流:会话、通知与移动审查循环
我如何同时运行三个 Claude Code 智能体、在它们完成时收到推送通知、用 iPhone 审查一切——实际的日常流程,不是理论。
继续查看该栏目下的产品与工程更新。
浏览此分类我同时在三个项目上运行 Claude Code。每个处理不同的任务——前端、后端、测试。任何一个完成或需要我审批时,我的手机会收到推送通知。点击、审查、批准,然后走开。
这是我用 Tactic Remote 的实际日常工作流。没有理论,只有我每天在做的事。
TL;DR: 三个 tmux 会话,每个对应一个项目或任务。Mac 伴侣应用自动配置的 hooks 发送推送通知。用 iPhone 审查,一键批准,继续走路。
会话布局
我按项目而非工具来组织 tmux 会话。每个项目有自己的会话和工作目录:
为什么用会话而不是窗口?因为每个 Claude Code 实例需要自己的工作目录和 50,000 行滚动缓冲区。会话提供了干净的隔离——切换项目就是切换会话,不用记住哪个窗口编号对应哪个任务。
从手机创建会话
在 Tactic Remote 应用中:
- 点击会话选择器(屏幕顶部)
- 点击"创建会话"
- 命名(例如
webapp) - 使用路径选择器浏览到项目目录
- 点击"启动 Claude"
后台执行的操作:
然后对 api 和 mobile 重复同样的操作。三个会话,三个独立的 Claude Code 实例,各自指向正确的项目。
通知管线
这是让整个工作流切实可行的关键部分。没有通知,你就得不断查看手机确认 Claude 是否完成了。有了通知,你可以真正地走开。
配置方式
Mac 伴侣应用在服务器启动时自动配置 Claude Code hooks,无需手动设置。它在 ~/.claude/hooks/ 写入三个 shell 脚本:
然后在 ~/.claude/settings.json 中注册这些脚本,使 Claude Code 在生命周期事件时调用它们:
事件流程
去重
Claude 有时会快速连续触发多个 hook 事件——例如连续完成多个子任务时。iOS 应用使用 3 秒窗口进行去重。如果相同事件(相同项目、相同会话、相同时间戳)在 3 秒内到达两次,重复的会被静默丢弃。没有通知轰炸。
审查循环
典型的审查周期是这样的:
步骤 1:收到通知
手机震动:"Claude Task Completed — webapp"
我在咖啡店、沙发上,或者走在去吃午饭的路上。无所谓。
步骤 2:审查输出
点击通知。Tactic Remote 直接打开 webapp 会话。我看到 Claude 的完整输出——它改了什么、在问什么、测试结果如何。
终端视图保留了 Claude Code 的所有格式:语法高亮、diff 颜色、UI 边框字符。不是精简摘要——是真实的终端输出,在手机上用 ANSI 颜色渲染。
如果输出很长,向上滚动。50,000 行的 tmux 滚动缓冲区意味着什么都不会丢失,即使我不在时 Claude 产生了大量输出。应用可以通过"加载更多"获取多达 5,000 行。
步骤 3:批准或调整
三种常见场景:
Claude 等待运行命令的权限:
Claude 显示类似这样的内容:
我点击键盘工具栏上的 Y 按钮。一次点击。Claude 继续工作。
Claude 完成并在提示符等待:
我输入新指令:"现在为 auth 模块编写测试。"点击发送。Claude 开始处理下一个任务。我放下手机。
Claude 遇到错误需要指导:
我阅读错误信息,输入应该如何调整的回复,然后发送。Claude 调整它的方案。
步骤 4:走开
批准或调整后,我切换到下一个会话(点击会话选择器,点击 api)查看另一个任务。如果还在运行,我就走开等下一个通知。
循环是:通知 → 审查 → 操作 → 走开。每次循环需要 30 秒到 2 分钟,取决于 Claude 产出了什么。
并行任务策略
并行运行多个 Claude 实例很强大,但需要一定的纪律。以下是我的经验:
给每个任务清晰完整的说明
不要发送模糊的指令,比如"处理前端"。发送具体的:
你的提示越具体,Claude 能自主工作的时间就越长。模糊的提示意味着更多的中断。
错开启动时间
不要同时启动全部三个会话。启动一个,等它开始工作(大约 5 秒后你会看到初始输出),再启动下一个。这样可以避免三个同时触发权限提示,导致三个通知同时到达。
先检查运行最久的
审查时,从运行时间最长的会话开始——它最可能已经完成或卡住。最近启动的会话可能还在工作。
使用有意义的会话名称
当你收到推送通知"Claude Task Completed — webapp"时,你需要不用思考就知道它是什么意思。不要把会话命名为 session1、session2、session3。用项目或任务来命名。
常用快捷操作
聊天视图底部的键盘工具栏有专为 Claude Code 交互设计的特殊按键:
| 按钮 | 功能 | 使用场景 |
|---|---|---|
Y | 发送 y 键 | 批准权限提示 |
N | 发送 n 键 | 拒绝权限提示 |
Enter | 发送回车 | 确认选择 |
Esc | 发送 Escape | 取消或关闭 |
Tab | 发送 Tab | 自动补全或循环选项 |
Ctrl+C | 发送中断 | 停止失控进程 |
Y 和 N 按钮的存在是因为 Claude Code 的权限提示是最常见的交互。能够一键批准——而不是在手机键盘上打"y"——让移动端工作流切实可行。
我的 .tmux.conf
很简单,没有花哨的东西:
Tactic Remote 在创建会话时会将滚动缓冲区设为 50,000,所以 .tmux.conf 的设置是你手动创建会话时的兜底。
实际场景
典型的一个早上:
8:00 AM — 坐到 Mac 前。三个项目需要处理。从 Mac 伴侣应用创建三个会话(或者从 iPhone 创建——都可以)。
8:05 AM — 在每个会话中给 Claude 发送详细任务。走去厨房。
8:20 AM — 第一个通知:api 会话完成。在 iPhone 上审查。Claude 添加了速率限制,测试通过。发送下一个任务:"现在把速率限制 headers 添加到 API 文档中。"
8:35 AM — 第二个通知:webapp 会话需要批准。打开它。Claude 想安装一个新依赖。检查看起来没问题。点击 Y。走到桌前。
8:50 AM — 第三个通知:mobile 会话完成。审查。没问题。开始新任务。
9:00 AM — 坐到 Mac 前。三个项目都有了显著进展。在 git 中审查 diff,commit,push。
一小时,三个项目,大部分时间在泡咖啡和吃早餐。手机审查循环意味着 Claude 从不因为我不在桌前而被阻塞。
建议
立即启用通知。 hooks 由 Mac 伴侣应用自动配置,但你需要在 iPhone 提示时授予通知权限。首次启动时就做——整个工作流依赖于此。
把 Tactic Remote 放在 dock 里。 在活跃开发期间你一天会打开它 20-30 次。一键可达很重要。
信任滚动缓冲区。 当你重新连接到会话时,所有输出都在那里。你不需要问 Claude"你做了什么?"——直接向上滚动阅读终端输出。
不要微管理。 这个工作流的要点是给 Claude 实质性的任务然后走开。如果你每 2 分钟就检查一次,那就用错了。给它一个 15 分钟的任务,等通知,然后审查。
关于服务器、tmux 和通知底层运作的技术细节,请参阅从手机远程运行 Claude Code。初始设置请参阅快速开始。