可观测性
wesclaw 提供丰富的可观测性功能,帮助你了解 AI 的使用情况、Token 消耗、运行状态和问题诊断。
概述
wesclaw 的可观测性覆盖以下维度:
| 维度 | 说明 | 访问入口 |
|---|---|---|
| Token 用量 | 模型调用的 Token 消耗统计 | 设置 → 用量统计 |
| Run 追踪 | 每次 Run 的详细执行记录 | 记忆中心 → 运行日志 |
| 会话统计 | 对话数量、消息数量等 | 设置 → 关于 |
| 崩溃日志 | 引擎异常和崩溃记录 | 数据目录/crashes/ |
Token 用量查询
基本用量
在 设置 → 用量统计 中可以查看 Token 用量概览:
- 总输入 Token 数
- 总输出 Token 数
- 按模型分组的用量
- 按日期的用量趋势
用量统计维度
Token 用量支持多维度查询和聚合:
| 维度 | 说明 | 用途 |
|---|---|---|
| 按模型 | 每个模型的 Token 消耗 | 了解哪个模型消耗最多 |
| 按 Agent | 每个 AI 角色的消耗 | 比较不同 Agent 的效率 |
| 按会话 | 每个对话的消耗 | 找出消耗大户 |
| 按日期 | 每天/每周/每月的消耗 | 跟踪用量趋势 |
查看详细用量
记忆中心的"Token 统计"页签提供更详细的分析:
| 指标 | 说明 |
|---|---|
| 总调用次数 | LLM API 调用的总次数 |
| 总输入 Token | 发送给模型的 Token 总数 |
| 总输出 Token | 模型返回的 Token 总数 |
| 缓存命中 Token | 提示词缓存命中的 Token 数 |
| 平均每次调用消耗 | 每次 API 调用的平均 Token 数 |
按日期筛选
支持按时间范围筛选用量数据:
- 今天 — 查看当日用量
- 本周 — 查看本周汇总
- 本月 — 查看当月汇总
- 自定义范围 — 选择起止日期
费用估算
如果使用按量付费的 Provider,Token 用量可以帮助估算费用:
估算费用 ≈ 输入 Token × 输入单价 + 输出 Token × 输出单价
注意:实际费用以 Provider 账单为准。缓存命中的 Token 通常享受折扣。
Run 追踪
查看 Run 列表
在 记忆中心 → 运行日志 中查看所有 Run 的执行记录:
| 列 | 说明 |
|---|---|
| 时间 | Run 的开始时间 |
| Agent | 执行该 Run 的 AI 角色 |
| 会话 | 所属对话 |
| 状态 | 成功 / 中断 / 错误 |
| Token | 该 Run 消耗的 Token 数 |
| 时长 | Run 的执行时间 |
Run 详情
点击某个 Run 可以查看详细信息:
基本信息
- Run ID
- 开始和结束时间
- 终止原因(end_turn / interrupted / cycle_detected 等)
- 总 Token 用量
工具调用追踪
每个 Run 中的工具调用都有详细记录:
[1] web_search("天气预报") → 200ms
输入: {"query": "北京今天天气"}
输出: "晴,25°C,东风3级"
[2] read_file("notes.md") → 15ms
输入: {"path": "/notes.md"}
输出: "# 今日待办..."
[3] edit_file("notes.md") → 20ms
输入: {"path": "/notes.md", "content": "..."}
输出: "文件已保存"
Turn 追踪
Run 中每一轮 LLM 调用的详细信息:
| Turn | 角色 | Token | 耗时 |
|---|---|---|---|
| 1 | 系统提示词 | 1,200 input | — |
| 2 | 用户消息 | 50 input | — |
| 3 | AI 回复 + 工具调用 | 300 output | 2.3s |
| 4 | 工具结果 | 150 input | — |
| 5 | AI 最终回复 | 200 output | 1.8s |
Run 筛选
支持按以下条件筛选 Run:
- Agent — 按 AI 角色筛选
- 会话 — 按对话筛选
- 状态 — 成功 / 失败 / 中断
- 日期范围 — 按时间筛选
- 时长 — 按执行时长排序
会话统计
基本统计
| 指标 | 说明 |
|---|---|
| 总会话数 | 创建的对话总数 |
| 总消息数 | 所有对话中的消息总数 |
| 活跃会话 | 最近 7 天有消息的对话数 |
| 平均会话长度 | 每个对话的平均消息数 |
Cell 运行时统计
通过 设置 → 关于 查看 Cell 运行时状态:
| 指标 | 说明 |
|---|---|
| Cell 状态 | Hot / Warm / Cool / Cold |
| 引擎版本 | 当前引擎版本号 |
| 启动时间 | 引擎启动的时间 |
| 活跃 Run 数 | 当前正在执行的 Run 数量 |
崩溃日志
崩溃日志位置
引擎崩溃时的堆栈信息保存在数据目录下:
| 平台 | 路径 |
|---|---|
| macOS | ~/Library/Application Support/wesclaw/crashes/ |
| Linux | ~/.local/share/wesclaw/crashes/ |
| Windows | %APPDATA%/wesclaw/crashes/ |
崩溃日志内容
崩溃日志包含:
- 崩溃时间
- 引擎版本
- Go 运行时堆栈信息
- 最近的操作上下文
引擎 stderr 日志
引擎将 fd 2 重定向到文件,用于捕获 Go runtime 的 panic 信息:
$DATA_DIR/logs/wesgine-stderr.log
这是排查引擎崩溃的第一个应该查看的文件。Go 的 panic 栈直接写 fd 2,不经过标准日志系统。
查看崩溃日志
# macOS
ls -la ~/Library/Application\ Support/wesclaw/crashes/
cat ~/Library/Application\ Support/wesclaw/crashes/最新的崩溃文件
# 查看引擎 stderr
cat ~/Library/Application\ Support/wesclaw/logs/wesgine-stderr.log
证据链(Evidence)
wesclaw 支持审计证据链功能,记录 AI 操作的完整轨迹:
什么是证据链
证据链是一系列带有哈希关联的事件记录,确保操作历史不可篡改。每个事件包含:
- 事件类型(工具调用、LLM 请求、决策等)
- 时间戳
- 输入和输出
- 前一个事件的哈希
查看证据链
证据链数据可以通过 API 导出:
GET /cells/{cellID}/observe/evidence
返回 JSONL 格式的事件流。
证据链功能主要用于合规审计场景。普通用户通常不需要直接查看。
监控建议
日常关注
| 关注项 | 频率 | 方法 |
|---|---|---|
| Token 用量趋势 | 每周 | 设置 → 用量统计 |
| 磁盘空间 | 每月 | du -sh $DATA_DIR |
| 错误 Run 比例 | 异常时 | 记忆中心 → 运行日志 → 按状态筛选 |
性能基线
建议记录以下基线数据,便于对比分析:
- 每日平均 Token 消耗
- 每次 Run 的平均时长
- 每次 Run 的平均工具调用次数
- 每日 Run 成功率
异常告警
注意以下异常信号:
- Token 用量突然增加 → 可能存在循环或冗余调用
- Run 成功率下降 → 可能 Provider 不稳定
- Run 时长增加 → 可能上下文过长或网络变慢
SaaS 版差异
SaaS 云端版本的可观测性:
- Token 用量通过 WES 平台统一计费和展示
- Run 追踪功能相同
- 崩溃日志由运维团队管理,用户无需关注
- 额外提供跨设备的用量聚合视图