PKU harness

让 AI 帮你写插件

在 App 里让助手和你一起写 PLUGIN.md 插件。它会查阅语言参考、校验草稿、对真实服务试运行只读工具,最后打开审核页,由你决定是否安装。

插件文档是纯文本,所以 App 里的 AI 助手可以和你一起写。比如你可以说「给体育馆预约网站做个插件」,最后会得到一个 PLUGIN.md 文件夹。你审核之后,可以安装它,也可以放弃。

你只需要 App 和一个配置好的 AI 模型,不需要电脑。不过,如果之后要发布插件,你还是会用到电脑。

助手通过一个名为 Plugins(id 为 plugins)的内置插件提供的工具(tool)完成这项工作。这些工具都不能在你确认之前安装任何东西。

相关工具

助手会用到五个工具。前四个只读取,最后一个负责为你打开审核页。

plugins.reference(read)用一页的篇幅返回完整的插件语言:清单、步骤、表达式、标准库、宿主能力、限制和一个示例。助手在准备编写或修改插件时才读取它。它不在每一轮的提示词里,所以不会占用其他对话的空间。

plugins.validate(read)用和 App 相同的加载器检查一个草稿文件夹。草稿以 { files: { "PLUGIN.md": "…", "tools/x.yaml": "…" } } 的形式传入。草稿有效时,工具返回 { ok: true, id, version, tools, widgets, campus, network, abilities };否则返回 { ok: false, issues },每个问题都会标出所在的文件和步骤。

plugins.tryTool(read)在不安装草稿的前提下,真实运行草稿里的一个只读工具。它会发出真实请求,对草稿声明的服务使用你的校园登录状态,并给工具一个用完即弃的存储。write、money 和 public 效果的工具不能这样试运行。运行结果会被当作不可信数据。

plugins.source(read)返回已安装插件文档的文件,供助手解释、修复或复制。内置的 TypeScript 插件没有插件文档,所以这个工具对它们无效。

plugins.install(write)为一个链接(GitHub 文件夹或 PLUGIN.md 的 URL)或一份草稿({ files })打开 App 的审核页。它只负责打开审核页,装不装由你在审核页上决定。

Plugins 插件默认在运行 write 工具之前询问你。所以只要你没有改过这项授权方式,助手在打开审核页之前也会先征得你的同意。

编写插件的流程

说出你的需求

说清楚插件要做什么。如果你知道它该用哪个页面或接口,也一起告诉助手。如果涉及校园服务,请明确指出:插件会用你的登录状态调用这个服务,永远看不到你的密码。

助手起草并校验

这些工具不在对话开始时提供:助手先用 plugins.use 加载 plugins 插件的编写工具。然后它读取 plugins.reference,再编写 PLUGIN.md 和各个工具文件。每次修改后,它都会调用 plugins.validate,并持续修正草稿,直到没有问题为止。

试运行只读工具

plugins.tryTool 会对真实服务运行只读工具。安装之前你就能看到实际结果,从而判断插件是否真的能用。

审核并安装

plugins.install 打开的审核页,和你通过安装链接看到的是同一个。它会显示插件是官方的还是社区的,能访问哪些校园服务、网站和 App 功能,以及每个工具和它的效果。在对话中写出的草稿算作社区插件。你点「安装」之前,什么都不会装上。

修改已安装的插件

想修改已安装的插件文档,直接请助手修复或扩展它。助手会用 plugins.source 读取文件,修改后进行校验,再用新版本重新打开审核页。

如果你在对话里贴了一个插件链接,助手会用 plugins.install { link } 为它打开审核页。

分享你的作品

助手写出的草稿就是一个普通的插件文件夹。想分享它,或者让它能通过链接更新,就把文件夹放进一个公开的 GitHub 仓库,文件夹的 URL 就是它的安装链接(见编写第一个插件)。发布之前,请在电脑上运行一遍作者 CLI,并补上录制好的测试。

安全

  • 助手从不自行安装任何东西。plugins.install 只会打开审核页。
  • plugins.tryTool 只运行只读工具,只能访问草稿声明的范围,也不会保留任何数据。
  • 装好的草稿和其他社区插件遵守同样的规则:write、money 和 public 工具会先询问,结果作为数据交给 AI,不会被当作指令。

插件语言本身见声明式插件,各种授权方式怎样运作见权限。

本页目录