相关项目#
把 agent 写成普通的带类型 Python——docstring 就是 prompt,函数签名就是契约——是好几组人各自独立走到的想法。我们认为这种汇合本身就是方向正确的最强证据,而这些设计之间的差异才是真正有意思的问题。
| 项目 | 共同直觉 | 各自走的路 |
|---|---|---|
| NVIDIA NOOA (Apache-2.0) | Agent 是 Python 对象;函数体为 ... 的方法由 LLM 实现,docstring 是 prompt,类型标注是契约。 |
面向对象:状态在 self 上,模型往 Jupyter 风格的 REPL 里写 Python(CodeAct)来行动。OpenProgram 把函数留在模块级,让模型在已注册函数里选择而不是生成代码——动作空间更窄,也更容易沙箱和回放。 |
| DSPy (MIT) | 用带类型的 Signature 代替手写 prompt,由框架编译。 | 按指标优化 prompt 本身。我们把 prompt 保持固定、可读,把力气花在执行结构上——DAG、重试、上下文范围。两者互补。 |
| Marvin (Apache-2.0) · Mirascope (MIT) | 装饰一个 Python 函数,用 docstring 和返回类型驱动一次结构化 LLM 调用。 | 聚焦单次类型良好的调用。OpenProgram 补上跨多次调用发生的事:共享执行 DAG、spawn、fork,以及每次调用的上下文预算。 |
| LangGraph (MIT) | Agent 运行应是带检查点的可检查图,而不是不透明循环。 | 图事先声明为节点和边。我们的图是从调用栈记录下来的——你写普通 Python,DAG 就是实际跑过的轨迹。另见 OpenProgram 与 LangGraph、AutoGen、CrewAI。 |
| smolagents (Apache-2.0) | 让模型通过代码行动,而不是死板的 tool JSON。 | 沙箱里写代码的 agent,类似 NOOA。我们接受同一前提——「代码是行动语言」——但在编写时用 Agent method 绑定,这样确定性部分在运行前就可审查。 |
| Scriptorium | 可读的 Agent 记忆;Markdown 笔记;事实回链到来源消息;为 Claude Code 提供 MCP。 | 模型把记忆写成普通文件,所以你可以打开、diff,并把每条事实追回到它来自的那条消息。 |
如果你在这个方向上做事,而我们写错了你的项目——或漏掉了它——请开 PR 或 issue。我们乐意被纠正。
致谢#
OpenProgram 站在前人的肩膀上。工具框架、provider 抽象和若干工具实现移植或改编自下列项目——各自遵循其原许可证。非常感谢这些作者。
- OpenClaw(MIT)——工具注册表的布局
(
name / description / parameters / execute)、带check_fn+requires_env门禁的 provider 抽象、TOOLSETS预设、经 SKILL.md frontmatter + 延迟绑定read的 skill 加载。完整克隆放在references/openclaw/(已 gitignore)供浏览。 - hermes-agent
(MIT)——
execute_code的起点(我们裁掉了 Docker / Modal 层)、mixture_of_agents,以及多 provider 的web_search/image_generate/image_analyze工具的整体形态。 - pi-coding-agent
(MIT)——经 OpenClaw 引入的规范 AgentSkill 形态
(
<available_skills>XML 格式器,name / description / location)。 - Claude Code ——
DEFAULT_TOOLS集合的整体人机工学(bash + read / write / edit + glob / grep / list- apply_patch + todo 规划板)以及 todo 工具的 JSON schema。
- Anthropic / OpenAI / Google SDK —— 线上契约,以及第一方 provider 流式调用所经过的客户端。三者都作为基础依赖随附;CLI 与 OAuth provider 则直接走裸 HTTP。
血缘更具体的工具文件在文件级 docstring 里各自注明了直接灵感来源。这些 MIT 许可的组件保留其原 MIT 条款;组合作品整体以 AGPL-3.0 分发。
贡献#
这是一个范式提案,附带参考实现。欢迎讨论、其他语言的替代实现、验证或挑战此方法的用例,以及 bug 报告。
环境、测试和 pull request 约定见 CONTRIBUTING.md。
Last updated · 2026-10-10