AgentPulse:实时监控所有的 OpenCode Agent 跑到哪一步了

如果你平时习惯用 OpenCode 同时开好几个终端跑不同的 AI Agent 任务,大概率遇到过这种情况:切来切去找不到哪个窗口在跑、哪个已经跑完、哪个卡住了。今天要介绍的这个开源小工具 AgentPulse,就是专门为解决这个问题而生的------一个置顶悬浮的 AI Agent 运行状态中心。

项目地址:wuiyan/AgentPulse

它是什么

AgentPulse 是一个基于 Electron + React 的 Windows 桌面小工具,作用很单纯:实时监控本机正在运行的多个 OpenCode 会话状态,并以一个常驻置顶的小窗口形式展示出来,方便你随时掌握"现在有几个 Agent 在跑、跑到哪一步了、用的什么模型、花了多长时间"。

比较值得一提的是它的实现思路。市面上类似的监控工具很多会选择往目标程序里注入插件,或者搭一个 WebSocket bridge 来转发数据,但 AgentPulse 刻意避开了这两种做法:

  • 不依赖 OpenCode 插件注入
  • 不修改 OpenCode 配置文件
  • 不使用 WebSocket bridge

它的做法是扫描 Windows 进程树和本机 TCP 监听端口,找到正在运行的 OpenCode Server,然后直接走 OpenCode SDK 提供的 HTTP/SSE 接口去获取会话状态------相当于"旁路观察",不侵入目标进程本身。

界面长什么样

主界面按项目目录分组,展示当前正在执行或者已经追踪过的会话,可以看到任务标题、状态、耗时和使用的模型:

设置面板则提供了全局快捷键、会话定位失败后的启动策略,以及窗口置顶开关等选项:

整体窗口宽度只有 400px,走的是"桌面小工具"路线,不会占用太多屏幕空间,默认还会保持窗口始终置顶(也可以在设置里关掉)。

核心功能一览

  • 自动扫描 Windows 进程树和本机 TCP 监听端口,发现可访问的 OpenCode Server
  • 基于 OpenCode SDK v2 做健康检查、初始会话同步和 SSE 实时事件订阅
  • 只展示"已经开始执行"的会话,避免历史会话把列表刷屏
  • 按项目目录分组,支持项目组拖拽排序
  • 点开会话时会尝试唤醒并置前对应的 VS Code、Windows Terminal 或 PowerShell 窗口
  • 支持启动时扫描、手动扫描,以及通过 OpenCode shim 的启动/退出通知触发扫描
  • Windows 安装包(NSIS)安装时可自动配置好 OpenCode shim,免去手动配置的麻烦

工作原理简述

整体的数据流大致是这样的:

yaml 复制代码
Windows 进程表 + TCP 监听端口
               |
               v
       OpenCode Server 发现
               |
               v
         HTTP 健康检查
               |
               v
   初始会话同步 + Global SSE 事件
               |
               v
           SessionStore
               |
               v
        Electron React 界面

细节上有几个点比较值得关注:

程序只接受 loopback(本机回环)地址上的 HTTP 监听端口,并沿着监听进程的父进程链去查找对应的 OpenCode 进程和宿主窗口。进程快照采集用的是 systeminformation 库,其中 processes() 拿进程树,networkConnections()(内部通过 netstat -nao)拿 TCP 监听端口------因为这两个数据是分别独立获取的,短时间内理论上可能出现进程和端口状态对不上的情况,这也是作者在文档里坦率提到的一个已知限制。

会话数据在连接建立时先做一次初始同步,之后完全依赖 SSE 事件更新,不会有后台定时全量扫描去反复轮询。

OpenCode shim 是怎么工作的

这是 AgentPulse 实现"自动发现"的一个关键设计。安装包在安装时会尝试:

  1. 查找系统中已安装的 OpenCode 可执行文件
  2. %LOCALAPPDATA%\AgentPulse\bin 生成一个 shim(垫片程序)
  3. 把 shim 目录加进系统 PATH,并且排在 Node.js 目录之前
  4. 期间可能会弹出 UAC 权限请求

装上 shim 之后,效果是:只有你敲不带任何参数的裸命令 opencode 时,才会被自动加上一个随机的 loopback 端口(等价于 opencode --port <随机端口>),从而让它变成一个可以被 AgentPulse 发现的 Server;而只要命令带了参数(比如 opencode --versionopencode serveopencode attach ...),shim 都会原样透传给真正的 OpenCode,不做任何干预。shim 内部保存了真实 OpenCode 的目标路径,不会重复走 PATH 查找,避免递归调用自己。

另外,OpenCode 启动或退出时,shim 会通过本机 Named Pipe 给正在运行的 AgentPulse 发一次性通知,触发一次扫描------通知本身不包含任何会话内容,AgentPulse 没运行或者通知失败也完全不影响 OpenCode 正常启动退出。

需要注意的是,普通的 opencode TUI 默认走内部 worker,通常不会暴露外部可访问的 HTTP 端口,这类实例是被有意识地排除在发现范围之外的,只有 opencode serveopencode webopencode --port <port> 这几种带监听端口的启动方式才能被发现。

隐私与安全方面的设计

对于这种需要访问其他进程数据的工具,隐私安全通常是大家比较关心的点,AgentPulse 在这块的设计还算克制:

  • Server 连接被限制在本机 loopback 地址内
  • 不修改 OpenCode 配置文件,不注入任何 OpenCode 插件
  • 不使用 WebSocket bridge 传输会话数据
  • Named Pipe 仅用于本机的启动/退出通知,使用随机管道名并做 token 校验
  • 不会把会话提示词或会话内容上传到远程服务
  • 系统 PATH 的修改只在安装 shim 时发生,且需要管理员权限

怎么用起来

直接装安装包 (推荐给普通用户):从 GitHub Releases 下载类似 AgentPulse-<version>-x64.exe 的安装包,装完基本就能用,shim 会自动配置好。装完/卸载完建议重启一下已经打开的 PowerShell、Windows Terminal 和 VS Code,让它们重新读取 PATH。

从源码跑(适合想改代码或者本身就是折腾党):

bash 复制代码
pnpm install
pnpm dev          # 启动 Electron 开发模式
pnpm typecheck     # TypeScript 类型检查
pnpm test          # Vitest 测试
pnpm shim:install  # 手动装 shim,需要管理员权限
pnpm build         # 构建主进程、预加载脚本和渲染器
pnpm package       # 打 Windows NSIS 安装包

环境要求也很简单:Windows + Node.js + pnpm 10+,如果只是构建测试代码,甚至不需要本机装 OpenCode。

小结

AgentPulse 解决的是一个很具体、很"手感"层面的痛点:多开 Agent 任务之后如何一眼看清整体进度。它没有走插件注入或者 bridge 转发这种相对"重"的路线,而是选择了基于进程扫描 + 官方 SDK 的旁路观察方式,实现上更轻量,也更不容易因为 OpenCode 自身升级而"水土不服"。目前项目主要面向 Windows 平台,且仓库还没有附带 LICENSE 文件,如果想在生产环境或者对外分发前使用,建议先关注一下作者后续的许可证补充情况。

对于日常需要同时盯多个 OpenCode 会话的开发者来说,这算是一个体积不大但用起来挺顺手的效率工具,感兴趣的话可以去仓库看看:wuiyan/AgentPulse

相关推荐
YIAN40 分钟前
React + Zustand + JWT 前端权限体系完整实现:从登录鉴权到路由守卫全流程拆解
前端·react.js·架构
大刚测试开发实战1 小时前
用例写不完、回归跑不动?我把最磨人的活交给 TestHub,KPI 反而稳了
ai编程·测试·claude
杨杨杨大侠1 小时前
一次大模型 API 请求是怎么跑起来的:从 Harness 到 GPU、并发与 KV Cache
aigc·openai·ai编程
wangruofeng4 小时前
2000+ 小时实战后,我的 Agentic Engineering 全套装备「精译」
aigc·agent·ai编程
露天赏雪4 小时前
掘金小册样章
java·开发语言·人工智能·ai编程
wangruofeng4 小时前
Claude Fable 5.1 发布,一个模型两种安全档,账单最多省 45%
aigc·ai编程·claude
光影少年5 小时前
react navite高频手写/实操题
前端·javascript·react native·react.js·前端框架
plainGeekDev6 小时前
软件工程术语库·编码与设计篇
aigc·ai编程
全栈弄潮儿6 小时前
真实案例:用 AI 快速定位一次代码问题
aigc·openai·ai编程