跳转至

OneTHU 开发文档

最后更新:2026-09-22 22:57

OneTHU 是清华大学校园助手应用,基于 Tauri v2 与 React 实现,支持桌面与 Android 平台。应用集成课表、作业、日程、图书馆预约、校园卡、宿舍电费、校园网等日常功能, 并通过插件系统提供扩展能力。

文档索引

文档 内容 读者
plugin-development.md 插件模型、清单规范、权限声明、UI 通道与自建功能页、原子化收藏、发布与更新、三种插件形态的通信协议、对话面板协议、调试方法 插件开发者
api-reference.md ctx.onethu.* 命名空间与方法的完整参考 插件开发者
外部作业源-需求与实现方案.md 外部作业源 R15–R21 的设计与实测纪要:接口探测、加密字体与 LaTeX 方案、原生详情页与嵌入式提交入口的实现记录 功能贡献者
architecture.md 进程模型、会话管线、插件宿主实现、主题系统、模型调度、构建流程 宿主贡献者
homework.md 作业区:分组与数据来源、忽略、网络学堂附件上传与必交附件预检、雨课堂主观题原生作答、学术红线与测试工具 功能使用者与贡献者
external-homework.md 外部作业源(雨课堂 / TUOJ / Tyche / DSA OJ)的接入方式、凭据维护、故障恢复与接入记录 功能使用者与贡献者
android-release-traps.md 安卓 release 构建陷阱(@InvokeArg、R8、UA 伪装、构建判据)与无 adb 真机取证通道(日志导出、计时埋点) 宿主贡献者
ui-copy-audit.md UI 文案纪律审计:禁用词与字数规则、历次用户反馈的根因与修法留痕 界面贡献者

阅读路径

文档语言纪律

正文一律使用陈述式技术说明:不写口号式引号短语、比喻性动词、第一人称与第二人称、元话语 与建议式祈使。具体禁用词表以 tools/docs-prose-lint.mjs 为准(不在本文重复列举,避免文档 自身触发规则)。用户报障原句、报错原文、日志行与 UI 文案样例属证据,逐字保留,并在行尾加 <!-- docs-prose-lint-ok: 理由 --> 或写入 tools/docs-prose-allow.json 豁免。

改完执行 pnpm lint:docs(tools/docs-prose-lint.mjs,有违规退出码 1)。

更新时间

每份文档在标题下方带一行 > 最后更新:YYYY-MM-DD HH:MM。改动文档后执行一次:

node tools/docs-stamp.mjs      # 改过的文档取当前时间,未改的取该文件最后一次提交时间

时间取该文件最后一次内容变更的时刻。评审文档时先看这一行:若它早于相关代码的提交, 说明该文档可能已经过期。

接口真源

以下文件为接口定义的权威来源,文档与实现不一致时以代码为准:

文件 内容
apps/desktop/src/plugins/types.ts onethu.* API 面与权限枚举
apps/desktop/src/plugins/facade.ts 权限门禁与 API 实现
apps/desktop/src/plugins/tabs.ts / pluginAtoms.ts 插件功能页注册表 / 插件原子种类注册表
apps/desktop/src/lib/market.ts 插件市场名单解析与仓库拉取通道
packages/core/src/info/types.ts 领域数据类型
apps/desktop/src/state/theme.ts 主题定义与昼夜调度
packages/core/src/exthw/types.ts 外部作业源类型

示例工程

  • examples/harness-skel/:可编译的 Rust sidecar 插件骨架,实现宿主握手、 onethu.call 转发与命令执行。
  • OneTHU-plugin-hello:JS 插件特性 全景示例,覆盖结构化结果、确认与表单弹窗、剪贴板、自建功能页、全局 CSS、原子化 收藏、桌面小组件、系统通知、OH 双向联动;随插件市场分发,可直接作为新插件的模板。
  • OneTHU-theme-barbie:主题插件 示例(芭比粉),演示令牌覆盖、品牌 logo 替换与作用域附加 CSS,零权限;见 plugin-development.md §3.4。