kenn-io/agentsview

GitHub Trending (daily) 工具

摘要

agentsview 是一款开源本地工具,用于浏览、搜索和追踪 AI 编码代理的成本。

面向编码代理的本地优先会话智能与分析工具,支持 Claude Code、Codex 及其他 20 多个代理。此外:比 ccusgae 快 100 倍的替代方案!
查看原文
查看缓存全文

缓存时间: 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_idagentprojecttotal_output_tokenspeak_context_tokenshas_token_datacost_usdhas_costmodelsunpriced_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].pathAGENTSVIEW_DUCKDB_PATH。要从远程 Quack 端点提供服务,请改为设置 AGENTSVIEW_DUCKDB_URLAGENTSVIEW_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智能工具 - 事件调试与成本突增检测

Reddit r/AI_Agents

构建一个用于AI Agent事件调试和成本突增检测的工具,无需额外检测工具,涵盖提示注入、推理循环、数据泄露等问题。询问生产环境中的客户,这是否是一个值得付费的痛点。

智能体工作流可视化工具:反馈与修正

Reddit r/AI_Agents

介绍了一款用于可视化AI智能体工作流的工具,支持多种智能体框架,包括Langgraph、CrewAI、AutoGen、Google ADK和OpenAI Agents SDK。创作者正在寻求社区的反馈与修正。

AgentOS

Product Hunt

AgentOS 提供了一个统一控制层,用于管理 AI 代理、任务和工作空间。