Plugins

English

叶目录中的 package.ts 声明一个插件,列出可执行入口、配置、导入和导出。Cargo crate 是编译单元:一个插件可以使用多个 crate,相关插件也可以共用实现 crate。

插件族职责
agent会话、模型执行、工具、目标和调度
workspace文件、进程、Web 和 Jev 服务
settings连接、凭据和偏好
skills技能发现、读取和发布
interactions问题和表单
workhub任务协调和 worker 结果
application/部署管理、插件安装与 UI 编写
shared/共用 TypeScript 契约与开发辅助函数

修改已有插件时,从声明入手,沿所选实现查找代码。原生入口选择可执行文件提供的实现;JavaScript 入口指定打包后的本地模块。插件族目录和已链接 crate 都不会自动激活插件。

默认产品选择业务 Host 服务。终端 shell 和桌面 shell 各自编写界面,连接相同的公共 Host 能力。通用 SDK scene 契约仍可用于独立编写的运行环境;默认 bundle 不再含 scene 展示包。

在仓库根目录构建单个包:

node scripts/plugins/build.mjs   --plugin plugins/workspace/workspace-web --output /tmp/maka-web-bundle

构建器会替换输出目录,包内容位于 packages/。可运行 maka application inspect-package --package /tmp/maka-web-bundle/packages/workspace-web 检查结果。

将插件加入 Maka 时,在产品选择中添加路径,再在组合中添加实例和绑定。新增原生实现还需在产品注册表中加入工厂。导入声明依赖,Host 授权决定可以执行哪些调用。

插件开发 skill提供可运行的独立示例,以及服务、UI、状态和原生扩展指南。SDK提供精确契约。

插件列表使用作者在 package.ts 中提供的 displayName 和 description;用一句话说明用户能做什么。包 ID 继续作为稳定技术标识。可选的 localizations 按语言标签提供翻译,例如:

{
  id: 'example.notes',
  displayName: 'Notes',
  description: 'Write and find your notes.',
  localizations: {
    'zh-CN': { displayName: '笔记', description: '记录和查找笔记。' },
  },
  // application: ...
}

插件管理会展示并搜索这些说明,添加应用时也会展示。缺少翻译时使用默认文案,最后回退到实例名或包 ID。名称应让人预知操作结果或目的地,参照 Apple 的清晰命名指南。常见操作使用带无障碍名称和提示的图标;重要或不熟悉的操作保留明确文字。shell 列表使用原生虚拟列表并保留可见行,数据游标不暴露为手动翻页。