> ## Documentation Index
> Fetch the complete documentation index at: https://docs.myrmagent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 统计

> 分析、成长指标、日活动日志与 AI 每日战报端点。

# Statistics API

查询 Agent 活动分析、成长指标、日工作日志与 AI 生成每日摘要的端点。

## 日报（Daily Journal）

获取指定日所有 Agent 活动的 consolidated 视图。

```
GET /api/v1/statistics/daily-journal?date=YYYY-MM-DD&agent_id=optional
```

### 参数

| 参数         | 类型     | 必填 | 说明                |
| ---------- | ------ | -- | ----------------- |
| `date`     | string | 是  | `YYYY-MM-DD` 格式日期 |
| `agent_id` | string | 否  | 按 Agent ID 过滤     |

### 响应

```json theme={null}
{
  "code": 0,
  "data": {
    "date": "2026-05-31",
    "overview": {
      "total_sessions": 5,
      "total_tokens": 42000,
      "total_cost": 0.35,
      "tool_call_count": 28,
      "approval_count": 2,
      "cron_run_count": 1,
      "kanban_event_count": 3,
      "sessions_by_source": {
        "web": 3,
        "telegram": 1,
        "api": 1
      }
    },
    "sessions": [
      {
        "id": "abc-123",
        "title": "Code review session",
        "source": "web",
        "started_at": "2026-05-31T09:15:00Z",
        "total_tokens": 12000,
        "total_cost": 0.10
      }
    ],
    "approvals": [],
    "cron_runs": [],
    "kanban_events": [],
    "timeline": [
      {
        "type": "session",
        "time": "2026-05-31T09:15:00Z",
        "title": "Code review session",
        "detail": { "source": "web", "tokens": 12000 }
      }
    ]
  }
}
```

### 数据来源

日报聚合 6 个现有来源，无额外存储：

| 来源                   | 数据               |
| -------------------- | ---------------- |
| Chat                 | 会话元数据（标题、来源、时间戳） |
| Message              | 每会话 Token 与成本    |
| ApprovalRecord       | 人工审批事件           |
| CronRunModel         | 定时任务执行           |
| KanbanTaskEventModel | 看板事件             |
| EventLog             | 工具调用次数（文件）       |

### 错误响应

| 代码  | 说明                     |
| --- | ---------------------- |
| 400 | 日期格式无效（须 `YYYY-MM-DD`） |
| 400 | 缺少 `date` 参数           |

## 每日战报（Daily Wrap / AI 摘要）

获取 AI 生成的自然语言每日活动摘要，含关键词和明日建议。结果缓存于 SQLite 以降低 LLM 成本。

```
GET /api/v1/statistics/daily-wrap?date=YYYY-MM-DD
```

### 参数

| 参数     | 类型     | 必填 | 说明                |
| ------ | ------ | -- | ----------------- |
| `date` | string | 是  | `YYYY-MM-DD` 格式日期 |

### 响应

```json theme={null}
{
  "code": 0,
  "data": {
    "date": "2026-06-27",
    "summary": "高效的一天，聚焦代码审查和 Bug 修复。跨 Web 和 Telegram 渠道完成 5 个会话。",
    "keywords": ["代码审查", "Bug 修复", "Telegram"],
    "suggestions": ["继续会话 #3 中开始的重构", "处理待审批事项"],
    "generated_at": "2026-06-27T23:05:00Z",
    "cached": true
  }
}
```

### 重新生成

强制重新生成，绕过缓存：

```
POST /api/v1/statistics/daily-wrap/regenerate?date=YYYY-MM-DD
```

返回与 GET 相同结构，`cached: false`。

### 前置条件

* 必须在设置中配置 **轻量模型（Lite Model）**（用于低成本摘要生成）
* 当天无活动时返回 `reason: "no_activity"` 且 `summary: null`
* 未配置轻量模型时返回 `reason: "lite_model_not_configured"` 且 `summary: null`

### 工作原理

1. 聚合与 Daily Journal 相同的 6 源数据（会话、Token、审批、定时任务、看板事件、成本）
2. 构建结构化 Prompt 并发送给配置的轻量模型
3. 解析 LLM 响应（支持 JSON 和纯文本回退）
4. 将结果缓存到 `daily_wrap_cache` SQLite 表（每日一行）

## Per-Agent 用量分析

按智能体维度拆解 Token 消耗与成本 —— 直观看到哪个 Agent 消耗最多，附带 7 天趋势 Sparkline。

```
GET /api/v1/statistics/usage/by-agent?days=7
```

### 参数

| 参数     | 类型      | 必填 | 说明                       |
| ------ | ------- | -- | ------------------------ |
| `days` | integer | 否  | Sparkline 天数（默认 7，最大 30） |

### 响应

```json theme={null}
{
  "success": true,
  "data": {
    "agents": [
      {
        "agentId": "builtin-general",
        "name": "通用助手",
        "avatar": "icon:general",
        "totalTokens": 125000,
        "totalUsd": 1.25,
        "totalCalls": 42,
        "sessions": 15,
        "percentTokens": 65,
        "percentUsd": 72,
        "sparkline": [
          { "date": "2026-06-03", "tokens": 18000, "usd": 0.18 },
          { "date": "2026-06-04", "tokens": 22000, "usd": 0.22 }
        ]
      }
    ],
    "total_agents": 3,
    "grand_total_tokens": 192000,
    "grand_total_usd": 1.74
  }
}
```

### 核心特性

* 结果按总 USD 降序排列（最高消耗在前）
* 百分比拆解显示每个 Agent 占总消耗的份额
* Sparkline 数据支持前端 7 天 SVG 趋势可视化
* 自动关联 Agent 注册表中的名称和头像
* 当仅有 1 个 Agent 时 `AgentUsageCard` 组件自动隐藏（无对比价值）

## 会话执行追踪（Session Execution Trace）

获取完整的会话执行追踪 —— 工具调用、LLM 调用、错误、人工审批事件和记忆操作 —— 结构化用于时间轴回放。

```
GET /api/v1/statistics/session/{session_id}/trace
```

### 响应

```json theme={null}
{
  "code": 0,
  "data": {
    "session_id": "sess-abc123",
    "metadata": {
      "user_id": "user-1",
      "agent_id": "builtin-general",
      "task_type": "chat",
      "trace_id": "trace-xyz"
    },
    "outcome": "success",
    "start_time": 1720000000.0,
    "end_time": 1720000030.0,
    "duration_ms": 30000,
    "task_input": "帮我重构这个模块",
    "output": "完成！我已将该模块拆分为 3 个文件。",
    "tool_calls": [
      {
        "sequence": 1,
        "tool_name": "read_file",
        "start_time": 1720000002.0,
        "end_time": 1720000003.5,
        "duration_ms": 1500,
        "success": true,
        "error": null,
        "input_data": { "path": "/src/module.py" },
        "output_summary": "读取 200 行"
      }
    ],
    "llm_calls": [
      {
        "sequence": 1,
        "start_time": 1720000001.0,
        "end_time": 1720000005.0,
        "model_name": "claude-sonnet-4-20250514",
        "prompt_preview": "[user] 帮我重构...",
        "message_count": 3,
        "duration_ms": 4000,
        "ttft_ms": 180,
        "prompt_tokens": 1200,
        "completion_tokens": 800,
        "total_tokens": 2000
      }
    ],
    "errors": [],
    "human_feedback": [],
    "memory_events": [
      {
        "id": "mem-1",
        "phase": "extraction",
        "status": "completed",
        "timestamp": 1720000028.0,
        "title": "工作记忆提取",
        "summary": "学到用户偏好小而专注的模块",
        "target_kind": "memory",
        "target_id": "mem-target-1",
        "influence_count": 2
      }
    ],
    "total_events": 12,
    "total_tokens": 2000
  }
}
```

### 核心特性

* **零存储回放**：追踪从追加式事件日志按需重建 —— 无需额外数据库或视频文件
* **七种事件类型**：tool\_start, tool\_end, llm\_call, human\_feedback, memory, error, message
* **前端会话回放播放器**：WebUI 提供三窗格交互式播放器（对话视图 / 思维视图 / 检查器），支持进度条拖拽、变速播放、键盘导航、一键跳转错误
* **数据集导出**：追踪可通过 `dataset_export` 管道批量导出为 ShareGPT/Alpaca/OpenAI JSONL 格式用于微调

## 成长统计

成长看板指标通过统一的**学习旅程**页面（`/journey`，旧 `/growth` 自动重定向）提供：

* 技能 KPI 摘要（总数、成功率、进化次数）
* 智能节省摘要（通过缓存和路由降低的成本）
* 84 天活动热力图与多维健康雷达图
* 周趋势分析与 AI 每日战报摘要
* 技能生命周期进化时间线
* **知识图谱** — 交互式 Claim/Evidence 2D 力导向可视化，支持 namespace 过滤
* **技能使用效率趋势** — 每个技能的成功率、平均耗时、调用频次日粒度趋势图

## Harness 可观测指标（Prometheus）

Myrm Engine 在 `/metrics` 暴露 Prometheus 遥测，零运维开销，供 DevOps/SRE 深度监控。

### 高级 Agent 指标

* `myrm_time_to_first_action_seconds`（Histogram）：精确 TTFA，从收到用户指令到首次调用工具的时间。
* `myrm_policy_denial_total`（Counter）：被安全护栏与路径策略阻断、脱敏或拒绝的次数。
* `myrm_tool_execution_total` & `myrm_tool_execution_failed_total`（Counter）：各技能执行结果，用于 Grafana 计算「工具有效率」。

### 生产级告警规则（云托管部署）

云托管部署内置 12 条生产级 Prometheus 告警规则，覆盖沙箱健康与可靠性：

| 告警                         | 级别 | 触发条件                   |
| -------------------------- | -- | ---------------------- |
| ContainerPoolExhausted     | 严重 | 可用容器池 = 0 持续 5 分钟      |
| ContainerPoolLow           | 警告 | 可用容器 \< 2 持续 10 分钟     |
| HealthCheckFailureRateHigh | 严重 | 故障率 > 20% 持续 5 分钟      |
| ContainerCreationSlow      | 警告 | P99 创建耗时 > 10s 持续 5 分钟 |
| ContainerOOMKills          | 严重 | 检测到 OOM 终止             |
| HotPoolExhausted           | 严重 | 热池 = 0 持续 5 分钟         |

每条告警均附带 `runbook_url` 链接至企业运维手册对应章节。

### Grafana 仪表盘

提供即导即用的 Grafana 仪表盘（`grafana-dashboard-sandbox.json`），实时可视化容器池状态、命中率、健康检查成功率、创建延迟、热池可用性。支持 UI 导入或 provisioning 目录挂载。

### 智能启停

指标采集根据部署模式自动启停 — 本地与桌面端零开销运行，云托管部署自动暴露完整 `/metrics` 端点供 Prometheus 抓取。

## Agent Liveness SSOT（全局三态指示器）

单一聚合端点，一个 API 即可知道 Agent 当前是忙碌、空闲还是异常 — 无需轮询多个接口。

```
GET /api/v1/health/liveness
```

### 响应

```json theme={null}
{
  "state": "busy",
  "agents": {
    "activeCount": 2,
    "maxConcurrent": 3,
    "availableSlots": 1,
    "sessions": [
      {
        "sessionId": "abc-123",
        "chatId": "chat-456",
        "agentType": "general",
        "elapsedSeconds": 12.5
      }
    ]
  },
  "channels": {
    "wechat": { "status": "connected" },
    "telegram": { "status": "connected" }
  },
  "memory": {
    "level": "NORMAL",
    "percent": 42.3
  },
  "uptimeSeconds": 3600.5
}
```

### 状态派生逻辑

| 状态         | 触发条件                |
| ---------- | ------------------- |
| `busy`     | 至少有一个 Agent 会话正在执行  |
| `degraded` | 无活跃会话，但某渠道掉线或内存压力升高 |
| `idle`     | 无活跃会话，所有渠道健康，内存正常   |

### 使用场景

* **前端托盘 / 宠物指示器**：轮询此端点显示三态图标（转圈 = 忙碌，绿色 = 空闲，琥珀色 = 异常）
* **云运维监控**：`curl /api/v1/health/liveness | jq .state` 接入 Prometheus/Grafana 告警
* **多标签工作区**：跨浏览器标签页显示 Agent 可用性，无需打开设置

### 关键特性

* **纯只读聚合**：零 I/O、零数据库查询 — 所有数据来自内存中的网关状态
* **亚毫秒级响应**：适合高频轮询（每 2-5 秒）
* **全部署模式通用**：本地 WebUI、Tauri 桌面端、云托管部署均可使用
