--- name: glm-coding-helper-install description: Install, configure, verify, explain, and repair the 智谱 GLM Coding Plan 抢购助手 / GLM Coding Rush helper project for non-technical Windows users. Use when a user wants an AI agent to set up the local CPU/GPU OCR backend, Tampermonkey/油猴 userscript, GLM Coding Plan 抢购 flow, one-click purchase helper, Chinese captcha OCR auto-click service, GreasyFork/GitHub release copy, or troubleshoot backend/browser/OCR/payment-popup issues in this repository. --- # GLM Coding Plan Rush Helper Install And Repair Skill This skill helps an AI agent install and repair the 智谱 GLM Coding Plan 抢购助手 / GLM Coding Rush project end to end. The target user may not know Python, PowerShell, Git, virtual environments, browser extension permissions, or OCR backends. Act as the user's local setup engineer. The project is a Tampermonkey userscript plus a local OCR backend: - Frontend userscript: `glm-coding-helper.user.js` at the repository root. - Compatibility userscript copy: `scripts/userscripts/glm-coding-helper.user.js`. - Backend startup wrapper: `scripts/start_backend.ps1`. - First-time Windows bootstrap: `scripts/bootstrap_windows.ps1`. - Backend setup wrapper: `scripts/setup_backend.ps1`. - Backend config reference: `docs/backend_config.md`. - Detector weights: `models/weights/yolo-captcha-detector.pt`. - Default backend URL: `http://127.0.0.1:8888`. Never expose or print the full built-in invite code. If checking for sensitive data, say that the full code was or was not found, but do not repeat it. ## Operating Principles 1. Prefer the repository scripts over manual package installation. 2. Keep the user on Windows PowerShell unless they clearly use another OS. 3. Verify every major step with a command or browser check. 4. If a command fails, read the error and repair the specific cause instead of restarting blindly. 5. Do not upload captcha screenshots to third-party OCR services. This project is designed for local OCR. 6. Keep root `glm-coding-helper.user.js` and `scripts/userscripts/glm-coding-helper.user.js` synchronized if either one is edited. 7. Default to safe payment behavior: invalid payment/rate-limit popups must not auto-close unless the user manually enables that setting. ## Quick Install Workflow Use this workflow for a normal new Windows user. ### 1. Locate The Repository Ask the user where the repository was downloaded or cloned. If you are already inside the repo, verify these files exist: ```powershell Test-Path .\glm-coding-helper.user.js Test-Path .\scripts\bootstrap_windows.ps1 Test-Path .\scripts\start_backend.ps1 Test-Path .\models\weights\yolo-captcha-detector.pt ``` If any required file is missing, tell the user to download the full repository, not just the userscript file. ### 2. Install The Backend If the user may not have Python installed, run: ```powershell powershell -ExecutionPolicy Bypass -File scripts\bootstrap_windows.ps1 -Target auto ``` If Python is already installed, run: ```powershell powershell -ExecutionPolicy Bypass -File scripts\setup_backend.ps1 -Target auto ``` Useful explicit modes: ```powershell powershell -ExecutionPolicy Bypass -File scripts\setup_backend.ps1 -Target cpu powershell -ExecutionPolicy Bypass -File scripts\setup_backend.ps1 -Target gpu powershell -ExecutionPolicy Bypass -File scripts\setup_backend.ps1 -Target both ``` Expected environments: - `.venv_paddle` for CPU inference. - `.venv_paddle_gpu` for GPU inference. ### 3. Start The Backend Start with auto mode: ```powershell powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode auto ``` Force GPU: ```powershell powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode gpu ``` Force CPU: ```powershell powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode cpu ``` Force CPU with a worker count: ```powershell powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode cpu -CpuWorkers 3 ``` If the user wants a visible backend window, use the normal wrapper above. If they want terminal-only operation, use the Python headless entry described in `docs/backend_config.md`. ### 4. Verify The Backend Run: ```powershell Invoke-RestMethod http://127.0.0.1:8888/health ``` The response should include fields like: - `backend.ocr_mode` - `backend.cpu_workers` - `backend.gpu_available` - selected YOLO/OCR settings If `/health` fails, the userscript cannot solve captchas. Fix the backend first. ### 5. Install The Userscript Tell the user to install Tampermonkey, then: 1. Open root `glm-coding-helper.user.js`. 2. Copy all content. 3. Create a new Tampermonkey script. 4. Paste and save. 5. Open the GLM Coding Plan page. For Chrome extension permissions, guide the user to: 1. Open `chrome://extensions/`. 2. Enable Developer mode in the top right. 3. Open Tampermonkey details. 4. Enable "Allow user scripts". 5. Enable "Allow in Incognito" if they use incognito windows. 6. Enable "Allow access to file URLs" if they install from a local file. ### 6. Confirm Browser To Backend Connectivity The userscript sends captcha requests to: ```text http://127.0.0.1:8888 ``` If the browser shows network errors, confirm: - backend is running, - `/health` works, - local firewall did not block Python, - the userscript is enabled on the GLM page, - the page URL matches the script includes for `bigmodel.cn`. ## Recommended User Operation During GLM Rush Use the user's own procedure when explaining the workflow: 1. Install Tampermonkey, configure the userscript, and enable required Chrome extension permissions. 2. Install the backend from GitHub manually or ask an AI assistant to follow this skill. 3. Open the rush page and test that everything works before the real rush window. 4. Enter the rush page before 9:30 every day. It may be hard to open later. 5. Prepare mobile Alipay payment in advance. A payment page with an amount can still fail if payment is too late. 6. Open several windows. Near 10:00, solve/click captchas but do not confirm too early; start confirming at 10:00. 7. If the first wave fails, keep one window and let local OCR identify and click. 8. The script defaults to not closing payment pages automatically. 9. If a payment page has no amount, it usually means that attempt did not get stock; close it and continue. Shortcut keys: - `Esc`: close a busy/payment popup. - `Enter` or `Space`: click the captcha confirm button. ## How It Works The userscript modifies and automates the GLM Coding Plan page: 1. It makes package buttons clickable earlier when the page marks them disabled. 2. It scans package/month choices in the configured priority order. 3. It opens or watches purchase/captcha dialogs. 4. When a Chinese click captcha appears, it sends the prompt text to the local backend. 5. The backend captures/crops the captcha from the local browser window. 6. YOLO detects the candidate character boxes. 7. OCR recognizes the detected boxes using CPU or GPU PaddleOCR workers. 8. Prompt-constrained matching maps the requested characters to detected boxes. 9. The backend returns click positions. 10. The userscript clicks the requested boxes and can press confirm with a shortcut. GPU mode is usually faster. CPU mode uses a parallel worker pool and should still be usable on ordinary machines. The backend auto mode tries GPU first when available, then falls back to CPU. Payment safety: - Real payment pages should stay open. - Invalid payment or rate-limit popups are not auto-closed by default. - Auto-close behavior exists only after the user manually enables it in the config panel. ## Backend Configuration Prefer command-line flags first: ```powershell powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode auto powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode gpu powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode cpu -CpuWorkers 3 ``` Use environment variables only for advanced repair: ```powershell $env:CNCAPTCHA_PORT='8888' $env:CNCAPTCHA_OCR_MODE='cpu' $env:CNCAPTCHA_CPU_OCR_WORKERS='3' $env:CNCAPTCHA_YOLO_DEVICE='cpu' $env:CNCAPTCHA_SKIP_GPU_DETECT='1' ``` Common detector override: ```powershell $env:CNCAPTCHA_DETECTOR_PATH='D:\path\to\yolo-captcha-detector.pt' ``` ## QA And Troubleshooting ### Q: The user has no Python. Run the bootstrap script: ```powershell powershell -ExecutionPolicy Bypass -File scripts\bootstrap_windows.ps1 -Target auto ``` It should find Python 3.12, install through `winget` if possible, or download the official Python installer. If corporate policy blocks installers, ask the user to install Python 3.12 manually, then run `scripts\setup_backend.ps1`. ### Q: PowerShell says script execution is disabled. Use the per-command bypass form: ```powershell powershell -ExecutionPolicy Bypass -File scripts\setup_backend.ps1 -Target auto ``` Do not ask the user to permanently weaken system policy unless necessary. ### Q: `winget` is missing. The bootstrap script should fall back to official Python download. If that fails, send the user to install Python 3.12 from python.org, then run: ```powershell powershell -ExecutionPolicy Bypass -File scripts\setup_backend.ps1 -Target auto ``` ### Q: GPU mode fails. Check: ```powershell nvidia-smi powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode auto ``` If `nvidia-smi` is missing or Paddle cannot see CUDA, use CPU: ```powershell powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode cpu ``` Explain that users do not need GPU for correctness; GPU mainly reduces latency. ### Q: CPU is slow. Try worker tuning: ```powershell powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode cpu -CpuWorkers 2 powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode cpu -CpuWorkers 3 ``` More workers are not always faster. On low-core machines, too many workers can slow down OCR. ### Q: `/health` does not respond. Check whether the server process is running and whether port 8888 is occupied: ```powershell netstat -ano | findstr :8888 ``` If occupied by an old process, close the old backend window or kill the specific PID only after confirming it belongs to the old backend. Alternatively use another port: ```powershell $env:CNCAPTCHA_PORT='8890' powershell -ExecutionPolicy Bypass -File scripts\start_backend.ps1 -Mode auto ``` If changing the port, the userscript must also be updated to call that port. ### Q: Tampermonkey script does not run. Check: - script is enabled, - the page is under `bigmodel.cn`, - Chrome Developer mode is enabled, - Tampermonkey permissions are enabled, - the script was saved after paste, - browser console has no syntax error. If the user installed from GitHub, tell them to use root `glm-coding-helper.user.js`, not only a partial snippet. ### Q: Captcha appears but no automatic click happens. Check in order: 1. Backend `/health` works. 2. Backend window logs receive a `/captcha` request. 3. Browser console does not show connection refused. 4. The GLM page is visible and not minimized. 5. Windows scaling or multi-monitor layout did not move the screenshot area unexpectedly. 6. The captcha prompt text contains Chinese characters. 7. Detector weight exists at `models/weights/yolo-captcha-detector.pt`. If logs say the popup was not found or was closed, ask the user to keep the captcha popup visible and retry. ### Q: OCR returns wrong positions. Collect one failing screenshot if the user agrees. Do not send it to third-party OCR. Inspect: - detected boxes count, - OCR text for each box, - whether prompt characters are visually similar, - whether the browser zoom/scaling is unusual, - whether the captcha is partially covered. Then retry CPU/GPU mode. If one mode is consistently better, force that mode. ### Q: Error says OCR result cannot map prompt to boxes. This means detection or recognition produced boxes/text that cannot match the prompt. Fix by: 1. ensuring the popup is fully visible, 2. retrying once, 3. switching OCR mode, 4. reducing visual obstruction, 5. checking whether the prompt text was read correctly. ### Q: Payment page still auto-closes. Verify the userscript version is current and contains the safe default migration: - root `glm-coding-helper.user.js` should be installed, - `AUTO_CLOSE_INVALID` should default to `false`, - config panel should not have auto-close enabled, - Tampermonkey may still run an older saved script, so reinstall from root file if needed. The intended default is: payment/rate-limit popups stay open unless the user manually enables auto-close. ### Q: User sees a payment page with no amount. Explain that a no-amount payment page usually means the attempt did not really get stock. The user can close it and continue. If they want speed, `Esc` closes the popup. ### Q: User sees a payment page with an amount. Tell the user not to close it automatically. They should confirm the amount and pay manually. ### Q: GitHub users cannot find the script. Point them to the repository root: ```text glm-coding-helper.user.js ``` The nested `scripts/userscripts/` copy is for development and old-path compatibility. ### Q: Root and nested userscripts differ. Synchronize them before release. On Windows: ```powershell Copy-Item -LiteralPath .\glm-coding-helper.user.js -Destination .\scripts\userscripts\glm-coding-helper.user.js -Force Get-FileHash .\glm-coding-helper.user.js Get-FileHash .\scripts\userscripts\glm-coding-helper.user.js ``` The hashes should match. ## Release Checks For Agents Before publishing changes: ```powershell node --check .\glm-coding-helper.user.js node --check .\scripts\userscripts\glm-coding-helper.user.js Get-FileHash .\glm-coding-helper.user.js Get-FileHash .\scripts\userscripts\glm-coding-helper.user.js git diff --check git status --short ``` Search for sensitive data without printing secrets: ```powershell rg -n "api[_-]?key|password|secret" . ``` Also search for any known private invite code if the maintainer provides it out of band, but do not print that code in logs, public docs, or final answers. ## Escalation Guidance Ask the user before: - installing Python or dependencies, - changing firewall/security settings, - killing a process, - changing browser extension permissions on their behalf, - pushing to GitHub or publishing to GreasyFork. Proceed without asking when: - reading repository files, - checking file existence, - running `/health`, - running syntax checks, - updating documentation in the local working tree after the user asked for it. ## Final Report Template When finished, tell the user: - what was installed or changed, - which commands verified it, - the backend URL, - whether CPU or GPU is active, - how to install/update the userscript, - any remaining manual step, especially browser permissions or payment confirmation.