用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/WeZZard/jlens-qwen36 --skill verify命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | verify |
| description | Build/launch/drive recipe for verifying jlens-qwen36 UI and server changes end-to-end in a real headless browser. |
JLENS_PATH=data/lens/qwen36_27b_neuronpedia_n1000.npz \
uv run python -m uvicorn jlens_qwen.serve:app --host 127.0.0.1 --port 8765
Poll GET /api/lens until it answers and confirm "n_prompts": 1000
before interpreting any result (project rule; startup takes ~30–60 s).
The repo has no Node dependency tree. The Playwright MCP server needs
Google Chrome, which is not installed — use a Node driver with a cached
Chromium instead, following scripts/e2e_intervention_playwright.cjs:
# Find a usable playwright install (npx cache works):
for d in ~/.npm/_npx/*/node_modules; do [ -d "$d/playwright" ] && echo "$d"; done
# Pick one whose chromium exists:
NODE_PATH=<dir> node -e "console.log(require('playwright').chromium.executablePath())"
NODE_PATH=<dir> node your-driver.cjs # chromium.launch({ headless: true })
Driver facts that hold for web/index.html (single classic script):
state, _wish, $, addIntervention,
rerunWithInterventions, setActiveVariant, …) are reachable from
page.evaluate even when declared with let/const.#chat-editor, type, press Enter; then poll
!state.streaming && state.messages.at(-1).tokens.length > 0.
One short turn takes ~60–90 s (27B model + per-token lens readouts).#chat-log .tok, e.g. hasText 'Paris'), fill #wish-input, press
Enter. Search requests go to /api/intervention_search_adaptive;
candidate replays advance roughly one per second.addIntervention({... mode: 'swap', token: ' Paris', target: ' Beijing', alpha: 1, layers: [52], scope: { type: 'at', pos: firstGeneratedPos() - 1 } ...}) then
rerunWithInterventions(). The server resolves token text to ids./api/intervention_search_adaptive POST.Baseline/Run A + config
label), switching variants with setActiveVariant(false|true).state.appliedInterventions is frozen per run; only a fresh clean
run, clearState(), or switching to a clean variant empties it.