Session Monitor

Polar Sponsor
爱发电 赞助
.NET 9.0

实时 OpenClaw 会话监控器,追踪 JSONL 记录并以持久后台进程向 Telegram 推送格式化更新。适用于在被询问时

会话监视器 : 持续的背景过程, 将 JSONL 全部记录文件输入到一个: 代理会话目录, 解析新条目, 并将格式化的 HTML. 更新到一个 Telegram

功能概述

会话监视器 : 持续的背景过程, 将 JSONL 全部记录文件输入到一个: 代理会话目录, 解析新条目, 并将格式化的 HTML. 更新到一个 Telegram是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

会话监控器(Session Monitor)

一个持久运行的后台进程,持续轮询 Agent 会话目录下的所有 JSONL 转录文件,解析新增条目,并将格式化后的 HTML 更新推送到 Telegram 聊天窗口。同一时间窗口内的消息通过 editMessageText 合并发送,以避免刷屏。

适用场景

  • 用户需要对 Agent 活动进行持续、推送式(push-based)监控
  • 用户希望在 Telegram 聊天窗口中拥有一个实时仪表盘(live dashboard),直观展示 Agent 的行为
  • 不适用于一次性查询——此类场景请改用 sessions_list / sessions_history

快速开始

# 1. 配置
cp scripts/.env.example scripts/.env
# 编辑 scripts/.env,填入 Bot Token、聊天 ID、会话目录路径、用户/群组映射等信息

# 2. 试运行(验证解析逻辑是否正常)
node scripts/test.js

# 3. 启动(支持 exec 会话安全运行 — 即使 Agent 会话结束也不会退出)
node scripts/index.js > scripts/monitor.log 2>&1 &

⚠️ Agent exec 会话注意事项:通过 Agent 的 exec 工具内使用 nohup & 启动的进程,在 exec 会话被清理时可能被终止。 建议在你的 HEARTBEAT.md 中添加看门狗脚本实现自动重启:

PID=$(cat scripts/.pid 2>/dev/null)
if [ -z "$PID" ] || ! ps -p "$PID" > /dev/null 2>&1; then
  cd scripts && node index.js > monitor.log 2>&1 &
fi

配置(.env)

变量名 是否必需 说明
BOT_TOKEN ✅ Telegram Bot Token,用于发送更新消息
CHAT_ID ✅ 目标 Telegram 聊天 ID(支持群组或私聊)
AGENTS ❌ 多 Agent 模式:Name|/path/to/sessions,Name2|/path2
AGENT_NAME ❌ 单 Agent 显示名称(当未设置 AGENTS 时作为回退值)
SESSIONS_DIR ❌ 单 Agent 会话目录(默认为:~/.openclaw/agents/main/sessions)
DIRECT_USERS ❌ 私聊用户映射:userId:Name,userId2:Name2
GROUPS ❌ 群组映射:groupId:Name,groupId2:Name2

显示格式说明:私聊显示为 ✈ AgentName↔UserName,群组显示为 ✈ GroupName。

架构设计

scripts/
├── index.js      — 主循环:轮询 JSONL 文件、累积新条目、发送/编辑 Telegram 消息
├── parser.js     — 将 JSONL 条目解析为 {sender, text} 格式的展示对象
├── formatter.js  — 合并同发送者消息、按会话排序、构建 HTML 内容
├── sender.js     — Telegram API 封装:sendMessage / editMessageText,含队列机制
├── sessions.js   — 会话键查找、标签格式化、子 Agent 名称解析
├── config.js     — 加载 .env 配置
├── test.js       — 试运行:解析最近条目并输出至 stdout
├── .env.example  — 配置模板文件
└── .env          — 本地配置文件(已加入 .gitignore)

调优参数

在 scripts/index.js 中可调整以下参数:

  • POLL = 3000 — 轮询间隔(毫秒),默认为 3 秒
  • MERGE_WINDOW = 1 — 将 N 分钟内产生的变更合并为一条 Telegram 消息
  • NEW_MSG_THRESHOLD = 3000 — 当当前消息字符数超过该阈值时,强制开启新消息

消息格式

详细格式规范请参阅 references/REFERENCE.md,包括:

  • 发送者图标(🤖 assistant、👤 user、⚡ system、↩️ tool result)
  • Tool call 的格式化与截断规则
  • 会话标签(session tag)的格式与排序逻辑
  • Telegram 消息投递机制与速率限制策略

进程管理

PID 文件位于 scripts/.pid,启动时写入,退出时清除。 为避免共享机器上多个监控器冲突,请始终使用绝对路径:

# 检查是否正在运行
SKILL_DIR=/path/to/session-monitor
cat "$SKILL_DIR/scripts/.pid" && ps -p $(cat "$SKILL_DIR/scripts/.pid") -o pid,command

# 停止
kill $(cat "$SKILL_DIR/scripts/.pid")

# 查看日志
tail -f "$SKILL_DIR/scripts/monitor.log"

⚠️ 同一台机器上可共存多个 Session Monitor 实例(各自拥有独立的 .env、.pid 和日志文件)。请确保始终引用正确的 Skill 目录路径。

重启 / 停止 / 状态检查

请将 SKILL_DIR 替换为本 Skill 所在目录(即 scripts/ 的父目录)。

# 状态检查 — 监控器是否正在运行?
SKILL_DIR=/absolute/path/to/session-monitor
PID=$(cat "$SKILL_DIR/scripts/.pid" 2>/dev/null)
if [ -n "$PID" ] && ps -p "$PID" > /dev/null 2>&1; then
  echo "✅ Monitor 运行中(PID $PID)"
else
  echo "❌ Monitor 未运行"
fi

# 停止
kill $(cat "$SKILL_DIR/scripts/.pid")

# 启动
cd "$SKILL_DIR/scripts" && node index.js > monitor.log 2>&1 &

# 重启(先停止再启动)
kill $(cat "$SKILL_DIR/scripts/.pid") 2>/dev/null; sleep 1
cd "$SKILL_DIR/scripts" && node index.js > monitor.log 2>&1 &

注意事项

  • 零依赖 — 完全基于 Node.js 标准库实现
  • 启动时会发送一条示例横幅消息,用于验证 Telegram 连通性
  • 单条消息超过 4000 字符时将被截断,并在下一次轮询时强制开启新消息
  • Telegram API 调用间至少间隔 3 秒(防限流)

相关专题

更多
cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

2025.08.19

1446

14

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

2023.10.18

856

5

session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

2023.10.17

560

4

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

0

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

0

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

0

10

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

2026.10.16

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Revel 官方开发手册
Revel 官方开发手册

共0课时 | 0人学习

Beego 官方文档首页
Beego 官方文档首页

共0课时 | 0人学习

Laravel 5.8 中文文档手册
Laravel 5.8 中文文档手册

共74课时 | 139.6万人学习