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

Myli 开源:面向 AI 设计智能体的中立 Python 运行框架

Myli 是一款 provider-neutral 的 pre-alpha Python 框架,让 AI 智能体以 RF…

2026.08.25 · 周二6 分钟阅读

Myli 是一款刚刚开源的 pre-alpha Python 框架,专门面向"AI 设计智能体"场景。它的核心职责是让大模型以 RFC 6902 JSON Patch 的形式,对应用持有的设计文档提出修改候选,并由应用决定是否落地——智能体永远不直接写入应用状态。

设计理念:provider-neutral 与组件解耦

Myli 在设计上刻意与具体技术栈解耦,核心逻辑不依赖 Pydantic、画布格式、渲染层、模型服务商、ORM、进度通道或持久化系统。这种中立性意味着开发者可以把 Myli 嵌入到既有应用之中,仅接管"候选生成 → 校验 → 提交"这一段关键流程,其余基础设施由应用自行掌控。

核心运行契约

Myli 的入口是一个异步 run 调用,输入包括用户请求、当前设计文档、编辑开关、能力声明、历史记录以及事件回调。返回的 RunResult 包含面向用户的消息、可选的已校验候选、changed 标记、提议的 patch、运行级资产、所有工具执行结果、步骤轨迹、运行 ID 和服务商元数据,成功与失败的工具调用也可通过过滤属性单独获取。

文档模型与模型注入

通过 DesignSpec 描述一份设计文档的 schema、校验器、序列化器、规范化函数和迁移函数。框架对"受信的存储输入"与"不可信的模型候选"走两条不同路径:候选 JSON 在运行时按 schema 校验,且必须能无强制转换、无默认值填充、无字段丢失地序列化回去;存储输入则可选择性地在每次运行前进行迁移与规范化。

MainModelVisionModel 是公开协议,应用可以注入不同的传输层、端点和凭证,也可以注入假实现用于测试。默认实现 LiteLLMMainModelLiteLLMVisionModel 随包发布,支持结构化、JSON 与文本三种输出模式,会拒绝覆盖客户端自有请求字段的选项,并把服务商异常统一翻译成 Myli 的稳定异常体系。Pydantic 通过 myli.integrations.pydantic.PydanticDesignSpec 保持可选。

工具、策略与中间件

AgentTool 是领域中立的工具抽象,声明 JSON 输入 schema、所需能力、单次运行的调用预算、超时与结果大小限制,调用时拿到 ToolContext,包含当前运行 ID、隔离证据、从零开始的模型步骤索引、运行内唯一的步骤与批次元数据,以及在该批次中的位置与批次规模。Myli 在调用前后校验入参与结果,执行能力与限额检查,并把结果记录为 ToolOutcome,状态取 succeeded / failed / rejected / timed_out / deferred 之一。默认串行执行,并行需要同时打开框架选项与每个工具的 parallel_safe 声明。

ToolMiddleware 可以在执行前允许、拒绝或推迟工作,并在执行后观察结果,可用于审批、审计、租户隔离、排序、事务与限流;步骤与批次元数据让中间件可以精准地在每个模型工作阶段只生效一次,包括并行批次的情况。CandidatePolicy 在渲染提案前与返回最终候选前各跑一次,CandidateContext 内含能力、已批准资产与全部运行级结果,其中 successful_tool_outcomes 是授权安全的子集。

资产与可视化审查

资产由具名提供者返回通用 Asset 值,种类与元数据由应用定义。Myli 负责分配运行级引用、检测提供者身份冲突、应用搜索预算与结果上限,并追踪来源。一个资产可以内嵌 RenderedArtifact 预览或异步 preview_loader;预览仅在发现后被显式查看时才加载,运行内缓存,受超时、字节大小与媒体类型检查约束,加载失败会回传给模型以便重试,二进制产物不会进入步骤轨迹字典。

配置好渲染器与视觉模型后,render_design 会先校验候选与策略、再渲染、再校验产物,并把视觉反馈以工具结果形式返回。主模型可以附加有界 questions 数组,对渲染结果或资产预览提出开放式的图像相关问题。成功渲染返回运行级 render_refcommit_render 直接将其选为本轮提案,不再二次渲染或落库;此时最终响应应使用 patch: null,等价的 patch 也被接受,发生冲突时则进入正常校验重试。最终策略会在所有工具执行结束后再跑一次,然后才返回已提交的提案。未提交的渲染只作为预览存在,不影响返回的提案字段。提交操作要求编辑开关处于启用状态;当编辑关闭时,已变更的候选不能渲染,但未变更的当前设计可作为诊断渲染。

事件、轨迹与限额

事件覆盖运行、模型、工具与校验生命周期,包含运行与步骤 ID、状态、安全消息、耗时与可选的工具名,但不携带入参与结果,应用可以把它们映射到日志、指标、SSE、WebSocket 或直接忽略。StepTrace 保留归一化模式与步骤级细节,便于上层实现持久化与回放。当前版本仍标注为 pre-alpha,API 与行为可能在后续迭代中调整,有意在生产环境接入的团队应关注其稳定性进展。

信源