Programs 源码分类

Programs 浏览器遵循已安装 Python 源码层级。普通 Function 按用途实际存放在 openprogram/programs/tools/下;界面读取该层级,不从运行时工具元数据重新构造无关目录。

基于源码,以可调用对象为主

web/browser/ 仍为多文件源码包,但只注册一个名为以下名称的 callable: playwright_browser。因此浏览器直接显示一个 callable 行,不重复显示 browser → playwright_browser 两层。只有导出多个 callable 的源码包才成为可展开行。

源码目录 注册表 callable 只读 既有行样式 既有卡片样式

已验证实现与缺口

当前边界已验证行为缺口
tools以下位置的用途目录: openprogram/programs/tools/ 存放确定性的 @function 包。无:公开 callable 名称保持不变。
GET /api/tools返回运行时 callable,包括 MCP 工具和显示分组。它仍是运行时/配置接口,不再定义 Programs 目录。
GET /api/programs/explorer将 tools/, workflow/以及 packages/ 列为以 callable 为主的行。无:叶子 Workflow 包不可展开。

分类合同

侧栏行规范证据显示项变更
tools安装包下的实际目录files, web, knowledge, planning, agents, jobs, code, interaction以及 runtime.只读目录
tools/<purpose>/<module-or-package>实际 Python 源码及注册元数据单一 callable 来源显示为一个 callable 行;注册多个 callable 的来源显示为可展开分组,内部列出各 callable。收藏与使用操作作用于 callable
workflow以下路径下的实际目录与模块: openprogram/programs/workflow/按 callable 名称显示每个注册 Workflow,包括同一包中的多个导出。继续支持收藏与使用
packages/api/programs/explorer已安装 Program 包。既有调用树与图

参考比较与决策

参考相关模型本设计决策
OpenProgram 注册表普通函数与 agentic 函数注册到统一 callable 接口,同时保留源码层元数据。采用统一运行目录;只在管理界面增加只读源码筛选。
Hermes toolsets命名 toolset 表达选择,不表达源码归属。工具 profile 与源码分类保持独立。
Claude Code官方仓库不公开产品内部工具实现树,因此可见界面不能证明源码布局合同。不复制无法验证的每工具一个目录假设。
OpenAI Codex公开工具实现同时使用 handler 文件和子模块。采用相同的按复杂度区分方式,不复制 Rust 专属命名。

采用:用途目录是普通 Python 包。只有一个实现文件的 Function 使用模块;含 provider、prompt、action、worker、共享状态或多个协作入口的 Function/子系统使用包。一个源码包可注册多个 callable,因此 agent 和 memory 等包保持完整。拒绝:强制每个 callable 一个目录、强制每份源码一个文件、纯前端分类、第二分类注册表、旧 import 路径上的兼容副本、原始源码文件浏览,以及在 Programs 中重复外部 MCP 工具。

实际源码计划

目录移入的包
filesapply_patch, bash, edit, glob, grep, list, process, read, write, worktree
webagent_browser, browser, image_analyze, image_generate, pdf, web_fetch, web_search
knowledgememory, read_conversation
planningplan_mode, todo
agentsagent, mixture_of_agents, send_message
jobscron
codeexecute_code, lsp, semble
interactioncanvas, clarify, send_file
runtimemcp_meta, program, skill

单文件模块: apply_patch, edit, glob, grep, list, process, read, write, agent_browser, pdf, web_fetch, read_conversation, mixture_of_agents, execute_code, canvas, clarify, send_file, program以及 skill。其余条目保留为包,因为它们已有协作实现文件或多个注册 callable。

行为、兼容性与失败

任务说明与门禁清单

生产文件: 实际 vanilla 包及其 import、Programs 浏览器接口和既有 Programs 页面。 测试文件: 浏览器公开入口测试、注册表/import 测试及 Programs UI 合同。 排除: 公开 callable 重命名、工具 profile 策略变化、卡片样式修改、依赖及外部 MCP 目录变化。

验收: 每份随附 vanilla 源码恰好属于一个用途目录;简单来源是模块,复杂来源是包;不保留旧顶层源码; playwright_browser 直接可见,并保留 tools/web/browser 作为逻辑路径;所有注册 vanilla callable 名称继续可用;Workflows 与 Applications 不变。

验证: 浏览器/注册表专项 RED/GREEN 测试、import 冒烟测试、Programs UI 检查、TypeScript 编译、构建、默认 18100 打包 App DOM 与截图,以及 git diff --check.

Application import 兼容性

从以下路径加载的 Program 包: openprogram/programs/packages 必须通过规范 openprogram.programs.workflow 命名空间导入内置 Agentic Function。已移除的 openprogram.programs.Agents 命名空间不恢复为第二兼容包。

验收: 已打包的 gui_agent 公开入口可以开始桌面运行而不发生模块导入错误;GUI、research 和 wiki 应用包的生产代码不导入已移除命名空间。

实现状态

实现中:实际用途目录和 callable 注册表已存在。剩余工作为混合模块/包发现、单 callable 行投影和最终打包 App 验收。

Application 函数调用

Application 视图每次请求读取当前包源码,从装饰的公开函数开始,跟踪本地函数调用和包 import,而不把仓库中每个 import 都当作执行边。测试、benchmark 和无关文件不进入图。

条件调用标注为条件关系,不作为固定执行顺序。既有树和图共享源码推导节点。报告无法解析的调用和分析限制;分析器绝不执行包代码来发现关系。页面打开时刷新分析。调用树初始展开前三层,显示能力函数并收起内部实现。分支行可通过点击、Enter 或 Space 切换。所选 Program 的展开状态在源码刷新后保留;叶子和重复引用没有开关。

实现状态

源码追踪、条件边和可见页面刷新已实现。回归测试覆盖源码编辑、入口选择与未解析 callable alias。已安装 App 可视验收仍未验证。本改动不含 Archify 集成或 Harness 执行变化。

直接函数回复与输入

手动调用的函数保留执行树,并在树下方独立 Markdown 正文中渲染已持久化最终答案;树收起后仍可见。不增加模型调用或持久对话节点。总结和接管说明保持可读;其他值使用文本或 JSON。嵌套调用保留当前展示。选中执行详情随状态更新而变化,无需打开侧栏。

空函数表单按可见字段决定大小。关闭的 Advanced 只计入摘要行,不计隐藏参数标签;仍可显式展开。回归与默认 App 检查验证这些展示合同。

Workflow 发现不把仅含文档的目录显示为可调用叶子。已注册嵌套 Workflow 通过注册分类路径显示;旧源码 fallback 要求目录内存在 Python 源码文件。

App 刷新跨构建 checkout 保留有效的显式 owner Programs 目录。已配置目录缺失时必须修复,不得静默替换为空构建目录。仍支持显式迁移目录;首次安装可以建立初始目录。