OpenProgram
自编程 AI 助手框架:用 Python 固定流程、用 LLM 处理判断,捕获、自动化并持续打磨你的工作流。
证据显示令牌处理较严谨(backendAuth.test.ts 验证令牌不发给外部 URL、拒绝跨源重定向),依赖有版本上限与理由注释。但核心 agent 执行、沙箱、工具权限、用户确认流程的源码未在样本中,最小权限、确认机制、外部副作用、回滚均只见声明未见实现,扣分。数据流透明度也仅靠文档叙述。
pyproject 对每个依赖的导入路径、缺依赖症状、版本上限原因有详尽注释,CI 有锁文件安装与 120s 超时,ruff 强制异常处理门禁,自洽性和依赖可用性较好。但失败消息质量只有间接证据,未见实际错误输出。
平台矩阵(macOS/Linux/Windows x64/arm64)、Python 3.11-3.13、可选 extras、fallback 路径(Ink→Rich REPL、pty→token 粘贴)说明环境适配认真。能力边界有诚实标注(如'Windows 沙箱仍是独立级别'、'主动策略层需自建')。但触发精度对自动化 agent 关键场景缺少证据。
AGPL-3.0 完整文本在库中,许可满分。文档结构清晰、安装说明覆盖平台矩阵与 doctor 命令、示例丰富且诚实标注限制。但无 CHANGELOG 文件(仅 releases 链接),维护者只有单人署名 'Fzkuji',无治理或响应承诺,扣分。
README 对比示例清晰展示 @agentic_function 相对常见 prompt/JSON 模式的价值,输出可用性有结构化重试等证据。但边际价值和成本收益只有叙述性主张:未见基准、未见的 token 成本分析,'self-programming' 收益无法静态验证,扣分。
论文引用、arXiv 链接、CI badge 使关键主张可追溯;README 明确区分已建成部分与'留给你建'的部分,事实与推断分离良好。但可跨源印证的材料(arXiv 论文内容、第三方评测)不在本样本内,置信度只能为低。
- 安装脚本通过 curl|sh 从 openprogram.io 拉取执行,发布者身份未经核实,运行前应先审查该脚本。
- agent 具备自我修改文件并热加载、浏览器控制、GUI 自动化等高危能力,但其权限沙箱与确认机制的实现未在本次样本中可见,生产使用前需逐项核实。
- macOS DMG 为未签名发布;无 CHANGELOG,版本追溯依赖 GitHub Releases。
- AGPL-3.0 对作为网络服务运行的情形有开源义务,企业集成前请评估合规成本。
- 本评分为静态低置信度审查,未执行任何代码;关键安全主张(沙箱、令牌隔离)需复现验证。
这个 Agent 能做什么,适合哪些场景?
OpenProgram 是一个基于 Python 3.11+ 的自编程 AI 助手运行时,提出"Agentic Programming"范式:模型负责灵活判断,代码负责确定性流程。它提供 CLI(openprogram 命令)和 Web UI(默认 http://localhost:18100,也有桌面应用)两种交互入口,首次运行会打开 provider 设置向导。核心机制包括 @agentic_function 装饰器(将 agent 定义为 Python 函数,docstring 即 system prompt)、扁平 DAG 上下文(每个调用是一个可寻址节点,天然支持 spawn、fork、跨分支消息和 git worktree 隔离)、代码门(验证失败时强制模型重新决策,无法绕过)以及全进程统一事件总线。项目随附 GUI Agent、Research Agent、Scriptorium(Markdown 形式的 agent 记忆,支持 MCP 访问)三个配套开源项目。相关论文已被 KDD 2026 AgenticSE Workshop 接收。许可证为 AGPL-3.0,网络服务形式分发衍生品同样需开源。
通过 curl 脚本或 PowerShell 一键安装后,运行 openprogram 进入终端聊天,openprogram web 启动 Web UI,openprogram setup 重新配置 provider(内置 Anthropic、OpenAI、Gemini 适配,支持多账号自动轮换密钥)。开发者用 @agentic_function 装饰器编写 agent:docstring 作为 system prompt,参数作为输入,llm() 调用模型(支持 choices=[...] 约束输出直到合法),其余为普通 Python。多代理场景通过 spawn_branch() 在干净上下文运行子代理、message_branch() 跨分支通信、fork 节点尝试替代路径、在独立 git worktree 中安全触碰文件。代码门在模型输出未通过验证时打回重判。agent 还能用文件工具编辑自身 @agentic_function 文件,watcher 热加载后下一轮即刻生效。事件总线以 Event(type, payload, ts) 信封统一 agent loop、auth、context、channels、memory 的输出,可通过 get_event_bus().subscribe() 按事件类型订阅。额外的 harness 可通过 openprogram programs install <owner>/<repo> 安装。
- 需要构建多代理系统的 Python 开发者,希望子代理上下文隔离、跨分支消息传递无需自行搭建消息框架
- 客服/工单团队构建分类与回复流水线,利用 choices 约束保证 LLM 输出可解析,代码门防止模型跳过校验
- 研究人员使用配套 Research Agent Harness 自动化文献综述、实验到论文草稿的研究流程
- 需要 agent 记忆的团队,用 Scriptorium 把事实以 Markdown 笔记形式持久化并引用来源消息
- 需要自进化工具链的团队,让 agent 编写并热加载自己的 @agentic_function,无需手动注册
- 运维或自动化工程师通过事件总线订阅 file.changed、context.compaction_recommended 等事件触发告警
这个 Agent 有哪些优点和局限?
- @agentic_function 把 agent 写成普通 Python 函数,docstring 即提示词、choices 即输出约束,避免了常见的手写 JSON schema 和手动重试解析
- 扁平 DAG 上下文让 spawn、fork、跨分支消息、git worktree 隔离成为一行调用,多代理能力是原生的而非外挂的
- 代码门机制保证校验失败时模型被迫重新决策,关键步骤无法被提示词绕过,提升可信度
- agent 可通过文件工具编辑自身函数并由 watcher 热加载,实现真正的自编程/自进化
- 跨平台覆盖完整:macOS、Linux、原生 Windows x86_64/arm64 CLI/server 加 Web UI,并内置三大主流 provider
- AGPL-3.0 许可证要求任何分发或作为网络服务运行的衍生品同样以 AGPL 开源,对商业闭源集成是显著限制
- 需要 Python 3.11+,且 Windows 沙箱执行仍是一个独立层级,尚未完全对齐其他平台
- 事件基础设施中主动式策略层尚未实现,官方明确表示"这部分由你来构建"
- macOS 桌面版 DMG 未签名,企业环境可能被 Gatekeeper 拦截,需要额外处理
- 作为较新的框架(2026-04 首次发布),生态和第三方集成证据有限,迁移成本需自行评估
如何安装或部署这个 Agent?
macOS / Linux:curl -fsSL https://openprogram.io/install | sh。Windows x86_64 或 arm64 CLI/server:irm https://openprogram.io/install.ps1 | iex。桌面版:macOS 使用 GitHub Release 附带的未签名 DMG;Windows 使用签名的 win-x64.exe 或 win-arm64.exe(若 Release 附带该产物,否则为 CLI/server 加 Web UI)。需要 Python 3.11+。平台矩阵、PATH 配置、openprogram doctor 和源码安装方式见 docs/install/install.md。
如何使用这个 Agent?
首次运行 openprogram 会打开 provider 设置向导(配置 Anthropic/OpenAI/Gemini 密钥),随后进入终端聊天;openprogram setup 可重新运行向导。openprogram web 在 http://localhost:18100 打开 Web UI。快速验证:openprogram --print "Introduce yourself in one sentence"。编写 agent 时使用 @agentic_function 装饰器,例如 def triage(ticket: str, runtime=None) -> str,在 docstring 写系统提示,用 llm(ticket, choices=["bug","feature","question"]) 调用模型并约束输出。安装额外 harness:openprogram programs install <owner>/<repo>。
这个 Agent 与同类方案有什么区别?
README 将 OpenProgram 的写法与"常见方式"(手写 TRIAGE_PROMPT、TOOLS JSON schema、client.chat 调用加手动 .loads 解析和重试)作对比,即典型的 OpenAI 风格 tool-calling 客户端模式;OpenProgram 以装饰器和类型化约束替代这一样板。