Files
wehub-resource-sync a18c1e4bad
CI / docs (push) Has been cancelled
CI / scripts (push) Has been cancelled
CI / Go Test (ubuntu-latest) (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / frontend (push) Has been cancelled
CI / frontend-node-25 (push) Has been cancelled
CI / integration (push) Has been cancelled
CI / e2e (push) Has been cancelled
Docker / build-and-push (push) Has been cancelled
CI / Go Test (windows-latest) (push) Has been cancelled
CI / Desktop Unit Tests (Windows) (push) Has been cancelled
CI / coverage (push) Has been cancelled
docs: make Chinese README the default
2026-07-13 10:57:44 +00:00

35 KiB
Raw Permalink Blame History

Note

本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。

agentsview

浏览、搜索并追踪所有 AI 编程智能体(agent)的费用。单个二进制文件,无需账号,一切本地运行。

Analytics dashboard

Install

# macOS / Linux
curl -fsSL https://agentsview.io/install.sh | bash

# Windows
powershell -ExecutionPolicy ByPass -c "irm https://agentsview.io/install.ps1 | iex"

或从 GitHub Releases) 下载桌面应用macOS / Windows),或通过 homebrewbrew 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

Quick Start

agentsview serve           # start the server in the foreground
agentsview daemon start    # start the writable SQLite daemon
agentsview daemon status   # show daemon status
agentsview daemon restart  # restart from current configuration
agentsview daemon stop     # stop the writable daemon
agentsview session list    # read from the daemon if warm, otherwise SQLite
agentsview usage daily     # print daily cost summary

首次运行时,agentsview 会从你机器上每个受支持的 agent 中发现会话,将其同步到本地 SQLite 数据库,并在 http://127.0.0.1:8080 提供 Web UI。

对于 Devin CLI,将 DEVIN_DIRdevin_dirs 指向包含 cli/ 的本地根目录——例如在 macOS 上为 ~/Library/Application Support/devin,在 Linux 上为 ~/.local/share/devin,或类似 .../Application Support/devin 的脱敏路径。AgentsView 读取 <root>/cli/... 下的会话数据,并有意忽略复制的配置或 OAuth 路径。请勿在 bug 报告中粘贴 token、OAuth 文件或其他机密信息。

Claude 和 Codex 数据源也可配置为 s3:// 根目录,这样中央 AgentsView 实例即可读取其他机器推送到 S3 兼容对象存储的会话。将这些根目录添加到 claude_project_dirscodex_sessions_dirsAgentsView 会列出对象元数据,并仅在同步期间下载已变更的会话。S3 变更检测使用大小、修改时间以及可用的对象指纹,例如 ETag、version ID 或校验和。

桌面应用与对数据新鲜度敏感的 CLI 命令共享一个分离的本地守护进程。只读 CLI 命令在守护进程已运行时会连接它,否则会回退到冷归档上的直接只读 SQLite,以保持一次性脚本的速度。需要最新数据或需要写入的命令(例如 syncusagetoken-usepg pushduckdb push)会在需要时自动启动守护进程。

当你希望显式启动可写 SQLite 守护进程时,使用 agentsview daemon start。它会从 config.toml 以及受支持的环境变量加载正常的有效配置;daemon startdaemon restart 不接受任何 serve 专用标志。后台守护进程在空闲一段时间后会自行退出,除非有客户端请求或守护进程拥有的任务处于活动状态。

现有的 agentsview serve --backgroundagentsview serve statusagentsview serve stop 命令仍然可用。当一次性守护进程需要仅用于 serve 的标志时(例如 --no-sync 或未认证的 non-loopback --host 覆盖),使用 serve --background

Remote / forwarded access

agentsview 绑定到 loopback,并校验请求的 Host 标头,以防范 DNS 重绑定攻击。当你通过 SSH 端口转发、反向代理或远程开发环境(exe.dev、Codespaces、Coder、WSL2)访问时,浏览器会发送服务器无法识别的 Host,因此诸如 /api/v1/settings 的 API 请求会被以 403 Forbidden 拒绝。

要解决此问题,请重启服务器,并将 --public-url 设置为你在浏览器中打开的精确 origin:

# Browser opens http://127.0.0.1:18080 via `ssh -L 18080:127.0.0.1:8080 host`
agentsview serve --public-url http://127.0.0.1:18080

# Browser opens a forwarded hostname
agentsview serve --public-url https://your-workspace.exe.dev

使用 --public-origin(可重复或逗号分隔)来信任额外的浏览器 origin。如果你将 UI 暴露到 loopback 之外,还应启用 --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,优先使用命名卷而非主机 bind mount;如果确实要 bind mount,请预先创建具有所需所有权的目录,以避免主目录中出现 root 拥有的文件。

示例仅在 loopback 上发布 UI127.0.0.1)。如果你需要暴露到 localhost 之外,请启用 --require-auth 并有意识地发布端口。

重要提示:容器化的 agentsview 实例只能发现你显式挂载到容器中的 agent 会话目录。如果你没有挂载某个 agent 的会话目录并将对应的环境变量指向它,该 agent 将不会出现在 UI 中。

PostgreSQL 后端启动示例:

docker run --rm -p 127.0.0.1:8080:8080 \
  -e PG_SERVE=1 \
  -e AGENTSVIEW_PG_URL='postgres://user:password@postgres.example.com:5432/agentsview?sslmode=require' \
  ghcr.io/kenn-io/agentsview:latest

DuckDB 镜像启动示例:

# Populate /data/sessions.duckdb from the mounted SQLite archive.
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

# Serve the populated mirror read-only.
docker run --rm -p 127.0.0.1:8080:8080 \
  -v agentsview-data:/data \
  ghcr.io/kenn-io/agentsview:latest duckdb serve

Quack 启动示例:

# Expose the local DuckDB mirror over Quack from the host/container.
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

# Serve the web UI from a remote Quack endpoint.
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 保持在 loopback 上或置于 TLS 之后。在非 loopback 绑定上使用纯 HTTP 的 Quack 需要 --allow-insecure,且应仅在受信任的隧道或反向代理之后使用。

Token Usage and Cost Tracking

agentsview usage 是 ccusage 及类似工具的快速本地替代方案。它追踪所有编程 agent 的 token 消耗与计算成本——不仅限于 Claude Code。由于会话数据已索引在 SQLite 中,查询速度比每次运行都重新解析原始会话文件的工具快 100 倍以上。

# Daily cost summary (default: last 30 days)
agentsview usage daily

# Per-model breakdown
agentsview usage daily --breakdown

# Filter by agent and date range
agentsview usage daily --agent claude --since 2026-04-01

# One-line summary for shell prompts / status bars
agentsview usage daily --all --json
agentsview usage statusline

功能:

  • 通过 LiteLLM 费率自动定价(含离线回退)
  • 支持 prompt caching 的成本计算(cache creation / read tokens
  • 按模型细分,支持 --breakdown
  • 日期过滤(--since--until--all)、agent 过滤(--agent
  • JSON 输出(--json),便于脚本化
  • 时区感知的日期分桶(--timezone
  • 可独立运行——无需服务器,直接执行命令即可

按会话详情

agentsview session usage <id> 会打印单个会话的按会话 token 统计以及成本估算。输出会报告该会话的总输出 token 数与峰值上下文 token 数,并在会话所用模型(has_cost)提供定价信息时给出以 USDcost_usd)计的成本估算。成本在内部根据输入/输出与缓存 token 计算,但对外仅与成本一并报告输出 token 与峰值上下文总量。

# Print token usage and cost for a specific session
agentsview session usage <id>

# JSON output for scripting
agentsview session usage <id> --format json

相同的按会话用量数据也可通过 REST API 获取:

GET /api/v1/sessions/{id}/usage

响应包含 CLI JSON schema 中的 session_idagentprojecttotal_output_tokenspeak_context_tokenshas_token_datacost_usdhas_costmodelsunpriced_models 字段。HTTP 响应还会包含 server_running: true。已存在的会话即使缺少 token 或成本数据也会返回 200;不存在的会话则返回 404

已弃用的别名 agentsview token-use <id> 仍保留以兼容旧用法,且现在也会报告成本估算。

会话统计

agentsview stats 会输出针对已记录会话的窗口范围分析:总量、原型(automation 与 quick/standard/deep/marathon)、会话时长、用户消息数、峰值上下文、每轮工具数等分布,以及缓存经济性、工具/模型/智能体组合和按小时的时间分布。--format json 输出遵循适合下游消费者的版本化 v1 schema(schema_version: 1)。

默认情况下,stats 仅读取本地 SQLite 归档。基于 Git 的结果指标为可选,因为在大型或缺失的仓库上可能较慢或不稳定:使用 --include-git-outcomes 获取提交数/代码行数/变更文件数,使用 --include-github-outcomes 通过 gh 获取 GitHub PR 数量(这也会启用 git 结果指标)。

# Human-readable summary over the last 28 days
agentsview stats

# Machine-readable JSON over a fixed date range
agentsview stats --format json --since 2026-04-01 --until 2026-04-15

# Restrict to one agent and inspect the schema
agentsview stats --format json --agent claude | jq '.schema_version'

# Include expensive local git outcome metrics explicitly
agentsview stats --include-git-outcomes

会话浏览器

仪表盘 会话查看器
Dashboard Session viewer
搜索 活动热力图
Search Heatmap
  • 全文搜索 — 覆盖所有消息内容(FTS5
  • 语义搜索(可选)— 使用任意 OpenAI 兼容的 embeddings 端点索引会话内容,并通过 agentsview session search --semantic--hybrid 按语义搜索;每次内容搜索匹配都会引用其来源的对话单元(文档)
  • Token 用量与成本仪表盘 — 按会话、按模型的成本明细,以及每日支出图表,均在 Web UI 中展示
  • 分析仪表盘 — 活动热力图、工具使用情况、速度指标、项目分解
  • 最近编辑动态 — 各会话中智能体最近修改的文件,按项目与路径分组,并链接到触发该变更的消息
  • 活跃会话收到新消息时,通过 SSE 实时更新
  • 键盘优先导航(j/k/[/]Cmd+K 搜索、按 ? 查看全部快捷键)
  • 将会话导出为 HTML 或发布到 GitHub Gist

支持的智能体

agentsview 可发现来自以下所有来源的会话。Aider 为可选,因为它没有统一的会话目录;设置 AIDER_DIRaider_dirs 以启用。Amp 支持已弃用,因为当前 Amp 版本可能将线程存储在服务端,本地仅保留存根;agentsview 仍可解析历史本地 Amp 线程 JSON 文件。

智能体 会话目录
Aider <repo>/.aider.chat.history.md(按仓库;通过 AIDER_DIRaider_dirs 可选启用)
Amp(已弃用) ~/.local/share/amp/threads/(仅历史本地线程 JSON
Antigravity ~/.gemini/antigravity/
Antigravity CLI ~/.gemini/antigravity-cli/(见下文说明)
Claude Code ~/.claude/projects/
OpenClaude ~/.openclaude/projects/
Claude Cowork ~/Library/Application Support/Claude/local-agent-mode-sessions/macOS
Codex ~/.codex/sessions/
Copilot CLI ~/.copilot/
Devin CLI ~/.local/share/devin/Linux)、~/Library/Application Support/devin/macOS);将 DEVIN_DIR / devin_dirs 指向包含 cli/ 的根目录
Cortex Code ~/.snowflake/cortex/conversations/
Cursor ~/.cursor/projects/
DeepSeek TUI ~/.codewhale/sessions/~/.deepseek/sessions/
Forge ~/.forge/
Gemini CLI ~/.gemini/
gptme ~/.local/share/gptme/logs/
Grok ~/.grok/sessions/
Hermes Agent ~/.hermes/sessions/
iFlow ~/.iflow/projects/
Kilo ~/.local/share/kilo/
Kimi ~/.kimi/sessions/
Kiro CLI ~/.kiro/sessions/cli/~/.local/share/kiro-cli/
Kiro IDE ~/Library/Application Support/Kiro/macOS
MiMoCode ~/.local/share/mimocode/
Mistral Vibe ~/.vibe/logs/session/
OpenClaw ~/.openclaw/agents/
OpenCode ~/.local/share/opencode/
OpenHands CLI ~/.openhands/conversations/
OhMyPi ~/.omp/agent/sessions/
Pi ~/.pi/agent/sessions/
Piebald ~/.local/share/piebald/
Posit Assistant ~/.posit/assistant/workspaces/
Positron Assistant ~/Library/Application Support/Positron/User/macOS
QClaw ~/.qclaw/agents/
Qoder ~/.qoder/projects/~/.qoderwork/projects/
Qwen Code ~/.qwen/projects/
QwenPaw ~/.copaw/workspaces/~/.qwenpaw/workspaces/
Reasonix ~/.reasonix/%APPDATA%\\reasonix\\Windows
VSCode Copilot ~/Library/Application Support/Code/User/macOS
Visual Studio Copilot %LOCALAPPDATA%\\Temp\\VSGitHubCopilotLogs\\traces\\Windows)、~/Library/Caches/VSGitHubCopilotLogs/traces/macOS)、~/.cache/VSGitHubCopilotLogs/traces/Linux
Windsurf ~/Library/Application Support/Windsurf/User/macOS)、~/.config/Windsurf/User/Linux)、%APPDATA%\\Windsurf\\User\\Windows
Warp ~/.warp/(因平台而异)
WorkBuddy ~/.workbuddy/projects/
ZCode ~/.zcode/cli/db/~/.zcode/cli/
Zed ~/Library/Application Support/Zed/macOS
Zencoder ~/.zencoder/sessions/

Grok 会话从 summary.json(标题、时间戳、项目)读取,可选的 signals.jsontoken 计数器),以及存在时的 chat_history.jsonl 用于完整转录(用户轮次、助手回复、思考过程和工具调用)。若缺少 chat_history.jsonlAgentsView 会回退到仅摘要模式。设置 GROK_DIRgrok_dirs 可覆盖默认目录。

每个目录均可通过环境变量覆盖。详见配置文档)。Cursor 归因统计默认从 ~/.cursor/ai-tracking/ai-code-tracking.db 进行实时的、本机本地读取,并可通过 AGENTSVIEW_CURSOR_ATTRIBUTION_DB 重定向;它们不会通过 PostgreSQL 同步或聚合。

Aider:按仓库的 Markdown 日志

Aider 没有中央会话存储;它为每个仓库写入一个 .aider.chat.history.md Markdown 日志,单个日志会累积多次运行(每次 aider 启动对应一次,以 # aider chat started at ... 标头分隔)。agentsview 将每次运行索引为独立会话

AgentsView 默认不会扫描 Aider 日志。早期版本曾尝试对主目录进行始终开启的有界扫描,但并不可靠:桌面启动和后台使用刷新仍可能触发 macOS 对受保护文件夹的隐私提示。要启用 Aider,请将 AIDER_DIR(或 aider_dirs 配置键)指向你明确希望扫描的代码根目录。扫描在每个已配置根目录下最多向下深入四层,按名称跳过 vendor/build/VCS 目录(node_modulestarget.gitLibrarygo.cargo 及类似目录),并在两秒墙钟时间预算后停止。在 macOS 上,宽泛的主目录根仍会跳过受保护的顶层文件夹,除非直接配置了其中某个文件夹。实时文件监视器仅浅层监视已配置的 Aider 根目录;新仓库由定期同步拾取,该同步每 15 分钟运行一次。

由于格式源自 Markdown,角色从行前缀重建,且没有逐条消息的时间戳;运行的开始时间来自其 # aider chat started at ... 标头(以本地时间写入,假定为 UTC)。

JetBrains Copilot(通过导出器)

JetBrains IDE 将 Copilot 聊天存储在 Nitrite 数据库中,agentsview 不会直接读取。当前支持的路径是先用 copilot-jetbrains-exporter, 将这些会话导出为 Copilot JSONL,然后将 agentsview 指向该输出目录。

# Export JetBrains Copilot sessions to JSONL
copilot-jetbrains-exporter --output ~/.copilot/jetbrains-sessions

# Tell agentsview to index the exported sessions
export COPILOT_DIR=~/.copilot/jetbrains-sessions

或在 ~/.agentsview/config.toml 中:

copilot_dirs = ["~/.copilot/jetbrains-sessions"]

若希望 agentsview 从该来源拾取新对话,请在新的 JetBrains Copilot 会话后重新运行导出器。

Antigravity CLI:高分辨率转录

Antigravity CLI 会话以两种磁盘格式出现:较新版本将对话轨迹存储为 SQLite .db 文件,较旧版本使用 AES-GCM 加密的 .pb 文件。无论哪种格式,完整转录——结构化的工具调用、结果、推理和 diff——均来自 <uuid>.trajectory.json 侧车文件。若无覆盖的侧车文件,agentsview 会回退到摘要模式:对原始 .db 步骤进行启发式解码(仅提示词和工具调用名称),或对 .pb 会话,显示来自 history.jsonl 的提示词以及 brain/ 下的任何纯文本产物(计划、演练、检查点)。摘要模式会话在详情页眉显示链接到本文的「Summary mode」徽章。

要为 .db.pb 会话 alike 解锁完整转录,请在 agentsview 旁运行 agy-reader。agy-reader 与本地 Antigravity 守护进程通信,解密每次对话,并在源文件旁写入 <uuid>.trajectory.json 侧车文件。agentsview 的文件监视器会自动检测侧车文件并就地解析,替代摘要模式——无需重启 agentsview。

go install github.com/mjacobs/agy-reader@latest

# Generate sidecars for existing sessions...
agy-reader --sync

# ...or keep them fresh as you work.
agy-reader --watch

agy-reader 通过解析 ~/.gemini/antigravity-cli/cli.log 自动发现 Antigravity 守护进程 URL。若发现失败(例如日志已轮转),命令会打印特定于平台的说明,用于定位端口并手动导出 ANTIGRAVITY_DAEMON_URL

侧车文件保留在你的机器上。agentsview 不会发起出站请求来生成或读取它们,并将侧车文件视为不受信任的结构化输入——信任模型见 SECURITY.md

PostgreSQL 同步

将会话数据推送到共享 PostgreSQL 实例,供团队仪表板使用:

agentsview pg push             # push local data to the default PG target
agentsview pg push archive     # push to one named PG target
agentsview pg push --all       # push every configured PG target sequentially
agentsview pg status           # show status for the default PG target
agentsview pg status archive   # show status for one named PG target
agentsview pg status --all     # show status for every configured PG target
agentsview pg serve            # serve web UI from the default PG target (read-only)

单目标配置仍使用旧版 [pg] 块。要管理多个 PostgreSQL 目标,请定义命名的 [pg.NAME] 块,并在存在多个目标时设置 default_pg

default_pg = "work"

[pg.work]
url = "postgres://user:pass@work-db/agentsview"
machine_name = "laptop"

[pg.archive]
url = "postgres://user:pass@archive-db/agentsview"
machine_name = "laptop-archive"
exclude_projects = ["scratch"]

命名目标名称不区分大小写进行规范化。alllocal 以及旧版 [pg] 字段名 urlschemamachine_nameallow_insecureprojectsexclude_projects 不能用于 [pg.NAME]

AGENTSVIEW_PG_URLAGENTSVIEW_PG_SCHEMAAGENTSVIEW_PG_MACHINE 仍然可用,但在命名目标模式下它们仅应用于有效默认目标。它们不会重写每个命名的 [pg.NAME] 条目。

自动推送(后台服务)

要在无需手动运行 pg push 的情况下保持共享 PostgreSQL 数据库为最新,请运行自动推送守护进程。它会监视你的会话目录,并在记录新会话后不久推送,并以定期下限作为安全网:

agentsview pg push --watch                 # foreground, Ctrl-C to stop
agentsview pg push archive --watch         # watch one named PG target
agentsview pg push --watch --debounce 1m   # custom coalesce window
agentsview pg push --watch --interval 5m   # custom floor interval

除非你传入一个目标名称,否则 --watch 遵循默认 PG 目标。--all --watch 会被拒绝;多目标后台监视目前仍不在范围内。

守护进程读取与 pg push 相同的 [pg] 配置,因此必须在配置文件中(或其展开的环境变量中)设置 PostgreSQL DSN。请保护配置文件,因为它包含凭据:

chmod 600 ~/.agentsview/config.toml

要以 OS 服务方式无人值守运行(macOS 上使用 launchdLinux 上使用 systemd --user):

agentsview pg service install     # generate the unit, enable + start it
agentsview pg service status      # show manager status
agentsview pg service logs -f     # follow the service log
agentsview pg service uninstall   # stop and remove

pg servepg service 始终使用有效默认 PG 目标。在命名目标模式下,设置 default_pg 以选择这些长期运行命令使用的目标。

Linux 无头机器: 除非为你的用户启用了 lingering,否则 systemd --user 服务会在注销时停止,且不会在启动时自动启动。install 会检测此情况并打印命令;你也可以自行运行:

loginctl enable-linger "$USER"

请参阅 PostgreSQL 文档 了解安装与配置。

DuckDB 镜像与 Quack

DuckDB 支持是一种镜像后端,不能替代本地 SQLite 归档。agentsview serve 仍负责向 SQLite 执行主摄取。当你需要可移植的分析文件、从镜像进行只读本地服务,或通过 DuckDB 的 Quack 协议进行远程只读访问时,可使用 DuckDB。

agentsview duckdb push          # mirror SQLite into DuckDB
agentsview duckdb status        # show mirror sync status
agentsview duckdb serve         # serve web UI from DuckDB (read-only)
agentsview duckdb quack serve   # expose the local DuckDB file over Quack

agentsview duckdb serve 会读取 [duckdb].pathAGENTSVIEW_DUCKDB_PATH。要从远程 Quack 端点提供服务,请改为设置 AGENTSVIEW_DUCKDB_URLAGENTSVIEW_DUCKDB_TOKEN。Quack 仍是较新的 DuckDB 协议,因此 agentsview 采用保守默认值:本地 Quack 服务绑定到 loopback、要求 token,并拒绝非 loopback 的纯 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 扩展。
  • 如果远程 attach 失败,请检查 token、quack: URL、TLS/代理终止,以及服务器是否有意使用 --allow-insecure 以进行纯非 loopback 绑定。
  • DuckDB 搜索目前使用子字符串/正则表达式回退行为。SQLite FTS5 仍是主要本地服务的索引搜索路径。

隐私

agentsview 在服务器启动时以及运行期间每 24 小时,会向 PostHog 发送一次有限的匿名 daemon_active 遥测 ping,并使用稳定的随机安装 ID 作为事件 DistinctId。事件包含 application=agentsview、应用版本、commit、操作系统和 CPU 架构,以及 $process_person_profile=false$geoip_disable=true。不包含会话、项目、提示词、文件路径、账户或机器身份信息。可使用 AGENTSVIEW_TELEMETRY_ENABLED=0TELEMETRY_ENABLED=0 禁用遥测。无论在何种环境下,Go 测试二进制中也会硬性禁用遥测。

所有会话数据均保留在你的本机。服务器默认绑定到 127.0.0.1。更新检查为可选项,可使用 --no-update-check 禁用。

文档

完整文档见 agentsview.io: 快速入门 -- 使用指南 -- CLI 参考 -- 配置 -- 架构


开发

需要 Go 1.26+CGO)、Node.js 22+。

make dev            # Go server (dev mode)
make frontend-dev   # Vite+ dev server (run alongside make dev)
make build          # build binary with embedded frontend
make install        # install to ~/.local/bin
make test           # Go tests (CGO_ENABLED=1 -tags "fts5")
make bench-backends # compare SQLite, DuckDB, and PostgreSQL store reads
make lint           # golangci-lint + NilAway
make nilaway        # NilAway through custom golangci-lint
make e2e            # Playwright E2E tests

make bench-backends 需要 Docker。它会通过 testcontainers 启动 PostgreSQL 容器,将相同的 SQLite fixture 镜像到 DuckDB 和 PostgreSQL,并对共享的 db.Store 读取查询进行基准测试以作相对比较。默认 fixture 为 1,000 个会话和 64,000 条消息;可使用 BENCH_BACKENDS_SESSIONSBENCH_BACKENDS_MESSAGES_PER_SESSION 进行扩展。当 Docker CLI 使用非默认套接字时,在运行基准测试前请为相应套接字导出 DOCKER_HOST

通过 prek: 在克隆后运行 make lint-toolsmake install-hooks(需要 prekuv)。

项目结构

cmd/agentsview/     CLI entrypoint
internal/           Go packages (config, db, parser, server, sync, postgres)
frontend/           Svelte 5 SPA (Vite+, TypeScript)
desktop/            Tauri desktop wrapper

致谢

灵感来自 Andy Fischer 的 claude-history-tool 以及 Simon Willison 的 claude-code-transcripts

许可证

MIT