自托管服务
kenn-io/agentsview avatar
kenn-io/agentsview

agentsview:把散落在 20 多种 AI 编码代理里的会话记录,收进一个本地 SQLite

编码代理的本地优先会话搜索、分析、见解和令牌使用统计,支持 Claude Code、Codex 和 20 多个其他代理。

5,908 个 Star669 个 ForkGoMIT

秒懂

它是什么?
agentsview 是一个用 Go 写的本地优先工具,用来检索、分析和统计 Claude Code、Codex 等 20 多种编码代理的会话与 token 开销。它没有账号系统,数据留在本机,但远程访问的 Host 校验和容器挂载方式需要你提前想清楚。
适合谁用?
如果你同时用两三个编码代理,并且受够了在每个工具的目录里 grep 历史记录,agentsview 值得一试。它适合那些愿意接受命令行和配置文件、不介意把会话数据交给本地 SQLite 的工程师。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 Go(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

一个二进制,解决多代理会话碎片化

用 Claude Code 写完一段代码,又用 Codex 改了个 bug,再打开 Forge 跑了个任务。每个代理都把会话存在自己的目录里,格式还不一样。想查上周某次重构的上下文,得挨个翻目录。agentsview 解决的就是这个问题:它把 20 多种编码代理的会话记录同步到一个本地 SQLite 数据库,然后提供一个 Web UI 和命令行接口,让你搜索、浏览、统计 token 用量和费用。目标用户是本地开发、对数据隐私敏感、不想把会话上传到云端的个人开发者或小团队。它不需要账号,没有服务器端,一个二进制文件跑起来就行。

数据流:从代理目录到 SQLite,再到 DuckDB 或 Postgres

agentsview 的工作机制分三层。第一层是发现和同步:首次运行时,它扫描机器上所有受支持的代理会话目录,把新会话写入本地 SQLite。第二层是查询:web UI 和 CLI 命令都读这个 SQLite。第三层是可选的导出:你可以用 duckdb push 把数据镜像到 DuckDB,或者用 pg push 推到 Postgres。这个分层设计让只读命令在冷归档时直接查 SQLite,不用启动后台进程,速度快。而需要新鲜数据或写入的命令,比如 sync 和 usage,会自动拉起一个可写的 daemon。daemon 空闲一段时间会自动退出,除非有客户端请求或任务在跑。这种设计避免了常驻进程占用资源,但代价是首次 sync 可能比较慢,因为要扫描所有目录。

安装与启动:curl 脚本、Docker 镜像、Homebrew 三选一

macOS 和 Linux 上,官方安装方式是 curl -fsSL https://agentsview.io/install.sh | bash。Windows 用 PowerShell 的 irm 管道。也可以从 GitHub Releases 下载桌面应用,或者用 brew install --cask agentsview 安装。Docker 用户可以直接拉 ghcr.io/kenn-io/agentsview:latest。启动命令很简单:agentsview serve 在前台起服务,默认监听 127.0.0.1:8080。首次运行会自动发现代理会话并同步。CLI 子命令包括 session list 和 usage daily,后者打印每日成本摘要。注意,daemon start 不接受 serve 特有的参数,比如 --no-sync,如果你需要这类参数,得用 agentsview serve --background。

远程访问的坑:Host 头校验和 --public-url

agentsview 默认绑定 loopback,并且校验请求的 Host 头,防止 DNS rebinding 攻击。这带来一个实际问题:当你通过 SSH 端口转发、反向代理或 Codespaces 这类远程环境访问时,浏览器发送的 Host 和服务器预期的不一致,API 请求会返回 403 Forbidden。解决办法是启动时设置 --public-url,让它等于你在浏览器里输入的完整 origin。比如 SSH 转发到 18080 端口,就用 agentsview serve --public-url http://127.0.0.1:18080。如果你用 exe.dev 这类工作区,要设成 https://your-workspace.exe.dev。还可以用 --public-origin 追加信任的 origin。如果要把 UI 暴露到非 loopback,必须同时启用 --require-auth。这个机制对安全是好事,但对不熟悉 Host 头概念的用户来说,第一次遇到 403 会摸不着头脑。

Docker 部署:挂载目录决定你能看到什么

容器化部署时,agentsview 只能发现你显式挂载进容器的代理会话目录。官方示例里,把 ~/.claude/projects 挂到 /agents/claude:ro,并设置 CLAUDE_PROJECTS_DIR=/agents/claude。如果漏掉某个代理的目录,那个代理就不会出现在 UI 里,这是文档里明确警告的。另外,容器默认以 root 运行,所以数据目录建议用命名卷,避免在宿主机的 home 目录下产生 root 拥有的文件。如果你非要用 bind mount,得预先创建目录并设置好所有权。生产环境可以参照 docker-compose.prod.yaml,它持久化数据卷,并只读挂载 Claude、Codex、Forge、OpenCode 的会话目录。镜像默认启动 agentsview serve,设置 PG_SERVE=1 可以切换到 agentsview pg serve,用于连接 Postgres。

token 统计和导出:ccusage 的本地替代

agentsview usage 被定位为 ccusage 这类工具的快速本地替代品。它能按天打印成本摘要,具体命令是 agentsview usage daily。token 使用情况可以通过 token-use 子命令查看,但这个命令会触发 daemon 自动启动,因为它需要新鲜数据。除了 SQLite,你还可以把数据镜像到 DuckDB,用 duckdb push --full 全量同步,然后用 duckdb serve 只读提供查询。更进阶的用法是通过 Quack 协议暴露 DuckDB 镜像,让远程客户端连接,但 Quack 必须保持 loopback 或 TLS,非 loopback 的明文 HTTP 需要 --allow-insecure,文档建议只在可信隧道或反向代理后使用。这些导出功能适合需要做自定义分析或对接 BI 工具的场景,但对普通用户来说,日常用 web UI 就够了。

局限与替代方案:不是所有代理都支持,也不是为团队协作设计的

agentsview 的局限很明显。第一,它只支持列出的 20 多种代理,如果你的代理不在列表里,工具对你无效。第二,它没有多用户或权限体系,所有会话数据都在一台机器上,远程访问要靠 SSH 或反代,而且必须处理 Host 校验。第三,Devin CLI 的配置比较特殊,需要手动设置 DEVIN_DIR 指向包含 cli/ 的根目录,并且它会故意忽略复制过来的 config 或 OAuth 路径,文档还提醒不要把 token 或 OAuth 文件贴进 bug 报告。替代方案方面,你可以直接用 ccusage 来统计 Claude Code 的 token 费用,它更轻量,但只针对单一代理,没有搜索和 UI。另一个思路是自己写脚本解析各代理的 JSONL 会话文件,但那样要处理格式差异,维护成本高。agentsview 的价值在于统一了这些格式差异,但代价是你得信任它的解析逻辑。

编辑结论

如果你同时用两三个编码代理,并且受够了在每个工具的目录里 grep 历史记录,agentsview 值得一试。它适合那些愿意接受命令行和配置文件、不介意把会话数据交给本地 SQLite 的工程师。不适合需要团队协作或云端同步的人,因为项目没有账号体系,远程访问要靠 SSH 转发或反向代理,而且必须处理 --public-url 的 Host 校验。开始之前,先确认你的代理会话目录能被发现:Claude 的默认路径是 ~/.claude/projects,Codex 的路径要查清楚,Devin 需要显式设置 DEVIN_DIR。容器部署时,记得把每个代理的目录挂载进去并设置对应的环境变量,否则那个代理不会出现在 UI 里。最后,检查一下你的代理是否在支持的 20 多种列表里,不在的话这个工具对你没用。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记