3.0 KiB
3.0 KiB
Web QR login source labeling + Hermes optimize handoff (2026-05)
Trigger
BOSS corrected two UX/architecture problems in the local xianyu-hunter Web dashboard:
- The login modal must not present a direct
login.taobao.comscreenshot as if it were a pure “闲鱼二维码”. Goofish/闲鱼 may legitimately redirect to Taobao/Alibaba unified login, but the UI must say this honestly and start fromgoofish.comfirst. - “任务智能润色” should call Hermes Agent to generate the task configuration, not the project’s old internal
chatCompletion/ AI API config path.
Implemented local flow
Files in /Users/chick/.Hermes/workspace/research/xianyu-hunter:
lib/login.mjsgetLoginQr()openshttps://www.goofish.com/first.- If the official flow redirects to
login.taobao.com/havanaone, the API returnsqrSource: "淘宝/阿里统一登录"andqrUrl. - It prefers screenshotting a QR-like element (
canvas, QR images, qrcode containers, iframe descendants) over whole-body screenshots. - It logs the true source instead of calling the screenshot “闲鱼二维码” unconditionally.
public/index.html/public/app.js- Login panel now displays QR source and explains that Taobao/Alibaba unified login is an official redirected login chain.
- Help copy says it starts from 闲鱼官网 and no longer disguises Taobao screenshots as Xianyu QR.
lib/hermes_optimizer.mjs- Spawns Hermes CLI (
HERMES_BINdefault/Users/chick/.local/bin/hermes) with a JSON-only prompt. - Sanitizes returned task fields and falls back to local deterministic rules on failure.
- Spawns Hermes CLI (
server.mjs/api/tasks/optimizeimportsoptimizeTaskWithHermesandbuildLocalOptimizedTaskand no longer imports/callschatCompletion.
Verification commands
cd /Users/chick/.Hermes/workspace/research/xianyu-hunter
node --check server.mjs && node --check lib/login.mjs && node --check lib/hermes_optimizer.mjs && node --check public/app.js
# If old behavior still appears, kill the actual stale PID on port 3000; xianyu_ops stop may say no-recorded-server.
lsof -tiTCP:3000 -sTCP:LISTEN | xargs kill
node tools/xianyu_ops.mjs start --port 3000
curl -sS -X POST http://127.0.0.1:3000/api/tasks/optimize \
-H 'Content-Type: application/json' \
-d '{"product":"e3-1245v3 cpu","budget":"150左右","currentRequirements":"只看CPU本体,排除主板套装/散热器/坏件/维修/求购"}' | python3 -m json.tool
# Expect: source == "hermes" when Hermes CLI is available.
curl -sS -X POST http://127.0.0.1:3000/api/login/qr \
-H 'Content-Type: application/json' -d '{}' | python3 -m json.tool
# Expect: qrSource/qrUrl present. If already logged in, qrImage may be empty and logs say no scan is needed.
Pitfall
After code edits, port 3000 may still be served by a stale Node PID that was not recorded in .runtime. If /api/tasks/optimize still returns an old warning such as “AI 未配置:请先在控制台设置 API 密钥和模型”, kill the real listening PID with lsof -tiTCP:3000 -sTCP:LISTEN | xargs kill and restart.