AI风向

【AI风向】126分登顶HN热榜:Statewright用状态机给AI编程Agent套上"缰绳",本地模型任务完成率从20%暴拉到100%

一个Rust写成的状态机引擎,让AI编程Agent在plan→implement→test→deploy的流水线中不再"自由发挥"。在5个SWE-bench任务上,两个本地模型从10次尝试仅2次通过,变成10次全部通过。更妙的是:这玩意开源、自托管、月费29美元起步。

发生了什么

6月5日,一个名叫Statewright的项目在Hacker News上炸了——126 points、59条评论,直接冲上当日热榜。项目描述只有一句话:"Agents are suggestions, states are laws."(Agent是建议,状态是法律。)

简单说,Statewright是一个用状态机给AI编程Agent加"护栏"的工具。你定义好planning→implementing→testing→completed这样的工作流,每个状态只暴露该状态需要的工具。比如在planning阶段,Agent只能Read/Grep/Glob;切到implementing阶段,Edit/Write才解锁;到了testing阶段,只允许pytest/cargo test等指定命令。

核心理念:不把模型变大,让问题变小。 不给Agent扔40+工具说"你自由发挥吧",而是拆成小步骤,每步只给5个工具。

为什么这件事重要

如果你用过Claude Code、Codex或Cursor做复杂任务,一定对这种体验不陌生:

  • Agent在review阶段突然开始改代码
  • 部署命令在测试跑通之前就被执行了
  • 同一文件读了5遍还在绕圈子
  • 一次修改了20+行,然后测试全炸

Statewright解决的就是这个问题。而且它的成果非常硬核——

研究数据:在5个SWE-bench任务的子集上(非完整2294实例基准),两个本地模型的表现:

模型大小修复前(10次尝试通过数)修复后(10次尝试通过数)
gpt-oss:20b13.8GB2/1010/10
gemma4:31b19.9GB2/1010/10

同样的任务、同样的硬件、同样的模型。加了状态机约束后,完成率从20%拉到100%。

Statewright研究结果:未约束Agent 2/10 vs 约束后 10/10

▲ Statewright研究数据:加约束后完成率从20%拉升至100%

门槛在13GB。低于这个容量,模型能识别bug但改不动代码——那是模型本身的限制,不是Statewright的问题。

它具体是怎么工作的

Statewright的核心分两层:

底层:一个Rust写成的确定性状态机引擎。它解析状态、转换、守卫条件、工具限制——全程不调LLM,纯确定性逻辑。

上层:一个MCP插件层,集成到各种编程Agent中(Claude Code、Codex、Cursor、opencode、Pi)。当你激活一个工作流,hooks在每步拦截工具调用,Agent看到的不是30个工具而是5个,每个阶段有清晰的指令。

具体护栏包括:

护栏类型作用
按状态限制工具当前状态不在allowed_tools里的工具,Agent根本看不到
Bash分辨力即使Bash被允许,echo > filerm -rfsed -ipython/node等脚本解释器仍被阻止(当Write/Edit不允许时)
编辑上限每次diff不超过max_edit_lines行,每个状态最多编辑max_files_per_state个文件
命令白名单只允许前缀匹配的命令(如pytest、cargo test)
条件转换编程式守卫:test_result eq passcoverage gt 80
审批门requires_approval暂停等人工审查
中断机制编辑匹配glob模式的文件?自动跳转到验证状态,然后回到原位
Fork/Join顺序或并行跑分支,等全部(或任一)完成后汇合
环境隔离隐藏PROD_DB_URL,用env_overrides替换
会话隔离通过CLAUDE_SESSION_ID实现每会话独立状态

工作流定义:简单到可以用JSON写

一个bugfix工作流的完整定义长这样:

{

  "id": "bugfix",

  "initial": "planning",

  "states": {

    "planning": {

      "allowed_tools": ["Read", "Grep", "Glob"],

      "max_iterations": 8,

      "on": { "READY": "implementing" }

    },

    "implementing": {

      "allowed_tools": ["Read", "Edit", "Write"],

      "max_edit_lines": 20,

      "max_files_per_state": 3,

      "on": { "DONE": "testing" }

    },

    "testing": {

      "allowed_tools": ["Read", "Bash"],

      "allowed_commands": ["pytest", "cargo test", "npm test"],

      "on": {

        "PASS": { "target": "completed", "guard": "tests_passed" },

        "FAIL_TEST": "implementing"

      }

    },

    "completed": { "type": "final" }

  }

}

Statewright工作流:Planning→Implementing→Testing→Completed

▲ Statewright Bug修复工作流的四个阶段

而且你不需要手写JSON——让Agent自己生成。对Claude Code说"给我生成一个bugfix工作流",它调用statewright_create_workflow工具自动产出,你再用可视化编辑器微调就行。

安装也极简:

/plugin marketplace add statewright/statewright

/plugin install statewright

浏览器打开statewright.ai注册→生成key→粘贴→搞定。

定价:29美元/月起步,可以自托管

Statewright的定价策略值得关注——它走的是"开源核心+托管云服务"路线:

方案工作流数月转换次数历史记录价格
Free320072小时$0
Pro102,5007天$29/月
Team3010,00090天$99/月
Enterprise无限无限按需联系销售

更关键的是:你可以完全自托管。一个docker compose up --build就跑起来了——PocketBase + MCP网关 + 工作流编辑器,全部本地。核心引擎(crates/enginecrates/agent)是Apache 2.0协议,零运行时依赖,可以嵌入到任何项目里。

HN社区的争议点:这东西能活多久?

HN评论区的讨论非常精彩,几个关键争议值得关注:

争议1:会不会被大厂吃掉?

这是最尖锐的质疑。有评论直言:"这家公司看起来只有几个月可活,如果这个想法好,Anthropic会直接把它做到Claude Code里"(lambdaone)。另一条评论补充:"我预计工具会开始嵌入本地SLM(~1B参数)来做这件事,它会变成快速变化格局中的一个功能,需求可能在未来消失"(hsaliak)。

但反方观点也很有力。有用户提到自己正在做一个类似的ticketing系统,"用状态机约束后效果更可预测"(giancarlostoro)。另一位开发者说:"我完全相信状态机是让低参数LLM产出高质量代码的关键"(tim-projects)。

争议2:代理层模式的价值超乎想象

一位叫thebotclub的评论者指出:"Agent和LLM之间的代理层模式,意义远超上下文压缩。一旦你有一个拦截工具输出的层,你不仅可以压缩——你可以检查、审计、对Agent实际在做什么执行策略。"这个视角把Statewright从一个"护栏工具"拔高到了"Agent治理基础设施"的层面。

争议3:灵活性vs约束

"真正有趣的方法。我唯一的担忧是当工作流变得过于僵化时会失去多少灵活性。想知道它在需要更多创造性探索的任务上表现如何。"(prunrCloud)。这确实是个真问题——bugfix这种线性流程适合状态机,但探索性编程呢?

对AI创业者的启示

Statewright这个故事,至少有三层启示:

第一层:Agent可靠性是创业刚需。 如果你正在基于Claude Code/Codex/Cursor构建产品,Agent"乱来"是你的真实痛点。Statewright提供了一个开源的、可自托管的解决方案。不需要等Anthropic或OpenAI出官方方案。

第二层:小模型+好约束 > 大模型+自由发挥。 研究数据很明确:20B参数的本地模型+状态机约束,和云端大模型裸跑,前者居然赢了(10/10 vs 2/10)。这对AI创业者意味着:你不需要烧钱买最贵的模型,把约束做对,本地模型也能打。

第三层:"Agent中间层"是一个独立的创业赛道。 Statewright的MCP网关、Context Gateway的压缩代理、各种Agent harness——这些不是大模型公司的附属品,而是一个独立的产品层。未来12个月,这个层会诞生不止一家独角兽。

行动建议

  1. 今天就可以试:Statewright可以在30秒内装进Claude Code。试试bugfix工作流,对比一下有无约束的成功率差异。
  2. 如果你的产品用到了编程Agent:评估一下把状态机约束作为默认配置。用户可能没意识到Agent乱跳是他们的隐形成本。
  3. 创业者机会:如果你在做一个垂直场景的AI编程工具(比如自动化测试生成、SQL优化、API对接),Statewright这种"定义领域工作流+约束Agent行为"的模式可以直接借鉴。加上你自己的领域知识做工作流模板,这就是护城河。
  4. 关注替代方案:Context Gateway(97pts HN,606 GitHub stars)走的是"压缩上下文"路线;Swival也在做上下文管理。这些工具和Statewright不冲突,可以组合使用——状态机管行为边界,压缩代理管token经济。

本文由AI辅助创作,经人工审核编辑发布