返回列表

博客

5 种在手机上监控 AI 编程智能体的方法

AI 编程智能体在你不看的时候工作。五种实用方式让你随时掌握状态,无需一直盯着屏幕。

发布于 标签: workflow / productivity / guide / seo
博客

继续查看该栏目下的产品与工程更新。

浏览此分类

Claude Code 等 AI 编程智能体可以在单个任务上运行数分钟甚至数小时。它们自主重构代码、编写测试、修复 bug、提交更改。生产力提升是真实的,但也带来了新问题:走开之后,你怎么知道发生了什么?

坐在桌前盯着 Claude 思考,违背了初衷。你需要的监控方式应当:没事时安静,需要你时提醒。

以下是五种实用方法,从最简单到最深度集成。

1. 关键事件推送通知

方法: 仅在智能体需要你时收到通知——任务完成、错误、审批请求。

这是最高杠杆的监控方式,因为它是被动的。你不需要主动检查,手机会来告诉你。

值得通知的关键事件:

  • 任务完成 — Claude 完成了你的要求,该去审查了。
  • 需要审批 — Claude 想执行可能有破坏性的操作(删除文件、运行陌生命令),等待你的 Y/N。
  • 遇到错误 — 出了问题,Claude 无法继续。
  • 会话启动 — 新的编程会话开始了(对团队感知有用)。

Tactic Remote 的实现方式: Mac 服务器集成了 Claude Code 的 hook 系统。当 Claude 触发 hook 事件(Stop、Notification、SessionStart)时,服务器通过 WebSocket 将其推送到已连接的 iPhone。iOS 应用将这些事件转为原生通知,显示在锁屏上。

事件去重防止通知轰炸——3 秒窗口内的多个快速事件会合并为一条。

你需要什么: 一个能与智能体事件系统集成的工具。对于 Claude Code,这意味着 hook 脚本。对于其他智能体,你可能需要自定义 webhook 集成。

2. 实时终端流式输出

方法: 打开手机,看到智能体正在做的事情——实时终端输出。

有时你需要比通知更多的上下文。也许 Claude 说"任务完成",但你想看看它如何解决了问题。又或者你好奇它是否在正确的方向上推进。

终端流式输出让你看到原始输出,就像坐在 Mac 前一样:

Claude: I'll refactor the UserService to use dependency injection.

First, let me examine the current implementation...

Reading src/services/UserService.ts...

The current class has 3 hard-coded dependencies:
- DatabaseClient (instantiated in constructor)
- CacheService (imported as singleton)
- LoggerService (global instance)

I'll create interfaces for each and inject them via constructor...

Writing src/services/UserService.ts...
Writing src/services/interfaces/IUserService.ts...
Writing src/tests/UserService.test.ts...

实现要点:

  • ANSI 色彩渲染很重要。Claude Code 使用颜色区分叙述、代码块和系统消息。去掉颜色的监控工具会丢失重要的视觉结构。Tactic Remote 的终端渲染器支持完整的 256 色和 24 位 RGB。
  • 缓冲区管理很重要。Claude Code 在长时间任务中可能产出数千行输出。Tactic Remote 使用环形缓冲区(500K 字符、最多 10K 行),保持最近输出可访问,同时防止内存无限增长。
  • 滚动位置很重要。你希望默认看到最新输出,但在排查问题时能回溯历史。

3. 会话仪表盘

方法: 一览所有活跃编程会话——哪些项目、什么状态、最后活动时间。

如果你同时运行多个 Claude Code 会话(不同项目、不同任务),你需要能够:

  • 查看存在哪些会话
  • 知道哪些在活跃工作,哪些在空闲
  • 快速切换会话
  • 无需输入 tmux 命令就能创建新会话

Tactic Remote 的会话管理显示:

  • 会话名称(从项目文件夹自动生成,或自定义)
  • 项目路径
  • 连接状态
  • 快捷操作:切换、创建、删除

当你在多个仓库间监控后台任务时特别有用。不必记住哪个 tmux 会话名对应哪个项目,你看到的是一个清晰的列表。

DIY 替代方案: 如果你使用 SSH,可以用 tmux 状态脚本实现基本的会话感知:

# List all tmux sessions with their last activity
tmux list-sessions -F '#{session_name}: #{session_activity} (#{session_windows} windows)'

但这需要你 SSH 登录、运行命令、自己解析输出。它不会主动推给你——你必须主动拉取。

4. 结构化命令快捷方式

方法: 预置命令,让你无需打字就能快速检查状态、费用和智能体状态。

在手机上监控时,打字成本很高。小屏幕、没有物理键盘、自动纠正和代码语法打架。每减少一个按键操作,监控体验就好一分。

对 AI 智能体监控有用的快捷方式:

操作命令用途
查看费用/cost查看当前会话消耗了多少
查看状态/status查看 Claude 是在运行、等待还是空闲
压缩对话/compact会话过长时减少上下文窗口占用
快速批准Y 按钮无需打开键盘即可批准待处理操作
快速拒绝N 按钮拒绝待处理操作
中断Ctrl+C立即停止 Claude

Tactic Remote 通过键盘工具栏(Esc、Tab、Ctrl+C、Y、N、方向键)和代码片段系统实现这些功能,内置按类别组织的模板(Claude、Git、System)。自定义片段让你可以添加自己的常用命令。

代码片段方式值得强调:不用记住精确命令,你只需点击一个类别、选择一个命令,即可发送。这使得在手机上的监控速度甚至超过了全键盘操作。

5. 事件日志审计

方法: 智能体所有操作的持久记录,可搜索、可回顾。

通知告诉你现在发生了什么。终端流式输出显示实时状态。事件日志告诉你,在你不在的时候发生了什么。

Tactic Remote 的 Mac 应用维护一个事件日志,记录:

  • Claude Code 的 hook 事件(带时间戳)
  • 会话创建和销毁
  • 连接事件

适用场景:

  • 晨间复盘: "Claude 昨晚做了什么?"(如果你让它一直运行的话)
  • 调试定位: "错误到底是什么时候发生的?"
  • 操作追溯: "哪些变更被批准了,是什么时候?"

如果你要自建监控,最简可行的事件日志是:

# In your Claude Code hook scripts, append to a log
echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) $HOOK_EVENT $SESSION_NAME" >> ~/.claude/event.log

然后通过你选择的远程访问方式从手机查看。

组合使用:实用工作流

这些方法组合使用效果最佳。具体如下:

默认状态:仅推送通知(方法 1)

  • 手机在口袋里
  • Claude 在工作
  • 你在做别的事

通知到达:切换到终端流式输出(方法 2)

  • "任务完成" — 打开 Tactic Remote,查看输出
  • "需要审批" — 看看 Claude 想做什么,点 Y 或 N
  • "错误" — 查看终端,发送修正指令

快速检查:会话仪表盘(方法 3)

  • 会议间隙瞄一眼手机
  • 看到三个会话都在运行
  • 没有通知就没有问题

状态查询:使用快捷方式(方法 4)

  • 点击 /cost 检查 token 用量是否合理
  • 点击 /status 确认 Claude 仍在工作
  • 只需 2 秒

一天结束:查看事件日志(方法 5)

  • 查看完整的事件时间线
  • 确认所有任务已完成
  • 记下需要明天跟进的事项

当前工具的不足

坦诚说明当前工具的差距:

  • 审批前的 Diff 预览 — 在点击 Y 之前,精确看到 Claude 想改什么代码。目前你能看到终端输出,但结构化的 diff 视图会更好。
  • 费用告警 — token 花费超过阈值时自动通知。目前需要手动检查 /cost。
  • 多智能体监控 — 一个仪表盘同时监控 Claude Code、Copilot 等智能体。目前每个工具有各自的监控方式。
  • 团队可见性 — 让多个开发者看到同一个智能体的活动。目前 Tactic Remote 是单用户的。

这些是随着 AI 智能体使用的成熟,工具会逐步改进的领域。目前,以上五种方法覆盖了个人开发者的实际监控需求。

立即体验 Tactic Remote

用手机远程控制编程 Agent

连接 Mac、Windows 或 Linux 电脑上的 Claude Code、Codex 等 Agent,在 iPhone 或 iPad 上查看进展并发送下一条要求。