Unalome Agent Firewall:为AI编程助手构建本地安全审计与行为监控层
1. 项目概述为你的AI编程助手装上“行车记录仪”如果你和我一样日常重度依赖Claude Code、Cursor这类AI编程助手来写代码、重构项目那你肯定有过那么几个瞬间心里会“咯噔”一下。比如当助手突然问你要不要运行一个它生成的、你还没完全看明白的shell命令时或者你隐约记得刚才好像让它读取了一个包含API密钥的配置文件但又不确定它到底“看”到了多少。这种把部分控制权交给一个“黑盒”的感觉对于注重安全和隐私的开发者来说始终是悬在心头的一根刺。Unalome Agent Firewall以下简称Unalome就是为了解决这个痛点而生的。你可以把它理解为你所有AI编程助手的“行车记录仪”兼“安全护栏”。它是一款免费、开源的桌面应用核心使命就一个让你对你电脑上所有AI助手的一举一动了如指掌。它不干扰你的工作流只是在后台静静地观察、记录、分析然后把所有活动——从每一次文件读取、代码生成到每一次网络请求、潜在的风险操作——都用普通人能看懂的语言清晰地呈现在你面前的一个仪表盘里。这个项目的价值在于它填补了当前AI工具生态中的一个关键空白透明度和可控性。我们乐于使用AI提升效率但绝不意味着我们应该对它在我们机器上的行为一无所知。Unalome通过自动发现、解析各大主流AI助手Claude Code, Cursor, OpenClaw等的日志和会话文件构建了一个统一的安全与审计层。无论你是独立开发者、技术团队的负责人还是单纯对AI行为好奇的用户它都能帮你回答几个关键问题我的AI到底在做什么它有没有接触到敏感信息我为此花了多少钱我的文件安全吗2. 核心功能深度解析不止于监控更是主动防护Unalome的设计理念超越了简单的日志聚合。它将监控数据转化为可操作的洞察并提供了主动的防护机制。下面我们来拆解它的几个核心模块看看它们是如何协同工作的。2.1 行动时间线你的AI活动全记录这是Unalome的“中枢神经系统”也是你最先接触的界面。它不是一个冰冷的日志文件列表而是一个实时更新的、可视化的活动流。工作原理Unalome的后台服务用Rust编写会持续监控特定路径下的文件变化。对于Claude Code和OpenClaw它解析的是JSON Lines格式的会话文件对于Cursor它则直接读取其内部的SQLite数据库来追踪活动。每当有新的活动事件产生解析器就会将其转换为标准化的内部数据结构并存入本地的SQLite数据库前端React应用通过Tauri的接口实时获取并展示。关键细节与价值风险分级每个动作都会被自动标记为安全、低、中、高、关键五个风险等级。例如“读取一个.txt文件”可能是安全的而“执行一个带有rm -rf模式的shell命令”则会被标记为“关键”。这个分级逻辑内置在解析器中基于工具的类型、参数内容以及上下文进行判断。完整的令牌经济学对于每一次模型调用它不仅显示总成本还会拆解为输入令牌、输出令牌、提示缓存写入和读取四个部分。这对于优化使用成本至关重要。比如你可能会发现某个助手频繁进行大范围的“缓存读取”这可能提示你的对话上下文过于冗长需要清理。可筛选与可搜索你可以按时间1小时到全部、风险等级、具体的AI助手进行过滤也支持关键词搜索。想象一下你可以快速找出所有涉及“package.json”文件的操作或者查看过去24小时内所有被标记为“高”风险的活动。实操心得刚开始使用时建议把时间筛选设为“全部”然后按风险等级从高到低排序。这能让你迅速发现历史上最危险的一些操作对自己助手的行为模式有个底。我最初就发现Cursor的“重构”功能有时会尝试修改一些系统级配置文件虽然被拦截了但看到记录还是让我惊出一身冷汗。2.2 安全仪表盘与PII守护者主动的风险扫描器这两个功能是Unalome在安全领域的“左右护法”。安全仪表盘向外看检查AI助手所使用的“工具”MCP服务器是否安全PII守护者向内看检查流经AI助手的数据是否包含敏感信息。安全仪表盘的工作流发现自动扫描系统上已配置的MCP服务器。解析分析每个服务器的配置命令、参数、环境变量和其对外提供的工具模式。评估根据一套规则库进行安全检查例如是否允许执行任意Shell命令raw shell是否设置了过于宽松的文件系统访问标志如*通配符工具的模式是否可能被用于提示词注入攻击是否配置了包含API_KEY、SECRET等字样的环境变量是否使用了不安全的HTTP连接而非HTTPS评分与报告为每个服务器生成一个0-100的安全分数并列出所有发现的问题及其严重性。你可以展开查看每个问题的详细描述和具体的配置代码。PII守护者的检测引擎 这是一个基于正则表达式和上下文验证的轻量级检测引擎。它实时扫描AI助手接收和发送的文本内容来自行动时间线的数据寻找敏感模式关键级各类API密钥Anthropic, OpenAI, AWS等、私钥RSA, EC开头、JWT令牌、数据库连接字符串。这部分规则非常严格误报率低。高级社会安全号码、信用卡号会进行Luhn算法校验减少误报。中级电子邮件地址、电话号码。低级IP地址、环境变量名。每一条发现都会附带其出现的上下文片段并建议处理方式如“立即轮换该API密钥”。你可以手动忽略误报也可以按类型批量清除记录。注意事项PII检测是在本地进行的数据绝不会离开你的电脑。但你需要理解这是一种模式匹配无法做到100%准确。它可能会将一些类似密钥的随机字符串误报为密钥假阳性也可能无法识别某些自定义格式的敏感信息假阴性。它的核心价值是提供一道重要的警报线而非终极解决方案。2.3 安全网与数据盾牌文件与网络的双重保险如果说前面的功能是“监控”和“审计”那么安全网和数据盾牌就是实打实的“防护”和“控制”。安全网文件的时光机这是我最欣赏的功能之一。它的逻辑简单却强大每当AI助手试图写入或修改一个文件时Unalome会在操作发生前自动为该文件创建一个快照副本并将其保存到安全的位置。触发条件仅限于写操作创建、修改。读操作不会触发快照以避免不必要的存储开销。文件限制默认只保护小于5MB的文本类文件如源代码、配置文件、Markdown。这是为了避免对大型二进制文件如图片、视频进行无意义的备份占用过多磁盘空间。恢复操作在Unalome界面中你可以浏览所有被保护文件的快照历史点击任何一点即可一键恢复。你甚至可以预览快照内容确认无误后再恢复。空间管理默认设置下快照总大小上限为500MB保留30天。你可以在设置中调整这些参数。当空间不足时它会自动清理最旧的快照。数据盾牌网络连接的瞭望塔这个功能监控所有由AI助手发起的出站网络连接并对目标域名进行分类。分类它会将域名识别为“AI提供商”如api.openai.com、“云服务”如s3.amazonaws.com、“包注册表”如registry.npmjs.org等。已知的、常见的开发相关域名会被自动归类。未知域处理任何无法识别的域名都会被标记为“未知”并出现在待审查列表中。你可以手动将其标记为“可信”比如你公司内部的服务或“可疑”。价值这能有效帮助你发现一些异常行为。例如如果你的AI助手突然开始连接一个你从未听说过的陌生域名这可能意味着某个MCP工具正在尝试进行数据外传是一个重要的安全预警信号。2.4 成本追踪器与周报让AI开销一目了然对于使用付费API模型如GPT-4, Claude Opus的助手成本控制是个现实问题。Unalome的成本追踪器聚合了所有助手的API调用数据。多模型支持它内置了超过40个主流模型的定价数据包括Anthropic、OpenAI、Google、xAI、DeepSeek等全家桶。这意味着无论你的助手调用哪个模型它都能准确计算花费。预算预警你可以设置月度或周度预算。当花费接近阈值时界面会有视觉提示如进度条变黄变红。周报整合每周Unalome会自动生成一份HTML格式的报告总结过去一周的活动量、成本趋势并与上周对比、安全评分、PII发现数量、安全网使用情况等。这份报告是离线的直接保存在你的桌面供你复盘。全局开关与安全模式在Unalome的顶部有一个显眼的“全局开关”。你可以一键暂停所有AI助手的活动实际上是通过阻止它们执行写操作和某些高风险读操作来实现。更精细的是“安全模式”开启后助手将只能读取文件和执行查询而无法创建、修改或删除任何文件相当于给助手套上了一个“只读”枷锁在你不确定是否要信任某个新工具时非常有用。3. 技术架构与实现剖析如何构建一个本地的、高效的看门狗Unalome选择的技术栈充分体现了其“本地优先、高效可靠”的产品哲学。整个应用是一个使用Tauri 2框架构建的桌面应用这意味着前端是React TypeScript后端是Rust两者通过安全的、类型化的IPC进行通信。3.1 为什么是Tauri Rust这是项目在技术选型上的关键决策。相比于流行的ElectronTauri将应用的后端逻辑从Node.js换成了Rust并使用系统原生的WebView来渲染前端界面。性能与资源占用Rust的零成本抽象和内存安全特性使得后台常驻的日志监控、文件快照、正则扫描等操作极其高效且占用资源极少。相比Electron应用动辄几百MB的内存占用Unalome显得非常轻量。安全性Rust的内存安全保证从根本上减少了后台服务出现内存崩溃或安全漏洞的风险。对于一款安全软件来说自身代码的健壮性是信任的基石。打包体积最终生成的应用程序包.app或.exe体积小巧因为不需要捆绑一个完整的Chromium浏览器。3.2 后端核心模块设计查看src-tauri/src目录可以看到清晰的功能划分discovery.rs这是“自动发现”功能的引擎。它通过检查固定的文件路径、查询进程列表、解析特定配置文件等方式来定位你电脑上安装了哪些AI助手。例如它会检查~/Library/Logs/Claude/目录来发现Claude Desktop。parsers/这是项目的“翻译官”目录。每个主流的AI助手Claude Code, Cursor, OpenClaw...都有一个对应的解析器文件。因为每个助手记录日志的格式和位置都不同这些解析器的职责就是将五花八门的原始日志转换成Unalome内部统一的Activity数据结构。例如cursor.rs需要处理SQLite数据库的复杂查询而claude_code.rs则逐行解析JSONL文件。pii/这里包含了所有用于检测敏感信息的正则表达式模式以及验证逻辑如信用卡号的Luhn校验。添加对新国家身份证格式的支持主要就是在这里贡献新的正则表达式。safety_net/文件快照引擎。它利用操作系统的文件系统事件监听或轮询来捕获写操作并使用高效的文件拷贝库如fs_extra在瞬间创建快照。它还负责快照的存储、索引、清理和恢复逻辑。database.rs使用sqlx库与SQLite进行所有交互。所有解析后的活动、快照元数据、PII发现、网络连接记录都存储在这里。这种设计使得前端查询、过滤和聚合数据非常快速。3.3 前端状态管理与通信前端采用React状态管理可能基于Context或轻量级状态库如Zustand。核心的挑战是如何高效地处理可能非常庞大的时间线数据。虚拟列表行动时间线很可能使用虚拟滚动技术只渲染可视区域内的活动卡片从而保证即使有上万条记录UI依然流畅。实时更新前端通过Tauri的listenAPI监听后端发出的事件如new-activity当后端解析器捕获到新活动时会推送事件到前端实现时间线的实时更新而无需页面轮询。图表渲染成本趋势、活动统计等图表使用Recharts库绘制这是一个灵活且性能不错的React图表库。数据流闭环用户在前端的操作如忽略一个PII警报、恢复一个文件快照会通过Tauri命令调用对应的Rust函数Rust函数修改SQLite数据库然后通过事件通知前端更新界面形成一个完整的本地闭环。4. 从开发到分发构建属于你自己的安全层Unalome是开源的这意味着你不仅可以使用它还可以参与改进它甚至为自己或团队构建定制版本。项目采用Apache 2.0许可证给予了最大的使用自由度。4.1 本地开发环境搭建如果你想贡献代码或只是想看看它是如何运行的搭建开发环境非常简单安装前置依赖确保你的系统有Node.js 18和Rust 1.75工具链。然后按照Tauri官网指南安装Tauri CLI。获取代码git clone项目仓库。安装与运行在项目根目录执行npm install安装前端依赖然后运行npm run tauri dev。这条命令会同时启动Rust后端服务和前端开发服务器并打开一个调试窗口运行应用。热重载功能让你修改前端代码后能立即看到效果。4.2 为macOS构建签名并公证的发行版这是项目文档中非常精华的一部分详细说明了如何将一个Tauri应用打包成能在macOS上顺利分发的正式版本。macOS的Gatekeeper安全机制会阻止运行未签名的应用程序因此签名和公证是必须的步骤。步骤详解准备签名凭证你需要一个苹果开发者账号每年99美元。在账号中创建“Developer ID Application”类型的证书。这个证书用于向苹果证明你的身份。配置环境变量复制项目提供的示例文件src-tauri/.env.signing.example为src-tauri/.env.signing。这个文件包含你的核心机密APPLE_SIGNING_IDENTITY通过终端命令security find-identity -v -p codesigning获取它看起来像“Developer ID Application: Your Name (XXXXXXXXXX)”。APPLE_ID你的苹果账号邮箱。APPLE_PASSWORD切勿使用你的账户密码必须在苹果账号管理页面生成一个“App专用密码”。APPLE_TEAM_ID你的10位团队ID在苹果开发者网站可以找到。执行构建在终端中先source这个环境变量文件然后运行npm run tauri build。Tauri CLI会接管后续所有复杂流程编译Rust代码为本地二进制。打包React构建产物。将两者整合进Unalome Firewall.app包。使用你的证书对这个.app包进行代码签名。将签名后的应用上传到苹果的公证服务。等待苹果服务器进行自动化安全扫描通常几分钟。下载公证“票证”并将其“钉”到应用包中。最终生成一个已经签名且公证过的.dmg磁盘映像安装文件。踩坑记录我第一次构建时公证步骤失败了。原因是我的.env.signing文件中的APPLE_PASSWORD包含了特殊字符在shell中解析出了问题。解决方案是确保密码用引号包裹或者最好创建一个不包含特殊字符的App专用密码。另外确保网络通畅因为上传和下载公证票证需要连接苹果服务器。4.3 如何贡献你的力量开源项目的生命力在于社区。Unalome提供了几个绝佳的入门贡献方向添加新的AI助手解析器如果你使用的助手比如某个新兴的、基于VS Code的AI插件尚未被支持你可以参考parsers/目录下的现有实现编写一个新的解析器。核心工作是找到该助手的日志存储位置和格式然后实现将原始数据转换为UnalomeActivity结构的逻辑。丰富PII检测规则项目默认的规则主要覆盖欧美地区的敏感信息格式。你可以贡献中国身份证号、手机号更精确的匹配、银行卡号或者其他国家地区的特定格式如巴西的CPF。这主要在pii/模块中增加新的正则表达式。改进UI/UX与本地化前端是React TypeScript如果你对界面交互有想法或者想将应用翻译成中文或其他语言这些都是非常受欢迎的贡献。5. 实际使用体验与场景建议经过一段时间的使用Unalome已经从我的一个“实验性工具”变成了开发环境中的常驻应用。以下是一些真实的使用场景和体会场景一评估一个新的MCP工具当我从社区发现一个新的、功能强大的MCP工具比如一个能直接操作数据库的工具时以前我会犹豫是否要安装。现在我会在安装后首先打开Unalome的安全仪表盘查看它的安全评分和详细分析。我会仔细检查它要求哪些权限执行什么命令。然后我会在Unalome的“安全模式”下试用这个工具同时在“行动时间线”里观察它的所有行为确认没有异常的网络连接或文件访问后再放心地正常使用。场景二事后审计与问题排查有一次我的一个项目配置文件被意外修改导致服务启动失败。我不确定是手动误操作还是AI助手干的。我打开Unalome在“安全网”中搜索那个配置文件名立刻看到了在问题发生前几分钟Claude Code创建的一个文件快照。我对比了快照和当前文件迅速定位了被修改的行并一键恢复到了之前的状态整个过程不到一分钟。场景三团队成本与合规洞察虽然Unalome是桌面单机应用但其生成的“周报”HTML文件可以作为一种轻量级的汇报工具。在小型团队中可以鼓励成员每周导出报告快速汇总AI辅助编程的整体开销、高频操作以及发现的安全事件作为团队技术运营的参考数据。遇到的挑战与局限覆盖范围Unalome的威力取决于其对AI助手的支持深度。它目前对官方明确支持的几款助手Claude Code, Cursor, OpenClaw解析得最好。对于一些通过其他方式集成AI功能的编辑器或IDE可能无法捕获全部活动。这需要社区不断贡献新的解析器。性能影响文件快照功能涉及磁盘I/O。在极端情况下如果AI助手频繁保存大量小文件比如每秒几次可能会带来轻微的性能开销。不过在我的M1 MacBook Pro上日常使用中完全感知不到它的存在。“逃逸”可能Unalome的监控基于对已知日志文件和行为的解析。理论上一个被恶意改造的AI助手或MCP工具如果刻意绕过常规日志渠道或模拟正常行为有可能避开监控。但这需要相当高的攻击成本对于防范主流的、正规的AI工具链的意外风险Unalome已经足够有效。Unalome Agent Firewall代表了一种重要的理念在享受AI自动化带来的红利时我们必须有能力保持最终的监督权和控制权。它通过精湛的技术实现将复杂的日志和风险转化为清晰的洞察让不可见的变得可见让不可控的变得可控。对于任何一位严肃的、关注安全和隐私的开发者来说这不再是一个可选项而应该成为你AI工作流中一个标准的基础设施组件。