yl503 for vscode
在 VS Code 里登录 yl503(yl503.yali.edu.cn),在编辑器内查看题面、作业、私信、评测记录和题解,并直接提交代码。
仅适用于 yl503(yl503.yali.edu.cn),不支持其他 Hydro 站点。
功能
- 编辑器内登录:用户名 / 密码只在 VS Code 输入框里输入,直接提交给 OJ 本站,不经过任何第三方
- 只保存会话 Cookie:登录态存在 VS Code 的
SecretStorage(系统加密),不落明文文件
- 题面内联查看:作业的「题面」直接在 VS Code 侧边以 Markdown 预览打开(带标题、时限/内存、标签、作业名,图片自动补成绝对地址),不跳浏览器
- 一键提交:在
Problems/<题号>/ 里按 Ctrl+Alt+S,自动识别题号 → 选语言 → 提交 → 实时轮询评测结果(Accepted / Wrong Answer / …)
- 私信:
OI: 私信(查看/发送) 打开聊天面板,抓取你和某个用户的全部私信并直接回复;OI: 快速发送私信 可一句话直发
- 作业:
OI: 查看作业 按名字模糊搜索作业、看题目与成绩表;OI: 查看作业列表 浏览全部作业并点击进入
- 评测记录:
OI: 我的评测记录 看当前账号的全部提交;OI: 指定题目的评测记录 看某道题的全部提交(状态/得分/用时/内存/语言一目了然,点开可看详情)
- 题解:
OI: 查看题目题解 抓取该题的全部题解,按作者、赞同、回复整理成 Markdown 在侧边预览
- 可排查:
OI: 查看导入日志 查看每次请求与解析结果
使用方法
- 用 VS Code 打开你的 OI 工作区(可含
Problems/ 目录,用于提交时按 Problems/<题号>/ 推断题号)
- 点右下角状态栏 「Hydro: 未登录」,或
Ctrl+Shift+P → OI: 登录 HydroOJ
- 输入用户名、密码(密码为掩码输入)
- 作业相关:
Ctrl+Shift+P → OI: 查看作业列表:浏览全部作业(进行中/已结束、剩余时间、题数),点击任一条即可进入作业面板
Ctrl+Shift+P → OI: 查看作业:按名字搜作业并打开
- 作业面板里可看题目、提交、成绩表
- 评测记录:
Ctrl+Shift+P → OI: 我的评测记录:看当前账号的全部提交(默认按时间倒序)
Ctrl+Shift+P → OI: 指定题目的评测记录:输入题号,看该题的全部提交
- 列表里点任意一行可跳到评测详情(浏览器)
- 题解:
Ctrl+Shift+P → OI: 查看题目题解,输入题号,抓取全部题解在侧边预览
- 提交代码:在
Problems/<题号>/ 下打开 .cpp,按 Ctrl+Alt+S(或 Ctrl+Shift+P → OI: 提交当前代码到 OJ):
- 题号从当前文件所在目录
Problems/<题号>/ 自动推断(也可手动输入)
- 选语言(默认
cc.cc14o2 = C++14 O2)
- 确认后提交,状态栏实时显示「评测中 → Accepted / Wrong Answer…」
私信
Ctrl+Shift+P → OI: 私信(查看/发送)
- 列表里选最近的会话;或选 私信新的人…,输入对方 UID 或用户名(可只输一部分,会模糊搜索,重名时让你挑)
- 侧边打开聊天面板:
- 左右气泡显示收发双方,按天分组,带时间
- 输入框 Enter 发送,Shift+Enter 换行
- 顶部「刷新」手动拉取、「换人」切换对象、「网页」在浏览器里打开对应的
/home/messages?target=<uid> 页面
- 面板打开期间默认每 8 秒自动刷新(
oiHydro.messageRefreshSeconds,设 0 关闭)
- 只想发一句话:
OI: 快速发送私信 —— 会先列出「发给当前对象 / 换一个对象…」,换完会记住新对象
- 想换个默认对象但不发消息:
OI: 更换快速发送对象,选完可直接点「立即发一条」
快速发送对象、私信面板里最后聊的人,是同一个记忆;面板里点「换人」也会同步过去。
私信是账号级的,与题目所在的域无关,但 Hydro 的路由挂在域下,所以会沿用你上次用过的域(oiHydro.domainPath 兜底)。
作业
Ctrl+Shift+P → OI: 查看作业
- 输入作业名的一部分(留空 = 最近作业),回车后会按相似度列出最像的几个:
- 每条显示「进行中 / 已结束」「剩几天」「几道题」和起止时间
- 站内搜不到时会退回最近作业做本地模糊匹配,漏字、错字也能命中
- 选中即打开作业面板(侧边):
- 题目 页:A/B/C 题号、标题、我的提交状态与分数(未提交 / Accepted 100 分 / …)
- 「题面」直接在 VS Code 侧边打开 Markdown 预览(带标题、时间/内存限制、标签和作业名,图片会自动补成绝对地址),不跳浏览器
- 「提交」把最近编辑的代码文件提交到这道题(选语言 → 确认 → 轮询评测结果);即使焦点在面板上也能正确取到那个 .cpp
- 成绩表 页:排名、用户、总分、每题的分数/用时,点分数可跳转评测记录
- 顶部还有「刷新 / 换作业 / 网页」
- 没认领过的作业会先显示「认领作业」按钮(等价于网页上的 Claim Homework),认领后题目才会出现
作业只在"进行中"能提交;已截止时提交按钮会置灰。成绩表若被老师设为结束前隐藏,会显示提示而不是报错。
评测记录
Ctrl+Shift+P → OI: 我的评测记录,侧边打开一个表格:状态(AC/WA/TLE/… 带颜色徽章)、题目、得分、用时、内存、语言、提交者、时间
- 默认显示当前登录账号的全部提交;若取不到 uid 则显示全部
- 顶部「刷新」重拉;滚动到底点「加载更多」翻页
- 点任意一行在浏览器打开该次评测详情
Ctrl+Shift+P → OI: 指定题目的评测记录,输入题号(如 139),看该题的全部提交(含别人的),方便对拍 / 参考
状态颜色:绿=通过,红=WA/RE,橙=TLE/MLE/OLE,蓝=评测中/编译中,灰=已取消/未知。
题解
Ctrl+Shift+P → OI: 查看题目题解
- 输入题号(留空时若当前编辑器在
Problems/<题号>/ 下会自动填)
- 抓取该题全部题解,按「作者 · 赞同数 · 回复数」整理,在 VS Code 侧边以 Markdown 预览打开;题解里的图片链接会自动补成站点绝对地址
命令
| 命令 |
说明 |
OI: 登录 HydroOJ |
输入账号密码,保存会话 Cookie |
OI: 提交当前代码到 OJ |
提交当前文件并轮询评测结果(默认快捷键 Ctrl+Alt+S) |
OI: 私信(查看/发送) |
打开私信面板:抓取与某人的对话并直接回复 |
OI: 快速发送私信 |
不进面板,直接给「快速发送对象」发一条(会先让你确认或换人) |
OI: 更换快速发送对象 |
换掉快速发送的默认对象,不发消息 |
OI: 查看作业 |
按名称搜索/打开作业,看题目、交题、看成绩表 |
OI: 查看题目 |
按名称搜索题目,并在 VS Code 内打开题面 |
OI: 查看作业列表 |
浏览全部作业,点击任一条进入作业面板 |
OI: 我的评测记录 |
查看当前账号的全部评测记录 |
OI: 指定题目的评测记录 |
输入题号,查看该题的全部评测记录 |
OI: 查看题目题解 |
输入题号,查看该题的全部题解(侧边预览) |
OI: 退出登录 |
清除本地登录态 |
OI: 查看导入日志 |
查看请求与解析细节 |
OI: 网络诊断 |
抓不到题时先跑这个:打印 DNS、TCP、Node 与 curl 两条通道的真实耗时 |
设置
| 设置项 |
默认值 |
说明 |
oiHydro.baseUrl |
https://yl503.yali.edu.cn |
站点地址;HTTPS 连不上时可改成 http:// |
oiHydro.serverIp |
空 |
固定服务器 IP。当域名解析出公网 IP、而校内只有内网 IP 能连通时填内网地址(如 172.45.35.5),连接时会自动带上正确的 Host 头 |
oiHydro.domainPath |
d/J2026 |
域路径,所有功能(导题/提交/私信/作业)都用它,默认即 J2026 |
oiHydro.problemsDir |
Problems |
题目目录(相对工作区根目录) |
oiHydro.openAfterImport |
false |
导入后是否自动打开 problem.md(默认只在通知里给按钮) |
oiHydro.autoOpenPreview |
false |
自动打开时是否同时在侧边开 Markdown 预览 |
oiHydro.preferCurl |
false |
始终用系统 curl.exe 抓取;默认「Node 失败才自动切 curl」 |
oiHydro.codeLang |
cc.cc14o2 |
默认提交语言(cc.cc17o2 = C++17 O2,py.py3 = Python3) |
oiHydro.confirmSubmit |
true |
提交前弹确认框,防误交 |
oiHydro.messageRefreshSeconds |
8 |
私信面板自动刷新间隔(秒),0 = 关闭自动刷新 |
oiHydro.allowInsecureTLS |
false |
站点证书链不完整时忽略校验(不安全,仅自签站点) |
抓不到题目时
按顺序排查,三步基本能定位:
OI: 网络诊断 —— 看 DNS 解析出的 IP、TCP 是否连通、Node / curl 两条通道谁通
- 若 DNS 给的是公网 IP 而校内只能走内网 IP,把
oiHydro.serverIp 填成内网地址(可用浏览器打开题目页确认能访问)
- 仍失败看
OI: 查看导入日志,或检查站点是否本身 502
安全说明
- 密码不保存:登录成功后只保留会话 Cookie(HttpOnly 会话级别)
- Cookie 存放在 VS Code
SecretStorage,由操作系统凭据保护,扩展不会写到工作区文件
- 所有网络请求只发往
oiHydro.baseUrl 指向的站点
已知限制
- 依赖站点返回结构与 Hydro 版本(本扩展在 Hydro 4.58 上验证)
- 题面中的图片若需要登录才能访问,Markdown 预览里可能显示不出来
- 样例依赖题面里存在「输入样例 / 输出样例」代码块;没有的话不会生成
.in/.out
反馈
遇到解析问题,请提供 OI: 查看导入日志 的输出,以及题目目录下生成的 raw_problem.html(如有)。
License
MIT
| |