skills-experimental/analytics-telemetry/SKILL.md
Analytics & Telemetry - Session tracing, event logging, and analytics reporting. Performance monitoring and usage statistics. Use when tracking session events, monitoring performance, or reporting usage statistics.
npx skillsauth add bianhaifeng789-hue/openclaw-config analytics-telemetryInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
会话追踪和分析系统 - 监控性能和统计使用数据。
问题:
解决:
追踪会话的全生命周期:
| 事件类型 | 说明 |
|---------|-----|
| session_start | 会话开始 |
| session_end | 会话结束 |
| message_sent | 发送消息 |
| tool_call | 工具调用 |
| api_request | API 请求 |
| cache_hit | Cache 命中 |
| compact | 上下文压缩 |
| fork_agent | Forked agent |
记录和分析关键事件:
| 分析指标 | 说明 | |---------|-----| | 总会话数 | 统计活跃度 | | 平均时长 | 用户参与度 | | 工具调用次数 | 功能使用 | | API 调用统计 | Token 使用 | | Cache 命中率 | 效率指标 | | 错误率 | 系统稳定性 |
import { sessionTracing, analyticsService } from './analytics-telemetry'
// 开始追踪
sessionTracing.startSessionTrace(
'session-123',
'feishu_message',
'feishu',
'ou_xxx'
)
// 记录分析事件
analyticsService.logSessionStart('session-123', 'feishu', 'ou_xxx')
// 记录工具调用
sessionTracing.recordToolCall('read', true, 150)
analyticsService.logToolUsage('read', true, 150, 'session-123')
// 记录 API 调用
sessionTracing.recordApiRequest(
'claude-sonnet-4',
5000, // input
1000, // output
3000, // cache read
0, // cache create
2500 // latency
)
analyticsService.logApiCall('claude-sonnet-4', 5000, 1000, 2500, true)
// 结束追踪
const trace = sessionTracing.endSessionTrace('session-123')
// 记录分析
analyticsService.logSessionEnd(
'session-123',
trace.totalDurationMs,
trace.events.length,
trace.toolStats?.callCount ?? 0,
trace.apiStats?.totalTokens ?? 0
)
import { analyticsService } from './analytics-service'
// 生成报告(最近24小时)
const report = analyticsService.generateAnalyticsReport(
Date.now() - 24 * 60 * 60 * 1000,
Date.now()
)
console.log('总会话:', report.summary.totalSessions)
console.log('平均时长:', report.summary.avgSessionDurationMs)
console.log('Cache命中率:', report.summary.cacheHitRate)
console.log('常用工具:', report.topTools)
借鉴 Claude Code 的 forked agent tracing:
// 父会话
const parentChain = sessionTracing.startTraceChain('session-123')
// Forked agent(子链)
const childChain = sessionTracing.createChildChain('session-123')
// depth = 1
// 在子链中记录事件
sessionTracing.recordTraceEvent('memory_extract', 'Extracting memories')
// 结束子链
sessionTracing.endTraceChain()
// 回到父链
// depth = 0
用于性能分析工具:
import { sessionTracing } from './session-tracing'
const trace = sessionTracing.getSessionTrace('session-123')
const perfettoEvents = sessionTracing.exportToPerfetto(trace)
// 保存为 JSON
// 可以导入到 Perfetto UI 分析
Perfetto 格式:
[
{
"name": "Tool: read",
"ts": 1703275200000000,
"dur": 150000,
"pid": 1,
"tid": 1,
"ph": "X",
"cat": "tool_result",
"args": { "toolName": "read", "success": true }
}
]
| Claude Code | OpenClaw |
|-------------|----------|
| telemetry/sessionTracing.ts | session-tracing.ts |
| telemetry/perfettoTracing.ts | exportToPerfetto() |
| analytics/events.ts | analytics-service.ts |
| analytics/logger.ts | logAnalyticsEvent() |
import { sessionTracing } from './session-tracing'
const summary = sessionTracing.getTracingSummary()
console.log('总会话:', summary.totalSessions)
console.log('总事件:', summary.totalEvents)
console.log('平均API延迟:', summary.avgApiLatencyMs)
console.log('平均工具时长:', summary.avgToolDurationMs)
console.log('总Token:', summary.totalTokensUsed)
console.log('Cache节省:', summary.tokensSavedByCache)
与飞书心跳整合:
// 在 heartbeat 中收集统计
const report = analyticsService.generateAnalyticsReport(
heartbeatState.lastCheck,
Date.now()
)
// 如果有异常,发送飞书卡片
if (report.summary.errorRate > 0.1) {
await message({
action: 'send',
card: {
type: 'template',
data: {
template_id: 'blue_card',
template_variable: {
title: '⚠️ 错误率警告',
content: `错误率: ${(report.summary.errorRate * 100).toFixed(1)}%`
}
}
}
})
}
analyticsTelemetry:
enabled: true
maxEvents: 5000 # 最大事件数
autoSaveInterval: 1h # 自动保存间隔
perfettoExport: false # 是否导出 Perfetto
logLevel: 'info' # 日志级别
{
"totalSessions": 25,
"totalEvents": 500,
"eventCounts": {
"session_start": 25,
"tool_used": 120,
"api_call": 80
},
"summary": {
"avgSessionDurationMs": 300000,
"avgApiLatencyMs": 2500,
"cacheHitRate": 0.45
}
}
impl/utils/session-tracing.ts - 会话追踪impl/utils/analytics-service.ts - 分析服务memory/analytics-state.json - 状态文件src/telemetry/sessionTracing.tssrc/telemetry/perfettoTracing.tssrc/analytics/events.tsbusiness
IAA 日报飞书输出能力。 支持把固定 CSV 模板一键转换成: - 中文运营结论 - 飞书卡片 JSON - 飞书发送载荷 Use when: - 需要把 IAA 日报直接发到飞书 - 需要从 CSV 一键生成运营日报
data-ai
IAA日报分析模型 功能: - 渠道日报自动分析 - 小时级+日级ROI联动判断 - 按地区输出加量/降量/停投建议 - 按产品类型输出阈值 - 自动识别利润区/观察区/止损区 Use when: - 分析每天投放数据 - 生成运营日报结论 - 判断是否加量/降量/停投 - 对比美加澳/日韩表现 Keywords: - 日报模型, 投放日报, 加量, 降量, 停投, ROI日报, 分地区分析
data-ai
IAA固定日报分析模板 功能: - 固定字段模板(可直接贴每天数据) - 自动输出总盘结论 - 自动输出美加澳/日韩结论 - 自动给出加量/降量/停投建议 - 适配文件修复/清理两类产品 Use when: - 需要固定日报格式 - 每天复盘渠道表现 - 给运营团队出统一结论 Keywords: - 固定模板, 日报模板, ROI模板, IAA日报, 运营模板
development
# HyperlinkPool Pattern Skill HyperlinkPool Pattern - HyperlinkPool class + strings array + stringMap + Index 0 no hyperlink + intern(hyperlink) + get(id) + undefined handling + 5-minute reset + OSC8 hyperlink interning。 ## 功能概述 从Claude Code的ink/screen.ts提取的HyperlinkPool模式,用于OpenClaw的OSC8超链接池管理。 ## 核心机制 ### HyperlinkPool Class ```typescript export class HyperlinkPool { private strings: string[] = [''] // Index 0 = no hyperlink private stringMap = new Map<string, number>() // strings