清华课程同步 · DeepSeek Harness 插件
在自己的浏览器中登录清华网络学堂,将当前学期课程资料按科目保存到本机。再次调用时检查学堂文件标识、更新时间、大小和本地 SHA-256 校验值,跳过未变化的文件。每轮同步保留逐项日志。
此包为 0.1.0 预览版,适配 DeepSeek Harness 0.2.1-rc.2 至 0.2.1 系列。插件包含 DSH 工具与配套浏览器扩展,两个部分需要同时安装。
安装
在 GitHub Release 下载 DSH 安装包与配套浏览器扩展。也可直接用发布地址安装 DSH 部分。
dsh plugin --profile desktop add https://github.com/ZhiX-Wang/dsh-tsinghua-course-sync/releases/download/v0.1.0/dsh-tsinghua-course-sync-0.1.0.tgz
- 将
dsh-tsinghua-course-sync-0.1.0.tgz放到本机任意文件夹。在该文件夹运行dsh plugin --profile desktop add ./dsh-tsinghua-course-sync-0.1.0.tgz,然后重新启动 DSH。其他 profile 用户把desktop换成自己的 profile 名。 - 解压配套浏览器扩展 ZIP。保留解压后的文件夹,浏览器后续从此处加载扩展。
- Chrome 用户打开
chrome://extensions,Edge 用户打开edge://extensions。启用开发者模式,点击“加载已解压的扩展程序”,选择chromium文件夹。兼容 Chromium 的其他浏览器可使用其扩展管理页加载该文件夹。 - Firefox 版本位于
firefox文件夹。预览测试可在about:debugging#/runtime/this-firefox点击“临时载入附加组件”并选择manifest.json。临时加载在浏览器重启后失效,长期安装和公开分发需要经过 Firefox 签名。
DSH 启动器如未加入 PATH,可使用其安装目录中的 dsh 命令。macOS 应用版通常位于 /Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh。
日常使用
在 DSH 中输入以下任一句话。
帮我同步清华网络学堂当前学期的课程资料。
把课程资料保存到我指定的绝对路径,之后继续同步这个目录。
看看上次课程同步新增了哪些文件,有没有失败。
插件首先打开系统默认浏览器中的连接页。点击“允许本次课程同步”后,学堂在同一浏览器的新标签页中打开。已有登录会话会直接使用。浏览器自动填入账号和密码后,插件会尝试点击一次登录。验证码、扫码、二次验证或失效密码需要在学堂页面完成。
同步期间保留连接页和学堂标签页。完成后,DSH 显示结果与日志位置。连接页也会显示完成状态。
默认目录为当前操作系统用户的 Documents/清华网络学堂/课程。用户可以指定其他绝对路径,后续更新继续使用同一目录。每个课程文件夹采用学堂显示的课程名和课程编号,并保留原文件分类。公告与作业分别放在“课程公告”“课程作业”子文件夹。
默认浏览器为 Safari 时,当前预览版会提示选择已安装的 Chrome、Edge 或 Firefox。例如在 DSH 中说“这次用 Chrome 同步”。Safari 扩展需要另外生成应用包并签名。其他浏览器能否使用此扩展,取决于其扩展支持情况。
同步范围
- 登录用户当前学期课程列表中的课程文件与全部分类。
- 课程公告附件与原文说明。
- 本人未提交、已提交未批改和已批改作业中的附件与原文说明。
课程列表由每次登录后显示的页面动态获取。新课程、新分类和新附件会在下次调用时发现。
增量记录
保存目录中的 .学堂同步/manifest.json 记录文件标识、元数据指纹、相对路径、大小、校验值与保存时间。.学堂同步/logs/ 为每次运行生成一个 JSONL 日志,逐行记录操作结果。
| 日志动作 | 含义 |
|---|---|
saved |
首次保存 |
updated |
文件发生变化,保存新版本 |
skipped |
远程元数据和本地校验均未变化,跳过下载 |
deduplicated |
取得内容后发现与已有文件一致,复用原文件 |
failed |
当前项目失败,成功项目已保留,可再次同步补齐 |
recovered |
从之前中断的保存日志恢复索引 |
run_finished |
本轮最终状态与统计 |
同名文件内容发生变化时,新版本文件名带校验值后缀,旧版本继续保留。本地删除或编辑过的文件会重新核对并补齐。远程文件标识或元数据变化、但实际内容相同时,只保留一份本地内容。
每次保存先写入临时文件,检查大小和内容,再记录保存意图、提交文件和索引。相同目录的同步有互斥锁。进程中断后可根据日志恢复已保存的文件。
更新判断依赖学堂公开的文件标识、更新时间和大小。公告或作业正文还会核对原文内容。若学堂在保留相同标识、时间和大小的同时替换附件,当前版本无法从列表元数据识别该变化。
浏览器权限
浏览器扩展访问清华网络学堂、清华身份认证页面和本机回环连接。用户每次点击允许后,扩展才接收该轮课程同步操作。账号和密码由浏览器管理,扩展检查自动填充状态以触发登录,日志保存文件标识和校验结果。
课程原文与附件在本机处理,DSH 中会显示同步状态、文件统计和日志路径。用户自己的 DSH 模型与会话配置决定其聊天记录的处理方式。
已完成验证
- 8 项保存层检查,覆盖重复运行、更新保留、内容去重、失败重试、本地编辑、日志恢复、互斥锁及路径校验。
- 真实 Chromium 加载扩展后的完整连接测试,使用隔离的课程测试页面。覆盖首次保存、重复调用跳过、更新单个文件、切换课程列表、中文附件名、分块传输和模拟自动填充登录。
- 2 项本机连接检查,覆盖令牌验证、请求来源、消息应答和取消等待。
- 使用 DSH 0.2.1-rc.2 的 ToolRuntime 注册 4 个工具,并实际执行历史查询。
Windows、Linux、Firefox 和 Safari 的完整使用流程尚未实机验证。Chrome/Edge 的商店分发与 Firefox 签名尚未完成,当前通过加载源码文件夹进行预览。
工具
| 工具 | 用途 |
|---|---|
tsinghua_courses_sync |
开始增量同步,可指定 root 与 browser |
tsinghua_courses_status |
查看运行状态,可等待最多 25 秒 |
tsinghua_courses_history |
查看最近同步日志 |
tsinghua_courses_cancel |
取消当前任务并保留已完成文件 |
browser 可选 default、chrome、edge 或 firefox。后台任务在 DSH 运行期间执行。任务返回 waiting_for_browser 或 waiting_for_login 时,按页面提示完成对应操作,随后会自动继续。
No comments yet. Be the first to write one.