Statewright:用状态机给 AI 编程 Agent 加护栏,真的比长提示词更靠谱吗?
如果你用过 Claude Code、Codex CLI 或 Cursor 这类编程 Agent,大概率见过一种很烦人的失败模式:它明明已经读完文件,却又回头读一遍;明明应该先写测试,却开始大面积重构;明明只是修一个 20 行 bug,却顺手动了 6 个模块。最后 token 花了,diff 也出来了,但你不敢合并。 我越来越觉得,这不是“模型不够聪明”一个问题。 更准确地说,是我们把 Agent 放进了一个没有交通规则的城市:Read、Grep、Edit、Bash、Web、MCP 工具全都摊在它面前,然后指望一段系统提示词告诉它“请谨慎驾驶”。提示词当然有用,但它不是刹车,也不是红绿灯。 这也是 Statewright 最近在 HN 上引起我注意的原因。它的口号很硬:Agents are suggestions, states are laws. 用人话翻译:不要只靠模型“自觉”,把工作流拆成确定状态,在每个状态里只开放它该用的工具。 状态机不是新概念,但放在 Agent 上刚好戳中痛点 Statewright 做的事情并不神秘。它让你定义一个工作流,例如 planning → implementing → testing → completed。在 planning 状态里,Agent 只能读文件、搜索代码;进入 implementing 以后才允许 Edit/Write;到 testing 状态,Bash 可以用,但只能跑 pytest、cargo test、npm test 这类白名单命令。 项目 README 里的示例很直观:planning 只给 Read/Grep/Glob,implementing 允许 Read/Edit/Write 且限制 max_edit_lines、max_files_per_state,testing 才给 Bash,并且通过 guard 判断测试是否通过。官方的 workflow schema 也把这些字段明确写成结构化配置,而不是自然语言建议。 ...