跳转至

Learning Echo 插件

Handbook · Plugin contract · Testing

此包是受管插件运行时的参考实现。它声明了一个 Tool、一个 Capability、一条 HTTP 路由和一个静态前端页面。该页面仅请求 sandboxed-iframe UI 权限;此包没有任何 Python 依赖。

包布局

  • Manifest: 插件标识、权限以及四个扩展声明。
  • Worker: 描述、工具执行、Capability 流式输出以及 JSON HTTP 响应。
  • Page manifest: 显式的静态资源闭包;index.html 和 app.js 实现了沙盒页面。
  • Build metadata: 打包 worker、manifest 和资源。

构建与检查

从仓库根目录构建一个本地 wheel:

python -m pip wheel --no-deps -w /tmp/deeptutor-plugins docs-for-dev/examples/learning_echo

使用一次性的 DEEPTUTOR_HOME,然后使用生成的 wheel 路径运行 deeptutor plugin install,并通过以下命令检查:

deeptutor plugin show org.deeptutor.learning_echo
deeptutor plugin state

在调用 deeptutor plugin approve org.deeptutor.learning_echo 之前,请先检查 manifest 和构件;如果插件被禁用,请显式启用它。已安装和已批准是两种不同的状态。安装步骤会在导入插件代码之前读取 deeptutor.plugin.json,并创建一个插件私有的虚拟环境。

批准并启用后,页面可通过 /api/plugins/org.deeptutor.learning_echo/pages/learning_echo_page/ 访问。其入口和资源闭包在 learning_echo/frontend/page.json 中声明。

在启用主机认证的情况下,打开该页面或其 public HTTP 路由仍需要主机会话。页面的 CSP 会阻止任意的网络访问;这不是一个注入主机前端代码的示例。

验证与适配

在仓库根目录下:

python -m pytest tests/plugins/test_runtime.py tests/api/test_plugins_router.py

这些测试使用此包作为 worker/page 测试夹具。在移动或更改该示例时,请保留这些测试。对于新插件,请选择不同的包/manifest 标识,声明实际所需的权限和依赖闭包,并测试失败、取消、禁用状态以及升级后的重新批准。有关信任限制和回滚行为,请参阅插件指南。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 dee/DeepTutor