CourseMind TraeCode Extension
CourseMind 在 TraeCode / VS Code 内的学生入口。插件用于学生身份登录、采集链路诊断和本地同步状态展示,不参与或阻断现有 Hook 采集流程。
当前版本:0.5.0,已完成 M7.1–M7.5。
功能
学生身份
- 使用学号和密码登录;
- 显示姓名、学号、班级和上课教室;
- 支持修改密码和退出登录;
- 登录状态在编辑器重启后保持;
- Student Token 仅保存到 VS Code
SecretStorage;
- 登录后将不含密码和 Token 的身份信息同步到采集器
identity.json;
- 退出登录时删除
identity.json。
采集状态
插件启动或手动刷新时异步检查:
collect.py 是否存在;
config.json 是否存在、能否解析以及必填项是否完整;
- Trae
hooks.json 是否包含 UserPromptSubmit 和 Stop;
- Hook command 是否指向当前
collect.py;
- 缓存目录是否可访问;
pending.json 中的待上传记录;
failed.jsonl 中的失败记录;
collector-debug.jsonl 中最近的 Hook、上传成功和上传失败事件;
- CourseMind 服务端
/health 是否可访问以及请求延迟。
状态页面采用可折叠卡片布局。学生身份默认展开,采集状态默认收起;手动选择的展开状态会在页面刷新后保留。详细诊断默认折叠,所有采集器文件均以只读方式检查。
快捷操作
CourseMind: 登录
CourseMind: 退出登录
CourseMind: 修改密码
CourseMind: 刷新
CourseMind: 检查采集状态
CourseMind: 打开采集日志
CourseMind: 打开采集目录
CourseMind: 测试服务器连接
项目上下文
- 自动识别当前活动 Workspace;
- 读取 Git remote 和当前 branch,非 Git 项目正常显示;
- 根据 Workspace 根目录标志文件识别 Java、Maven、Gradle、Node.js、Vite、Vue、React、TypeScript、Python 和 Docker Compose;
- 在插件启动、登录、Workspace 切换和 Git 状态变化时低频检测;
- 仅在上下文发生变化时调用
POST /api/v1/student/context;
- 服务端不可用时只提示同步失败,不影响编辑器操作。
学生个人统计
登录后在概览页展示“今日 AI 使用”:
- 今日 AI 提问数、会话数、平均轮次和多轮会话比例;
- 主要主题 Top 5(未分类归入“其他”);
- 最近会话列表(标题取首条提问,按最后活动时间倒序);
- 数据来自服务端
GET /api/v1/student/me/stats,只统计当前登录学生本人的记录;
- 每次打开概览、登录成功、手动刷新时加载,并每 5 分钟自动刷新一次;
- 登录过期时自动清除身份并提示重新登录;服务端不可用时保留最近一次数据并提示更新失败。
安装
在 TraeCode / VS Code 中打开扩展管理页面,选择“从 VSIX 安装”,然后选择 coursemind-traecode-0.5.0.vsix。安装完成后,点击 Activity Bar 中的 CourseMind 图标打开概览。
配置
在 TraeCode 设置中搜索 CourseMind,或者直接编辑用户 settings.json:
{
"coursemind.serverUrl": "http://192.168.1.10:8000",
"coursemind.collectorPath": "C:\\ai-collector",
"coursemind.pendingWarningThreshold": 20,
"coursemind.diagnosticFreshnessMinutes": 1440
}
| 配置项 |
默认值 |
用途 |
coursemind.serverUrl |
http://localhost:8000 |
学生登录、修改密码和 /health 检查使用的服务端地址 |
coursemind.collectorPath |
C:\ai-collector |
collect.py、config.json、缓存和 identity.json 所在目录 |
coursemind.pendingWarningThreshold |
20 |
待上传记录达到该数量时显示警告 |
coursemind.diagnosticFreshnessMinutes |
1440 |
Hook 和上传事件被视为近期事件的分钟数 |
服务端地址只填写协议、主机和端口,不要追加 /api/v1 或 /health。
插件配置与采集器配置相互独立。还需确认 C:\ai-collector\config.json 中的 server_url 指向同一服务端:
{
"server_url": "http://192.168.1.10:8000"
}
修改配置后,在 CourseMind 中点击“重新检查”。
本地文件
默认目录结构:
C:\ai-collector\
├─ collect.py
├─ config.json
├─ identity.json
└─ cache\
├─ pending.json
├─ failed.jsonl
└─ collector-debug.jsonl
Trae Hook 配置默认位于 %USERPROFILE%\.trae-cn\hooks.json。
没有 identity.json 时,采集器仍能正常上传记录;该记录不包含 student_id,服务端继续使用 machine_id 作为基础关联字段。
本地开发
要求 Node.js 20 或更高版本。
cd extension
npm install
npm run check
npm test
npm run compile
在 VS Code 中打开 extension/,按 F5 启动 Extension Development Host。
打包 VSIX
cd extension
npm run package
生成的 coursemind-traecode-<version>.vsix 位于 extension/ 目录。
常见问题
显示“服务器连接失败”
确认 coursemind.serverUrl 地址正确,并在浏览器中访问服务端 /health。插件网络请求默认在 5 秒后超时。
显示“Hook 配置错误”
确认 %USERPROFILE%\.trae-cn\hooks.json 同时配置了 UserPromptSubmit 和 Stop,两个命令都应指向配置的 collectorPath 下的 collect.py。
没有诊断日志
确认采集器 config.json 中启用了 diagnostic_log,并实际触发过一次 Trae AI 对话。插件不会主动创建或修改采集日志。
有待上传或失败记录
待上传记录会由采集器的 retry / ACK 机制自动补传。插件只负责展示状态,不会删除、重写或重新提交缓存记录。
后续范围
- 本周趋势、Prompt 质量分布和分页历史会话;
- M7.6:实验室小规模试点联调与部署。