Skip to content

feat(observability): 集成 OpenTelemetry 可观测性能力#243

Open
aaronwong1989 wants to merge 9 commits intomainfrom
fix/238-observability-integration
Open

feat(observability): 集成 OpenTelemetry 可观测性能力#243
aaronwong1989 wants to merge 9 commits intomainfrom
fix/238-observability-integration

Conversation

@aaronwong1989
Copy link
Collaborator

@aaronwong1989 aaronwong1989 commented Mar 8, 2026

需求背景

当前 Hotplex 系统缺乏会话级别的可观测性能力,无法追踪:

  • 用户在哪个平台发起会话 (Slack/Telegram/Discord...)
  • 会话持续时间、轮次、错误分布
  • 工具调用热度、Token 消耗
  • 任务类型分布 (代码/调试/分析/聊天)

这导致运维和优化决策缺乏数据支撑。

实现功能

1. 可观测性字段集成 (chatapps/engine_handler.go)

  • Platform/UserID/ChannelID/TeamID: 从消息上下文自动提取
  • TaskType: 通过 detectTaskType() 自动识别任务类型 (code/git/debug/analysis/chat)
  • TraceID: 使用 trace.GenerateSimple() 生成会话追踪ID
  • PromptSummary: 记录用户意图摘要 (前100字符)

2. 结构化日志 (engine/runner.go)

  • 日志添加语义字段: platform/user_id/channel_id/task_type/trace_id
  • 支持 ELK/Loki 等日志系统聚合查询

3. 维度化指标 (internal/telemetry/metrics.go)

  • RecordSessionDuration: 会话时长分布
  • IncSessionTurns: 会话轮次统计
  • IncSessionErrorsByType: 错误类型分布
  • IncToolsInvokedByType: 工具调用热度
  • RecordTokens: Token 消耗统计

4. Trace ID 生成 (internal/trace/traceid.go)

  • 修复 rand.Read 错误处理
  • 失败时回退到时间戳方案

5. Visualizer 事件翻译 (brain/visual.go)

  • Provider 事件 -> 人类可读消息
  • 支持 Slack/Discord/Telegram 等平台格式化

测试

  • Go build: pass

Related

探云 Bot and others added 2 commits March 8, 2026 02:22
…efs #214)

- Add SessionContext fields to types.Config (Platform, UserID, ChannelID, etc.)
- Add trace ID generator for distributed tracing
- Enhance engine logs with semantic fields (platform, task_type, trace_id)
- Add token recording with platform/task_type dimensions
- Add brain/visual.go for event translation
- Add brain/memory.go for context compression
- Fix rand.Read error handling in traceid.go
- Fill Config observability fields in engine_handler.go
- Add detectTaskType for automatic task classification
- Update runner.go logs with semantic fields
- Add dimensioned metrics methods in metrics.go
- Add brain/visual.go for event translation

Resolves review comments from PR #238
@aaronwong1989 aaronwong1989 changed the title fix(observability): complete integration for PR #238 feat(observability): 集成 OpenTelemetry 可观测性能力 Mar 8, 2026
探云 Bot added 2 commits March 8, 2026 13:37
- Run goimports on brain/config.go, brain/guard.go, brain/llm/metrics.go
- Format chatapps/slack/builder.go, chatapps/slack/streaming_writer.go
- Fix internal/secrets/provider.go, internal/telemetry/metrics.go
- Format plugins/storage/interface.go and provider/*.go files

Refs #214
…orage

- Return error when WriteFile fails instead of ignoring the result
- This prevents silent failures during export/backup operations

Refs #214
aaronwong1989 pushed a commit to aaronwong1989/hotplex that referenced this pull request Mar 8, 2026
aaronwong1989 pushed a commit to aaronwong1989/hotplex that referenced this pull request Mar 8, 2026
- Fix race condition in GlobalVisualizer using sync.Once
- Fix import grouping in engine_handler.go
- Add logging for rand.Read errors in traceid.go
- Add unit tests for detectTaskType function

Refs hrygo#243

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(session): Session 语义化与可观测性增强

1 participant