跳到主要内容

AgentSight 数据与存储

AgentSight 采集到的一切都以 SQLite 数据库形式留在本机。Dashboard、CLI 和 HTTP API 只是同一批文件的三种 视图。

数据放在哪里

所有数据库位于 /var/log/sysak/.agentsight/,以私有 umask 创建,仅 root 可读。

文件内容
genai_events.db主库:保存 LLM 调用及其 Agent 进程的定时 CPU/RSS 采样,含耗时、会话与对话 ID
agentsight.db审计记录(LLM 调用与进程动作)以及 Token 消费聚合
interruption_events.db检测到的中断,含类型、严重级别与证据
optimization.dbDashboard 优化分析的结果
trajectories.dbATIF v1.7 轨迹,仅在开启 features.trajectory_collection 时存在
.agentsight-private/security.db安全事件、案例、证据与处置状态
.agentsight-private/enforcement.db拦截策略、违规记录与状态流转
.agentsight-private/reuse.db轨迹复用标签、人工决定、LLM verdict 与标签审计事件
.agentsight-private/causal.db持久化的因果归因 case
.dashboard_tokenDashboard 访问令牌(64 位十六进制,仅 root 可读)
optimization_config.json在 Dashboard 设置页填写的 LLM 配置(API Key 存于此)
*.db-wal*.db-shmSQLite 预写日志与共享内存;属正常文件,干净退出时会做 checkpoint

servedashboardskill-metrics 支持用 --db 指向别的数据库文件,这也是浏览副本或归档的方式。 tracer 自身始终写入默认目录。

serve --db <path> 会让所有兄弟库都从 --db 所在目录解析——GenAI 事件、中断库、轨迹库以及 health checker 都跟着它走。私有的安全、拦截、复用与因果库从其 .agentsight-private/ 子目录解析。 因此归档副本是隔离展示的,不会混入当前主机的数据。请把兄弟 .db 文件以及存在时的 .agentsight-private/ 目录放在你传入的那个文件的同一目录下。裸相对路径 --db name.db 使用当前目录。

这些文件包含完整的提示词与模型回答,请按敏感数据对待:保持安装时的目录权限,往外拷贝时务必谨慎。

保留与容量上限

存储默认策略配置项
agentsight.db30 天、500 MiB、每 1,000 次写入检查storage.primary
genai_events.db30 天、200 MiB、每次写入检查;包含评估结果storage.genai
interruption_events.db30 天、100 MiB、每 60 秒检查storage.interruptions
trajectories.db30 天、500 MiB、每 300 秒检查storage.trajectories
optimization.db30 天、200 MiB、每 300 秒检查storage.optimization
.agentsight-private/security.db30 天、200 MiB、每小时检查,并保护活动案例图storage.security_audit
.agentsight-private/enforcement.db保留最新 100,000 条 violation固定行数上限

保留时间、容量或检查间隔设为 0 时关闭对应规则。上限按逻辑容量计(物理文件大小减去空闲页),清理按最旧 且允许淘汰的记录优先,直到逻辑容量收敛到阈值内。清理后 物理文件不会自动缩小:释放的页进入空闲页表并被后续写入复用,文件大小稳定在 历史峰值。如需向文件系统归还磁盘空间,在低峰期手动执行 sudo sqlite3 /var/log/sysak/.agentsight/<db> 'VACUUM;'(VACUUM 会重建整个文件, 建议先停止服务,避免 cgroup 内存限制下触发 OOM)。

容器部署请注意:这些保留语义只在数据目录持久化时才有意义。不挂卷时容器每次重启都会清空全部数据, 详见 容器与 Sidecar 的持久化一节。

修改限制时,编辑 /etc/agentsight/config.jsonstorage 配置节,再 reload 服务。Settings 页面会展示 每个数据库当前生效的策略、物理占用和逻辑占用。

通过 API 查看当前占用:

TOKEN=$(sudo cat /var/log/sysak/.agentsight/.dashboard_token)
curl -s -H "Authorization: Bearer $TOKEN" http://127.0.0.1:7396/api/storage/status \
| python3 -m json.tool

也可以直接检查目录:

sudo du -sh /var/log/sysak/.agentsight
sudo ls -la /var/log/sysak/.agentsight

清空数据

sudo systemctl stop agentsight.service
sudo rm -rf /var/log/sysak/.agentsight
sudo systemctl start agentsight.service

删掉目录也会删掉 Dashboard 令牌,下次启动会重新生成。如果想保留历史,先把目录拷到别处,之后用 agentsight serve --db /path/to/genai_events.db 浏览。

HTTP API

服务自己会给出路由清单,不用猜:

curl -s http://127.0.0.1:7396/api/docs | python3 -m json.tool

非本机请求需要令牌:

TOKEN=$(sudo cat /var/log/sysak/.agentsight/.dashboard_token)
curl -s -H "Authorization: Bearer $TOKEN" http://<host>:7396/api/sessions

0.11 的端点分组:

分组示例用途
服务GET /healthGET /metricsGET /api/docs存活探测、Prometheus 指标、路由清单(/health/metrics 仅本机可访问)
认证GET /api/auth/statusGET /api/auth/verifyPOST /api/auth/login认证状态、能力列表、令牌换 cookie
会话与调用GET /api/sessionsGET /api/sessions/{id}/tracesGET /api/sessions/{id}/resourcesGET /api/traces/{id}GET /api/conversations/{id}POST /api/sessions/search会话列表、会话内对话摘要(以 conversation_id 为键)与进程资源、按 response_id 的单次调用详情、语义搜索
指标GET /api/timeseriesGET /api/metrics/latencyGET /api/agent-namesToken 时序、延迟分位、Agent 过滤项
中断GET /api/interruptions/count/stats/session-counts/conversation-countsPOST /api/interruptions/{id}/resolve排查与关闭
Agent 健康GET /api/agent-healthDELETE /api/agent-health/{pid}POST /api/agent-health/{pid}/restart实时状态与恢复动作
Token 节省GET /api/token-savingsGET /api/token-savings/session/{id}Tokenless 节省量
ATIF 导出GET /api/export/atif/session/{id}(还有 traceconversation轨迹导出
轨迹GET /api/trajectories/filters/steps/{session_id}已采集轨迹。列表支持可选的 labelexclude_labelhuman_backed 过滤;label 是逗号分隔的有效标签,例如 good,bad
复用标签POST /api/reuse/triageGET /api/reuse/sessionsPOST /api/reuse/sessions/{session_id}/labelPOST /api/reuse/sessions/labels:batch-confirmGET /api/reuse/label-statsPOST /api/reuse/judge规则分诊与人工标签决定。judge 需要 features.reuse_llm_judge=true 与已配置的 LLM 凭据,并会产生付费模型调用
偏好GET /api/preferences/export/turns用户偏好分析、Markdown 导出,以及供 Agent 侧推理使用的用户原始轮次
存储GET /api/storage/statusSQLite 生效策略与物理/逻辑占用,不返回文件路径
Skill 指标GET /api/skill-metrics/downloads/loads/usage-ratio/distribution/hotnessSkill 采纳情况
优化分析POST /api/optimize/sessions/{id}/{dimension}GET /api/optimize/resultsGETPOST /api/optimize/configLLM 辅助分析
质量与归因POST /api/grader/evaluateGET /api/grader/latestPOST /api/causal-attribution会话质量评分、根因归因
安全与审计GET /api/security/*GET /api/audit/*POST /api/audit/cases/{id}/review装了 agent-sec-core 时可用
拦截GET /api/enforcement/healthPOST /api/enforcement/bindingsGET /api/enforcement/violations装了 enforcer 时可用;写操作始终要求令牌

时间范围参数是纳秒时间戳(start_nsend_ns),与 CLI 的 --last 窗口对应。

# 最近一小时的会话
NOW=$(date +%s%N); AGO=$((NOW - 3600000000000))
curl -s "http://127.0.0.1:7396/api/sessions?start_ns=$AGO&end_ns=$NOW" | python3 -m json.tool | head

获取某个 Session 的原始 CPU/RSS 采样点和活动区间:

curl -s "http://127.0.0.1:7396/api/sessions/<SESSION_ID>/resources?max_points=2000" | python3 -m json.tool

每个采样点都是进程级数据,包含 Epoch 纳秒时间戳、PID、CPU 百分比和以字节计的 RSS 内存。对于多进程 Agent,Dashboard 会汇总该 Session 关联的所有 PID。这些数据表示 Session 运行时的进程环境,并非严格的 Session 资源归因:同一个共享 Agent 进程可能同时服务多个 Session。LLM 区间使用采集到的请求和响应时间; Tool Call 区间从产生工具请求的 LLM 响应结束开始,到携带对应工具结果的下一次 LLM 请求开始为止。未被 LLM 调用或已匹配 Tool Call 覆盖的间隙会返回为 idle;无法匹配结果的 Tool Call 不会虚构结束时间。

Prometheus 指标

curl -s http://127.0.0.1:7396/metrics | head
# HELP agentsight_token_input_total Total input tokens consumed by agent (all-time)
# TYPE agentsight_token_input_total counter
agentsight_token_input_total{agent="CoshNG"} 100000
agentsight_token_input_total{agent="Cosh"} 50000

计数器按 Agent 维度、取累计值:agentsight_token_input_totalagentsight_token_output_totalagentsight_token_total_totalagentsight_llm_requests_total/metrics 只允许本机访问,因此请用 节点本地的 Prometheus agent 抓取,或者通过本机反向代理暴露。agentsight metrics 在命令行输出同样内容。

轨迹导出(ATIF v1.7)

任意会话、对话或单次调用都能导出为自包含的 JSON 轨迹——Agent 元信息、步骤、消息、工具调用与 Token 汇总:

curl -s http://127.0.0.1:7396/api/export/atif/session/<SESSION_ID> > session.atif.json

Dashboard 的轨迹查看页通过下载 JSON 提供同一份文件,也能导入在别的机器上采集的轨迹。适合离线分析、 共享复现场景,或喂给评测流水线。

外部日志导出

AgentSight 可以把结构化事件写入文件,供外部日志采集器读取:

{
"runtime": { "sls_logtail_path": "/var/log/anolisa/agentsight/events.jsonl" },
"features": { "sls_logtail": true }
}

该路径支持运行期修改——设为 "" 即暂停导出。如果希望数据完全留在本机,保持默认即可。采集器侧的配置 (端点、凭证)不属于 AgentSight 的范围。

备份

sudo systemctl stop agentsight.service
sudo tar czf agentsight-data-$(date +%F).tar.gz -C /var/log/sysak .agentsight
sudo systemctl start agentsight.service

先停服务可以确保 WAL 已 checkpoint,归档内容才是一致的。

相关页面