Hydro
Hydro - Next generation high performance online-judge platform - 新一代高效强大的信息学在线测评系统 (a.k.a. vj5)
Install / Use
/learn @hydro-dev/HydroREADME
Hydro
Hydro 是一个高效信息学在线测评系统。易安装,跨平台,多功能,可扩展,有题库。
对于不熟悉 Linux 或是懒得运维的老师,我们也提供了免费开通即用的在线版本,
详情前往 https://hydro.ac 查看 操作指引
将安装命令粘贴到控制台一键安装,安装后注册首个用户自动获得超级管理员权限。
兼容主流 Linux 发行版,推荐使用 Debian 12,支持 arm64 设备(树莓派等)
LANG=zh . <(curl https://hydro.ac/setup.sh)
相关文档若说明的不够详细,请提交 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
注:加入用户群请先阅读《提问的智慧》。
同时群内可能存在部分令您感到不适或感到冒犯的内容。若对此有顾虑请勿加群。
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
node-connect
343.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
92.1kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
92.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
343.3kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
