SkillAgentSearch skills...

Hydro

Hydro - Next generation high performance online-judge platform - 新一代高效强大的信息学在线测评系统 (a.k.a. vj5)

Install / Use

/learn @hydro-dev/Hydro

README

Hydro

GitHub Workflow Status hydrooj npm node-current GitHub contributors GitHub commit activity

Hydro 是一个高效信息学在线测评系统。易安装,跨平台,多功能,可扩展,有题库。

对于不熟悉 Linux 或是懒得运维的老师,我们也提供了免费开通即用的在线版本,
详情前往 https://hydro.ac 查看 操作指引

将安装命令粘贴到控制台一键安装,安装后注册首个用户自动获得超级管理员权限。
兼容主流 Linux 发行版,推荐使用 Debian 12,支持 arm64 设备(树莓派等)

LANG=zh . <(curl https://hydro.ac/setup.sh)

中文文档 / English

相关文档若说明的不够详细,请提交 Pull Request 或联系开发组说明。
bug 和功能建议请在 Issues 提出。

系统特点

模块化设计,插件系统,功能热插拔

Hydro 设计了一套模块化的插件系统,可以方便地扩展系统功能。
使用插件系统,可以在修改功能后,仍然保证系统的可升级性。
Hydro 的所有历史版本均可平滑升级到最新版本。

插件使用和开发指南,请前往文档 插件开发 章节。

跨平台兼容,数据一键备份/导入

Hydro 支持所有主流的 Linux 发行版,兼容 x86_64 和 arm64 架构设备,且均可一键安装。
Hydro 可在 树莓派 或是 Apple M1/M2 上正常运行。

使用 hydrooj backup 即可备份系统全部数据,使用 hydrooj restore 文件名 即可导入备份数据。 整个过程无需手工干预。

单系统多空间,不同班级/院校,分开管理

Hydro 提供了单系统多空间支持,可以方便地为不同的班级/年级/院校等创建独立的空间。
不同空间内除用户外数据默认隔离,且可分配独立管理员,互不干扰。
题目可跨域复制,在系统内仅占用一份空间。

粒度精细的权限系统,灵活调节

Hydro 的权限可以按比赛/作业分配给对应的用户,也可以将用户分组(班级),按组分配权限。 有关权限节点,可以查看 介绍 下方截图。

规模化支持,上千用户无压力,伸缩组秒级自动扩展

Hydro 系统本身是无状态的,这意味着你可以随意增删服务节点,而不会影响系统的正常运行。 评测队列会自动在当前在线的所有评测机间均衡分配。接入弹性伸缩组后,可根据服务器负载情况自动增删评测机。 不像其他系统,Hydro 会管理不同服务器间的测试数据缓存,按需拉取,做到评测机上线即用,无需手动同步数据。

全题型支持,跟随时代潮流

Hydro 支持所有题型。无论是传统题型,Special Judge,还是文件输入输出,提交答案题,IO 交互,函数交互,乃至选择填空题等, Hydro 都有相应的支持。安装相关运行环境后,Hydro 甚至可以做到:

  • 调用小海龟画图,与标准图片比对;
  • 调用 GPU 进行机器学习模型的评测;

更多的样例可前往 样例区 查看并下载。

丰富的题库

Hydro 支持导入常见格式的题库文件,包括 Hydro 通用的 zip 格式,HUSTOJ 导出的 FPS (xml) 格式题目,QDUOJ 导出的压缩包。
可以在 Hydro 题库 下载免费题库使用。
Hydro 同时支持 VJudge,这意味着你可以直接在系统内导入其他平台的题目,修改题面后编入自己的作业或比赛,快速搭建自己的题库体系。
当前支持的平台有:

  • 一本通编程启蒙:官方提供一本通编程启蒙题库,免费使用,参照压缩包内导入说明。
  • 深入浅出程序设计竞赛:官方提供洛谷《深入浅出程序设计竞赛(基础篇)》配套题库,免费使用,参照压缩包内导入说明。
  • UOJ:国内知名 OJ,国家集训队常用;
  • Codeforces:国外大型竞赛平台,大量高质量题目;
  • 洛谷:使用此功能需要向洛谷购买授权;
  • HDUOJ:杭州电子科技大学在线评测系统,其中包含多校训练题;
  • CSGOJ:广东省赛与湖南省赛赛题评测平台;
  • SPOJ:国内连接很不稳定,不推荐;
  • POJ:较为古董,服务器稳定性差;
  • YACS:上海市计算机学会竞赛平台,单账号每日提交有限制;
  • HUSTOJ:理论上支持所有 HUSTOJ 驱动的系统,但由于各个系统中 UI 有差异,通常需要手动适配。

多赛制支持

Hydro 支持多种赛制,包括 ACM/ICPC 赛制(支持封榜),OI 赛制,IOI 赛制,乐多赛制,以及作业功能。
在 IOI 和 OI 赛制下,支持订正题目功能,学生在赛后可以在题库中提交对应题目,其分数会在榜单旁边显示。
在 IOI 和 OI 赛制下,支持灵活时间功能,学生可以在设定的时间范围内,自选 X 小时参赛。

轻松添加其他编程语言

Hydro 的语言设置并非硬编码于系统中,而是使用了配置文件。 只要能写出对应语言的编译命令和运行命令,Hydro 都可以进行判题。

联系我们

Email:i@undefined.moe Telegram @undefinedmoe
Hydro 用户群:1085853538

注:加入用户群请先阅读《提问的智慧》
同时群内可能存在部分令您感到不适或感到冒犯的内容。若对此有顾虑请勿加群

<details> <summary><h2>更新日志(点击展开)</h2></summary>

Hydro 5.0.0-beta.18 / UI 4.58.0-beta.19

  • ui: problemconfig: 修复子任务测试点拖拽
  • ui: problemconfig: 修复子任务依赖设置
  • ui: 调整默认编译空间设置
  • core: 修复重载设置导致设置项复制的问题
  • core: 修复题解被赞数量显示
  • ui: 修复题解区长数学公式显示

Hydro 5.0.0-beta.17 / UI 4.58.0-beta.18

  • ui: 自动折叠过长的题解内容
  • core: 添加比赛功能白名单
  • core: 支持多文件 patch
  • core: buildContent: 支持 background 字段
  • core: 排名:排除不在本域内的用户
  • core: 其他 bug 修复

Hydro 5.0.0-beta.16 / UI 4.58.0-beta.17

  • core: 修复繁体中文 i18n 自动检测
  • scoreboard-xcpcio: 修复子域中自动重定向
  • core: 比赛导航优化
  • core&ui: 繁体中文翻译完善
  • core&ui: 支持搜索训练计划
  • core: 修复 judge 特定情况下的竞态
  • onsite-toolkit: 添加比赛模式
  • ui: 支持自动填写测试数据输入到在线 IDE
  • ui: 默认禁用提交列表页面统计数据
  • judge: 支持同时运行多组自测数据
  • ui: 细节优化

Hydro 5.0.0-beta.15 / UI 4.58.0-beta.16

  • core: 修复题目创建页面多语言切换
  • ui: 修复比赛题目列表显示
  • scoreboard-xcpcio: 内置外榜推送功能
  • onsite-toolkit: 优先使用座位号作为 cdp id
  • scoreboard-xcpcio: 支持定时刷新
  • onsite-toolkit: 支持从 URL 加载头像
  • onsite-toolkit: 支持展平的队伍照片目录
  • core: 复制题目时同时复制难度
  • core&ui: 训练页面题目缺失不影响正常显示
  • migrate: add jnoj support

Hydro 5.0.0-beta.13 / UI 4.58.0-beta.14

  • ui: 比赛页面添加打印快捷入口
  • ui: 比赛题目列表显示时空限制和提交按钮
  • core: 检查题解投票权限
  • ui: 修复题目配置页文件操作
  • ui: 移除旧的 window.Hydro.util 和 window.Hydro.component 对象
  • onsite-toolkit: 添加导入工具
  • onsite-toolkit: 添加 submit 和 printfile 支持
  • onsite-toolkit: 支持限制通信功能
  • core: backup: 速度优化
  • ui: 优化超长公式显示
  • core&ui: 添加允许所有人邀请的选项
  • ui: 优化题目配置页暗色模式
  • scoreboard-xcpcio: 支持注册为默认榜单

Hydro 5.0.0-beta.12 / UI 4.58.0-beta.12

  • framework: 修复 SSE 模式参数识别
  • ui: 记忆比赛计分板筛选状态
  • ui: 修复封榜后提交记录动态更新
  • scoreboard-xcpcio: 实验性榜单缓存支持
  • ui: 添加比赛一血提示
  • core: 添加 hydrooj diag 快速诊断工具
  • ui: 禁用链接自动折叠,复制链接自动转义括号
  • ui: 优化资源缓存
  • core&ui: 支持题目排序

Breaking API Changes

  • 升级到 React 19
  • 升级到 MongoDB Driver 7
  • 移除 blueprint.js, react-query 内置,优化资源大小
  • 使用 @mongodb-js/saslprep 替代 saslprep

Hydro 5.0.0-beta.11 / UI 4.58.0-beta.10

  • core&ui: 优化新设置页面
  • core: 修复乐多榜单尝试数为负
  • ui: 修复内置 qface 表情包链接
  • core: 修复编辑题号冲突提示
  • ui: 修复题目配置页语言选择
  • vjudge: 功能优化
  • judge: 稳定性修复
  • ui: 修复 css 动态加载
  • core: 支持比赛材料上传
  • core: 性能和内存占用优化
  • core: 重命名 PERM_VIEW_DISPLAYNAME 为 PERM_VIEW_USER_PRIVATE_INFO

Hydro 5.0.0-beta.9 / UI 4.58.0-beta.9

  • core: 修复 OI/IOI 赛制一血计算
  • judge: 修复 detail 设置
  • core: problems 接口按请求顺序返回
  • core: 添加解绑 OAuth 账户支持
  • framework: 支持 API namespace
  • judge: 优化比较器性能
  • core: 检查作业延期规则合法性
  • core: 踢出用户时自动标记权限为 Guest
  • ui: 删除域增加确认弹框
  • core: 允许重测同一记录覆盖题目状态

Hydro 5.0.0-beta.8 / UI 4.58.0-beta.8

  • core&ui: 添加比赛打印功能
  • core: 允许使用管理员权限直接邀请用户加入域
  • vjudge: 支持拉取远端题解
  • core: settings: 禁止 displayName 使用特殊 unicode 字符

Hydro 5.0.0-beta.6 / UI 4.58.0-beta.6

  • core: 修复网页端执行脚本返回值
  • core: patch: 支持从本地文件读取
  • core: 支持复制/导入题目时设置隐藏
  • prom-client: 添加连接数指标
  • core: 支持基于 restic 增量备份
  • ui: 添加 alert/prompt/confirm 函数
  • core&ui: 支持复制/导入题目时设置为隐藏
  • core: 添加比赛语言限制

Hydro 5.0.0-beta.3 / UI 4.58.0-beta.3

New Features

  • judge: 添加 checker 编译缓存
  • ui: 优化题目详情页面 OGP 信息
  • core&ui: 升级 simplewebauthn
  • register: 添加 tsdown 支持
  • ui&judge: 支持指定 checker 语言
  • core: 基于相对时间计算一血而非绝对时间
  • ui&judge: 添加栈空间回显
  • install: 在树莓派中自动启用 cgroup.memory
  • install: 添加 shm 空间大小警告
  • core: 升级到 cordis@4
  • framework: 支持同时启用多个 renderer
  • core: 分离 HMR 和 Watcher 组件
  • core: i18n: 添加 interface 选项
  • judge: 添加 kattis checker 支持
  • core: Settings: 支持使用 Schemastery
  • ui: 更新系统设置页面样式
  • core: 支持存储并显示提交记录重测历史
  • core: 新的加域逻辑
  • ui: UserSelect.Multi: 支持批量粘贴用户名
  • core: oauth: 支持绑定/解绑三方平台账户 (#971)
  • core: 优化 icpc 题目包导入 (#966)
  • judge: 弃用 diff (#965)
  • core: 支持设置加域时自动加入小组
  • core: 添加 --disable-worker 启动选项
  • ui: 支持使用自定义字体
  • framework&core: 重构 Subscription API
  • core: 添加 fixStorage 脚本
  • ui: 允许跨页选择题目,支持批量选择题目
  • judge: 重构 config.detail 设置
  • core: 自动清理多余的静态文件
  • ui: 优化比赛题目列表显示
  • core: 添加比赛补题模式

Bug Fixes

  • migrate: 修复 hustoj 自动运行
  • import-qduoj: 修复 spj=null
  • core: 修复文件复制
  • ui: 修复在线 IDE 右键菜单
  • ui: 修复未登录用户查看题目文件页
  • ui: 修复暗色模式表格边框 (#968)
  • ui: 修复题解回复编辑权限
  • ui: 修复高亮行号显示
  • core: 修复 User.serialize() 参数
  • ui: 修复更换邮箱功能
  • ui: 修复比赛侧栏
  • ui: 修复文档链接

Breaking API Changes

  • vjudge: 使用 vjudge.mount 表替代 domain.mount
  • judge: breaking: 不再支持在 checker 等的编译阶段读取选手代码
  • core: 强制要求使用 inject 声明插件依赖
  • core: 移除旧版本 bus 调用
  • core: 移除 global.Hydro.service
  • core: 移除 global.Hydro.ui.template
  • core: 移除 global.Hydro.lib
  • core: 移除 String.prototype.translate (使用 ctx.i18n.translate)
  • core: 升级至 Mongo Driver 6
  • core: 移除 registerResolver, registerValue, registerUnion (使用 ctx.api.resolver/...)
  • core: 移除 paginate, rank (使用 ctx.db.paginate, ctx.db.ranked)
  • core: 移除 setting.yaml
  • core: oauth: 改为使用 ctx.oauth.provide() 注册
  • framework: 移除 ready 与 dispose 事件 (使用 ctx.effect 代替)
  • core: 最低要求 node 22
  • core: 弃用 AdmZip
  • utils: 移除 String.random 与 Array.isDiff

Hydro 4.19.0 / UI 4.57.0

  • core&ui&judge: 添加通信题支持
  • core: 优化语言列表筛选
  • ui: builder: 支持 css 引入
  • ui: 优化客观题题目导航样式
  • ui: 在引用题目中添加显示来源按钮
  • core: problem.export: 将 pidFilter 参数标记为可选
  • onsite-toolkit: resolver: 区分打星队伍
  • judge: 文件上传出错时重试
  • framework: 文件自动回收
  • core: DomainEdit: 添加 boolean 设置项支持
  • ui: contest_boolean: 修复默认值
  • ui: 修复排名分页
  • core: RecordConnection: 支持 noTemplate 选项

Hydro 4.18.2 / UI 4.56.2

  • core: 修复提交答案题压缩包提交 (#917)
  • ui: 优化 domain_user 页面性能
  • core: 优化评测任务调度
  • ui: 下载文件失败时自动重试
  • core: Consumer: 从错误中自动恢复

Hydro 4.18.0 / UI 4.56.0

  • core&ui: ScoreboardView API
  • onsite-toolkit: Resolver
  • core: 优化 icpc 格式导入
  • core: 添加 limit.pretest 选项
  • core: 添加 task/daily 性能日志
  • framework: 默认移除 UiContext 和 UserContext

Hydro 4.17.4 / UI 4.55.3

  • core: 修复 markdown 模式下使用 HTML 导入时解析异常
  • core: 允许复制引用的题目
  • core&judge: 添加 trusted 选项
  • core: 修复导入用户 metadata 解析
  • core: 修改 pid 校验格式
  • ui: 禁用自动播放
  • core: 题目列表性能优化

Hydro 4.17.3 / UI 4.55.2

  • core: 限制显示名长度
  • core: 支持调整代码长度限制
  • core: 在作业中关闭在线 IDE 代码缓存
  • core: API: 检查 PERM_VIEW
  • judge: 添加 HYDRO_TIME_USAGE 和 HYDRO_MEMORY_USAGE 环境变量
  • core&ui: 支持 i18n 热重载
  • fps-import: 优化图片导入
  • ui: 支持圆角设置
  • core: 支持 StorageModel.copy 和 StorageModel.exists
  • core: 弃用 ProblemModel.list
  • core: 添加 user/import/parse 和 user/import/create 钩子

Hydro 4.16.0 / UI 4.54.3

  • core: 停用 handler, lib, script 组件类型
  • core: 升级到 ts5.6, cordis3.18
  • recaptcha: 移除
  • core: 大幅提升每日任务性能
  • core: (部分)支持 icpc package format
  • core: limitRate: 支持自定义 id
  • core: 弃用 array 格式题面
  • core: backup: 添加 --withAddons 选项 (测试)
  • core: session 性能优化
  • install: mongodb 默认监听 127.0.0.1
  • core&ui: 其他错误修复

UI 4.54.2

  • ui: 修复 markdown 预览
  • ui: 优化禁用内置登录时的登录框显示

UI 4.54.1

  • ui: 修复 view-transitions
  • onlyoffice: 支持处理 PDF 文件
  • ui: markdown 支持显示代码行号
  • ui: 支持扩展 richmedia 功能
  • ui: 支持嵌入优酷视频
  • ui: 移除部分页面组件多余的横向滚动条

Hydro 4.15.0 / UI 4.54.0

  • core: 修复题解投票数量计算
  • ui: 优化暗色模式 404 页图片
  • ui: 点击展开编译信息
  • ui: 修复比赛计分板关注用户
  • core: ProblemModel.import: 支持 delSource 选项
  • ui: 修复生成测试数据实时推

Related Skills

View on GitHub
GitHub Stars6.4k
CategoryDevelopment
Updated15h ago
Forks439

Languages

TypeScript

Security Score

100/100

Audited on Mar 31, 2026

No findings