跳转到主要内容
failproofai 仪表板是一个用于监控 AI Agent 会话和管理策略的本地 Web 应用程序。查看 Agent 在你离开时做了什么。

启动仪表板

http://localhost:8020 打开。 仪表板直接从文件系统读取数据——包括你的 Claude Code 项目文件夹和 failproofai 配置文件。不会向任何远程服务写入数据。

页面

项目

列出在你机器上发现的所有 Claude Code、OpenAI Codex、GitHub Copilot CLI (测试版)、Cursor Agent (测试版)、OpenCode (测试版)、Pi (测试版) 和 Gemini CLI (测试版) 项目。Claude 项目从 ~/.claude/projects/(或通过 CLAUDE_PROJECTS_PATH 设置的路径)中发现;Codex 项目通过扫描 ~/.codex/sessions/<YYYY>/<MM>/<DD>/*.jsonl 下的所有记录并按每个会话第一条记录中的 cwd 分组来发现;Copilot CLI 项目通过扫描 ~/.copilot/session-state/<sessionId>/workspace.yaml(可通过 COPILOT_HOME 配置)并按其 cwd 字段分组来发现;Cursor Agent 项目通过扫描 ~/.cursor/agent-sessions/<sessionId>/(可通过 CURSOR_HOME 配置,并以 conversations/sessions/ 作为备用路径)下的逐会话元数据,从 meta.json / session.json / workspace.yaml 中查找 cwd 标量来发现;OpenCode 项目通过 opencode db --format json 查询位于 ~/.local/share/opencode/opencode.db 的 SQLite 数据库来发现(读取 sessionproject 表并按 project_id 分组);Pi 项目通过扫描 ~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl(可通过 PI_SESSIONS_DIR 配置)下的逐会话 JSONL 记录,并从每个会话的第一条记录中提取 cwd 来发现;Gemini CLI 项目通过扫描 ~/.gemini/tmp/<basename>/chats/session-<timestamp>-<uuid-prefix>.jsonl(可通过 GEMINI_SESSIONS_DIR 配置),并从同级 .project_root 文本标记中恢复规范 cwd 来发现。被多个 CLI 使用的项目会渲染为单行并显示所有匹配的标记。使用表格上方的 CLI 下拉菜单按特定 Agent CLI 筛选;URL 会将你的选择保存为 ?cli=claude|codex|copilot|cursor|opencode|pi|gemini 每个项目显示:
  • 项目名称(从文件夹路径派生)
  • CLI 标记——Claude Code(橙色)、OpenAI Codex(紫色)、GitHub Copilot(蓝色)、Cursor Agent(翠绿色)、OpenCode(琥珀色)、Pi(粉色)和/或 Gemini CLI(天蓝色)
  • 最近会话活动的日期
点击项目可查看其会话。

会话

列出某个项目中的所有会话。每个会话显示:
  • 会话 ID
  • 开始和结束时间戳
  • 工具调用次数
  • Hook 活动次数(触发的策略数)
使用日期范围筛选器和会话 ID 搜索来缩小列表范围。会话支持分页。 点击会话可打开会话查看器。

会话查看器

会话查看器回答了自主 Agent 的核心问题:Agent 做了什么,是否保持在正轨上?标题旁的 CLI 标记表明该会话是 Claude Code、OpenAI Codex、GitHub Copilot CLI、Cursor Agent、OpenCode、Pi 还是 Gemini CLI 的记录。它显示会话中发生的所有事情的时间线:
  • 消息 - Claude 的文本回复和用户提示
  • 工具调用 - Claude 调用的每个工具,包括其输入和输出
  • 策略活动 - 针对每个工具调用,显示哪些策略触发了以及返回了什么决策
顶部的统计栏显示会话时长、工具调用总数以及 hook 决策摘要(allow / deny / instruct 计数)。 点击 Download Logs 按钮可导出会话。对于 Claude Code、Codex、Copilot、Cursor、Pi 和 Gemini 会话,你将获得磁盘上原始的 JSONL 记录(逐字节);对于 OpenCode(其会话存储在 SQLite 中而非磁盘文件),你将获得一个镜像底层 session / messages / parts 表的 JSON 文档。

审计

一份对 Agent 在过去会话中实际行为的个性化报告。运行与 failproofai audit CLI 相同的扫描,但将其渲染为单屏可分享的海报,以及四个折叠以下的区块:
  1. 海报 — 填满第一个视口。自包含的 PNG 截图区域,包含 failproof_ai 品牌标识 + 审计标签 · 原型索引(№ NN of 08)+ 审计日期 · 数字评分(0–100)+ 百分位排名标记(top 15%)· 原型名称(the optimistthe cowboythe explorerthe goldfishthe paranoid architectthe precision builderthe hammerthe ghost 之一)+ 3 关键词条 · // only N% of agents are this archetype 稀有度说明 · 8×8 像素印记图块 · audit yours → failproof.ai 页脚。截图框外有三个分享按钮:post your archetype(X 分享意图)、share on linkedindownload poster。截图通过 html-to-image 运行,PNG 与屏幕渲染像素级一致(虚线边框、SVG logo 遮罩、渐变、字体度量——全部保留)。
  2. 优势 — 平静的 ✓ 行列表,列出 Agent 已经做对的行为,从实时审计数据中派生(干净的工具调用率、无直接推送到主分支、零凭据泄露、零重试风暴)——每项仅在相关策略在审计窗口内记录干净时才会显示。
  3. 问题 — 列出遗漏内容的表格,按严重程度排序:时间 · 遗漏内容 + 本应捕获它的策略 · 严重程度标记 · 出现次数,其中复现次数显示为 new(一次)、N× seen(2–9 次)或 recurring(10 次以上)。
  4. 改进方法 — 平静的行列表,每条对应一个建议策略:白色策略名称、一行描述、右侧的安装命令 + 复制按钮。区块标题显示 enable all N → projected <score> · <tier>(应用所有修复后的预期评分),[install all] 按钮可复制所有建议策略的组合 failproofai policy add a b c … 命令。
  5. 下次更好 — 两张并排卡片。左侧:设置提醒(3d / 7d / 14d / 30d 周期选择器;通过 /api/auth/reminder 登录后持久化)。右侧:解锁 failproof 福利——invite a friend 打开一个弹窗,接受逗号/空格/换行分隔的好友邮件列表(每次最多发送 10 个),POST 到 /api/audit/invite,后者转发到 api-server 的 POST /v0/invite。api-server 从 invite@failproof.ai 向每位收件人发送一封邮件,发件人抄送并设置 Reply-To,这样收件人可以看到是谁邀请了他们,发件人也会在收件箱中收到副本。匿名用户会先通过 AuthDialog 验证,以便在发送邀请前获取发件人邮箱。权益/福利兑现将在后续跟进。
failproofai audit 运行时驱动——关于底层扫描引擎、支持的标志和每条记录的缓存不变性,请参阅 Audit CLI。仪表板将最新结果缓存在 ~/.failproofai/audit-dashboard.json(模式 0600,单槽位,新运行覆盖),因此重新访问是即时的;每条记录和完整结果的缓存在读取时一旦超过 7 天即被拒绝,这样仪表板就不会静默返回一周前的结果——超过 TTL 后,/audit 会回退到空状态并提示重新运行。点击报告底部附近的 [ re-audit now ] 会向 /api/audit/run POST noCache: true——重新审计会绕过每条记录的缓存并从头重新扫描每条记录,而不是静默返回缓存结果——仪表板以 1Hz 轮询 /api/audit/status 直到运行完成;运行期间顶部会显示一个带有计时器的固定粉色进度条,成功后新结果会原地替换(无需全页刷新;重新审计失败时会保留之前的报告)。失败时进度条变红,并根据 RerunError.kindtimeout / network / post_failed)显示相应提示。空状态(无缓存或已过期)和零会话状态(缓存存在但扫描未找到记录)会分别显示。

策略

一个包含两个标签页的页面,用于管理策略和查看活动。
  • 从单个面板多选 failproofai 保护哪些 Agent CLI——Claude Code、OpenAI Codex、GitHub Copilot、Cursor Agent、OpenCode、Pi 和 Gemini CLI 均有一行显示安装状态(Active / Detected / Inactive)、用户范围的设置路径和品牌色调。勾选或取消勾选所需的 CLI,然后点击 Apply changes 一步完成安装/卸载差异。PATH 上检测到二进制文件的 CLI 会被预先勾选。
  • 单击即可开启或关闭单个策略(写入 ~/.failproofai/policies-config.json——所有已安装 CLI 共享)
  • 展开策略以配置其参数(适用于支持 policyParams 的策略)
  • 设置自定义策略文件路径

自动刷新

仪表板在顶部导航中提供自动刷新开关。启用后,当前页面会定期刷新,以实时显示新会话和策略活动。这对于监控长时间运行的自主 Agent 会话至关重要。

禁用页面

如果只需要仪表板的某些部分,可将 FAILPROOFAI_DISABLE_PAGES 设置为以逗号分隔的页面名称列表:
有效值:policiesprojectsaudit

配置项目路径

默认情况下,仪表板从标准 Claude Code 项目目录读取。对于自定义设置,可以覆盖此路径:

从非 localhost 主机访问

开发模式npm run dev)下运行仪表板,并从 localhost 以外的主机名访问时——例如自定义域名、远程 IP 或隧道 URL——你可能会看到如下警告:
这是 Next.js 阻止对其 HMR(热模块重载)websocket 的跨域访问,这是一个仅限开发环境的功能。要允许你的主机,请使用 --allowed-origins 标志:
对于多个主机或 IP,传入以逗号分隔的列表:
你也可以设置 FAILPROOFAI_ALLOWED_DEV_ORIGINS 环境变量:
这仅适用于开发模式。运行 failproofai(生产模式)时,不存在 HMR websocket,也不存在跨域开发资源问题。