OceanBase Contest Helper (seekdb / PowerContext)
Help an agent complete OceanBase 6th Developer Competition ecosystem tasks around oceanbase/seekdb and oceanbase/powercontext, plus publishing an Agent Skill to ModelScope Skills Center.
Official train portal: https://open.oceanbase.com/train
When to use
- User is working on OceanBase contest train questions (Fork / deploy UUID / PR / CSV / ModelScope Skill).
- Need to deploy seekdb and read
run/telemetry.json→content.id. - Need to fix a GitHub issue labeled
2026-competitionand open a PR tooceanbase/seekdb. - Need to implement a PowerContext CSV row-level collector and pass local tests.
- Need to package / publish a Skill zip for ModelScope Skills Center (contest share task).
When not to use
- General OceanBase DBA work unrelated to the contest.
- Non-contest ModelScope Hub model/dataset upload (use ms-hub instead).
- Booking / shopping / unrelated product workflows.
Prerequisites
| Need | Notes |
|------|--------|
| GitHub account | Fork + PR; registration URL on open.oceanbase.com must point at the public fork |
| Docker (for UUID task) | Official image oceanbase/seekdb |
| ModelScope account | Only for the Skill upload/share train item |
| Contest login | open.oceanbase.com (often SMS); Yuque tutorials may be separate login |
Always keep the contest verification line (team / official string from the train page) in README or PR body when the question requires it. Never invent a UUID or PR URL.
Task map (typical scoring)
| Track | Typical ask | Deliverable for 提测 |
|-------|-------------|----------------------|
| seekdb Fork | Public fork of seekdb | Registration GitHub URL = fork |
| seekdb deploy UUID | Run seekdb, read telemetry | UUID string (content.id) |
| seekdb PR | Fix 2026-competition issue | PR URL to oceanbase/seekdb |
| PowerContext Fork | Public fork | Registration URL |
| PowerContext CSV | Row-level collector | Passing tests + fork commit |
| ModelScope Skill | Upload & share Skill | Skill page URL or @owner/name |
Exact questionIds and point values change by year; read the live train page before submitting.
1. seekdb: public fork + registration
- Fork https://github.com/oceanbase/seekdb to the contestant's GitHub (must be public).
- On open.oceanbase.com train → seekdb intro / fork question → set 报名仓 / registration address to
https://github.com/<user>/seekdb. - If the fork was private scaffolding first, convert or replace with a real public fork before PR/UUID scoring.
- Put any required verification line into the fork README only when the question asks for it; do not leave contest-only README junk on branches destined for upstream PRs.
2. seekdb: deploy and extract telemetry UUID
Goal: obtain content.id from run/telemetry.json after a healthy start.
Docker (recommended)
docker pull oceanbase/seekdb:latest
docker run -d --name seekdb \
-p 2881:2881 -p 2886:2886 \
-e MEMORY_LIMIT=2G -e CPU_COUNT=2 \
-e LOG_DISK_SIZE=2G -e DATAFILE_SIZE=2G \
oceanbase/seekdb:latest
Wait until SQL accepts connections:
mysql -h127.0.0.1 -P2881 -uroot -e "SELECT 1; SELECT VERSION();"
Locate telemetry
In current images the data dir inside the container is often /var/lib/seekdb (not /var/lib/oceanbase). Copy out:
docker cp seekdb:/var/lib/seekdb/run/telemetry.json ./telemetry.json
# or: docker exec seekdb cat /var/lib/seekdb/run/telemetry.json
Parse UUID (keep hyphens):
python3 -c "import json; print(json.load(open('telemetry.json'))['content']['id'])"
Submit that UUID on the train UUID question. Platform sync can lag (~30–60 min); if 提测 says data not found, keep the same container running and retry later with the same UUID.
Leave TELEMETRY_ENABLED at default (on) unless docs say otherwise.
3. seekdb: fix a 2026-competition issue + upstream PR
- List open issues on
oceanbase/seekdbwith label2026-competition(prefergood first issue/ clear repro). - Reproduce with the SQL or steps in the issue.
- Implement a minimal fix on a clean branch based on upstream
master(cherry-pick only the fix; do not carry fork-only README verification commits). - Open PR against
oceanbase/seekdb(not only the personal fork). - PR body should include: issue link, root cause, fix summary, test/repro steps, and any contest verification line if required by the train question.
- Registration source must be the public fork; 提测 field is the upstream PR URL.
Guardrails:
- Do not force-push to upstream.
- Do not bundle unrelated contest scaffolding into the upstream PR.
- One logical bugfix per PR unless the issue asks otherwise.
4. PowerContext: CSV row-level collector (outline)
- Fork https://github.com/oceanbase/powercontext (public).
- Read contest Yuque / question brief for the CSV task (
test-csvor equivalent). - Implement the collector so each CSV row becomes the expected record shape; follow existing package layout and tests in the repo.
- Run the project’s CSV tests locally until green; push to the registered fork.
- Submit per train instructions (repo URL / commit as required).
If the brief names a specific interface or golden file, treat those as source of truth over this outline.
5. ModelScope Skills Center: package and publish
Contest packaging rules (align with ModelScope Skills Center):
- Build a zip whose root contains
SKILL.md(exactly oneSKILL.md). - Frontmatter must include at least
nameanddescription(CLI publish also expectsversion). name: lowercase letters, digits, hyphens; match the skill folder name.- Zip ≤ 5 MB. Content must be a real Agent Skill (when-to-use + steps), not an empty stub.
Package locally
cd /path/to/ob-contest-helper # directory that contains SKILL.md
zip -r ../ob-contest-helper.zip SKILL.md references examples
# Verify SKILL.md is at archive root:
unzip -l ../ob-contest-helper.zip | head
Publish (UI)
- Open https://www.modelscope.cn/skills (Skills Center).
- Sign in → create / upload Skill → choose the zip.
- Fill display name, description, category (e.g.
developer-tools), license, tags. - Create → copy the Skill page URL or id
@<owner>/<skill_name>. - Paste that URL/id into the OceanBase train 提测 field for the ModelScope Skill question.
Publish (OpenAPI, optional)
# 1) Upload zip → data.id
curl -X POST "$MODELSCOPE_ENDPOINT/openapi/v1/files/upload" \
-H "Authorization: Bearer $MODELSCOPE_API_KEY" \
-F "file=@ob-contest-helper.zip" -F "type=skill"
# 2) Create skill (skill_file = data.id from step 1)
curl -X POST "$MODELSCOPE_ENDPOINT/openapi/v1/skills" \
-H "Authorization: Bearer $MODELSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"owner": "<your-username>",
"skill_name": "ob-contest-helper",
"display_name": "OceanBase Contest Helper",
"description": "seekdb / PowerContext contest workflows",
"skill_file": "<upload-data-id>",
"category": "developer-tools",
"license": "MIT License",
"tags": ["oceanbase", "seekdb", "contest"]
}'
Default endpoint: https://modelscope.cn. Token: https://modelscope.cn/my/myaccesstoken
6. Agent workflow checklist
Copy and tick while working:
[ ] Read live train question text (points, fields, Yuque links)
[ ] Registration GitHub URL = public fork used for work
[ ] seekdb running; UUID from telemetry.json content.id
[ ] Upstream PR (not fork-only) for competition issue fix
[ ] PowerContext tests green before 提测
[ ] Skill zip has SKILL.md at root; published; URL saved for 提测
[ ] Do not submit invented UUIDs / PR links / Skill ids
References in this package
references/contest-checklist.md— condensed checklist and common failure modesreferences/telemetry-uuid.md— UUID extraction detailexamples/sample-pr-body.md— PR body template for competition fixes
Related links
- seekdb: https://github.com/oceanbase/seekdb
- PowerContext: https://github.com/oceanbase/powercontext
- Train: https://open.oceanbase.com/train
- Skills Center: https://www.modelscope.cn/skills
- Agent Skills spec: https://agentskills.io/specification
微信扫一扫