前言¶
給 OJ 或算法題出題時,測試數據往往比寫題面更耗時:要覆蓋邊界、控制數據規模,還要用標程跑出對應的 .out。手工寫生成腳本、再批量跑標程,步驟重複且容易漏點。下面介紹 SkillHub 上的社區 Skill「OJ測試數據生成」,它把「讀題面 → 分析題型 → 生成數據 → 跑標程」收進 Agent 工作流,默認一次產出 10 組 .in/.out,並基於 cyaron 編寫生成邏輯。
這是什麼¶
「OJ測試數據生成」是座標爲 @user_b89a4d0a/oj-data-generator 的 Agent Skill,當前版本 1.3.1,來源爲 community,發佈者爲 user_b89a4d0a,在 SkillHub 中歸類爲 dev-programming。頁面標註 requires_api_key=false,安裝後無需額外 API Key。
一句話定位:根據題目描述自動分析題型,生成測試輸入、用標程得到輸出,並以文件夾形式交付測試點;僅當用戶明確要求時纔打包爲 ZIP。
官方入口:
- SkillHub 展示頁:https://www.skillhub.cn/skills/user_b89a4d0a/oj-data-generator
- API 座標頁:https://api.skillhub.cn/user_b89a4d0a/oj-data-generator
核心功能¶
以下能力均來自 Skill 官方簡介與 SkillHub 頁面說明,未經覈實的細節不展開。
- 題型分析:根據用戶提供的題目描述,推斷適合的測試數據形態與規模策略。
- 固定規模產出:默認生成 10 組 測試數據,每組包含
.in與.out文件。 - cyaron 生成腳本:數據生成邏輯基於 cyaron 庫編寫,便於控制隨機圖、序列、範圍等常見 OJ 數據模式。
- 標程驅動答案:在生成
.in後運行用戶提供的標程(標準程序),產出對應.out,避免手算或複製粘貼答案。 - 輸出形態:默認將測試點寫入文件夾;只有用戶明確要求打包時,才輸出 ZIP。
Skill 會在用戶提到造數據、出測試點、生成 OJ 測試數據、編寫 cyaron 腳本、做對拍數據,或使用「測試數據 / 測試點 / test data / data generation / cyaron / 造數據 / 出題」等表述時被選用。
安裝與啓用¶
安裝方式遵循 SkillHub 官方文檔 SkillHub 安裝與優先源配置。頁面亦寫明:請根據該文檔安裝 @user_b89a4d0a/oj-data-generator。
1、檢查或安裝 skillhub CLI¶
先確認本機是否已有 CLI:
command -v skillhub && skillhub --version
若未安裝,可按官方推薦執行完整安裝(CLI 與默認 Skill):
curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash
僅需 CLI 時:
curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash -s -- --cli-only
2、安裝本 Skill 到當前 Agent 的 skills 目錄¶
官方要求:安裝時必須用 --dir 指向當前 Agent 正在使用的 skills 目錄,否則默認會裝到 ./skills/,Agent 可能無法加載。
skillhub install @user_b89a4d0a/oj-data-generator --dir <skills 目錄>
常用客戶端的 skills 路徑(摘自 SkillHub 安裝文檔):
| 客戶端 | skills 目錄 |
|---|---|
| Cursor | ~/.cursor/skills/ |
| Claude Code | ~/.claude/skills/ |
| Codex | ~/.codex/skills/ 或項目下的 .agents/skills/ |
| Windsurf | ~/.codeium/windsurf/skills/ 或 .windsurf/skills/ |
安裝完成後,按你所用客戶端的慣例重啓或刷新 Agent,使新 Skill 生效。Codex CLI、Claude Code 與 Cursor 的差異僅在於 --dir 目標路徑不同,安裝命令本身一致。
典型用法¶
公開資料未附帶獨立命令行子工具;使用方式是在已啓用該 Skill 的 Agent 對話中完成出題流程。可按下述順序組織輸入,便於 Agent 按 Skill 約定執行。
- 提供完整題面:輸入輸出格式、數據範圍、特殊約束(如保證有解、圖是否連通等)。
- 提供標程:可編譯運行的標準解法源碼,以及編譯/運行方式(如
g++ -O2 -std=c++17)。 - 說明數據需求(可選):若需要少於或多於默認 10 組、或需要某種強度分佈,在對話中寫清;未說明時按 Skill 默認 10 組處理。
- 確認交付形式:默認會得到一個包含多組
.in/.out的目錄;需要 ZIP 時再明確說「打包成 zip」。
經過上面的步驟,Agent 應生成基於 cyaron 的數據腳本、寫出測試輸入,並調用標程生成 .out。本地環境需能安裝並運行 cyaron(Python)以及標程所需的編譯器或運行時,否則生成或跑標程會失敗;具體依賴版本以 Agent 生成的腳本爲準,本文未收錄 Skill 包內未公開的固定版本號。
適用場景與注意¶
適合誰
- 算法競賽、校內 OJ、對拍驗證階段的出題者與助教。
- 已熟悉題面與標程,希望把「寫 generator + 批量出點」交給 Agent 的開發者。
使用上需注意
- 標程必須正確且與題面一致;Skill 按標程輸出寫
.out,標程有誤會導致全部測試點答案錯誤。 - 默認 10 組 數據;更大規模或特殊數據形態需在對話中額外說明。
- 不要默認要 ZIP;只有明確打包需求時才應要求 ZIP,以免多一步無意義的歸檔。
- SkillHub 統計(截至頁面展示):評分 100000,下載 708 次;社區 Skill,維護節奏以發佈者爲準。
結尾¶
「OJ測試數據生成」把 cyaron 數據生成、標程跑點和 .in/.out 目錄交付串成一條可重複的 Agent 流程,適合從題面快速落到可用的 OJ 測試點。安裝與座標以 SkillHub 爲準:
https://www.skillhub.cn/skills/user_b89a4d0a/oj-data-generator