video-subtitles
Generate timed subtitles from video or audio, translate their text, and burn subtitles into a new video. Use for captions, SRT, video subtitles, or adding translated subtitles in Sudowork desktop or WebUI cloud conversations.
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-13
- Stars
- ★ 10
- Forks
- 2
01 前言 Front Matter
- name
- minimax-401-diagnostic
- context
- A redacted or invalid MINIMAX_API_KEY in the launchd configuration is one known cause of 401 errors. A /login prompt may follow a provider 401, but verify the current response and configuration before concluding that credentials or model routing caused it. Do not swap models as a substitute for diagnosis.
- description
- Diagnose MiniMax 401 auth errors in AO workers. A redacted or invalid MINIMAX_API_KEY is one possible cause; verify current provider errors and configuration before identifying the cause or changing settings.
- when_to_use
- Use when: (1) an AO worker tmux pane shows 'Please run /login · API Error: 401' or 'login fail: carry the API secret key', (2) worker is stuck waiting for input despite having 'minimax' model config, (3) /ms surfaces another 401 incident. Do NOT use for general auth issues — this skill is specifically for the MiniMax proxy 401 + /login prompt stall pattern.
- allowed-tools
- [ "Bash", "Read", "Write", "Edit" ]
02 资源文件 4
- 参考文档_sudowork_meta.json293 B
- 脚本scripts/cloud_media.py4.9 KB
- 脚本scripts/requirements-cloud.txt33 B
- 脚本scripts/subtitles.mjs4.6 KB
03 SKILL.md 正文
MiniMax 401 Diagnostic
Common symptom pattern
This sequence is one possible failure pattern; verify each step from current provider output and worker configuration.
- AO worker starts → hits MiniMax proxy → proxy returns
401 Unauthorized - Claude Code intercepts 401 → shows
/loginprompt in tmux pane - Worker appears to hang ("waiting for input") but is actually blocked on
/login tmux capture-paneshows:Please run /login · API Error: 401orlogin fail: carry the API secret key in the 'Authorization' field- Config shows
agent: minimaxormodel: MiniMax-M2.7— this alone does not establish the cause
Quick Diagnosis
Step 0 — Plist template check (do this FIRST)
# Check for unsubstituted @VAR@ tokens in the installed plist
# If any exist, bash expands them to empty → 401 on every API call
python3 - "$HOME/Library/LaunchAgents/ai.agento.lifecycle-all.plist" <<'EOF'
import plistlib, re, sys
content = open(sys.argv[1]).read()
vars = re.findall(r'@[A-Z_][A-Z0-9_]*@', content)
if vars:
print(f'BAD: Unsubstituted tokens: {sorted(set(vars))}')
else:
print('OK: No unsubstituted @VAR@ tokens')
EOF
# If BAD: re-run setup to regenerate plist with real env vars:
bash scripts/setup-launchd.sh lifecycle
# Then verify:
bash scripts/test-launchd-env.sh
Unsubstituted @VAR@ tokens establish that the plist template was not rendered.
Use the repository's launchd setup workflow, then continue diagnosis if the
401 persists.
python3 - "$HOME/Library/LaunchAgents/ai.agento.lifecycle-all.plist" <<'EOF'
import plistlib, re, sys
with open(sys.argv[1], "rb") as source:
data = plistlib.load(source)
variables = re.findall(r"@[A-Z_][A-Z0-9_]*@", str(data))
key = data.get("EnvironmentVariables", {}).get("MINIMAX_API_KEY", "")
print("BAD: unsubstituted plist template tokens" if variables else "OK: no template tokens")
if key == "__OPENCLAW_REDACTED__":
print("BAD: MINIMAX_API_KEY is the redacted sentinel")
elif key:
print("OK: MINIMAX_API_KEY is configured; value not displayed")
else:
print("BAD: MINIMAX_API_KEY is missing")
EOF
Do not print the plist or retrieve the keychain item's value. For safe credential handling, follow cloud-ops-credential-guard and the repository's launchd setup workflow.
Full Diagnostic Steps
Step 1: Capture the worker's tmux pane
# Find the tmux session for the stuck worker
tmux list-sessions | grep <worker-name>
# Capture the stuck state
tmux capture-pane -pt <session>:0.0 -S -100
Look for: Please run /login, API Error: 401, login fail, MINIMAX_API_KEY
Step 2: Check the plist's MINIMAX_API_KEY without displaying it
python3 - "$HOME/Library/LaunchAgents/ai.agento.lifecycle-all.plist" <<'EOF'
import plistlib, sys
with open(sys.argv[1], "rb") as source:
data = plistlib.load(source)
key = data.get("EnvironmentVariables", {}).get("MINIMAX_API_KEY", "")
if key == "__OPENCLAW_REDACTED__":
print("BAD: redacted sentinel")
elif key:
print("OK: configured; value not displayed")
else:
print("BAD: missing")
EOF
Step 3: Check keychain for the real key
# Check presence without leaking credential to terminal
security find-generic-password -s MINIMAX_API_KEY >/dev/null 2>&1 && echo "Keychain: MINIMAX_API_KEY present" || echo "Keychain: MINIMAX_API_KEY missing"
This check reports presence only. Never retrieve or print the keychain value.
Step 4: Fix — use the repository's launchd setup workflow
# Use the repository's launchd setup to repair the service configuration
bash scripts/setup-launchd.sh lifecycle
Do not copy a credential into a plist or shell variable manually. Follow the repository's launchd setup workflow and the credential-handling rules in cloud-ops-credential-guard.
Step 5: Reload the launchd service
launchctl bootout gui/$(id -u)/ai.agento.lifecycle-all
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.agento.lifecycle-all.plist
launchctl kickstart -k gui/$(id -u)/ai.agento.lifecycle-all
Step 6: Verify workers recover
sleep 5
pgrep -f "lifecycle-worker" | wc -l # Should show 12+ workers
tmux list-sessions | grep ao- # Should show active sessions, not stuck on /login
Verify Before Changing the Model
You might see model: MiniMax-M2.7 in the config and think "just switch to Claude Opus." A model change does not establish or repair the cause of an authentication error. First:
- Verify that the current provider response is a 401 and identify which route returned it.
- Confirm the active worker configuration and credential-presence status without displaying credential values.
- Change model routing only when the current configuration and provider evidence show it is the cause.
Anti-Patterns
- WRONG:
ao spawn --agent codexto "fix" the 401 — masks the symptom, wrong model for the task - WRONG:
export MINIMAX_API_KEY=...in a running shell — doesn't fix the launchd service's env - WRONG: Changing
modelin agent-orchestrator.yaml without evidence that routing is the cause - WRONG: Killing and respawning the worker without fixing the plist — it will hit the same 401 immediately
Recurring Incident History
| Date | Worker | Manifestation | Root Cause |
|---|---|---|---|
| 2026-04-15 | PRs #454, #453, #452, #450, #444 | 5 PRs stuck with 401 | __OPENCLAW_REDACTED__ in plist |
| 2026-05-01 | ao-4449 (PR #511) | /login + 401, stuck at "Brewed for 3m 13s" |
__OPENCLAW_REDACTED__ in plist |
Files to Check
~/Library/LaunchAgents/ai.agento.lifecycle-all.plist— MINIMAX_API_KEY valuescripts/setup-launchd.sh— how MINIMAX_API_KEY is substituted into the plist~/.hermes_prod/config.yaml— MiniMax credential source
Claim Class
This skill covers a recurring credential-related failure pattern. Verify the current error and active configuration before applying its remediation.
04 同仓库更多 Skills
skill-creator
创建或更新 Sudowork 自定义技能,同时保留核心 skill creation / skill-design 最佳实践。用于用户要求创建新技能、优化已有技能、打包导入 Sudowork,或让技能展示在我的技能自定义技能中。
shareone
Host HTML/Markdown pages and share PDF, Word, or PowerPoint docs as ShareOne short links. Use when publishing pages/docs, adding passwords/watermarks, comments, downloads, or updates.
image-generation
Generate new images or edit existing images using AI. Use this skill when the user wants to create, generate, draw, design, or produce an image from a text description, OR when they want to modify, edit, alter, or transform an existing image (e.g. 'generate a picture of...', 'create an image', 'draw me a...', 'edit this image', 'change the background', 'modify the above picture', '生成图片', '画一张', '修改图片', '编辑上面的图').
image-analysis
Analyze, describe, or answer questions about image content using vision AI. Use this skill when the user asks anything about an image — what it shows, what's in it, reading text/diagrams, identifying objects, or any question referencing a previous image (e.g. 'what is in this image', 'read the text in this screenshot', 'explain this diagram', 'tell me about the image above', '识别图片', '分析图片内容').
auto-login
Log in to a website automatically using credentials saved in the local key store. Use when the user wants unattended/repeat login to a site (no re-scanning QR, no re-typing passwords), e.g. '帮我自动登录这个网站', 'set up auto-login for X', '记住这个网站的登录'. The plaintext password is NEVER seen by you — the user fills it in 秘钥管理 and sudowork fills the form itself.
sudowork-skill-installer
🔧 PRIMARY skill installer for Sudowork. Use this skill for ALL skill installation requests. **CRITICAL: This is the ONLY skill installer you should use.** **DO NOT use clawhub for installation** - clawhub is for ClawHub.com publishing ONLY. Triggers: "帮我安装skill", "install a skill", "安装技能", "推荐技能", "need a skill", "find a skill", "下载技能", "网文大纲", "skill安装". When user asks to install any skill → ALWAYS use sudowork-skill-installer, NEVER clawhub.