NEU Helper 是面向 Northeastern University 学习场景的桌面助手,整合 Canvas、课程文件、邮箱、日程、Claude Code 与本地桌面交互。
项目采用本地 Python 后端与 pywebview 前端,支持 Windows 10/11 与 macOS。Canvas 默认实例为 https://northeastern.instructure.com,配置项支持其他 Canvas 实例。
项目由社区独立维护,与 Northeastern University、Instructure / Canvas、Anthropic 保持独立项目关系。
独立的「今日清单」页(与学业、邮箱、日程并列)汇总逾期作业、今天的安排、重点邮件、备忘录,以及未来七天的日程。 每项提供来源跳转;近期重要未读邮件单独列为「仅供查看」,不会自动变成待办。 导航上的数字是已逾期与今天到期、尚未处理的事项数。
- 支持本地完成、忽略、稍后处理(1 小时后或明天 09:00)与撤回,状态保存在
data/today_actions.json。 - 这些操作只影响行动清单,不提交 Canvas 作业、不修改邮箱或原备忘录的完成状态。
- 稍后处理到期后会重新出现在清单中;目前不额外发送系统通知。
- 来源状态显示最后同步时间和失败信息。Canvas 同步失败时保留上次成功的数据;超过 30 分钟的缓存明确提示。
- 「同步来源」刷新 Canvas 和邮箱;课程日程沿用已有提取结果,不额外调用 Claude。
- 日程与邮件日程仍以原始资料为准,邮件提取的时间会提示核对原文。
回归验证:python -m unittest discover -s tests -v。
离线界面演示:python tests/preview_today.py,打开 http://127.0.0.1:8766;仅使用合成数据。
- 即将截止与逾期作业
- 提交状态、分值与要求摘要
- 课程成绩
- 课程公告
- 课程文件与附件
- 课程详情页
- 中文界面下作业说明一键翻译成中文(调用本机 Claude Code,按原文缓存在
data/translations.json) - 基于 NEU 学期代码的课程筛选
- 学期切换后的成绩查看缓冲期
Canvas 仪表盘直接使用 Canvas REST API,适合日常查询与状态浏览。
NEU Helper 可调用本机 Claude Code CLI,结合 Canvas 数据与本地课程文件生成:
- 每日学业简报
- 课程问答
- 作业要求摘要
- 公告分析
- 课件全文问答
聊天区支持作业、公告与课程文件拖入上下文,并提供:
- Markdown 渲染
- 常用数学公式渲染
- 消息复制
- 用户消息编辑与重新发送
- 文本选择与右键菜单
- 简报全文复制
安装流程可将 canvas_mcp.py 注册为用户级 Claude Code MCP server。注册完成后,Claude Code 可在任意工作目录中查询课程、作业、成绩、公告与课程文件信息。
日程页采用周视图,集中展示:
| 类型 | 数据来源 |
|---|---|
| 上课时间 | 课程首页、syllabus、公告 |
| Office hour | 课程首页、syllabus、公告 |
| 面试、讲座、预约、截止事项 | 邮件 AI 结构化结果 |
| 周期与单日备忘 | 本地备忘录 |
课程正文经过一次结构化提取后保存到 data/schedule.json。源内容哈希用于增量刷新,用户编辑结果保留在本地状态中。
邮件日程支持时区转换、全天事项、邮件关联、相似事项合并与原始邮件跳转。
课程文件可增量同步到本地,并为 PDF、DOCX、PPTX 生成文本副本,支持跨文件全文检索。
仓库包含两个 Claude Code skill:
course-files:搜索与读取本地课件course-sync:触发课程文件同步
邮箱模块基于 IMAP,提供:
- 收件箱浏览
- 即时搜索:发件人、主题、AI 摘要、标签
- 重点标记与待处理邮件置顶
- 阅读状态、重要程度与时间组合排序
- 「盯着 N 封」快速筛选
- 单封与批量已读状态操作
- AI 分类与一句话摘要
- AI 链接筛选与用途说明
- 邮件日程提取
- 邮件每日简报
- 独立邮件对话历史
- 发件人分组
- 本地标签规则
- AI 结果缓存
邮件搜索在前端完成内存过滤,适合高频查询。
主题提供六种模式:
- 跟随系统
- 浅色
- 深色
- NEU
- 海边
- 像素
海边主题采用玻璃、水面与海景视觉;像素主题采用方角、硬投影、等宽字体、像素背景与等距草方块视觉。
界面语言支持中文与 English。语言设置同时作用于界面文案,以及新生成的 Claude 对话、简报、邮件摘要与日程标题。
应用提供三种桌面形态:
| 模式 | 主要用途 |
|---|---|
| 悬浮球 | 桌面常驻与状态提示 |
| 对话框 | 快速提问 |
| 完整面板 | 学业、邮箱、日程、简报与设置 |
Windows 提供通知区图标,macOS 提供菜单栏图标,支持打开、切换窗口形态与退出。
应用在启动后 20 秒检查一次 GitHub Release 与源码状态,此后每天 09:00(本机时间) 再检查一次。发现新版本时弹出居中对话框,提供立刻更新、稍后手动更新与跳过该版本 三个操作;对话框列出当前版本到最新版之间每一版的说明与安装包体积,一个版本只弹 一次。右下角弹窗与页面顶部横幅同时保留。
| 安装类型 | 更新流程 |
|---|---|
| Windows Release 包 | 下载新版本、替换应用文件、重启 |
| macOS Release 包 | 下载新版本、替换应用 bundle、迁移本地数据、重启 |
| Git 源码版 | git fetch、快进更新、重启 |
更新页展示当前版本、目标版本、版本说明与安装位置。源码版同时检查远端提交状态。
下载最新版本:
解压 NEU-Helper-win-x64.zip 到长期使用的目录,然后创建 Canvas Access Token:
Canvas → Account → Settings → New Access Token
运行安装脚本:
powershell -ExecutionPolicy Bypass -File setup.ps1 -Token "14523~xxxxxxxxxxxxxxxx"安装流程配置 Canvas 凭据、桌面快捷方式、开机启动、Canvas MCP 与自检。
开机启动可在设置 → 通用中随时开关。两种安装方式指向的目标不同:Release 包
直接启动应用本体(Windows 为 NEU Helper.exe,macOS 为 open -a 打开 .app);
源码版启动每日闸门脚本,该脚本每天只放行一次。开关会识别两种安装方式建立的
启动项,关闭时一并清除。若当前目录中找不到可启动的目标,开关不会创建任何条目,
并在界面上说明原因。
环境要求:Python 3.9+
git clone https://github.com/haoawake/neu-helper.git
cd neu-helper
powershell -ExecutionPolicy Bypass -File install.ps1 -Token "14523~xxxxxxxxxxxxxxxx"
pythonw app.py安装器负责主要 Python 依赖:
requestsflaskpywebview
git clone https://github.com/haoawake/neu-helper.git
cd neu-helper
chmod +x install.sh
./install.sh --token "14523~xxxxxxxxxxxxxxxx"
python3 app.pyApple Silicon Release 提供 NEU-Helper-mac-arm64.zip。首次启动可使用 Finder 右键菜单中的“打开”,或通过“系统设置 → 隐私与安全性”完成启动授权。
Intel Mac 可在本机运行:
./packaging/build_mac.sh构建产物位于:
dist/NEU-Helper-mac-<arch>.zip
AI 简报、AI 对话、邮件 AI、Canvas MCP 与课程 skill 使用本机 Claude Code CLI。
安装 Claude Code 后运行:
claude --version
claude安装脚本会注册名为 canvas 的用户级 MCP server。可通过以下命令检查:
claude mcp list项目首次安装时会从 CLAUDE.example.md 生成 CLAUDE.md。该文件用于保存课程简称、课程环境与 Claude 使用规则。
Canvas 凭据保存在:
~/.canvas-helper/config.json
邮箱凭据保存在同一用户配置目录。
Canvas 集成采用读取权限,覆盖:
- 课程
- 作业
- 成绩
- 公告
- 课程文件
邮箱模块以读取、分类、搜索与本地缓存为主,并支持邮件已读状态同步。
桌面 UI 的本地 HTTP 服务采用:
127.0.0.1- 随机端口
- 当前进程生成的 API token
Windows Release 包可直接运行。源码版适合开发、调试、课程文件处理脚本与完整 skill 工作流。
课程辅助 skill 会调用 python 或 python3,源码环境可直接提供对应解释器。
neu-helper/
├─ app.py
├─ server.py
├─ canvas_api.py
├─ canvas_mcp.py
├─ chat_bridge.py
├─ briefings.py
├─ filesync.py
├─ timetable.py
├─ memos.py
├─ mailbox.py
├─ mailai.py
├─ mailevents.py
├─ gui/
│ ├─ index.html
│ ├─ app.js
│ └─ app.css
├─ native_win32.py
├─ native_cocoa.py
├─ orb_win32.py
├─ orb_cocoa.py
├─ install.ps1
├─ install.sh
├─ selfcheck.py
└─ packaging/
前端由 pywebview 承载,本地 Python 后端负责 Canvas、邮件、Claude CLI、课程同步与状态管理;Windows 与 macOS 分别使用 Win32 和 Cocoa 原生窗口层。
Release 使用 v* tag 触发 GitHub Actions 构建。
标准流程:
- 更新
version.py中的VERSION - 编写
packaging/notes/v<版本>.md - 创建并推送
v<版本>tag
Release 文案建议采用以下结构:
# vX.Y.Z — 功能主题
## 更新内容
- 新增功能
- 交互优化
- 平台支持
- 性能调整
## 平台
- Windows: ...
- macOS: ...
## 完整变更
https://github.com/haoawake/neu-helper/compare/<previous>...vX.Y.Z标题聚焦功能主题,正文聚焦用户可见行为、平台范围、兼容性、数据处理与升级方式。
运行:
python selfcheck.py自检覆盖配置、平台逻辑、更新流程与一组桌面应用行为。
NEU Helper 将学习数据分为三层:
Canvas / 邮箱
↓
本地结构化数据与课程文件索引
↓
桌面仪表盘 / 日程 / Claude Code / MCP
Canvas 与邮箱提供事实数据,本地索引负责检索与缓存,Claude Code 负责语义理解、摘要与问答。