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 --version、opencode serve、opencode attach ...),shim 都会原样透传给真正的 OpenCode,不做任何干预。shim 内部保存了真实 OpenCode 的目标路径,不会重复走 PATH 查找,避免递归调用自己。

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

需要注意的是,普通的 opencode TUI 默认走内部 worker,通常不会暴露外部可访问的 HTTP 端口,这类实例是被有意识地排除在发现范围之外的,只有 opencode serve、opencode web、opencode --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

相关推荐
重生之我在番茄自学网安拯救世界5 小时前
AI 开发者日报 第1期(本周精选)| 插件市场投毒、智能体搞出“官僚饥荒村”,十年前的 CNN 打赢大模型
人工智能·网络安全·大模型·ai编程·智能体
孟健7 小时前
用 WorkBuddy 做个人名片网页,挂上开源设计技能后效果完全不同了
前端·人工智能·ai编程
OpsEye8 小时前
企业大模型压测,需要重点关注哪些指标?
javascript·ai编程
ServBay8 小时前
AI 开发平台出事后,API Key 泄露要怎么办
后端·aigc·ai编程
AI狂想9 小时前
不会还有人把全部 Rule 塞进 alwaysApply 吧?Context 一炸,约束就蒸发 | 常驻与场景路由
ai编程
文谦南宁AI普工9 小时前
拆解 DeepSeek dsh-superagent:用 60 行代码模拟它的授权门控与 observe 模式
aigc·agent·ai编程
Hone9 小时前
我把「自动发文章到掘金」做成了一个 Agent 技能:juejin-skills
node.js·ai编程·前端工程化
前端双越老师10 小时前
程序员 1v1 访谈系列第十期:纯前端坚持不了多久了
前端·ai编程·全栈
znsoft11 小时前
MaClaw(码卡龙)技术拆解:一个 Go + React 的可自进化智能体平台
开发语言·react.js·golang
threerocks12 小时前
运营 X(Twitter)的 Chrome 插件,看这篇就够了
aigc·openai·ai编程