Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>核桃 OJNew to Visual Studio Code? Get it now.
核桃 OJ

核桃 OJ

YaoOnion

|
4 installs
| (0) | Free
在 VSCode 里刷核桃OJ:浏览题目/题单/比赛,本地写代码,一键提交并查看评测结果。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

核桃 OJ for VS Code

在 VS Code 里刷核桃OJ:浏览题目 / 题单 / 比赛,用本地文件写代码,一键提交并直接看到评测结果与测试点明细。

这是一个第三方非官方扩展,与核桃编程官方无关。

功能

  • 题目:列表浏览、关键词搜索、难度与通过率展示,点击打开题面
  • 题单:题单列表,展开后按章节显示题目与参与进度;未参加的题单可直接在树里「开始练习」
  • 比赛:比赛列表(赛制 / 状态 / 剩余时间),展开查看比赛题目;未报名的比赛可直接报名,密码场次会提示输入;已报名但未开始的比赛可在树里「开始比赛」(会提示确认并开启计时)
  • 按链接添加:小组题 / 小组题单 / 带 gid 的小组赛都不在列表接口的返回里。用视图标题栏的 +(或命令面板的「添加题目 / 添加题单 / 添加比赛(粘贴链接)」)把链接粘进去,它们会固定在对应视图顶部的「已添加」分组里,和列表里的条目完全等价(展开、报名、提交、倒计时都能用),右键可移除,重启后仍在
    • 链接里带的 cid / tid / gid 会被一起记住——小组题目缺了这些参数打开就是「该题目不可见」
  • 比赛成绩:展开比赛(或查过一次榜单)后,比赛行与详情块会显示我的当前得分和排名;OI 赛制不显示
  • 比赛倒计时:状态栏常驻显示比赛剩余时间,最后 5 分钟转为警示配色,点击在浏览器打开该场比赛
    • 可选「跟随自动」(自动盯我参与的、最快结束的一场)、关闭,或在比赛节点右键「设为倒计时目标」指定某一场
    • 灵活时间制的比赛按后端的 remainTime 走个人计时(不是拿比赛窗口结束时间硬算);还没点「开始比赛」时显示的是比赛窗口剩余,并会在状态栏里标明
  • 客观题 / 选择题:非编程题也能在面板里作答提交——客观题按题面里的 {{ select(1) }}、{{ input(2) }} 占位符渲染成选项与填空,选择题直接列出选项;提交后逐题显示对错、正确答案与得分
  • 题目详情面板:Markdown 渲染题面(表格 / 引用 / 公式都补了样式),样例的输入输出自动并成左右两栏并标注「输入 #1 / 输出 #1」;时间限制、内存限制、输入输出方式、通过率做成卡片展示,文件 IO 题要求的读入/输出文件名单独高亮;默认开在右侧分屏,左边留给代码;内置提交与刷新按钮
  • 一键提交:读取当前文件内容提交,轮询评测结果,测试点表格原地回填(在题面面板里点提交时焦点不在代码上,会自动去分屏里找这道题的代码文件;分屏也找不到就让你选文件)
  • 本地代码管理:按题目自动生成代码文件,文件头写入 pid 标记,提交时自动识别题目
  • 提交记录:题面面板底部按时间倒序列出本题历史提交,最新一条默认展开;折叠时只显示状态(AC / WA / TLE / MLE…)、得分和时间,展开才拉该次的测试点明细
  • 自测运行:不提交也能跑代码——题面面板里有自测区,粘贴输入后一键运行,就地显示输出 / 报错 / 用时内存;也可以在代码文件里右键「运行自测」,从文件读取测试数据(手动输入上限 1MB)。自测不产生提交记录
  • 超大文件保护:待提交的代码超过 htoj.maxSubmitBytes(默认 100KB)时不会提交,而是提示改用自测验证

安装

在 VS Code 的扩展面板里搜「核桃 OJ」安装,或在本页右上角点 Install。

需要离线安装时:从 GitHub Release 下载 htoj-vscode-<版本>.vsix,然后 Ctrl+Shift+P → Extensions: Install from VSIX... 选中它,装完执行一次 Developer: Reload Window。

登录

所有入口(侧边栏「登录」按钮、状态栏左下角 →「打开菜单」→「登录」、命令面板 核桃OJ: 登录、以及未登录时的各处提示)都是同一个入口:先选登录方式,再走对应流程。

方式 说明
微信扫码 推荐。弹出二维码,用微信扫码并在手机上确认即可
手机号 + 密码 需要账号已设置密码
粘贴 Token 兜底方案,见下方步骤

三种方式各自也有独立命令(核桃OJ: 登录(微信扫码) / 登录(手机号 + 密码) / 登录(粘贴 Token)),默认不在命令面板里显示,需要的话可以自己绑快捷键。

token 过期自动续期

用手机号 + 密码登录时,手机号和密码会存进 VS Code 的 SecretStorage(Windows 走凭据管理器、macOS 走钥匙串、Linux 走 libsecret,不写入工作区文件)。此后每次请求前都会检查 token 自带的过期时间,剩余不足 5 分钟就自动重新登录换一个新 token,无需手动重登。

判断依据是 JWT 里的 exp,不看接口报错——核桃的 errCode: 401 也用于「每页最多显示20条记录」这类业务错误,拿它当登录失效会误判。

不想留密码:执行一次 核桃OJ: 退出登录 就会清除;改用微信扫码或粘贴 Token 登录也会清除(否则换了账号之后,续期会把登录态悄悄切回上一个账号)。续期失败时(比如密码改过了)会弹一次提示并清掉凭据,让你重新登录。

关于短信验证码登录

插件内无法实现短信验证码登录。 核桃OJ 的发送验证码接口强制校验腾讯验证码票据:

空 ticket        → {"errCode":1011,"errMsg":"参数异常"}
伪造 ticket      → {"errCode":2024,"errMsg":"票据校验异常"}

票据只能由腾讯 TCaptcha 组件在已备案域名的浏览器页面中生成,扩展的 Webview 域名无法通过校验。请改用微信扫码登录。

手动获取 Token

  1. 浏览器登录 https://htoj.com.cn
  2. 打开 DevTools → Application → Local Storage → https://htoj.com.cn
  3. 复制 KEY_USER_LOGIN_TOKEN 的值
  4. 在 VS Code 执行 核桃OJ: 登录(粘贴 Token),粘贴进去

Token 使用 VS Code 的 SecretStorage 保存,不会写入工作区文件。

使用

  1. 点击活动栏的核桃图标(若未登录,侧栏会显示登录引导)
  2. 在「题目」视图点开一道题,详情面板在编辑器区域打开
  3. 点「新建/打开代码文件」,插件会在工作区 htoj/ 下生成 P1000.cpp(或 .py)
  4. 写代码,然后 Ctrl+Alt+Enter 提交(或点面板上的「提交当前文件」)
  5. 评测完成后结果会显示在面板底部,包含每个测试点的状态 / 分数 / 用时 / 内存

生成的代码文件头部带标记,提交时会自动识别题目:

// @htoj pid=22169438826624 problemId=P1000
// 题目:P1000
// 链接:https://htoj.com.cn/cpp/oj/problem/detail?pid=22169438826624

命令

命令 说明
核桃OJ: 登录 统一入口:选择登录方式(微信扫码 / 手机号 + 密码 / 粘贴 Token)
核桃OJ: 退出登录 清除本地 token
核桃OJ: 切换题库语言(C++ / Python) 切换 cpp / python 分区
核桃OJ: 搜索题目 按编号或名称过滤题目列表
核桃OJ: 提交当前文件 提交当前编辑器内容
核桃OJ: 运行自测 自测运行(输入从文件 / 手动 / 空值里选),不产生提交记录
核桃OJ: 查看本题提交记录 打开题面面板并滚到提交记录列表
核桃OJ: 新建/打开本地代码文件 为当前题目创建代码文件
核桃OJ: 查看日志 打开输出面板中的调试日志
核桃OJ: 添加题目(粘贴链接) 按链接把题目钉进题目视图(小组题、比赛题这类翻不到的)
核桃OJ: 添加题单(粘贴链接) 按链接把题单钉进题单视图(小组题单)
核桃OJ: 添加比赛(粘贴链接) 按链接把比赛钉进比赛视图(带 gid 的小组赛)
核桃OJ: 选择倒计时比赛 指定状态栏倒计时盯哪一场比赛(或改为自动 / 关闭)
核桃OJ: 打开菜单 状态栏入口

快捷键:编辑器获得焦点且当前文件带 @htoj 标记时,Ctrl+Alt+Enter(macOS Cmd+Alt+Enter)提交。

设置

配置项 默认值 说明
htoj.zone cpp 题库语言分区,对应站点 /cpp/ 与 /py/
htoj.apiBase https://api.htoj.com.cn 接口网关地址
htoj.pageSize 20 每页加载条数。注意服务端对每页条数有上限,超出会被截断
htoj.defaultLanguage C++17 With O2 提交使用的语言名称
htoj.codeDirectory htoj 代码文件存放目录(相对工作区根目录)
htoj.maxSubmitBytes 102400 提交代码的大小上限(字节)。超过时改为提示运行自测,0 表示不限制
htoj.pollIntervalMs 2000 评测结果轮询间隔
htoj.pollTimeoutMs 60000 评测结果轮询超时

排查问题

扩展的调试日志会写入 输出 → 核桃OJ(核桃OJ: 查看日志)。日志包含环境信息、每次 HTTP 请求的完整 URL / 状态码 / errCode / 耗时,以及各视图的加载决策,遇到问题先看这里。

已知限制

  • 比赛报名若需要填写额外报名信息(registerState = 1),仍需到网页端完成
  • 短信验证码登录无法在插件内完成(原因见上),请改用微信扫码
  • 测试点明细接口 get-submission-case-list 被网关屏蔽(返回 403),结果表格数据取自 get-submission-detail
  • 评测结果只能轮询,服务端不提供推送

许可

GNU General Public License v3.0 or later。源码与开发说明见 GitHub 仓库。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft