跳转到主要内容
仪表板是一个本地网页,用来查看 CC Safety Net 在这台机器上阻止了什么、为什么阻止,并修改相应设置。运行 cc-safety-net gui 即可打开。在仪表板里可以复核决策、不写 JSON 就编辑策略、起草项目策略,以及为每个编码智能体安装 hook。 底层格式见策略、自定义规则和审计日志。

启动仪表板

该命令会打印仪表板 URL,并在默认浏览器中打开:
传入 --no-open 可只获取 URL 而不打开浏览器,适用于 SSH 或容器等场景。服务器在前台运行,直到你用 Ctrl-C 停止。选项和错误见 gui。

本地环回范围

服务器只监听 127.0.0.1,网络上的任何设备都无法访问它。每次启动都会在 URL 中生成一个新令牌,服务器会拒绝不带令牌的请求。之前启动时收藏的 URL 会失效,重新运行 cc-safety-net gui 即可。 gui 把令牌打印到 stdout。因此,自己运行了 cc-safety-net gui 的智能体也持有令牌,可以使用仪表板,包括应用项目策略。不过,智能体直接编辑 policy.json 或运行 cc-safety-net policy apply 仍会被 CC Safety Net 拒绝。 页面只读取本地策略文件和审计日志。概览打开时会发出两个不带凭证的出站请求:一个向 npm 注册表检查更新,另一个从 GitHub 读取仓库的公开 star 数。只有在你点击 在 GitHub 上加星 时,才会使用你的 gh 登录身份。

六个视图

每个视图都有自己的地址,活动和保护视图的过滤条件也保存在地址中,重新加载或后退时会恢复。 已保存的策略处于下列情况时,每个视图上方都会出现横幅,每种情况一行:
  • Command protection is off: built-in destructive command rules are not enforced. Catastrophic and custom rules still apply.
  • Secret protection is off: sensitive files and deny paths are not blocked.
  • A fallback configuration is being enforced: <reason>
回退配置的含义以及如何退出,见配置恢复。

概览

概览汇总最近 7 天的数据;保留期短于 7 天时,汇总整个保留窗口。 状态卡片。 顶部卡片根据已保存的策略显示下列标题之一: Needs attention。 只有存在需要处理的事项时才会出现这个列表,每一项都链接到处理它的位置: 防护错误表示 CC Safety Net 没能完成对命令的检查,因此阻止了它。反复出现时,见故障排除。

活动

活动视图按时间倒序列出智能体运行过的命令。打开时显示最近 7 天,最远可回溯到审计保留期。 机密脱敏只识别已知的凭证形式,因此条目中仍可能包含路径、主机名和名称。分享此视图中的任何内容前,请先阅读机密脱敏。

过滤器

决策过滤器默认为 Blocked,其中包含防护错误。阻止记录了失败阶段,或同一命令在一个会话中被阻止两次及以上时,会出现 Likely false positive。Search commands or rule IDs 匹配 rule ID 和命令文本,不区分大小写。 列表对每种决策最多加载最新的 500 个条目,但计数和指标卡始终覆盖整个窗口。想看更早的条目,请缩小窗口。活动视图无法读取部分日志文件时,页脚会说明,此时列表和计数都不完整。

每个条目的操作

选择某一行可查看完整命令、原因、规则和所在目录。

报告误报

Report false positive 会用项目的误报表单准备一份公开的 GitHub issue。提交前每个字段都可以编辑。 对话框会把项目路径替换为 <project>,把主目录替换为 ~。其他路径和名称会保留,不想公开的内容请自行删改。在 GitHub 上提交表单之前,不会向 GitHub 发送任何内容。

保护

保护视图用来选择 CC Safety Net 的内置保护阻止什么,包括安全预设、破坏性命令规则和机密保护规则。你自己的 rulebook 在自定义规则视图中。顶部的 My policy 和 Project policy 用于选择要编辑的策略。 按 / 可按规则名称、ID、描述或受保护的路径搜索规则。Changed from default 只列出被你或环境变量改动过的规则。

已保存与未保存

编辑会累积到草稿中,直到点击 Save 写入用户策略文件。在同一浏览器会话内重新加载,草稿依然保留。 已保存的策略有错误时,表单中显示内置默认值,并禁用 Save,以免这些默认值覆盖你的文件。请先执行修复。

起草项目策略

Project policy 会把保护视图切换为项目 policy.json 的草稿。在该目录下工作的每个人,都会在自己的策略之上叠加这份文件。草稿的目标是仪表板的启动目录,Change folder… 可以换成其他目录。 编辑控件会把它标记为 Project。被标记的路径列表一开始是空的,草稿不会把你的个人路径写进仓库。 Save 变成 Review and apply。对话框显示目标路径、一张按 Setting / Now / After 排列的生效策略对照表,并对草稿比你自己的策略更弱的每项设置给出警告。警告列表见报告的削弱。在你选择 Apply project policy 之前,不会写入任何内容。 你自己的策略文件有错误时,草稿会以 Repair your policy first 拒绝启动。草稿也无法写入存放用户 .cc-safety-net/ 的目录,详见用户配置目录不是项目。 草稿执行的检查与 cc-safety-net policy apply 相同。两份策略如何合并,见项目策略。

测试命令

Test a command 显示某条 shell 命令是否会被阻止,但不会执行它。测试会用上你未保存的编辑和自定义 rulebook,因此可以在保存前检查改动。在项目草稿中,测试的是你的策略叠加草稿后的结果。 会被阻止时,结果显示 rule ID、原因,以及复合命令中被阻止的部分。在终端里做同样的检查,用 explain。

安全预设

选择 Standard、Strict 或 Paranoid。每个预设都包含前一个预设的全部内容。各预设改变了什么,见模式。 有环境变量提高了保护强度时,视图会在 An environment variable raises protection beyond these settings: 之后列出该变量。此时 CC Safety Net 阻止的范围可能比显示的预设更大。 默认折叠的 Advanced settings 卡片可以在不改变预设的情况下,把 Fail closed、Paranoid rm -rf checks 和 Paranoid interpreters 分别设为 From preset、Always on 或 Always off。同一张卡片中还有 Allow discarding local changes in linked git worktrees。

命令保护

Command protection 面板按类别列出内置的破坏性命令规则。Always on 组中是灾难性规则,无法关闭。Strict 或 Paranoid 标记表示该规则需要相应预设。 规则的值不是来自预设时,注记会说明原因: 只想放行某一条被阻止的命令时,在这里关闭对应规则,不要关闭整个面板。见允许被阻止的命令。Reset all 把面板中的所有规则恢复为预设值。

机密保护

Secret protection 面板的用法相同,规则按类别分组,例如 Sensitive file names 和 Coding agent credentials。保护具体路径的规则带有信息按钮,列出这些路径。 Coding agent settings 组的规则出厂时为关闭,并显示 Off by default,需要逐条开启。原因见 编码 CLI 配置层。想放行某个被阻止的文件,见允许被阻止的文件。
关闭命令保护或机密保护后,该层的所有可配置规则都会停用,直到重新开启。只有 Always on 的命令规则会继续阻止。应优先使用单条规则覆盖或较低的预设,而不是关闭总开关。

例外和额外路径

Exceptions and extra paths 面板包含三个路径列表。条目可以是绝对路径,也可以以 ~/ 开头。主目录本身及其上级目录会被拒绝。粘贴多行内容即可一次添加多个条目。 每个列表接受哪些条目,见允许路径、拒绝路径和机密允许路径。

策略 JSON

默认折叠的 Policy JSON 卡片是表单将要保存的策略的只读副本。文件有错误期间,显示磁盘上的原样文件;在项目草稿中,则显示应用时将写入的那份文件。

修复

策略文件有错误时,保护视图会列出错误并显示 Repair 按钮。修复会保留所有有效设置并丢弃无效设置。文件不是可读的 JSON 时,会恢复默认值。
如果文件中有你在意的手写配置,修复前请先备份到安全的地方。
要完全重置策略,使用设置中的 Reset policy。

自定义规则

自定义规则视图以只读方式、按当前的实际执行情况显示你编写的 rulebook。CC Safety Net 绝不会从仪表板写入 rulebook,而是生成提示词,供你复制给负责编写规则的编码智能体。rulebook 的格式见自定义规则。

Rulebook 列表(只读)

每条规则显示它匹配的命令、custom.<name> 形式的 ID、原因,以及触发它的参数。被覆盖项关闭的规则不会列出。没有任何 rulebook 时,视图会引导你使用 Create a rule 或运行 npx -y cc-safety-net rule init。

Problems

只有存在需要报告的问题时,才会出现 Problems 区域。其中的错误表示 CC Safety Net 跳过了某个 rulebook,其规则一条都不执行。你编写的规则没有触发时,先检查这里。

Create a rule(仅复制)

Create a rule 生成一段提示词,让编码智能体编写规则。选择 This project 或 All projects,在 What should be blocked? 中描述想要的规则,然后点击 Copy prompt。 规则匹配的是命令、它的子命令和精确参数,不匹配文件路径。要阻止某个文件或目录,把它加入例外和额外路径中的 Always block access to。 提示词会要求智能体使用 cc-safety-net 技能,技能不可用时改用 npx -y cc-safety-net rule doc。

智能体

智能体视图为本机上的每个编码智能体安装或删除 CC Safety Net hook。不使用仪表板时各智能体如何设置,见安装。 操作失败时,该行下方会显示命令输出,并报告 Install failed 或 Uninstall failed。安装了新的智能体或手动编辑其配置后,点击 Refresh agents。

设置

外观。 仪表板会把 Theme 和语言一起保存,不写入策略。 审计日志。 Keep logs for 设置审计记录保留的天数,范围为 1 到 365,一改动就立即保存。策略需要修复、项目草稿处于打开状态,或保护视图有未保存的更改时,修改会被拒绝,并提示 Retention unchanged。见保留期。
缩短保留期无法撤销。下次清理会删除早于新窗口的条目。需要保留的条目,请先在活动视图中用 Copy log entry 复制出来。
文件。 显示用户策略路径;有项目策略生效时,还显示项目策略路径。项目策略削弱了你的设置时,会逐条列出每一处改动。想拒绝这些改动,见忽略项目策略的削弱。 Danger zone。 Reset policy 用默认值替换你的策略文件。项目草稿处于打开状态时不可用。
重置会丢弃已保存的配置。所有预设选择、规则覆盖、允许路径和拒绝路径都会恢复默认,且无法撤销。重置只影响策略文件,不会改动自定义 rulebook。

仪表板语言

侧边栏底部的语言菜单可在英语、日语(日本語)和简体中文之间切换仪表板。未选择语言时,仪表板跟随浏览器的语言,无法匹配时回退到英语。阻止原因、规则 ID 和服务器错误始终为英文。 仪表板把语言和主题保存在 ~/.cc-safety-net/ 下的 gui.json 中;设置了 $CC_SAFETY_NET_HOME 时,则保存在该变量指向的目录中。这两项选择在重新启动后依然保留,且不属于策略。
最后修改于 2026年10月27日