桃子桃子快讯
返回首页
工具

Locus-Engine 开源:为 AI 代码代理提供微秒级 AST 安全防火墙

locus-engine 是用纯 Rust 实现的 AI 代理安全网关,可在微秒级对 AI 生成代码做 6 项确定性静态…

2026.08.21 · 周五4 分钟阅读

近期在 Hacker News 上亮相的开源项目 locus-engine,试图解决 AI 代码生成代理在生产化落地中的两个工程痛点:一是 AI 写出的代码常带有非确定性语法与并发缺陷(如未闭合定界符、async 互斥锁死锁、ReDoS、数组越界等),二是把整段源码反复塞进大模型上下文窗口会造成大量 token 浪费。locus-engine 用 100% 安全 Rust 实现,主打零外部依赖与微秒级响应,可作为 CLI、MCP Server 或 Rust 库被 AI IDE 直接调用。

核心能力:6 项确定性安全检测

locus-engine 的 AstGuard 模块沿固定管线对代码做 6 遍检查,只要任一项不通过便立即拒绝,并返回反例。具体规则包括:

  • 定界符平衡:基于 Dijkstra 栈扫描,对 {} [] () 做单遍线性校验,安全跳过字符串与转义。
  • 异步互斥锁陷阱:拦截 std::sync::Mutex 跨 .await 持锁的情况,避免线程池耗尽与死锁。
  • 除零保护:在算术运算前证明分母非零。
  • 数组越界防护:检查索引是否存在长度守卫。
  • .unwrap / .expect 陷阱:识别未受守卫的 panic 触发点。
  • ReDoS 灾难性回溯:揪出指数级嵌套量词的正则表达式。

这套机制的关键卖点是「确定性」——不像 LLM 二次评审那样给出概率性建议,而是给出形式化的通过/拒绝结论。

性能基准:微秒级延迟

项目以 opt-level=3、lto=thin、codegen-units=1 的 release 配置跑出官方基准:

  • AstGuard 6 遍验证:1,000 次迭代共 9.036 ms,平均 9.04 µs / 次。
  • AstContextCache(FIPS 180-4 SHA-256):1,000 次插入/查询共 18.675 ms,平均 18.68 µs / 次。
  • MCP Stdio JSON-RPC 调度:1,000 次往返共 42.316 ms,平均 42.32 µs / 次。
  • AstDiffEngine(补丁与骨架):500 次共 28.063 ms,平均 56.13 µs / 次。
  • SymbolGraph 多语言索引器:600 文件、1,600 个符号共 16.294 ms,平均 27.15 µs / 文件。

相比之下,传统 Lint 工具(ESLint、Clippy)通常因进程派生产生 250–1,500 ms 延迟,云端 AI 防护栏因网络往返一般在 500–2,500 ms 量级。

上下文压缩与符号图

为了减少喂给大模型的 token,项目提供 AstDiffEngine 与 SymbolGraph 两套机制:一方面通过 SHA-256 缓存 AST 节点,另一方面只把函数签名、类型契约等「骨架」送入上下文,官方在示例中实现了 74.8% 的 token 节省。SymbolGraph 还能跨文件抽取多语言符号关系,把索引结果以 JSON-RPC 2.0 over stdio 暴露给兼容 MCP 的 IDE。

定位与边界

locus-engine 把自己定位成 AI 写代码流水线的「静态安全门」,而不是替代 Lint 工具或代码评审。它不依赖任何加密或运行时的额外依赖,整套引擎采用 100% safe Rust 实现,强调零 unsafe 块和零进程外调用。在演示中,locus check src/async_task.rs 直接命中「async mutex deadlock」并给出修复建议,locus graph src/ 则在毫秒级输出符号索引与 token 节省比例。对于已经在用 Claude Code、Cursor、Copilot 或自研代理的团队,这类工具可以以本地组件的形式嵌入流水线,承担一部分原本需要云端 LLM 重审才能发现的安全问题。

信源