Flyto2 Core
AI 说它做完了,Flyto2 拿出证据:一个可验证、可重放的 AI 代理执行引擎。
信任:文档声明了文件系统沙箱(FLYTO_SANDBOX_DIR)与 SSRF 防护(默认拒绝私网、云元数据地址),并有 CI 覆盖测试强制每个路径/URL 模块经过守卫,这是较强的最小权限设计;扣分点:沙箱默认是进程工作目录(自认'很少是服务器想要的'),且守卫的实现代码本身不在本次证据范围内。用户确认:工作流被当作代码执行、可发送通知/写文件,但没有任何关于执行前用户确认机制的说明,仅建议'只运行受信任来源的工作流',记 1 分。数据流透明:执行 trace、证据快照、数据血缘在 README 中有具体描述。敏感数据:SECURITY.md 明确给出 ${env.API_KEY} 模式、日志自动脱敏、文件权限建议,但脱敏机制本身未展示代码。依赖安全:pyproject 中多处依赖地板带 GHSA 编号和理由注释(regex 可中断匹配、Pillow ACE 修复、pytest tmpdir),CI 运行 pip-audit 与 npm audit,锁文件 diff 检查——证据充分,记满分。外部影响:SSRF 守卫、重定向逐跳校验、DNS rebinding 防护有具体描述;但浏览器可执行任意页面 JS、port.check 可被显式开启,风险边界有披露而非消除。回滚:'replay --from-step N' 与状态快照是核心卖点,记 2;但产物写入(file.write)无撤销机制说明。来源归属:仅 'Flyto2 Team <[email protected]>',发布者未经验证,无个人/实体背书或治理信息,记 1 分。
可靠性:自洽性方面,README、SECURITY.md、pyproject(2.32.0、3.10 地板及其理由)、CI 三者相互一致,包括对历史错误的坦白修正(3.9 地板不可安装、Playwright 1.40 地板会 TypeError);扣分:480 模块/88 类目的数字与'41 recipes'在提供的文件中无法逐项核对。依赖可用性:可选依赖分组清晰,requirements.txt 委托 pyproject 避免重复漂移;但 versions 较新(如 aiohttp>=3.14.3)意味着旧发行版安装可能受阻,未见兼容性降级说明。失败消息:模块返回结构化 {'ok': False, 'error': ..., 'error_code': 'SSRF_BLOCKED'},trace 记录每步状态;示例充足但真实错误路径未经执行验证。
适应性:受众与场景明确(开发者、CI、MCP 客户端用户),CLI/MCP/HTTP/Python 四种入口覆盖不同使用方式。能力边界:SECURITY.md 'Known Security Considerations' 节明确披露代码执行、网络访问、浏览器自动化的风险与建议(隔离环境运行),记 2;但 480 个模块的边界(尤其 cloud/k8s/AWS 类)未见逐一说明。触发精度:仅看到 communication.webhook_trigger 一处提及,触发类模块的行为、去重、认证在证据中几乎缺失,记 1 分。环境适配:声明 py3.10–3.13 并有 CI 矩阵逐版本验证,OS 独立;headless 浏览器、本地模式变量(FLYTO_VSCODE_LOCAL_MODE)显示对部署环境的考虑。
规范:信息架构非常清晰——README 链接到 RECIPES、TOOL_CATALOG、CONFIGURATION、PLUGIN_SDK、MODULE_SPECIFICATION、WHITEPAPER、ARCHITECTURE,并有 mcp-name 注释,记满分。安装说明:pip install 三个 extra、playwright install chromium、30 秒示例齐全,记满分。命名稳定性:module_id 采用前缀命名空间(browser.*、file.*、composite.test.*)且 CI 有 check_brand_identity.py;但根包名 flyto-core 与导入名 core 不一致,有轻微摩擦。示例与 FAQ:三个 recipe、YAML 工作流示例、Python API 示例都有;无 FAQ。已知限制:版本支持表(仅 2.32.x 支持旧版不回移)、依赖地板的真实理由、CI 对排除的 browser 测试的解释都属坦诚披露,但无独立 LIMITATIONS 文档。许可证:Apache-2.0 全文在库,pyproject license 字段一致,记满分。版本与变更:版本 2.32.0 与 SECURITY.md 一致,CI 有 release drift 检查,CHANGELOG 链接存在但内容未在证据中。维护责任:CONTRIBUTING.md 链接、维护者字段、48 小时响应承诺存在;单一团队、无外部维护者信息,记 2。
有效性:输出可用性——结构化 trace、JSON 报告、截图输出、composite 模块有 output_schema,输出契约清楚。边际价值:replay-from-step 与逐步 trace 相比裸 Playwright/脚本确有差异化定位,对比表具体;但该价值主张完全依赖文档,本次静态审查无法确认其运作。成本收益:pip 一次安装、可选 extra 避免重量级依赖、模块复用减少胶水代码,成本结构合理;但 480 模块的维护面与审计面较大,安全豁免机制依赖 CI 而非人工,长期成本未讨论。
可验证性:主张可追溯性——'480 modules'、'41 recipes'、'CI 失败即构建失败'的覆盖测试都指向具体文件(tests/core/test_write_sink_coverage.py、security/advisories.),但本次只提供部分文件,多数主张只能对文档内部一致性核对,不能对实物核对,记 1 分。跨源印证:README、SECURITY.md、pyproject、CI 四者对版本、安全边界、依赖理由相互印证,内部一致性强;但全部来自同一发布方,无独立第三方验证(MseeP 徽章是自我声明性质),记 1 分。事实与推断分离:pyproject 中依赖地板注释明确区分'历史错误是什么'与'现在的选择是什么',CI 注释解释每个排除项的理由,文档事实与营销口号(副标题)区分明显,记 2 分。
- 沙箱默认值是进程工作目录,服务器部署必须显式设置 FLYTO_SANDBOX_DIR,否则 caller 提供的路径默认可落在任意相对位置。
- 工作流文件等同于可执行代码,仓库未提供执行前确认或签名机制——不要运行来源不明的工作流 YAML。
- FLYTO_ALLOW_PRIVATE_NETWORK、FLYTO_ALLOW_PORT_SCAN、FLYTO_ALLOW_REMOTE_OLLAMA 等开关一旦打开即显著扩大网络攻击面,生产环境应保持默认关闭。
- '480 模块/88 类目/41 recipes' 及 CI 覆盖测试声明无法在本次静态审查中逐项核实,属文档主张而非已验证事实。
- 发布者身份未经验证,[email protected] 与 MseeP 徽章均为自报信息,企业采购前应做独立供应链核验。
这个 Agent 能做什么,适合哪些场景?
Flyto2 Core 是 Flyto2 背后的开源运行时(GitHub 仓库 flytohub/flyto-core,Apache-2.0 许可证),定位为面向 AI 代理的执行引擎。它以 Python 包发布,提供 CLI、MCP 服务器和 HTTP API 三种调用方式,全部汇聚到同一套工作流引擎、模块注册表、追踪、证据与重放边界。当前公开清单包含 480 个注册表模块、88 个目录分类和 41 个内置 YAML 配方,覆盖浏览器自动化、API 调用、数据转换、验证、文件、加密等。核心契约是确定性执行:每一步都产出追踪数据与证据快照,失败步骤可用 flyto replay --from-step N 定点重放而无需重跑全流程。它与 flyto-ai、flyto-blueprint 是相互独立的三个包,本包可单独完成校验、执行与证据产出。
Flyto2 Core 读取 YAML 工作流文件,按步骤执行模块注册表中的模块,并以结构化形式记录每一步的输入、输出、耗时与状态(Execution Trace)。它在每个步骤边界保存证据快照(Evidence Snapshots),支持断点(Breakpoints)、数据血缘(Data Lineage)和超时保护(Timeout Guard)。通过 MCP 服务器(python -m core.mcp_server),Claude Code、Cursor、Windsurf 等 MCP 客户端可以把全部 480 个模块当作工具调用;通过 HTTP API(flyto serve,默认 127.0.0.1:8333)可调用 POST /v1/workflow/run、POST /v1/workflow/{id}/replay/{step}、POST /v1/execute、GET /v1/modules 和 POST /mcp 等端点。浏览器能力基于 Playwright(pip install flyto-core[browser] 后 playwright install chromium),内置配方如 competitor-intel 可完成截图、Web Vitals 性能采集、结构化提取并写出 JSON 报告。扩展仅支持 flyto-modules-* 模块包与 flyto-plugin-* 插件两种形式,安装需操作员通过 FLYTO_EXTENSIONS_INSTALL_ENABLED=1 显式开启。
- 需要向团队或审计方证明 AI 代理确实完成了工作的工程师:每次运行产出追踪、证据快照和报告,而非仅靠模型口述。
- 运行竞品价格监控或站点审计的运营人员:使用 competitor-intel、full-audit 等配方一键完成截图、性能指标与 JSON 报告。
- 维护长工作流的开发者:第 8 步失败时用 flyto replay --from-step 8 从失败点重放,节省整段重跑时间。
- 使用 Claude Code、Cursor 或 Windsurf 的用户:通过 MCP 服务器把 480 个确定性模块接入 AI 客户端,避免代理生成未经审查的生产代码。
- 需要可调试浏览器自动化的测试人员:browser.* 系列共 54 个模块,支持逐步骤定时、状态检查与失败重放。
- 搭建内部自动化服务的平台团队:用 flyto-core[api] 启动 HTTP 服务,通过 /v1/workflow/run 集成证据与追踪能力。
这个 Agent 有哪些优点和局限?
- 确定性重放是核心差异化能力:失败步骤可定点重放(flyto replay --from-step 8),步骤 1–7 瞬时恢复上下文,与脚本式工具的全量重跑形成对比。
- 证据与追踪内建于运行时:每步产生输入/输出/耗时/状态的结构化追踪、步骤边界状态快照和数据血缘,输出可直接用于审计。
- MCP 原生:AI 客户端通过 schema 调用经过审查的模块,而非执行模型生成的任意生产代码,降低不可控代码风险。
- 边界在 CI 中强制执行:文件路径必须经过沙箱助手、URL/主机必须经过 SSRF 守卫,两项约束由会使构建失败的测试保障;SECURITY_STATUS.md 公开每个已发布安全通告的严重级别、影响范围和修复版本。
- 浏览器能力依赖 Playwright 与 Chromium 的额外安装步骤(pip install flyto-core[browser] && playwright install chromium),并非默认可用。
- 职责边界刻意收窄:意图与提供商治理、流程学习与评分、托管产品逻辑分属 flyto-ai 和 flyto-blueprint,本包不覆盖,团队需要完整产品时需引入另外两个包。
- 扩展机制有运行时限制:升级与卸载会报告 restart_required(Python 无法卸载已加载代码),且扩展安装默认关闭,需操作员显式设置 FLYTO_EXTENSIONS_INSTALL_ENABLED=1。
- 托管部署仅在 Frontier AI(fronteir.ai)上提供,官方云自动化为付费产品(flyto2.com/cloud/ 有定价页),自托管之外的路径依赖第三方平台。
如何安装或部署这个 Agent?
要求 Python 3.10+。基础安装:pip install flyto-core(含核心引擎、CLI 和 MCP 服务器)。如需浏览器自动化:pip install flyto-core[browser] && playwright install chromium(一次性浏览器配置)。如需 HTTP API:pip install flyto-core[api]。验证安装:flyto recipe competitor-intel --url https://github.com/pricing。
如何使用这个 Agent?
CLI:flyto run my-workflow.yaml 运行自己的 YAML 工作流;flyto recipes 列出全部 41 个配方;flyto recipe site-audit --url https://example.com 运行内置配方;失败时 flyto replay --from-step 8 从第 8 步重放。MCP:运行 claude mcp add flyto-core -- python -m core.mcp_server,或在 MCP 配置中加入 {"mcpServers": {"flyto-core": {"command": "python", "args": ["-m", "core.mcp_server"]}}},之后 AI 客户端即可调用全部 480 个模块。HTTP API:flyto serve 启动后默认监听 127.0.0.1:8333,可调用 POST /v1/workflow/run、POST /v1/execute 等端点。Python API:from core.modules.registry import ModuleRegistry 后 await ModuleRegistry.execute("string.reverse", params={...}, context={})。自定义模块用 @register_module 装饰器注册,指定 module_id、参数与输出 schema。
这个 Agent 与同类方案有什么区别?
README 将 flyto-core 与 Playwright/Selenium 及 Shell 脚本直接对比:第 8 步失败时,Playwright/Selenium 和 Shell 脚本都要全量重跑并手动加 print/echo 调试,flyto-core 支持从任意步骤重放并提供完整追踪;浏览器加 API 加文件 I/O 在前两者中需要编写粘合代码或三种语言,flyto-core 全部内建;CI 中前两者需要 pytest/bash 包装且较脆弱,flyto-core 用 flyto run workflow.yaml 即可。