PKU harness

简介

PKU harness 是一个开源的北大校园生活 App,核心是一个 AI 助手。这份文档写给为它开发插件的同学和 AI 助手。

PKU harness 是一个帮北大同学处理校园事务的 Android 应用。你用校园账号登录一次,就能在 App 里使用课表、校园卡、网费、树洞、教学网、财务、场地预约等校园系统。登录走的是学校的统一身份认证系统 IAAA。插件还可以接入更多服务。

App 的核心是一个 AI 助手。你在对话里提出需求,助手会替你操作这些系统。助手能用的每一项功能,在 App 的原生界面里也有对应的按钮,你可以自己点。

App 与插件的关系

App 本身只提供三样基础设施:一个 Agent 循环(让 AI 助手反复思考、调用工具、再回答的那段程序),一套界面设计系统,以及一组宿主服务(例如校园登录、定时任务、小组件和待办)。我们把这一层叫作 harness(框架)。

除此之外的功能都由插件(plugin)提供。每个校园服务、看板、提醒,甚至 AI 模型的服务商,都是一个插件。随 App 一起发布的插件和同学自己在服务器上运行的插件遵循同一套接口,显示在同一个插件列表里,也受同一套权限系统管理。

PKU harness App(框架层)
Agent 循环
调用工具
设计系统(HostUI)
显示页面
宿主服务
校园登录、定时任务、小组件、待办等
内置插件
TypeScript、SDK
远程插件
基于 HTTPS 的 MCP
PKU harness Cloud
可选的后端

这种结构带来两条规则,后面的文档会经常提到。

  • 你和助手能做的事情完全相同。 每项功能都是一个有类型的工具(tool)。你在界面上点按钮时,界面调用这个工具;你在对话里提出需求时,助手调用同一个工具。
  • 凭据不离开手机。 校园服务由框架自己登录。插件只拿到服务返回的结果,看不到你的密码和会话令牌。

这份文档写给谁

接下来读什么

你想要阅读
了解 App 的整体结构先读架构,再读核心概念里的其他页面
不改动 App,今天就发布一个插件快速上手:远程插件
写一个随 App 发布的插件内置插件和 SDK 参考
把插件上架到插件市场插件市场
在服务器上存数据或实时共享PKU harness Cloud 及其 API 参考
查看所有仓库和路线图生态

把文档交给 AI 助手

每个页面都有 Markdown 版本。这样你可以只把需要的内容交给 AI 助手,不必让它读整个网站。文档有简体中文和英文两种语言。中文是默认语言,路径以 /docs 开头;英文路径以 /en/docs 开头。

URL内容
/llms.txt两种语言所有页面的索引,每页附一句简介
/llms-full.txt所有英文页面合成的一个文件
/llms-full.zh.txt所有中文页面合成的一个文件
/docs/<page>.md单个中文页面,例如 /docs/sdk/plugin.md
/en/docs/<page>.md同一页面的英文版
/docs/<page>,请求头带 Accept: text/markdown与 .md 相同

最后一行利用的是 HTTP 的内容协商:服务器根据请求头决定返回 HTML 还是 Markdown。

每页标题下方有 Copy Markdown 和 Open in… 两个按钮。Cloud API 参考页的 Markdown 版本会把接口和数据结构以纯文本列出。

# 把插件检查清单和 SDK 约定交给 Claude Code
curl -s https://<this-site>/docs/for-agents.md https://<this-site>/docs/sdk/plugin.md > plugin-context.md

当前状态

PKU harness 1.0.0 已发布 Android 版,iOS 版正在准备中。

JavaScript 代码的修复通过签名的空中更新(over-the-air update,简称 OTA)推送到已安装的 App。原生代码的改动则需要发布新的 APK。

这里描述的 SDK 和通信协议与 pkuinfo/pku-harness 和 pkuinfo/pku-harness-plugins 两个仓库的默认分支一致。插件和 SDK 直接从 GitHub 仓库获取,不通过 npm 发布。大多数校园服务以插件文档(PLUGIN.md)的形式提供,通过链接安装。

本页目录