kenn-io/agentsview
摘要
agentsview 是一款开源本地工具,用于浏览、搜索和追踪 AI 编码代理的成本。
查看缓存全文
缓存时间: 2026/06/11 13:33
kenn-io/agentsview
查看源码:https://github.com/kenn-io/agentsview
agentsview
在所有 AI 编码代理中浏览、搜索并追踪成本。单个二进制文件,无需账户,一切本地运行。
安装
# macOS / Linux
curl -fsSL https://agentsview.io/install.sh | bash
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://agentsview.io/install.ps1 | iex"
或从 GitHub Releases(https://github.com/kenn-io/agentsview/releases)下载桌面应用(macOS / Windows),或通过 homebrew 安装:brew install --cask agentsview
或运行已发布的 Docker 镜像:
docker run --rm -p 127.0.0.1:8080:8080 \
-v agentsview-data:/data \
-v "$HOME/.claude/projects:/agents/claude:ro" \
-v "$HOME/.forge:/agents/forge:ro" \
-e CLAUDE_PROJECTS_DIR=/agents/claude \
-e FORGE_DIR=/agents/forge \
ghcr.io/kenn-io/agentsview:latest
快速开始
agentsview serve # 启动服务器,打开 Web UI
agentsview usage daily # 打印每日成本摘要
首次运行时,agentsview 会从本地机器上每个支持的代理中发现会话,将它们同步到本地 SQLite 数据库,并在 http://127.0.0.1:8080 打开一个 Web UI。
远程 / 转发访问
agentsview 绑定到回环地址,并验证请求的 Host 头部以防止 DNS 重绑定攻击。当通过 SSH 端口转发、反向代理或远程开发环境(exe.dev、Codespaces、Coder、WSL2)访问时,浏览器发送的 Host 服务器无法识别,因此 API 请求(如 /api/v1/settings)会被拒绝并返回 403 Forbidden。
要解决此问题,请将 --public-url 设置为浏览器中打开的准确来源地址,然后重新启动服务器:
# 浏览器通过 `ssh -L 18080:127.0.0.1:8080 host` 打开 http://127.0.0.1:18080
agentsview serve --public-url http://127.0.0.1:18080
# 浏览器打开转发的 hostname
agentsview serve --public-url https://your-workspace.exe.dev
使用 --public-origin(可重复或逗号分隔)来信任额外的浏览器来源。如果将 UI 暴露到回环之外,请同时启用 --require-auth。
Docker
容器镜像默认执行本地 agentsview serve。设置 PG_SERVE=1 可将启动命令切换为 agentsview pg serve。
docker-compose.prod.yaml 作为生产示例包含在内:
docker compose -f docker-compose.prod.yaml up -d
附带的 compose 文件将 agentsview 数据目录持久化到命名卷中,并以只读方式挂载 Claude、Codex、Forge 和 OpenCode 会话根目录。容器以 root 身份运行,因此建议为 /data 使用命名卷而非主机绑定挂载;如果确实使用绑定挂载,请预先创建具有所需所有权的目录,以避免根用户拥有的文件出现在你的主目录中。
示例仅将 UI 发布到回环地址(127.0.0.1)。如果需要将其暴露到 localhost 之外,请启用 --require-auth 并有意识地发布端口。
重要提示:容器化的 agentsview 实例只能发现你显式挂载到容器中的代理会话。如果你没有挂载某个代理的会话目录并设置对应的环境变量指向它,该代理将不会出现在 UI 中。
PostgreSQL 后端的启动示例:
docker run --rm -p 127.0.0.1:8080:8080 \
-e PG_SERVE=1 \
-e AGENTSVIEW_PG_URL='postgres://user:[email protected]:5432/agentsview?sslmode=require' \
ghcr.io/kenn-io/agentsview:latest
DuckDB 镜像的启动示例:
# 将挂载的 SQLite 归档填充到 /data/sessions.duckdb 中
docker run --rm \
-v agentsview-data:/data \
-v "$HOME/.claude/projects:/agents/claude:ro" \
-e CLAUDE_PROJECTS_DIR=/agents/claude \
ghcr.io/kenn-io/agentsview:latest duckdb push --full
# 以只读方式提供填充后的镜像服务
docker run --rm -p 127.0.0.1:8080:8080 \
-v agentsview-data:/data \
ghcr.io/kenn-io/agentsview:latest duckdb serve
Quack 的启动示例:
# 通过 Quack 将本地 DuckDB 镜像暴露到主机/容器外
QUACK_TOKEN="$(openssl rand -base64 32)"
docker run --rm -p 127.0.0.1:9494:9494 \
-v agentsview-data:/data \
ghcr.io/kenn-io/agentsview:latest \
duckdb quack serve \
--bind quack:0.0.0.0:9494 \
--token "$QUACK_TOKEN" \
--allow-insecure
# 从远程 Quack 端点提供 Web UI 服务
docker run --rm -p 127.0.0.1:8080:8080 \
-e AGENTSVIEW_DUCKDB_URL='quack:https://duckdb.example.com' \
-e AGENTSVIEW_DUCKDB_TOKEN="$QUACK_TOKEN" \
ghcr.io/kenn-io/agentsview:latest duckdb serve
将 Quack 保持在回环地址或 TLS 之后。在非回环绑定上使用纯 HTTP Quack 需要 --allow-insecure,并且只应在受信任的隧道或反向代理之后使用。
Token 用量和成本追踪
agentsview usage 是一个快速的本地替代工具,可替代 cccusage 及类似工具。它追踪所有编码代理(不仅仅是 Claude Code)的 token 消耗和计算成本。由于会话数据已经存储在 SQLite 中,其查询速度比每次重新解析原始会话文件的工具快 100 倍以上。
# 每日成本摘要(默认:最近 30 天)
agentsview usage daily
# 按模型细分
agentsview usage daily --breakdown
# 按代理和日期范围过滤
agentsview usage daily --agent claude --since 2026-04-01
# 单行摘要,适合 shell 提示符 / 状态栏
agentsview usage daily --all --json
agentsview usage statusline
功能特点:
- 通过 LiteLLM 费率自动定价(带离线回退)
- 支持提示缓存的成本计算(缓存创建/读取 token)
- 使用
--breakdown按模型细分 - 日期过滤(
--since、--until、--all)、代理过滤(--agent) - JSON 输出(
--json)用于脚本处理 - 时区感知的日期分组(
--timezone) - 独立运行 —— 无需服务器,直接运行命令
每个会话的详细信息
agentsview session usage <session_id> 打印每个会话的 token 统计信息以及单个会话的成本估算。输出报告会话的总输出 token 和峰值上下文 token,以及当会话的模型有定价信息时的美元成本估算(cost_usd)。成本在内部根据输入/输出和缓存 token 计算,但仅输出 token 和峰值上下文总数与成本一起报告。
# 打印特定会话的 token 使用量和成本
agentsview session usage <session_id>
# 用于脚本处理的 JSON 输出
agentsview session usage --format json
相同的按会话使用数据也可从 REST API 获得:
GET /api/v1/sessions/{id}/usage
响应包含 session_id、agent、project、total_output_tokens、peak_context_tokens、has_token_data、cost_usd、has_cost、models 和 unpriced_models 字段,与 CLI JSON 架构一致。HTTP 响应还包括 server_running: true。即使 token 或成本数据缺失,现有会话也返回 200;缺失的会话返回 404。
弃用的别名 agentsview token-use <session_id> 仍可用于兼容,现在也报告成本估算。
会话统计
agentsview stats 输出窗口范围内的已记录会话分析:总计、原型(自动化 vs 快速/标准/深度/马拉松)、会话持续时间分布、用户消息数量、峰值上下文和每轮工具使用、缓存经济性、工具/模型/代理混合以及时间的逐小时细分。--format json 输出遵循版本化的 v1 架构(schema_version: 1),适合下游消费者。
默认情况下,stats 仅读取本地 SQLite 归档。基于 Git 的结果指标是可选的,因为在大型/缺失仓库上可能较慢或不可靠:使用 --include-git-outcomes 获取提交/LOC/文件更改,使用 --include-github-outcomes 通过 gh 获取 GitHub PR 数量(这也会启用 git 结果)。
# 最近 28 天的人类可读摘要
agentsview stats
# 固定日期范围内的机器可读 JSON
agentsview stats --format json --since 2026-04-01 --until 2026-04-15
# 限制为一个代理并检查架构
agentsview stats --format json --agent claude | jq '.schema_version'
# 显式包含开销较大的本地 git 结果指标
agentsview stats --include-git-outcomes
会话浏览器
| 仪表板 | 会话查看器 |
|---|---|
![]() | ![]() |
| 搜索 | 活动热力图 |
| ————————————————————— | ——————————————————— |
![]() | ![]() |
- 所有消息内容的全文搜索(FTS5)
- Token 用量和成本仪表板 —— 按会话和按模型的成本细分、每日支出图表,全部在 Web UI 中
- 分析仪表板 —— 活动热力图、工具使用、速率指标、项目细分
- 通过 SSE 实时更新(当活动会话收到新消息时)
- 键盘优先导航(
j/k/[/]、Cmd+K搜索、?查看所有快捷键) - 导出会话为 HTML 或发布到 GitHub Gist
支持的代理
agentsview 会自动发现来自以下所有代理的会话:
| 代理 | 会话目录 |
|---|---|
| Claude Code | ~/.claude/projects/ |
| Codex | ~/.codex/sessions/ |
| Copilot CLI | ~/.copilot/ |
| Gemini CLI | ~/.gemini/ |
| OpenCode | ~/.local/share/opencode/ |
| OpenHands CLI | ~/.openhands/conversations/ |
| Cursor | ~/.cursor/projects/ |
| Amp | ~/.local/share/amp/threads/ |
| iFlow | ~/.iflow/projects/ |
| Zencoder | ~/.zencoder/sessions/ |
| Zed | ~/Library/Application Support/Zed/ (macOS) |
| VSCode Copilot | ~/Library/Application Support/Code/User/ (macOS) |
| Pi | ~/.pi/agent/sessions/ |
| Qwen Code | ~/.qwen/projects/ |
| OpenClaw | ~/.openclaw/agents/ |
| QClaw | ~/.qclaw/agents/ |
| Kimi | ~/.kimi/sessions/ |
| Kiro CLI | ~/.kiro/sessions/cli/, ~/.local/share/kiro-cli/ |
| Kiro IDE | ~/Library/Application Support/Kiro/ (macOS) |
| Cortex Code | ~/.snowflake/cortex/conversations/ |
| Hermes Agent | ~/.hermes/sessions/ |
| WorkBuddy | ~/.workbuddy/projects/ |
| Forge | ~/.forge/ |
| Piebald | ~/.local/share/piebald/ |
| Warp | ~/.warp/ (平台相关) |
| Positron Assistant | ~/Library/Application Support/Positron/User/ (macOS) |
| Antigravity | ~/.gemini/antigravity/ |
| Antigravity CLI | ~/.gemini/antigravity-cli/ (见下面说明) |
每个目录都可以通过环境变量覆盖。详情请参阅配置文档(https://agentsview.io/configuration/)。
Antigravity CLI:高分辨率转录
Antigravity CLI 会话现在以两种磁盘格式存在。较新的发行版将对话轨迹存储为 SQLite .db 文件,agentsview 直接索引这些文件。较老的发行版将助手轮次和工具调用存储在 AES-GCM 加密的 .pb 文件中;对于这些会话,agentsview 退回到摘要模式,使用来自 history.jsonl 的提示以及 brain/ 下的任何纯文本产物(计划、演练、检查点)。
要解锁较老 .pb 会话的完整转录,请与 agentsview 一起运行 agy-reader(https://github.com/mjacobs/agy-reader)。agy-reader 与本地 Antigravity 守护进程通信,解密每个对话,并在加密的 .pb 文件旁边写入一个 .trajectory.json 侧车文件。agentsview 的文件监视器会自动检测侧车文件,并代替摘要模式解析它 —— 无需重启 agentsview。
go install github.com/mjacobs/agy-reader@latest
# 为现有会话生成侧车文件...
agy-reader --sync
# ...或者在工作时保持其最新状态。
agy-reader --watch
agy-reader 通过解析 ~/.gemini/antigravity-cli/cli.log 自动发现 Antigravity 守护进程 URL。如果发现失败(例如日志已轮转),命令会打印特定平台的说明,指导如何定位端口并手动导出 ANTIGRAVITY_DAEMON_URL。
侧车文件保留在你的机器上。agentsview 不会发起任何出站请求来生成或读取它们,并将侧车文件视为不受信任的结构化输入——详见 SECURITY.md 的信任模型。
PostgreSQL 同步
将会话数据推送到共享的 PostgreSQL 实例,用于团队仪表板:
agentsview pg push # 将本地数据推送到 PG
agentsview pg serve # 从 PG 提供 Web UI 服务(只读)
自动推送(后台服务)
为了保持共享 PostgreSQL 数据库的最新状态,无需手动运行 pg push,请运行自动推送守护进程。它会监视你的会话目录,并在新会话记录后不久进行推送,同时定期进行安全网推送:
agentsview pg push --watch # 前台,Ctrl-C 停止
agentsview pg push --watch --debounce 1m # 自定义合并窗口
agentsview pg push --watch --interval 5m # 自定义周期下限间隔
守护进程读取与 pg push 相同的 [pg] 配置,因此 PostgreSQL DSN 必须在你的配置文件中设置(或通过环境变量扩展)。保护配置文件,因为它包含凭据:
chmod 600 ~/.agentsview/config.toml
要以无值守方式作为操作系统服务运行(macOS 上为 launchd,Linux 上为 systemd --user):
agentsview pg service install # 生成单元文件,启用并启动
agentsview pg service status # 显示管理器状态
agentsview pg service logs -f # 跟踪服务日志
agentsview pg service uninstall # 停止并删除
Linux 无头机器: systemd --user 服务在注销时停止,除非为你的用户启用了 linger,否则不会在启动时启动。install 会检测到这一点并打印命令;你也可以自己运行:
loginctl enable-linger "$USER"
有关设置和配置,请参阅 PostgreSQL 文档(https://agentsview.io/postgresql/)。
DuckDB 镜像和 Quack
DuckDB 支持是镜像后端,而不是本地 SQLite 归档的替代品。agentsview serve 仍然将主要摄取操作执行到 SQLite 中。当你需要一个可移植的分析文件、从镜像进行只读本地服务,或通过 DuckDB 的 Quack 协议进行远程读取访问时,请使用 DuckDB。
agentsview duckdb push # 将 SQLite 镜像到 DuckDB
agentsview duckdb status # 显示镜像同步状态
agentsview duckdb serve # 从 DuckDB 提供 Web UI 服务(只读)
agentsview duckdb quack serve # 通过 Quack 暴露本地 DuckDB 文件
agentsview duckdb serve 读取 [duckdb].path 或 AGENTSVIEW_DUCKDB_PATH。要从远程 Quack 端点提供服务,请改为设置 AGENTSVIEW_DUCKDB_URL 和 AGENTSVIEW_DUCKDB_TOKEN。
Quack 仍然是一个较新的 DuckDB 协议,因此 agentsview 采用保守的默认设置:本地 Quack 服务器绑定到回环地址,需要令牌,并且拒绝非回环的纯 HTTP(除非显式指定 --allow-insecure)。对于远程使用,首选 TLS URL 或将 Quack 放在经过身份验证的隧道/代理后面。
后端模式:
- SQLite:主本地归档、文件同步、FTS5 搜索和可写 UI。
- PostgreSQL:可选的共享团队后端;从 SQLite 推送,以只读方式服务。
- DuckDB:可选的镜像文件或 Quack 端点;从 SQLite 推送,以只读方式服务。
故障排除:
- 如果
duckdb push无法打开镜像,请确认二进制文件是使用适用于你平台的 DuckDB Go 驱动程序构建的,并且AGENTSVIEW_DUCKDB_PATH指向一个可写文件位置。 - 如果 Quack 命令因扩展错误而失败,请更新 agentsview 二进制文件,以便嵌入的 DuckDB 运行时包含 Quack 扩展。
- 如果远程附加失败,请检查令牌、
quack:URL、TLS/代理终止,以及服务器是否在有意的--allow-insecure下启动以进行纯非回环绑定。 - DuckDB 搜索当前使用子字符串/正则表达式回退行为。SQLite FTS5 仍是主本地服务的索引搜索路径。
隐私
agentsview 在服务器启动时以及运行期间每 24 小时向 PostHog 发送一个有限的匿名 daemon_active 遥测 ping,使用稳定的随机安装 ID 作为事件的 DistinctId。该事件包括 application=agentsview、应用版本、提交、操作系统和 CPU 架构,其中 $process_person_profile=false 且 $geoip_disable=true。它不包含会话、项目、提示、文件路径、账户或机器身份。
相似文章
AI Agent智能工具 - 事件调试与成本突增检测
构建一个用于AI Agent事件调试和成本突增检测的工具,无需额外检测工具,涵盖提示注入、推理循环、数据泄露等问题。询问生产环境中的客户,这是否是一个值得付费的痛点。
@benhylak:我们构建了第一个本地调试智能体的合理方法。你可以查看你的追踪记录。codex/claude code 也可以。这允许……
一个新的开源工具可以通过查看追踪记录实现AI智能体的本地调试,允许使用codex和Claude code等工具自动编写评估并进行测试。
智能体工作流可视化工具:反馈与修正
介绍了一款用于可视化AI智能体工作流的工具,支持多种智能体框架,包括Langgraph、CrewAI、AutoGen、Google ADK和OpenAI Agents SDK。创作者正在寻求社区的反馈与修正。
AgentOS
AgentOS 提供了一个统一控制层,用于管理 AI 代理、任务和工作空间。
@tom_doerr: 用于跨多台机器管理AI代理的2D IDE https://github.com/49Agents/49Agents…
49Agents IDE 是一个开源2D IDE,用于跨多台机器管理AI代理,具有无限画布、集成终端和零SSH连接功能。



