Lanqiao OJ Bridge
非官方声明
Lanqiao OJ Bridge 为爱好者独立开发的学习辅助工具,非蓝桥官方产品,未获得蓝桥杯组委会授权,仅用于备赛学习,无商业用途。
本项目当前免费提供,作者不通过本项目收费或售卖题目。
把蓝桥 OJ 题面、CPH 本地样例和官方在线调试连接到 VSCode。使用自己已登录的蓝桥网页,不需要提供 Cookie、JWT 或密码。本项目独立开发,与蓝桥官方无隶属关系。
需要同时安装 VSCode 扩展和 Tampermonkey 脚本。脚本单独安装不能完成桥接。
版本信息:VSCode 扩展安装包以商店和 GitHub Release 的下载页为准,源码版本见 package.json;浏览器脚本版本以 ScriptCat 或脚本头部为准。扩展与脚本分别维护版本号,不要求数字相同。脚本通过 ScriptCat 和 GitHub 分发,暂未发布 Greasy Fork。
v0.5.0:课程 OJ 与代码拱桥
课程中的 OJ 练习也可以导入。网页控件改为可拖动、贴边收起的原创拱桥浮球;VSCode 题目操作使用同款图标,描述标题右侧小图标复制完整 Markdown。官方调试和评测结果统一进入 Lanqiao OJ 输出面板,题面不再重复显示卡片。升级这些功能需要安装扩展与脚本 0.5.0,旧配对和端口保留。
0.4.4 默认关闭诊断日志,发送至 CPH 不再主动打开输出面板。仅排错时可在设置中开启 Lanqiao Diagnostics;无需重载,排错后关闭即可。正常错误提示与官方运行 / 评测结果不受影响。
v0.4.3:简洁界面与语言记忆
点击题目标题旁的 C / C++ 标记即可切换语言,悬停查看编译器和文件。选择会被记住:新题沿用最近选择,已有题目保留各自语言;重新导入及从 README 打开可恢复。明确打开某份源码时,以该文件为准。只保存本扩展的语言设置,不修改 CPH 或 Code Runner 配置。
提交按钮显示“提交”,实际语言与文件仍在提交确认框中核对。连接说明放在悬停提示中,成功反馈短暂显示,错误继续提示。评测仅显示测试点总数与通过汇总,不再打印逐点 JSON;指定输入调试仍只展示执行结果。
v0.4.0:C / C++
首次安装默认使用 C++。点击已导入题面的语言标记选择 C,或运行 Lanqiao: 切换解题语言(C / C++),会在同一题目目录创建 / 打开独立 main.c,保留 main.cpp、笔记和已有自定义测试。也可将 lanqiao.defaultLanguage 设为 c,用于新题导入。
C 模板配置 lanqiao.cTemplate 留空使用内置基础模板,指定路径时使用自己的 C 模板;原 lanqiao.template 继续只用于 C++。CPH 根据当前源码扩展名使用现有 C 或 C++ 配置,本工具不修改编译器和全局配置。每份源码分别关联 CPH 测试,兼容数据另外保存为 companion.c.json / companion.cpp.json。
C 在线操作需要同时更新 VSIX 与脚本至 0.4.0,刷新网页;配对和脚本权限保留。网页需手动选择 C(gcc8.3.0),C++ 继续选择 C++(g++17)。任务只交给同题同语言页面;语言不一致时停止,避免误提交。题面、确认框、运行历史显示对应文件和语言,既有 C++ 记录继续可读。旧脚本仍可用于 C++,C 在线操作会提示更新。Python 暂不支持。
从 VSCode Marketplace 更新扩展,或使用对应版本的 .vsix 离线安装。0.4.0 脚本仍可用于普通题库页的 C / C++;课程页和新版浮球需要更新为 0.5.0。
安装与首次配对
Windows 可将题目保存到其他盘:Ctrl+, 打开设置,搜索 Lanqiao Root,例如填写 D:/Code/Algorithm/Lanqiao。也可在用户设置 JSON 中设置 "lanqiao.root": "D:/Code/Algorithm/Lanqiao"。这只影响后续导入位置,旧题目不会自动搬迁;C++ 模板位置由 lanqiao.template 独立设置。无需修改扩展代码或 CPH 配置。
- 准备 VSCode 1.95+、浏览器中的 Tampermonkey,以及自己的蓝桥账号。需要本地测试时安装 Competitive Programming Helper(CPH),配置自己的 C++ 编译器。
- 在 VSCode 扩展市场搜索
epsilon-dev.lanqiao-oj-bridge 安装,或从 Releases 下载 .vsix,在 VSCode 扩展视图右上角 … →「从 VSIX 安装」,重载窗口。Marketplace 扩展标识为 epsilon-dev.lanqiao-oj-bridge。此前通过 VSIX 安装的 epsilon-local.lanqiao-oj-bridge 属于不同扩展;迁移时先卸载旧版,再安装 Marketplace 版本并重新配对,原有题目目录和代码可继续使用。
- 安装并启用 Tampermonkey,点击上方脚本安装链接,检查后安装。若浏览器只显示源码,可下载 Release 中的
lanqiao-bridge.user.js,在 Tampermonkey 管理面板 →「实用工具」→「从文件导入」。按浏览器和 Tampermonkey 的提示允许用户脚本运行。
- VSCode 设置搜索
Lanqiao,指定自己的题目目录 lanqiao.root 和已存在的 C++ 模板 lanqiao.template。默认分别是 ~/Code/Learning/Algorithm/Lanqiao、~/Code/template.cpp;其他用户可选择自己的路径。模板不存在时先创建或指定模板。
- 命令面板运行
Lanqiao: 配对。正常登录并打开 蓝桥题目页,点击右侧“代码拱桥”浮球展开,再点「配对」,输入 VSCode 显示的一次性配对码(5 分钟有效)。配对码不是蓝桥登录凭据,每位用户在自己电脑上独立配对。
- 网页点击「导入 VSCode」。生成题面、模板代码和样例,打开题面与 C++ 文件。在线操作时保持对应题目的已配对网页打开。
使用打包扩展不需要额外安装 Node.js;Node.js 只用于开发。CPH、编译器、Tampermonkey 和浏览器需要自行安装。
日常使用
题面标题下有「发送至 CPH」「本地测试」「OJ 在线调试」「提交」「查看评测」「打开原题」。点击标题旁的 C / C++ 标记切换语言。已有题目可打开 main.cpp、main.c 或 README.md,运行 Lanqiao: 打开题面(含操作按钮)。预览按钮绑定当前题目,切换编辑器后不会操作其他题。
“问题描述 / 题目描述”标题最右侧的小复制图标复制当前已保存的完整 README(含来源、公式和图片链接),不会附带解题代码;没有描述标题时显示在题面顶部右侧。样例与代码块的复制图标位于框内,鼠标悬停或键盘聚焦时显示,触摸设备直接显示。
网页控件默认贴在右侧并收起;点击图标展开,拖动可调整高度并停靠左 / 右边缘,自动记住位置。脚本管理器菜单「重置浮球位置」可恢复默认位置。编辑器标题栏的同款拱桥图标打开蓝桥题目操作。
从 0.5.0 起,脚本也支持 /courses/<课程号>/learning/?id=<单元号> 中的 OJ 编程练习。只识别当前已经加载的官方 OJ 编辑器,使用网站映射出的真实题号;普通视频、文档单元不显示导入入口。课程访问权限仍由蓝桥决定,不自动切换或批量读取其他单元。课程页新增支持需要同时更新浏览器脚本。
| 操作 |
实际含义 |
| 本地测试 |
现有 CPH + 用户原有编译配置,不是官方评测 |
| 在线调试 → 样例 / 自定义输入文件 |
把输入原样交给官方调试,展示输出与真实执行错误,不显示 AC/WA、答案错误等判题结论 |
| 在线调试 → 调试 |
不传自定义输入,使用官方原生调试方式,保留平台原始状态 |
| 提交当前代码 |
保存代码,显示题号、文件、语言及 SHA-256;用户确认后通过已登录网页正式提交 |
| 填入网页代码(手动提交) |
只填入官方编辑器,由用户点击网站原生按钮 |
| 查看最近提交 |
查看本扩展记录;全量官方历史请在蓝桥题目页查看 |
官方语言选择器当前标签为 C++(g++17) 和 C(gcc8.3.0);界面按官方原始标签展示,不额外推断环境版本。本地继续使用自己的 CPH 编译配置,可设置 GNU C++11。只展示平台实际返回的数据,不把 HTTP 成功、样例通过或标准输出当成正式 AC。
官方调试和评测结果统一显示在「查看 → 输出 → Lanqiao OJ」,题面不再重复显示结果卡片。「查看评测」可调出本题最近记录。结果区分排队、请求发送、平台接受、评测中和完成。取得实际记录后才展示官方记录 ID。超时、断网或宿主重载导致无法确认时标记结果未知,不自动补发提交;请先检查官方记录。
文件与配置
~/Code/Learning/Algorithm/Lanqiao/<题号>-<标题>/
README.md 题面 Markdown(含原题链接)
main.cpp C++ 解法,从原有 C++ 模板创建
main.c C 解法,选择 C 时创建
samples/ 输入输出样例
.lanqiao.json 题目元数据
companion.json Competitive Companion 兼容数据
.cph/ CPH 关联记录(取决于现有 CPH 保存设置)
重复导入按题号复用,保留已有代码、笔记与测试。CPH 非空记录不覆盖;空记录补样例前确认并备份。图片保留在线链接,未做离线镜像。
| VSCode 设置 |
默认值 |
用途 |
lanqiao.root |
~/Code/Learning/Algorithm/Lanqiao |
新题保存目录 |
lanqiao.template |
~/Code/template.cpp |
已存在的 C++ 模板文件 |
lanqiao.cTemplate |
空 |
C 模板,留空使用内置基础模板 |
lanqiao.defaultLanguage |
cpp |
新导入题目的默认语言,可选 cpp / c |
lanqiao.port |
27124 |
仅监听 127.0.0.1,不能占用 CPH 的 27121 |
修改端口后重载 VSCode,并在 Tampermonkey 菜单「设置本地端口」填写相同值。每个端口仅由一个 VSCode 窗口持有,请在该窗口使用命令。
安全与数据
Bridge 只绑定 127.0.0.1,采用随机令牌、VSCode SecretStorage、Tampermonkey 隔离存储、一次性配对、Host / Origin 检查及大小限制。没有网页可调用的任意本地文件读取或命令执行接口。
无遥测或本项目云端代码收集。代码仅在你启动在线调试、确认提交或选择填入网页时交给蓝桥官方页面。浏览器负责正常登录,不绕过登录、验证码、Cloudflare 或访问限制。正式提交每次需要确认,任务不会自动补发。
不修改 CPH、洛谷、Code Runner 全局配置。运行 Lanqiao: 撤销浏览器授权 可撤销当前扩展的所有配对。脚本 namespace 保留早期标识以兼容旧安装和配对,实际地址以 homepage / support 链接为准。
使用提示与项目定位
- 一题一导入:用户自行登录并打开题目页面,主动导入当前题目。本工具不提供批量抓取或批量导出题库功能,不建立、收集或上传云端题库。
- 本地保存:导入的题面、样例和解法保存在用户自己的电脑中,便于个人学习与复习。
- 尊重内容权利:请勿利用本工具公开二次分发受版权保护的题面、批量导出题库、收费售题或规避平台限制。使用时须遵守平台规则及适用的赛事规则。
- 免费学习工具:本项目当前不收费、不售卖题库,不提供付费评测服务;在线调试和正式评测由蓝桥官方平台提供。
- 开源许可:软件源代码继续采用 MIT 许可证;以上说明描述项目定位与使用提醒,不改变现有软件许可证,也不代表取得题目内容的再分发授权。
已验证与限制
开发环境为 macOS Apple Silicon、VSCode、Chrome + Tampermonkey、GCC 15 与本地 GNU C++11。CPH 磁盘适配核验版本为 2026.10.1792170155。Windows / Linux 和其他 CPH 版本尚未实机验证。
0.5.0 已在当前 Mac 的 Chrome + ScriptCat 中实测课程 OJ 2942 的题号映射、两次导入复用、CPH 样例关联、官方样例输入调试输出及编译错误回传;拖动左右贴边、收起及刷新后位置恢复也已实测。原有 7 个题目文件逐个校验未变,新建按语言区分的 Companion 元数据。独立验收文件没有用于正式提交。0.5.0 自动化测试 82 项通过;课程正式提交本轮未实机验证,未创建真实正式提交记录。
已实测题面 / 公式 / 样例导入、模板创建、CPH 本地运行、重复导入保护、官方自定义输入调试、编译错误回传、确认后真实提交与 AC 报告、网页刷新和扩展宿主重载恢复。v0.4.0 已实测 C / C++ 的 CPH 样例、C 官方在线调试输出、C 编译错误回传及 C 正式提交;自动化测试共 54 项。题型覆盖以 3008《特殊的三角形》、178《全球变暖》与 21711《最大编号【算法赛】》的实际使用为基础,不保证未来所有题面布局。
整台 VSCode 完全退出重启、真实账号到期 / 限流 / 断网、故意向官方触发 TLE / RE / MLE 未逐项实机验收;相关状态解析、超时及错误处理有自动化覆盖。官方网页内部结构变动可能需要更新适配,无法确认时明确报错并保留手动操作入口。
常见问题
- 无网页按钮:确认是题库练习页或课程中的 OJ 编程练习,脚本已更新为 0.5.0 并允许运行,等待题面与编辑器加载。检查左右边缘的拱桥图标;可从脚本菜单重置位置。
- 无法连接:重载 VSCode,检查「Lanqiao OJ」输出、端口及重复服务窗口。
- 未提取到样例:查看原题,在 CPH 手动补充;Issues 提供题号与脱敏错误,不上传登录凭据。
- CPH 为空:打开对应
main.cpp 并聚焦 CPH,检查编译器和保存目录;可用 samples/ 与 companion.json 人工恢复。
- 登录失效 / 验证码:在官方网页正常登录或手动验证,再点重新检测。
- 超时 / 状态异常:先查看官方记录避免重复提交;自测结果不能直接等同正式评测。
- 图片缺失:图片使用在线链接,需网络访问。
- 脚本升级未生效:Tampermonkey 检查更新后刷新题目页;Marketplace 版本通过 VSCode 扩展市场更新,VSIX 安装版本可通过新 VSIX 手动升级。
开发
Node.js 20+,已用 Node.js 24 验证:
npm ci
npm run check
npm test
npm run package
构建输出 dist/,安装包输出 artifacts/。userscript/lanqiao-bridge.user.js 为发布脚本镜像,发布更新时使用构建产物同步。测试覆盖题面 / Markdown / 样例解析、CPH 转换、授权协议、任务状态、结果与预览,会临时启动回环 HTTP 服务。
网页适配集中在 src/browser/platform.ts,题面解析在 src/problem.ts,样例识别在 src/sample-collector.ts,CPH 转换在 src/storage.ts,本地授权与通信在 src/bridge.ts。
参考:Competitive Companion 格式、蓝桥解析器、VSCode Webview 文档。第三方许可见 THIRD_PARTY_NOTICES.md。
卸载
先运行「撤销浏览器授权」(可选),卸载 VSCode 扩展并在 Tampermonkey 删除脚本。题目代码由用户保留或自行删除;不自动清理,不卸载其他插件。无 LaunchAgent 或独立常驻进程。
MIT License,见 LICENSE。