smolagents 的 Bug:让我的代理对同一段有效代码重试了三次
来源:dev.to — Jul 20
📋 概述
Himanshu Kumar 用模糊测试方法在 smolagents 的 LocalPythonExecutor 沙箱中发现了一个隐蔽 bug:Python 的字典解包语法(`{**d1, k: v}`)在沙箱中被拒绝,但报错信息指向了不存在的 `None` 值。问题根源是 Python AST 中解包节点的 `key` 字段为 `None`,而沙箱代码未处理这种情况。一个下午发现了四个未报告 bug。
🔑 核心要点
- 当公开 issue 被抢光时,用模糊测试(fuzzing)喂有效 Python 片段给沙箱,标记任何拒绝有效代码的行为
- 字典解包 `{**d1, k: v}` 在 smolagents 中失败,报错 「NoneType is not supported」——但代码里根本没有 None
- 根因:Python AST 中解包节点的 key 字段为 None,沙箱的 key 处理代码只考虑了 AST 节点,未处理 None
- 一个下午通过 fuzzing 发现四个未报告 bug,证明了一件事:低技术含量的方法可以高产出
- 当模型写了有效 Python但沙箱拒绝执行,这就不是模型的问题——是沙箱的 bug
💡 金句
当公开 issue 被抢光时,我启动了一个小模糊测试器。方法很无聊但很有效:喂入普通有效的 Python 片段,标记任何抛出 InterpreterError 的——有效 Python 被沙箱拒绝,这就是 bug。
👍 0
👎 0
← 返回 Dev.to 首页