Arknights Operator Gacha
by @hg-hg
Generate an Arknights operator agent based on gacha probabilities. Use when user wants to create a random Arknights character agent with authentic lore and p...
clawhub install arknights-operator-gachaš About This Skill
name: arknights-operator-gacha description: Generate an Arknights operator agent based on gacha probabilities. Use when user wants to create a random Arknights character agent with authentic lore and personality.
Arknights Operator Gacha
Generate a random Arknights operator agent with authentic lore-based personality.
Architecture
This skill uses a worker script + LLM generation architecture:
1. Worker script (gacha_worker.py): Executes all deterministic tasks (roll, fetch, create, download)
2. LLM (this agent): Generates creative content (SOUL.md) and spawns operator
Language Detection
CRITICAL: Detect user language from their gacha command:
Store detected language and use it for ALL subsequent steps (SOUL.md writing, spawn task, etc.).
Workflow
Step 1: Execute Worker Script
Run the deterministic worker:
result = exec(
"python3 ~/.openclaw/workspace/skills/arknights-operator-gacha/scripts/gacha_worker.py",
timeout=120
)
Worker performs:
1. Roll star rating (1-100)
2. Fetch operator list from https://arknights.fandom.com/wiki/Operator/{N}-star
- Parses the mrfz-wtable table to extract operator info
- Returns a dict: {operator_name: {"avatar_url": "...", "detail_url": "..."}}
3. Randomly select operator (with avatar and detail URLs)
4. Fetch Chinese name from Fandom page (data-source="cnname")
5. Check for duplicates (auto re-roll if exists)
6. Create agent via openclaw agents add
7. Create template IDENTITY.md (bilingual)
8. Download avatar (using URL from step 2, with domain whitelist and validation)
9. Git commit initial files
10. Output JSON to stdout
Worker output format:
{
"success": true,
"stars": 6,
"operator": {
"en_name": "Lin",
"cn_name": "ę",
"avatar_url": "https://static.wikia.nocookie.net/.../Lin_icon.png",
"en_detail_url": "https://arknights.fandom.com/wiki/Lin",
"cn_detail_url": "https://prts.wiki/w/%E6%9E%97"
},
"agent_name": "lin",
"workspace": "~/.openclaw/workspace-lin",
"duplicate": false,
"dialogue_url": "https://arknights.fandom.com/wiki/Lin/Dialogue"
}
Note: The worker provides both English and Chinese URLs:
en_detail_url: Fandom wiki page (English lore)cn_detail_url: PRTS wiki page (Chinese lore)dialogue_url: Fandom Dialogue page (voice lines, always English)avatar_url: Operator icon from FandomStep 2: Handle Result
If duplicate: true:
If success: false:
If success: true:
Step 3: Generate SOUL.md
Fetch lore from URLs provided by worker:
# Fetch English lore from Fandom (multiple subpages)
en_file = web_fetch(f"{result['operator']['en_detail_url']}/File") # Basic profile, stats, files
en_story = web_fetch(f"{result['operator']['en_detail_url']}/Story") # Story appearances, plot involvement
en_trivia = web_fetch(f"{result['operator']['en_detail_url']}/Trivia") # Trivia, relationships, misc infoFetch Chinese lore from PRTS
zh_lore = web_fetch(result["operator"]["cn_detail_url"])Fetch voice lines from Dialogue page
dialogue = web_fetch(result["operator"]["dialogue_url"])
Parse lore sections from both sources:
Generate comprehensive SOUL.md:
CRITICAL - Write SOUL.md in detected language
Structure: 1. Core Identity - Background, motivation, personality (blend EN+CN sources) 2. Voice and Mannerisms - Speech patterns, catchphrases (from Dialogue) 3. Relationships - Connections to other characters 4. Themes - Internal conflicts, philosophy 5. How to Embody - Acting guidance 6. Reference: Original Voice Lines - Key quotes (EN with CN)
Write to: [workspace]/SOUL.md
Step 4: Update IDENTITY.md
Fill in the [TO_BE_FILLED_BY_LLM] fields with actual Class and Faction from fetched lore.
Step 5: Final Git Commit
cd ~/.openclaw/workspace-{agent_name}
git add -A
git commit -m "Add SOUL.md: {en_name} ({cn_name}) ({stars}ā
)"
Step 6: Roleplay Scene - Operator Arrival
Spawn the operator in a roleplay scenario consistent with Arknights game lore. In this universe, operators join Rhodes Island through standard recruitment channels and are unaware of the meta "gacha" system.
For Chinese users:
sessions_spawn(
task="ä½ ē°åØęÆē½å¾·å²ēäøåå¹²åļ¼ååå®ęå
„čęē»ļ¼åę„åå士ę„å°ćēØä½ ęčŖē¶ēå£å»ęęå¼ļ¼å±ē¤ŗä½ ēę§ę ¼ē¹ē¹ćåčä½ ēčÆé³č®°å½äøē'å¹²åę„å°'ę'äŗ¤č°'éØåēčÆę°ć\n\nā ļø éč¦ļ¼ē“ę„č¾åŗč§č²å°čÆå³åÆļ¼äøč¦å
å«ä»»ä½å
åčæ°ćč§£éę§ęåęåŗęÆęčæ°ćåŖčÆ“ä½ ä½äøŗå¹²ååŗčÆ„čÆ“ēčÆć",
agentId="{operator-name}",
mode="run",
timeoutSeconds=60
)
For English users:
sessions_spawn(
task="You are an operator of Rhodes Island who has just completed onboarding, now reporting to the Doctor. Introduce yourself naturally, showcasing your personality. Reference your 'Introduction' or 'Talk' voice lines for tone.\n\nā ļø IMPORTANT: Output ONLY the character's dialogue. Do NOT include meta-commentary, explanations, or scene descriptions. Just speak as the operator would.",
agentId="{operator-name}",
mode="run",
timeoutSeconds=60
)
Step 7: Present Summary
Report to user:
agentId="{agent_name}"Worker Script Security
The worker script (gacha_worker.py) implements:
.., /, \ in namesstatic.wikia.nocookie.net and media.prts.wikishell=FalseScripts
| Script | Purpose |
|--------|---------|
| gacha_worker.py | Deterministic tasks (roll, fetch, create, download, commit) |
Data Flow
User Request
ā
Exec Worker Script
ā
Worker Output JSON (bilingual URLs)
ā
LLM Fetches EN+CN Lore ā Generates SOUL.md
ā
Spawn Operator (ę„å°)
ā
User sees operator greeting