Auto-claude-code-research-in-sleep Documentation

ARIS ⚔️ (Auto-Research-In-Sleep) — Lightweight Markdown-only skills for autonomous ML research: cross-model review loops, idea discovery, and experiment...

RAW Doc

Technical Documentation: wanshuiyin/Auto-claude-code-research-in-sleep

ℹ️ Provenance: Multi-Tier Ingestion · CodeWiki Reference

Overview (`README.md`)

Auto-claude-code-research-in-sleep (ARIS ⚔️🌙)

· · · · · · · · 💬 Join Community ·

🌱 ARIS is a methodology, not a platform. What matters is the research workflow — take it wherever you go.

💡 *Use ARIS as a skill-based workflow in Claude Code / Codex CLI / Cursor / Trae / Antigravity / GitHub Copilot CLI / OpenClaw / DeepSeek Harness — enjoy any way you like!*The executor drives, an independent model (Codex MCP by default) reviews. Alternative model combinations, including ModelScope-hosted models, need no Claude or OpenAI API.

📦 Those are the skills installed directly. Want it in one command? ARIS also ships as a standalone CLI and as plugins: · · ·

❗ codex-cli 0.154.0 removed codex mcp-server — the entry point every ARIS reviewer call used. No impact on ARIS: the codex MCP server is now ARIS's own bridge over codex exec (mcp-servers/codex-exec/), same tools, same results, all 82 skills unchanged, ultra and per-thread resume intact. One re-registration is all it takes — already installed? → Quick Start step 2b · new install → step 2 · what changed.

🧩 The ARIS family — same method, other jobs. One line each; the details live in their own repos.

— EasyAIOffer: 34 bilingual ML / LLM interview cheat sheets on one page — derivations, from-scratch PyTorch, 25 questions each. 希望大家秋招轻松一点 🌱

· — two sides of one disease. HERO: a ~550-token block for CLAUDE.md / AGENTS.md against the four shapes agents over-defend in (Hashing, Edge cases, Rubrics, Overbuild), bounding what the agent proposes, never what it looks for. Anti-Autoresearch: 61 integrity signals into a deterministic, reviewer-ready report — fabrication forensics, not an AI-text detector.

— ARIS goes multimodal: a rough story in, a movie told in still frames out, every scene checked by another model; the same loop draws clean method diagrams (/method-figure).

— a tiny always-on-top macOS widget that lights up 🔴 when a session waits for your approval; cd aris-monitor && ./run.sh. Many windows? Claude Fleet by @tianyilt is the full dashboard.

🔥 ARIS-Code CLI — 独立安装版 · English | ⬇️ Download · — v0.4.28: ARIS_REASONING_EFFORT works on the Anthropic channel, tool calls through {}-placeholder relays fixed, OS proxy honoured. v0.4.27: launching and quitting the REPL leaves no empty session file. v0.4.26: the fable alias and /model now point at Fable 5.1 (default stays Opus 5). v0.4.25: the Codex reviewer works again on codex-cli ≥ 0.154 (built-in codex exec bridge, nothing to register), /since takes you back to your last input, /resume lists sessions by index, Windows multi-line paste fixed (pending confirmation), 83 bundled skills on GPT-6-Astra.

ARIS-Code — screenshot, what's in v0.4.28, per-release details, older versions

📰 ARIS-Code v0.4.28 (2026-09) — latest: ARIS_REASONING_EFFORT works on the Anthropic channel (#446), tool calls through relays that send a {} placeholder no longer fail (#444), and the OS proxy on Windows / macOS is used without exporting HTTPS_PROXY (#401). v0.4.27: launching and quitting the REPL no longer leaves an empty session file, and /resume lists only sessions with messages (#439 follow-up). v0.4.26 made Fable 5.1 the fable alias and the first /model entry (the default executor stays Opus 5). v0.4.25 is the reviewer-bridge release: codex-cli 0.154 removed codex mcp-server, so every Codex review from ARIS-Code died on an updated codex. The reviewer now runs over a built-in codex exec bridge — no mcpServers.codex entry, old entries migrate in memory, thread records interoperate with ARIS's Python bridge. Also: /since replays everything after your last input (folded like the live display, /since full for complete output), /resume lists sessions with indices and shows where you stopped (#439), Windows multi-line paste no longer submits line by line (#430, pending confirmation), the Windows shim message carries the native installer (#428), and the bundle moves to 83 skills on GPT-6-Astra. Recent headliners: v0.4.24 — Claude 5 model refresh (Opus 5 default, Fable 5 tier, availability chain) and v0.4.23 — output folding. Caps a 24-release run (v0.4.5 → v0.4.28); per-release detail below. Credits: @GetIT-Sunday, @Anduin9527, @GO-player-hhy, @Jxy-yxJ, @screw-44, @StevenUST, @opposj, @ShijunLei-cn, @algojogacor, @YukinoshitaLove, @jinliye-2026, @SajimJC, @JasmineLCY.

Per-release details (v0.4.5 → v0.4.28)

v0.4.28 (2026-09-28) — ARIS_REASONING_EFFORT now works on the Anthropic channel (#446): low / medium / high / xhigh / max for the main session and subagents; unset, requests are unchanged. ARIS_MAX_TOKENS raises the output cap when a high effort runs into it. autoCompactEnabled: false in settings turns automatic compaction off. 🐛 #444 tool calls through relays that send a {} placeholder no longer fail with invalid tool input JSON. 🌐 System proxy on Windows / macOS is used without exporting HTTPS_PROXY (#401, by @JasmineLCY); NO_PROXY=* connects directly as before. Upgrading: if you already export ARIS_REASONING_EFFORT, have an OS proxy, or have autoCompactEnabled: false in settings, read the upgrade notes.

v0.4.27 (2026-09-19) — launching and quitting the REPL no longer leaves an empty session file; /resume lists only sessions with messages (#439 follow-up).

v0.4.26 (2026-09-16) — Fable 5.1: the fable alias now resolves to claude-fable-5-1, /model lists Fable 5.1 first (Fable 5 stays selectable) and the system-prompt identity names it; the default executor remains claude-opus-5 (the Mythos tier is $10/$50 vs Opus 5's $5/$25, so the default does not move). Saved executor_model values are ids, not aliases, and are untouched. Pricing already matched on fable; a test pins 5.1. Tests unchanged (aris-cli 225 + 4 e2e / runtime 252 / tools 71 / commands 6). Codex MCP (gpt-6-astra xhigh) gate: GO.

v0.4.25 (2026-09-16) — the reviewer-bridge release. codex-cli 0.154 removed codex mcp-server, the entry point ARIS-Code's aris setup had written into settings.json for every Codex review; on an updated codex every review call died. Built-in codex exec bridge: mcp__codex__codex / codex-reply run as codex exec --json with nothing to register — no settings entry, a legacy codex mcp-server entry is migrated in memory (env, -c defaults, requestTimeoutSecs, trust kept), an explicit Python-bridge entry is used as configured, thread records share ~/.codex/state/codex-exec/threads/ with the Python bridge, 1800 s budget for ultra audits, ARIS_CODEX_BRIDGE=0 restores the old path; aris doctor prints the effective backend. Found on the way: the model never received a Codex result's threadId (it lives only in structuredContent), so codex-reply could not continue a thread — results now start with a threadId: line. /since [full] replays the user's last input and everything after it with the live formatters (display only; after /resume and in --resume batch mode too); a dim hint after turns with ≥ 8 tool calls (ARIS_TURN_SUMMARY=0). #430 Windows consoles deliver no paste event, so each pasted line became its own Enter — lines are now merged into the input and never auto-submitted, Ctrl+C discards the rest (ARIS_PASTE_BURST=0; inferred from crossterm's source, pending confirmation on a Windows machine). #439 /resume lists sessions with [n] indices and ages and accepts an index, a unique id prefix or a path; the last turn is replayed after loading. #428 the .cmd-shim message carries the official native installer one-liner. Bundle 81→83 (pin 3e49e63 → 4734364): /proof-orchestrator, /research-implement-feature, 32 helpers (+review_gate.py, copilot_native_evidence.py, idea_discovery_gate.py), repo-root templates/ bundled; reviewer doctrine and system prompt on gpt-6-astra (fallback gpt-5.6-sol → gpt-5.5), explicit — reviewer: directives win, LlmReview results carry reviewer_model: so HTTP rounds report to review_gate.py truthfully; gpt-6-astra pricing tier $10/$50 (cache write $12.50, read $1). Tests: api 35+6 / aris-cli 225 + 4 e2e / runtime 252 / tools 71 / commands 6, all green; live codex exec fresh + resume roundtrip on codex-cli 0.154.0. Codex MCP (gpt-6-astra): ultra design gate (2 rounds), xhigh implementation gate per step (5/2/2/2 rounds), final whole-diff gate (2 rounds) → GO.

v0.4.24 (2026-08-09) — the Claude 5 model refresh (#392, requested by @YukinoshitaLove). Explicit --model claude-opus-5 / claude-fable-5 already passed through on every platform — this release makes them first-class. Default → claude-opus-5 (main session, subagents, aris setup; same $5/$25 tier as Opus 4.8); the v0.4.18 availability fallback becomes an ordered chain walk (Opus 5 → Opus 4.8 → Opus 4.7, one step per precise 404 not_found_error, explicit choices never silently change) — the naive constant swap would have stranded 4.7-only accounts and configs saved by v0.4.23's setup, a regression the cross-model review caught and an end-to-end mock-404 chain test now locks. /model picker adds Fable 5 / Opus 5 / Sonnet 5; new fable alias. New Mythos-class pricing tier (fable/mythos = $10/$50, cache write $12.50 / read $1, verified 2026-08 — previously fell to the conservative $15/$75 unknown-model tier, a 1.5× over-estimate); Opus 5 / Sonnet 5 pinned on their existing branches. Tests: api 41 / aris-cli 213 + 4 e2e / runtime 226 / tools 70 / commands 5, all green; live smoke on claude-opus-5, claude-fable-5 and the fable alias. Codex MCP (gpt-6-astra xhigh) implementation gate: NO-GO → NO-GO → GO.

v0.4.23 (2026-08-02) — the output-folding release (top real-user complaint: "aris dumps thinking and the full content of documents it reads onto the screen"). 🧹 Tool-output folding, display layer ONLY: the disk-verified culprits were format_read_result appending the ENTIRE read payload, bash pushing full stdout/stderr, grep dumping its full content blob, and the edit preview capping line counts but not line LENGTH. Now Read/Grep show the first 6 lines, Bash shows first 4 + last 4 per stream (stderr keeps its red), each kept line capped at 240 chars (the minified-single-line case), then one dim "… (+N more lines — set ARIS_TOOL_OUTPUT_LINES=0 for full output)" hint. ONE env knob: unset = defaults, a positive integer overrides every tool, 0 = the exact old display; the session, model context, --output-format json and /export are untouched and always complete. Thinking was verified to never print (Anthropic deltas only accumulate; Kimi reasoning_content only feeds the replay cache — the "thinking dump" perception came from the document dumps); two end-to-end sentinel tests (real binary vs mock SSE server) lock that thinking/reasoning never reaches the terminal. Interactive expand/collapse was deliberately rejected as over-engineering. 🐛 Bash timeout now kills the command: a timed-out call reported interrupted: true while the dropped tokio future left the child RUNNING — side effects landed after the report; now kill_on_drop (escape hatch ARIS_BASH_KILL_ON_TIMEOUT=0; background tasks untouched; locked by a real behavioral test — a timed-out "sleep 1 && touch marker" must not create the marker). 📦 Bundle 79→81 (pin 7182624 → 3e49e63): /integrity-forensics — the Anti-Autoresearch SHA-pinned thin launcher (span-anchored evidence ledger → GPT auditors propose → deterministic rules-only adjudicator decides → typed BLOCK/WARN gate + obligations ledger) — and /web-debug-search, +tools/forensics_gate.py (29 helpers, 104 embedded resources). 🎁 Also: grep's content mode no longer shows a false "0 matches" above real results (the gate caught that "numMatches": null serializes with the key present, defeating a naive presence check); all four crates' local-mock-server tests are now proxy-immune (a shell with http(s)_proxy set used to turn 15 tests red on a released tag — 127.0.0.1 was routed through the proxy). The rest of the runtime-state package (compaction re-arm, failed-turn cleanup, /cost dollars, SSE tail) ships as v0.4.24 — the cached-token cost fix is deliberately held back because it changes what the compaction trigger measures. Tests: api 41 / aris-cli 212 + 3 e2e / runtime 225 / tools 69 / commands 5 (+13), all green under a live proxy; new-code clippy delta zero. Codex MCP (gpt-6-astra): ultra scope+design adjudication, then a 3-round implementation gate (round 1 caught the null-serialization defeat and a non-hermetic behavioral test; round 3 GO).

v0.4.22 (2026-07-12) — the skills-resync + GPT-6-Astra release. 📦 Bundle resync (pin 7e3ab67 → 7182624, 93 commits): 79 bundled skills (+meta-apply, +paper-poster-html; paper-poster retired to a redirect stub), 28 tools helpers (8 new: capture_filter, evidence_check, iteration_log, provenance, run_state, threat_scan, meta_opt/trigger_eval + sample evals), 11 new shared-references docs (fan-out-pattern, acceptance-gate, external-cadence, skill-governance, compute-env-contract, resumable-runs, evidence-precheck, injection-hygiene, capture-antipatterns, output-composition, taste-calibration); sync hardening — ARIS_SYNC_EXPECT_SHA guard (aborts before touching assets if main moved; it caught a real move on first use) + exact-inventory drift tests + the vendored posterly MIT license text now ships. 🎛 GPT-6-Astra two-tier reviewer alignment: the CLI's system-prompt nudge now passes the skills' explicit model: gpt-6-astra + per-call effort pins through (the v0.4.17 blanket "never pass a model" rule would have silently stripped deep audits from ultra to xhigh), carries the canonical capability-only fallback chain (effort-unsupported → same model xhigh, deep tier only; model-unknown → explicit gpt-5.5+xhigh; never degrade on transport-class errors; an explicit call-level override disables the chain), pins approval-policy: "never" + explicit sandbox on every fresh codex call, and makes the HTTP fallback pre-dispatch-only with parameter stripping; the HTTP LlmReview default deliberately stays gpt-5.5 pending a real smoke; gpt-5.6 family pricing (sol $5/$30, terra $2.50/$15, luna $1/$6) verified against the official page; banner/Reviewer display//reviewer are honest about primary-vs-fallback (pure-Codex setups get status + guidance instead of a fake picker). 🐛 8 verified fixes: explicit --model was silently overridden by the saved executor model (model provenance now tracked end-to-end; the 4.8→4.7 availability fallback respects explicit choices; /model and /setup re-arm it); saved models no longer leak across provider transports (blank saved models count as absent; OpenAI transport with no model source fails fast; the first-run wizard's config now actually feeds startup model resolution); --output-format json never prompts (locked by a real end-to-end binary test against a mock SSE server); Windows aris login fixed (PKCE randomness read /dev/urandom → getrandom); Windows command probing fixed (the PowerShell tool probed itself through sh; now where.exe); codex .cmd shims classified honestly (three-state probe; setup requires explicit confirmation before writing a config the MCP client can't spawn); nested config.json warns instead of silently parsing to all-defaults; NotebookEdit mints collision-free cell ids. 🖥 New windows-latest CI job (workspace compile gate + three targeted test groups, each guarded against silent 0-test green). Tests: api 41 / aris-cli 204 + 1 e2e / runtime 223 / tools 69 / commands 5 (+54), all green; new-code clippy delta zero. Codex MCP (gpt-6-astra): ultra design gate — 5 rounds, NO-GO ×4 → GO — then a 3-round implementation gate whose round 2 caught a first-run config-wiring blocker before it shipped; 4 implementation subagents, every report disk-verified.

v0.4.21 (2026-06-28) — bug-fix patch: 5 new user-facing bugs from a Codex adversarial hunt (all disk-verified, distinct from v0.4.20), each cross-model reviewed at a design gate and an implementation gate (gpt-5.5 xhigh; both started NO-GO — the reviewer caught an off-by-one in the grep line-mapping and a missing stream-level test before GO). 🐛 Headline: OpenAI-compatible streaming corrupted multi-byte UTF-8 (CJK / emoji) split across network chunks into � — each HTTP body chunk was from_utf8_lossy'd independently, so a 3-byte Chinese character or 4-byte emoji straddling a chunk boundary broke on both sides (a frequent hit for Chinese users on domestic OpenAI-compatible providers — Kimi/GLM/MiniMax/DeepSeek/Qwen/Doubao — streaming Chinese text); the stream buffer is now raw bytes, decoding only complete SSE lines. A saved OpenAI/custom executor config no longer overrides a shell-set EXECUTOR_PROVIDER — the startup "shell-provided vars win" path had one ungated write that re-pointed EXECUTOR_PROVIDER=anthropic … aris … to OpenAI (wrong executor / model-not-found). An Anthropic stream truncated after content but before a terminal signal now hard-errors (premature_eof) instead of saving a half-finished answer to history as a complete turn (symmetric to the OpenAI #249 guard; the stop_reason-only compat path is preserved, and ARIS_ALLOW_EOF_WITHOUT_STOP=1 opts a terminal-signal-less proxy back into the old behavior). grep_search with multiline: true now matches across lines in content mode (was silently empty — count mode already worked). MCP tool results carried only in structuredContent (empty content) are no longer dropped — the model gets the JSON structured payload. Tests (CI mode): api 32→35 / runtime 205→212 / tools 67 / aris-cli 172→181 / commands 5 (+21, incl. 2 stream-level integration tests), all green. Codex MCP (gpt-5.5 xhigh): design gate (NO-GO → GO after fixing the off-by-one) → implementation gate (NO-GO → GO after adding the stream-level integration tests); the Anthropic streaming spec (every stream ends with message_stop) was WebFetch-verified. Two latent-only candidates (Anthropic block-index routing, OpenAI multi-line SSE) remain deferred.

v0.4.20 (2026-06-19) — bug-fix patch: 7 user-facing bugs surfaced by a Codex adversarial hunt, each reviewed across 3 rounds (the reviewer caught a redraw gap, a trailing-blank, a spinner tail, and a blank-line edge before GO). 🐛 Headline (#299): short REPL replies showed only "✔ Done" — the spinner draws "⠋ Thinking…" with Save/RestorePosition so streamed output overwrites it on the same line, but finish then cleared that whole line, erasing a short single-line reply. The REPL now finishes without clearing when the turn printed visible text (Clear(UntilNewLine) wipes only the spinner tail after the reply). Streamed multi-paragraph replies rendered glued ("para1para2") — each chunk's paragraph separator was trimmed at the stream boundary; the markdown streamer now preserves separators via a held-separator so streamed output equals a single full render (no dangling blank line). Markdown tables with CJK/fullwidth content misaligned — width now counts display cells (CJK = 2), not chars. aris "prompt" / --print ignored the executor model saved by aris setup (REPL-only before) — a configured OpenAI/custom executor got the Anthropic default sent to its endpoint; the one-shot and REPL paths now share one resolver. Esc now actually closes the completion dropdown (it was recomputed right back). glob_search reports the total matched count when truncated (not the capped 100, which made the model think a 1000-match glob had 100 files). /model's custom menu reads the effective env the executor uses, not stale on-disk config. Tests (CI mode): api 32 / runtime 205 / tools 67 / aris-cli 172 / commands 5, all green; +7 new; real-machine verified (short reply renders + "✔ Done"; paragraphs keep their blank lines). Codex MCP (gpt-5.5 xhigh): hunt → 3 review rounds (NO-GO → NO-GO → GO). Two latent-only candidates (Anthropic block-index routing, OpenAI multi-line SSE) deferred to a hardening pass.

v0.4.19 (2026-06-14) — honesty / guardrails patch (theme from a Codex fresh-eyes audit; no behavior change for healthy setups). 🔴 MCP protocol-version negotiation guard — the stdio handshake requested 2025-03-26 but never read the version the server negotiated back (a parsed-but-dead field), so a server agreeing on a version ARIS can't speak was silently accepted and later tools/list / tools/call ran on an incompatible protocol with opaque failures. ARIS now validates the negotiated version against a supported set (2025-11-25 / 2025-06-18 / 2025-03-26 / 2024-11-05 — stdio framing is identical across these) and, on an unsupported one, terminates the child + clears the slot + surfaces a clear per-server error (aris doctor shows it) — the "terminate when versions can't be agreed" behavior the MCP lifecycle spec requires. The request stays 2025-03-26 (proven against codex mcp-server), so healthy servers are unaffected — verified end-to-end: the real Codex MCP server still spawns + initializes + advertises its tools under the guard. 🧹 Papercuts: the OpenAI-family subagent fail-loud message dropped its stale "lands in v0.4.18" marker (now version-agnostic + actionable, still credential-free); OpenAI upstream error bodies are now truncated (500 chars) + credential-redacted (sk-… keys and Bearer … tokens, via a substring scanner that catches the compact-JSON shape {"api_key":"sk-…"} a misconfigured proxy can reflect back) instead of splatted verbatim; the system-prompt hook-events summary now counts only the hooks the runtime actually executes (a command hook with a command string), matching the parser. Tests (CI mode): api 32 / runtime 204 / tools 67 / aris-cli 167 / commands 5, all green; live smoke confirms the real Codex MCP server still initializes under the guard. Reviewed by Codex MCP (gpt-5.5 xhigh): design GO → impl NO-GO (compact-secret miss + command-string strictness) → GO after fixes.

v0.4.18 (2026-06-14) — default model → Claude Opus 4.8, with corrected pricing and a safety net. The bump moves DEFAULT_MODEL, the opus alias, the model picker, aris setup, and the subagent default to claude-opus-4-8 — with an availability fallback: if the account lacks 4.8 (the API returns 404 not_found_error), ARIS auto-falls-back to claude-opus-4-7 for the session, rebuilds the system-prompt model identity so it stays coherent (the model is never told it's 4.8 while served 4.7), warns once, and retries — for the main session (text + JSON) and subagents. It fires only on that precise 404 (never 400/rate-limit/auth), latches against loops, and the text path rebuilds from a pre-turn snapshot so a retry never double-appends the user message; accounts with 4.8 are byte-identical to a plain bump. 💰 Pricing corrected (verified against Anthropic's published schedule; had been a 3–5× over-estimate): current Opus 4.5–4.8 = $5/$25 (deprecated Opus 4/4.1 keep $15/$75, split by word-boundary so a future opus-4-10 isn't mis-tiered); Sonnet 4.x = $3/$15 (decoupled from the generic unknown-model fallback, which stays $15/$75); Haiku was already correct. 🧹 Backlog: aris setup option 10 pins the Codex MCP reviewer to model_reasoning_effort="xhigh" (deterministic for new setups, independent of ~/.codex/config.toml; idempotent merge never clobbers an existing entry); a startup + aris doctor misconfig hint (#259) for a silently-ignored/misplaced config (malformed JSON, or a stray ~/.aris/config.yaml — stderr-only so --print/JSON stdout stays clean); the system-prompt hook summary now marks parsed-but-never-fired events "PARSED ONLY … will NOT run" instead of implying dead hooks run (full event expansion — actually firing SessionStart/SessionEnd/… — deferred to a separate issue). Tests (CI mode): api 32 / runtime 202 / tools 67 / aris-cli 166 / commands 5, all green; a live one-shot smoke returns model=claude-opus-4-8 end-to-end. Reviewed by Codex MCP (gpt-5.5 xhigh) across the design + both implementation batches (design REWORK→GO, impl NO-GO→GO, batch-2 GO).

v0.4.17 (2026-06-13) — the MCP release. Before v0.4.17, mcpServers in settings.json parsed, showed in aris doctor, and did nothing; now ARIS spawns each configured stdio server, runs the MCP handshake, discovers tools, and advertises them as mcp__<server>__<tool> on both provider paths (Anthropic + OpenAI-family), with end-to-end dispatch, soft per-server degradation, and an approval gate for untrusted MCP tools (external processes the sandbox can't cover; --allowedTools now accepts mcp__ names). 🆕 zero-API-key cross-model reviewer: aris setup → option 10 (Codex MCP, ChatGPT subscription, no API key) writes an idempotent mcpServers.codex entry into the settings file the runtime actually reads (atomic write + backup, explicit consent before trust: true), with an optional API reviewer as fallback (ARIS_REVIEWER_PROVIDER=codex-mcp + ARIS_REVIEWER_FALLBACK_PROVIDER); /setup in-REPL rebuilds the system prompt + runtime so reviewer changes take effect without quitting. 🔴 Protocol fix the fakes couldn't catch: real-machine e2e against codex mcp-server exposed that our stdio transport spoke LSP-style Content-Length: framing while the MCP spec (and codex) use newline-delimited JSON-RPC — every fake-server test passed because the fakes spoke the same wrong dialect; writes are now NDJSON, reads auto-detect both, and the spec-mandated notifications/initialized is sent after initialize (a select-based round-trip also closes the #286 large-request deadlock). Hooks: object-style Claude Code hooks preserve matcher / timeout / async (anchored-regex matcher filtering; per-hook timeout, default 30 s kill = warning not deny). Long tail: ARIS_DISABLE_KEYCHAIN gate, Anthropic stop_reason clean-EOF symmetry (CL2), OpenAI tool-call index-missing merge-by-id (OE6), slash commands enter history. Real-machine push-gate hardening (the zero-key reviewer's first run): codex codex/event notification spam silenced by default (gated behind ARIS_MCP_STDERR=inherit), the system prompt now tells the model not to pass a model parameter to Codex (account default = gpt-5.5 + xhigh; arbitrary names are rejected by a ChatGPT account), and a Codex-MCP-primary-with-no-fallback LlmReview call returns a clear "use mcp__codex__codex" message instead of a misleading OPENAI_API_KEY/gpt-5.5 error. Built with the v0.4.16 zero-regression methodology (24 new characterization tests; every deliberate flip annotated in-place). Tests (CI mode): runtime 199 / aris-cli 165 / tools 67 / api 30 / commands 5, all green. Reviewed phase-by-phase by Codex MCP (gpt-5.5 xhigh) across 17 rounds (7 NO-GOs all resolved). Subagent MCP routing (P8) + MCP protocolVersion bump + hook async execution deferred to v0.4.18.

v0.4.16 (2026-05-30) — REPL UX + provider hardening, shipped under a zero-regression discipline: 64 characterization ("golden") tests locked the current provider-routing / pricing / reviewer / subagent / REPL behavior first, then stayed green through every change. Closes #274: command history now persists to ~/.config/aris/history (0600) and reloads on startup, with an ARIS_NO_HISTORY kill-switch and a disk-only secret-skip (credential-looking lines stay in in-session history but never touch disk); bash-style Ctrl+R reverse incremental search (CJK display-width-aware single-line render; no existing key binding changed; no new dependency). Security: an OpenAI-family main session (Kimi / GLM / MiniMax / …) spawning a subagent previously silently billed the user's Anthropic OAuth/Keychain credential — it now fails loud with a clear, credential-free error; full OpenAI-family subagent routing is a cross-crate change deferred to v0.4.17. Groundwork (no behavior change): the 3 byte-identical word-boundary matchers consolidate into one canonical runtime::word_match; new pure ProviderFamily classifier (unwired). Tests (CI mode): runtime 164 / aris-cli 128 / tools 49 / commands 5, all green. Codex MCP (gpt-5.5 xhigh) reviewed each phase + a final integration pass.

v0.4.15 (2026-05-29) — OpenAI-compatible streaming robustness hotfix. Closes #249: MiniMax (and other OpenAI-compatible providers / proxies) were effectively unusable because the clean-EOF completion check treated the data: [DONE] SSE sentinel as the only authoritative signal. A non-empty choices[].finish_reason is the Chat Completions spec's terminal-chunk marker; [DONE] is a transport convention some compatible providers never emit (MiniMax sends finish_reason: "stop" then closes without [DONE]). The clean-EOF decision is now a pure, unit-tested stream_eof_action(...) that completes on EITHER [DONE] OR a non-empty finish_reason; reads are NOT stopped early at finish_reason (a trailing include_usage usage-only chunk is still consumed), genuine truncation still hard-errors, and a pre-output proxy abort still restarts. Coupled fixes: OE7 reads finish_reason before the delta guard (delta-less terminal choice); OE2 flushes pending tool calls on any non-empty finish_reason; OE4 surfaces a mid-stream error envelope as a hard error instead of silently dropping it; OE3 tolerates data:{...} without the space after the colon. +5 unit tests (77→82) extract the previously-untested SSE completion logic into pure helpers. Anthropic SSE path untouched. Codex MCP (gpt-5.5 xhigh) 3 rounds (GO-WITH-NITS → GO-WITH-NITS → GO).

v0.4.14 (2026-05-25) — Security-hygiene release closing the top items from the v0.4.13 codex audit (gpt-5.5 xhigh, 6/10 NEEDS-REWORK verdict). 🔴 S9 (P0) system-prompt config redaction — before v0.4.14, render_config_section() dumped the merged settings.json verbatim into the system prompt sent to the LLM provider, leaking env, mcpServers.<name>.headers.Authorization Bearer tokens, hook command env, signed-URL query params, and apiKey fields. New renderer whitelists top-level fields (model/permissionMode/theme/outputStyle/permissions/sandbox with recursive redaction inside), redacts sensitive keys (apikey/token/secret/password/authorization/headers/env/_KEY/_SECRET/_TOKEN), replaces MCP command with <configured> placeholder, reduces MCP url to strict <scheme://host[:port]> origin (scheme allow-list http/https/ws/wss, ASCII host, digit-only port, IPv6 brackets), and drops hook command strings entirely. Regression test exercises 9 distinct leak surfaces; URL parser has its own targeted test for 7 smuggling attempts including port-position secret injection (codex round-3 catch). 🟡 P9 (P1): DeepSeek aris --help now points at aris setup option 7 instead of an env-var path the resolver never honored. 🟡 M1/M2 (P1) doc: aris doctor + README/README_CN gain experimental warning whenever mcpServers.len() > 0 (full MCP tool dispatch lands v0.4.16). 🟢 C11 (P2) stream idle timeout — both Anthropic MessageStream and the OpenAI SSE loop wrap response.chunk().await in tokio::time::timeout (env ARIS_STREAM_IDLE_TIMEOUT_SECS, default 120, clamp [10, 1800], 0/negative disables); closes the "aris hangs forever with no output" symptom when an upstream HTTPS proxy holds a connection without keepalives. Bundle: 77 skills (+1 /wiki-enrich via late same-day sync to main 7e3ab67 which also picks up upstream check_ready.sh awk + grep-c null-match fix), 54 helpers. Codex MCP 6 rounds (NO-GO + 4 → GO-WITH-NITS + 3 → NO-GO + port smuggling → GO → release metadata GO → sync GO).

v0.4.13 (2026-05-25) — Residue-cleanup release closing every codex audit P1 carried since v0.4.10–v0.4.12, plus the long-tail regression tests. 🟡 v0.4.10 P1.D per-server MCP timeout — mcpServers.<name>.requestTimeoutSecs override > MCP_REQUEST_TIMEOUT_SECS env > 300s default (clamped 1..=1800), so one Codex MCP agent can run 5 min while filesystem MCP errors in 5 s. 🟡 v0.4.10 known limitation closed — McpStdioProcess::request() skips JSON-RPC notifications (id absent/null) and keeps reading until the correlated response. 🟢 meta_opt hook deploy via aris init — tools/meta_opt/{log_event,check_ready}.sh bundle into the binary; aris init writes ARIS-namespaced aris-meta-opt-log-event.sh / aris-meta-opt-check-ready.sh to ~/.claude/hooks/ (codex round-1 #1: never clobbers user hooks); settings.json merge idempotent, backups hard-fail, final rewrite atomic via tempfile + rename. 🧪 9 v0.4.12 targeted regression tests for sandbox.strictMode (3) + parse strictMode + provider_match pricing + has_word o-series + stream_options 400 + meaningful-content classification + premature-EOF retry truth table (codex round-1 #3 — should_retry_on_premature_eof() extracted to pure fn, 7-row test). Bundle: 76 skills, 54 helpers (+2 meta_opt scripts vs v0.4.12). Codex 3 rounds (NO-GO + 3 → NO-GO + metadata → GO).

v0.4.12 (2026-05-22) — Bug-fix + small-feature release. #238 sandbox.strictMode opt-in config key; when set, SandboxConfig::resolve_request() ignores all five LLM-supplied overrides (dangerouslyDisableSandbox, namespaceRestrictions, isolateNetwork, filesystemMode, allowedMounts) — closes the gap where a tool call could silently bypass user sandbox policy. aris doctor adds a "Sandbox:" row; bash tool schema documents the strictMode semantics. #232 auto-review-loop-llm updated from legacy deepseek-chat / deepseek-reasoner (deprecate 2026-07-24; reasoner rejects tool_choice) to deepseek-v4-flash / deepseek-v4-pro. v0.4.10 audit P1 follow-ups: P1.A Anthropic stream retry gates on has_emitted_meaningful_content (a stream that only sent MessageStart before EOF is retry-eligible); P1.B supports_reasoning_effort + reviewer mirror use word-boundary match so openai/o3-mini / proxy:o4 route correctly; P1.C stream_options.include_usage:true proxy fallback retries once without on real 400 unknown-field errors; P2 pricing match precision via provider_match() so qwen3.6-plus / kimi-k2.5 route correctly while my-kimi-clone does not. Skills sync (76 skills, 52 helpers): /interview-cheatsheet + /render-html newly bundled; build.rs ALLOWED_EXTS gains html for render-html templates; EXCLUDED_SKILL_PREFIXES → starts_with("skills-codex"). CI fetch-depth: 0 + origin/main fetch so drift-test ancestor check runs. Cross-reviewed by Codex MCP (gpt-5.5 xhigh) over 4 rounds.

v0.4.11 (2026-05-18) — Skills bundle refresh + sync infrastructure. The embedded skills set in the v0.4.10 binary had fallen behind main (~6 of 56 main skills/ commits had been cherry-picked); v0.4.11 syncs the full set and ships sync infrastructure so the gap can't silently reopen. Bundle: 65→74 user-facing skills, 34→49 helper resources. 10 new skills bundled: /citation-audit (fourth-layer bibliography audit), /experiment-queue (SSH multi-seed job queue with OOM retry), /kill-argument (two-thread adversarial review for theory papers), /resubmit-pipeline (W5: text-only port to a new venue), /paper-talk (end-to-end conference talk pipeline), /slides-polish (per-page Codex layout review), /overleaf-sync (two-way Overleaf Git-bridge), /gemini-search + /openalex (broader literature sources), /qzcli (Qizhi GPU jobs). 46 existing SKILL.md refreshed — most critically the canonical resolver chain rollout (closes real user incident where /research-wiki was empty for a week from hardcoded tools/research_wiki.py), submission assurance gate + external verifier (/paper-writing Phase 6 now functions). tools/ goes 9→18: 9 baseline helpers refreshed (research_wiki.py 315→767 lines with canonical ingest_paper API), 9 new helpers (extract_paper_style.py, figure_renderer.py, paper_illustration_image2.py, overleaf_{setup,audit}.sh, verify_wiki_coverage.sh, watchdog.py, experiment_queue/{build_manifest,queue_manager}.py). New tools/sync_main_skills.sh automates main → bundle rsync with symlink pre-flight + codex-mirror prune + SKILLS_SOURCE_COMMIT pinning. 3 new CI drift tests in crates/runtime/src/cache.rs cover all 4 resolver layer patterns. Gemini MCP calls in /research-lit and /gemini-search now pass model: 'auto-gemini-3' (avoids silent downgrade to 2.5-pro on OAuth-personal capacity exhaustion). CLI runtime unchanged — codex-audit P1 follow-ups remain on v0.4.12 backlog. Cross-reviewed by Codex MCP (gpt-5.5 xhigh) across 5 rounds (REQUEST CHANGES → APPROVE WITH NITS → NO-GO → GO → final GO).

v0.4.10 (2026-05-17) — Stream + MCP reliability + multi-provider pricing. C6 whole-stream restart in Anthropic MessageStream + OpenAI SSE loop on chunk decode failure / premature EOF (ARIS_STREAM_RETRY, default 2, clamp 0..=5, fires only when nothing emitted yet — closes #228-style "error decoding response body" loop). M3 MCP stdio gains 300s default tokio::time::timeout over send+read (override MCP_REQUEST_TIMEOUT_SECS, clamp 1..=1800); response.id ↔ request.id correlation; ensure_server_ready() try_wait() dead-process respawn; kill().await on all failure paths so the next call starts clean (closes #151 / #172 "Calling codex..." stalls). C8/P4 OpenAI streaming requests now send stream_options.include_usage:true + parse cached_tokens; Anthropic streaming merges MessageStart.usage (input/cache) with MessageDelta.usage (output). C9 multi-provider pricing registry (15+ models, OpenAI cache_read = input × 0.1 corrects 5× generic overstatement, DeepSeek cache_hit/cache_miss tiers, has_word() boundary matcher for provider/<model> slugs). 9 dead-code warnings cleared; aris setup help text synced with actual behaviour.

v0.4.9 (2026-05-17) — Closes Codex v0.4.7 audit residuals (L1 TLS double-stack, L3 reasoning_cache compaction misalign, L4 reasoning replay unbounded). 2 new skills bundled (/figure-spec + /paper-illustration-image2 with scripts/ subdirs, new Layer 0b = $ARIS_CACHE_DIR/skills/<name>/scripts/); research_wiki.py promoted to shared tools/ (9+ callers); 5 more SKILL.md migrated to fallback chain.

v0.4.8 (2026-05-17) — Skill helper subsystem rewrite. Bundled helpers extract to ~/.config/aris/cache/<version>/ at startup; every Skill invocation surfaces helperReport JSON + 4-layer resolver preamble; /skills export copies helpers; new integration-contract.md with 6 failure policies; 8 shared helpers (arxiv/deepxiv/exa/S2/openalex/save_trace/verify_papers/verify_paper_audits) bundled; /research-lit + /deepxiv migrated. Plus 4 bug fixes: gpt-5.5+tools 400 on OpenAI; Custom reviewer reset; missing signature field (#228); --version Build date hardcoded.

v0.4.7 (2026-05-16) — DashScope Coding Plan 405 fixed (#159) via native-tls switch (#225); reasoning_content replay for all reasoning models (OpenAI o1/o3/o4 / DeepSeek-R1 etc.), not just Kimi (#226); 600+ lines dead code cleanup + rustyline dep removed + "Claw Code" → "ARIS-Code" rebrand.

v0.4.6 (2026-05-14) — 🚨 Two long-standing silent bugs fixed: PermissionMode::Prompt silently allowed every tool (derived-Ord bug); system prompt hardcoded current_date = "2026-03-31" made models reject post-cutoff data as future/prompt-injection. Plus Custom OpenAI-compatible provider (/setup option 11) with dynamic /models discovery (@Anduin9527 #221 + #222).

v0.4.5 (2026-05-13) — First-class reasoning-model support: thinking content blocks end-to-end (fixes #161) + reasoning_effort='xhigh' for GPT-5.5 / o1 / o3 / o4 / DeepSeek-thinking. DeepSeek V4 Pro + Xiaomi MiMo + Qwen 3.6 + Doubao in /setup (options 7-10). Object-style hooks parser. Default model bumped to Claude Opus 4.7 + GPT-5.5. REPL input hardening (multi-line wrap / Cmd+V paste / CJK boundary). GitHub Actions CI. Credits: @GO-player-hhy (#186), @Jxy-yxJ (#171), @GetIT-Sunday (#216 partial).

Older versions

v0.4.4 (2026-04-20) — Setup UX + reviewer routing fixes (resolves #158, #162) | /setup no longer forces Bearer for Anthropic + custom URL | Provider-aware proxy URL hints | Stale state no longer leaks across provider switches | LlmReview smart fallback

v0.4.3 (2026-04-17) — Third-party Anthropic-compat proxy support (Bedrock etc.) | Skip beta flags that proxies reject | Propagate custom base URL for anthropic provider | Credit @screw-44

v0.4.2 (2026-04-17) — Auto-compaction corruption fix | Compaction summary preserved on OpenAI-compat executors | Shell-provided API keys no longer erased on launch

v0.4.1 (2026-04-15) — Plan mode (/plan) | Cooperative Ctrl+C interrupt | Auto-retry (429/5xx/network) | Research Wiki 📚 (persistent knowledge base) | Self-Evolution 🧬 (/meta-optimize) | Local models (LM Studio/Ollama) | 62 skills synced

v0.3.11 (2026-04-13) — Reviewer Anthropic-compatible mode (Claude via proxy)

v0.3.9 (2026-04-11) — Proxy/custom base URL (CCSwitch) | Local models (LM Studio/Ollama) | Windows (experimental)

v0.3.5 (2026-04-08) — Research Wiki (persistent papers/ideas/experiments/claims + relationship graph) | Meta-Optimize self-evolution (analyze logs → propose SKILL.md patches)

v0.3.0 (2026-04-03) — Multi-file memory index | Rich task system (TodoWrite) | /plan | Security hardening

v0.2.2 (2026-04-03) — /plan step-by-step planning | /tasks persistent tracking

v0.2.1 (2026-04-03) — Persistent Memory | Kimi K2.5 multi-turn fix | CJK cursor fix

v0.2.0 (2026-04-02) — Open source | Kimi + MiniMax + GLM support | Smart LlmReview routing | CI/CD

v0.1.0 (2026-04-02) — Initial release | Multi-executor & reviewer | 42 bundled skills

中文版 README | English

🌙 Let Claude Code do research while you sleep. Wake up to find your paper scored, weaknesses identified, experiments run, and narrative rewritten — autonomously.

🪶 Radically lightweight — no infrastructure, zero lock-in. The entire skill layer is plain Markdown files. No framework to learn, no database to maintain, no Docker to configure, no daemon to babysit. Every skill is a single SKILL.md readable by any LLM — swap Claude Code for Codex CLI, OpenClaw, Cursor, Trae, Antigravity, Copilot CLI, Windsurf, or your own agent and the workflows still work. Fork it, rewrite it, adapt it to your stack.

💭 Why not self-play with a single model? Using Claude Code subagents or agent teams for both execution and review is technically possible, but tends to fall into local minima — the same model reviewing its own patterns creates blind spots.

Think of it like adversarial vs. stochastic bandits: a single model self-reviewing is the stochastic case (predictable reward noise), while cross-model review is adversarial (the reviewer actively probes weaknesses the executor didn't anticipate) — and adversarial bandits are fundamentally harder to game.

💭 Why two models, not more? Two is the minimum needed to break self-play blind spots, and 2-player games converge to Nash equilibrium far more efficiently than n-player ones. Adding more reviewers increases API cost and coordination overhead with diminishing returns — the biggest gain is going from 1→2, not 2→4.

Claude Code's strength is fast, fluid execution; Codex (GPT-6-Astra xhigh) is slower but more deliberate and rigorous in critique. These complementary styles — speed × rigor — produce better outcomes than either model talking to itself.

🧿 Want the strongest possible reviewer? Add — reviewer: oracle-pro to any skill to route reviews through GPT-5.5 Pro via Oracle MCP. Pro-level reasoning for proof verification, experiment auditing, and final stress tests. Works with API key or free browser mode. Setup →

Contents

  1. More Than Just a Prompt
  2. What's New · changelog
  3. Quick Start · install + first run
  4. Features
  5. Score Progression (Real Run)
  6. Community Showcase — Papers Built with ARIS
  7. Awesome Community Skills & Extensions
  8. Workflows · 13 named pipelines (W1 / W1.5 / W2 / W3 / W4 / W5 / W6 / Wiki / WM + Effort / Assurance / Oracle)
  9. Setup · prerequisites / install / update / usage / GPU server config
  10. Customization · per-skill config knobs
  11. Alternative Model Combinations · GLM / MiniMax / Kimi / etc.
  12. Community
  13. Citation
  14. Star History
  15. Acknowledgements
  16. License

1. 🎯 More Than Just a Prompt

These are full pipelines — you can also use each workflow independently. Already have an idea? Skip to Workflow 1.5. Have results? Jump to Workflow 3. Got reviews? Jump to Workflow 4. Want persistent memory? Enable Research Wiki. See Quick Start for all commands and Workflows for the full breakdown.

Basic mode — give ARIS a research direction, it handles everything:

text
/research-pipeline "factorized gap in discrete diffusion LMs"

🔥 Targeted mode — got a paper you want to improve? Give ARIS the paper + the code:

text
/research-pipeline "improve method X" — ref paper: https://arxiv.org/abs/2406.04329, base repo: https://github.com/org/project

ARIS reads the paper → finds its weaknesses → clones the codebase → generates ideas that specifically fix those weaknesses with that code → runs experiments → writes your paper. Like telling a research assistant: "read this paper, use this repo, find what's missing, and fix it."

Mix and match: ref paper only = "what can be improved?", base repo only = "what can I build with this code?", both = "improve this paper using this code."

🛠️ Build a feature — already know what to build?

text
/research-implement-feature "add KV-cache reuse to the decoder" — base repo: https://github.com/org/project

Spine first, then one feature at a time, each with a runnable check. Every choice the request left open is written to an assumption ledger before the code that depends on it, and a different model family then reads the raw diff for the ones that went undeclared. It reports "the checks passed", never "the method works". Contributed by @heroarmor.

🔥 Rebuttal mode — reviews just dropped? Don't panic. ARIS reads every concern, builds a strategy, and drafts a rebuttal that's grounded, structured, and under the character limit:

text
/rebuttal "paper/ + reviews" — venue: ICML, character limit: 5000

Three safety gates — rebuttal will NOT finalize if any fails:

  • 🔒 No fabrication — every claim maps to paper/review/user-confirmed result
  • 🔒 No overpromise — every promise is user-approved
  • 🔒 Full coverage — every reviewer concern is tracked

Two outputs: PASTE_READY.txt (exact char count, paste to venue) + REBUTTAL_DRAFT_rich.md (extended version for manual editing).

Show rebuttal parameters — venue, character limit (required), quick mode, auto experiment, stress test rounds, followup rounds

Parameter Default What it does
venue ICML Target venue (ICML/NeurIPS/ICLR/CVPR/ACL/AAAI/ACM)
character limit — Required. Hard character limit for rebuttal text
quick mode false Stop after parsing + strategy (Phase 0-3). See what reviewers want before drafting
auto experiment false Auto-run supplementary experiments via /experiment-bridge when reviewers ask for new evidence
max stress test rounds 1 How many times GPT-6-Astra xhigh stress-tests the draft
max followup rounds 3 Per-reviewer follow-up round limit

After acceptance — your paper is in, now prepare the presentation:

text
/paper-slides "paper/"     # → Beamer PDF + PPTX + speaker notes + Q&A prep
/paper-poster-html "paper/" # → measurement-gated HTML/CSS poster → print-ready PDF

💡 From idea to paper to podium — one toolchain. 🌱

2. 📢 What's New

⚠️ Any entry that touches skills: bash tools/smart_update.sh --apply pulls it.

  • 2026-10-19 — 🔀 Choose reviewers inside the complete Claude Code and Codex skill packs — use — reviewer: or project configuration to select Codex, Gemini/Antigravity, Grok, or Claude Code through your configured reviewer tools. See the routing guide and Codex guide. The Claude Code MCP bridge now respects the requested working directory and records the CLI-reported model, including configured providers such as DeepSeek. Same-family reviews remain provisional. (#473, #472)
  • 2026-10-19 — 📚 Catch bibliography field errors with /citation-crosscheck — compare local .bib entries with records freshly fetched from paper sources, then export a side-by-side spreadsheet of author, year, venue, DOI, and arXiv ID discrepancies. Available for Claude Code and Codex, alongside the existing citation audit. (#371; thanks @dty0606)
  • 2026-10-19 — 🔬 Bounded parallel work for research workflows — idea generation, literature extraction, and proof checking now share fan-out rules: capped worker batches, coverage records, and sequential fallback when parallel execution is unavailable. Workers collect candidates and evidence; designated reviewers retain final judgments. (#372; thanks @Dennis-Huangm)
  • 2026-10-07 — 🧮 From a mathematical statement to a checked Lean proof — new /lean-formalize for Claude Code and Codex. Develop proof routes, connect intermediate lemmas to the original theorem, and deliver reproducible Lean sources with statement and axiom checks. Cross-family reviews target the statement, key arguments, and final assembly. Integrated into five proof/research skills; use it when requested or a concrete proof obligation benefits from formal verification. (#461)
  • 2026-10-05 — 🔌 New Grok and Gemini / Antigravity MCP bridges — use your existing CLI login to read files and resume conversations from Claude Code or Codex. (#454)

Earlier updates (2026-03-12 — 2026-09-28, 98 entries)

  • 2026-09-28 — 📚 Real papers stop being reported as hallucinated citations (#445, #447, #450; thanks @ilya-pershin and @AfonsoZhang). arXiv sometimes refuses Python's HTTP client with a 406 for minutes while curl gets through; verify_papers.py read that refusal as "paper not found" and one user saw a 47% hallucination rate on 38 real papers. A 406 now goes through curl, and a refusal (406 / 401 / 403) is verify_pending, never unverified. Set SEMANTIC_SCHOLAR_API_KEY and title checks use it. Seen a suspicious hallucination rate recently? Re-run with --no-cache once. Also in this round: five skills can now actually invoke the sub-skills their text tells them to (#440, @Jeremy-xuan); concurrent watchdog registrations no longer overwrite each other (#443, @hiro-nikaitou); xhigh is described as the regular reviewer tier it is (#442, @dreamworld2023).

  • 2026-09-16 — 🧩 ARIS is a Claude Code plugin now (#437, thanks @white-drizzle). claude plugin marketplace add wanshuiyin/Auto-claude-code-research-in-sleep → claude plugin install aris@aris → /aris:setup once → restart. Setup registers the Codex reviewer bridge that ships inside the plugin, so the reviewer works on codex-cli 0.154+ out of the box. Plugin skills are typed with the prefix (/aris:idea-discovery); they call each other by short name internally. Codex CLI reads the same repo as a plugin too (codex plugin marketplace add … → codex plugin add aris@aris) and gets the Codex-native mirror. Cursor, Trae and DeepSeek Harness keep their own routes.

  • 2026-09-10 — 🔌 codex-cli 0.154 removed codex mcp-server — re-register the codex MCP server. Every ARIS reviewer call went through that entry point; on 0.154+ it now opens the interactive TUI and the MCP handshake fails. ARIS ships its own stand-in, mcp-servers/codex-exec/server.py, same tool names and result shape, driving codex exec underneath — skills unchanged. Run once: git pull in your ARIS clone (older clones do not have the file), then claude mcp remove codex -s user && claude mcp add codex -s user -- python3 "$HOME/aris_repo/mcp-servers/codex-exec/server.py" (absolute path of your clone), then restart Claude Code. Step-by-step for new and existing installs in Quick Start. Works on 0.153 too, so do it before you update. OpenAI's own replacement, the Claude Code plugin, has no ultra effort and no per-thread resume, which the deep-audit skills need. Cursor / Trae / Antigravity / Copilot CLI configs: same key, python3 + that path — see the adaptation docs.

  • 2026-09-07 — 🧠 Default reviewer is now gpt-6-astra. Every reviewer call that pinned gpt-5.6-sol now pins gpt-6-astra; the two effort tiers (ultra for the seven deep audits, xhigh everywhere else) are unchanged, and so is the executor — whatever agent you run ARIS in. No access to the model yet? The capability fallback tries gpt-5.6-sol, then gpt-5.5, both at xhigh — nothing to configure.

  • 2026-09-06 — 🧹 The installer stops dropping Copilot profiles into every project (#431, thanks @oblivion-1521). Since 2026-08 every run symlinked two Copilot reviewer profiles into your .github/agents/ whether or not anything used them — dead files for Claude Code and Codex users, broken links if you committed them. Now they are deployed only while auto-review-loop is installed; --no-agent-profiles switches them off for good (undo with --agent-profiles). Your next re-run removes the links the installer created earlier; files you wrote yourself are never touched.

  • 2026-09-03 — 📣 Papers are launches, not progress reports (rules adopted from anti-defensive-writing-Skill by @Adkid-Zephyr — 🌟 it). The writing contract gains four rules: organize the narrative around the strongest genuine advantage; pick the contest the paper wins; unfavorable numbers stay in the tables, explained as a tradeoff where the evidence supports that and stated neutrally where it does not — never narrated as a defeat; every experiment carries an argumentative duty or leaves the main line; abstract and introduction open with problem → gap → idea → strongest result, and the conclusion never ends on new self-negation. /auto-paper-improvement-loop flags the same defects. Indexed under Awesome Community Skills.

  • 2026-08-26 — 🧯 Two over-defense leftovers (#425). /research-review — the one reviewer prompt that never got the scope-limits block — now carries it, and its brief ends with "if the work holds up, say so clearly" instead of bare brutality; the adversarial stance itself is untouched. /research-pipeline no longer dies overnight on a missing VENUE: ideas, experiments, analysis and the narrative report are venue-independent and run to completion — only paper formatting defers, stamped clearly for a later resume. It had also been declaring VENUE = ICLR while forbidding silent defaults; the default is gone.

  • 2026-08-26 — ✍️ Papers stop reading like confession letters (#423, #424; several rules adopted from humanize-paper). Claims are stated at the strength the evidence earns; generic caveats ("further research is needed") live in Limitations only; "don't mention X" means X is absent — never "we do not address X" in print; results are ordered by argument, not by the order experiments ran.

  • 2026-08-26 — 💡 The idea pipeline stops killing ideas for having neighbors (#419–#422; community reports). ABANDON now has to name the published paper that already contains your result, and concurrent work is a race — your call, not a veto. Brainstorming runs two generator models (gpt-5.6-sol + gpt-5.5) and unions their ideas, aiming for creative direct attacks instead of corner-case stacks. Search digs as hard as ever.

  • 2026-08-21 — 🔌 Optional HTTP reviewer fallback for when Codex MCP is unreachable (#413; by @TheFlashForge). Off by default; fires only when Codex provably never got the request — a timeout doesn't count, that could pay twice for two conflicting verdicts. The fallback reads your actual files and gets less trust than Codex, never more.

  • 2026-08-21 — 🧹 Four community fixes in one day (#406–#410; by @ZLZLGe and @JasmineLCY). AUTO_PROCEED=true now actually continues on its own; the idea-discovery gate demands a real reviewer receipt, not a checkbox; cached wiki context is scanned right before /idea-creator reads it; Codex users with Claude as reviewer get their three paper skills back.

  • 2026-08-09 — 🦆 Copilot CLI defaults /auto-review-loop to its native rubber-duck reviewer (#360, closes #258). Active only inside Copilot CLI sessions; review evidence is revalidated from host events, and same/unknown-family fails closed. The standard Claude Code + Codex setup is untouched.

  • 2026-08-09 — 🚧 /idea-discovery can no longer silently skip a stage (#383, closes #285; by @3mom3). Each of the five stages needs recorded evidence, or the report says BLOCKED instead of looking complete.

  • 2026-08-05 — 🈶 The research wiki handles non-ASCII (#386, #387; reported by @LIMMIL7). cp936-written wikis were unreadable on other machines, and Chinese-only titles collapsed to <year>_untitled and got deduped away. Existing UTF-8 wikis unaffected.

  • 2026-08-04 — 🖼️ Upstream spotlight: posterly — the engine behind /paper-poster-html — shipped a major design upgrade (MIT, by @Chenruishuo; ~50 posters at this year's ICML). GitHub · Blog.

  • 2026-08-03 — 🧭 /proof-orchestrator — Workflow 7: proof campaigns with a memory (#381; by @shenmuxing, from their EtaSkill). Stateful local-first proof runs that continue across sessions, with a ready-to-paste GPT Pro handoff when a proof stalls. /proof-checker remains the submission gate.

  • 2026-07-15 — 🔗 Double-blind citation field audit (#371). New /citation-crosscheck: two agents work blind — one reads each cited entry from the local .bib, one re-fetches it from the web — and a deterministic gate diffs them field by field (author set+order, year, venue, arXiv-id/DOI), emitting a side-by-side .xlsx with MATCH/MINOR/MISMATCH. Complements /citation-audit (context-fit); this owns field accuracy.

  • 2026-07-14 — 🐞 /web-debug-search (Issue #211). Adds a focused debugging/discovery workflow for GitHub Issues and Discussions: exact and normalized error-string matching, version compatibility tracking, and explicit failure handling. Results are labeled for debugging only and are not paper-citation evidence.

  • 2026-07-14 — 🧩 Selective install + global helper pointer (#366). The 81 skills are no longer all-or-nothing — all four installers support group/skill-level picks (--list-groups, --groups X,Y, --skills X, --exclude Y, or a bare-TTY checkbox picker), with hard pipeline deps auto-included. Updates now confirm each NEW upstream skill individually (--add-new / --skip-new for scripting; declines are remembered and never re-asked). Also fixes copy installs (~/.claude/skills) losing helper-script resolution, via a new ~/.aris/repo pointer file. ⚠️ Backward compatible — --quiet fresh installs still install everything; run any installer/updater once to pick up the pointer file. Selective install →

  • 2026-07-12 — 🛡️ Your paper now gets the reviewer-side forensics treatment before you submit (#357). New /integrity-forensics skill: a SHA-pinned thin launcher runs Anti-Autoresearch's hostile-reviewer sweep (evidence ledger, nine auditor dimensions, numeric core, rules-only adjudicator) on your paper first. The verdict feeds a typed gate — flags can block a submission, a clean sweep is recorded as "no new blocker" (never an acquittal) — and findings close only with typed, hashed evidence or a recorded human waiver (rewording the flagged sentence doesn't count; the ledger notices). /paper-writing runs it by default at submission assurance (— self_forensics: false opts out; the Codex mirror is opt-in and limited to upstream's deterministic slice, which can flag but never say CLEAN). ⚠️ First run clones and validates the pinned upstream (needs network); run bash tools/smart_update.sh --apply.

  • 2026-07-10 — 🧠 Reviewer default is now GPT-5.6-Sol; deep audits think at the new ultra level (#354). codex-cli 0.144.1 added max/ultra reasoning above xhigh; ARIS reviews now default to gpt-5.6-sol, with the seven heavyweight verdicts (/proof-checker, /kill-argument, /research-review, /experiment-audit, /paper-claim-audit, /result-to-claim, /meta-apply) at ultra and everything else at xhigh. Older codex-cli or no model access steps down automatically (5.6-sol → 5.5, both xhigh) — never below xhigh, never on a mere timeout. Also fixed: /result-to-claim now stops honestly instead of judging its own results when the reviewer is unreachable. ⚠️ Upgrade codex-cli to ≥ 0.144.1, restart the session (MCP reloads only then), and run bash tools/smart_update.sh --apply.

  • 2026-07-03 — 🧬 Three small updates adapted from Anthropic's Claude Science skills (#339, #340, #341; Apache-2.0). ARIS now has one shared way to describe GPU environments, so the same setup can be reused across SSH machines, Modal, and clusters, then checked by a fresh agent following the setup notes. We also added a small tool that tests whether a skill description actually makes the right skill get picked. Finally, figure and writing checks now separate facts from style: truth checks must pass, style advice stays optional. ⚠️ Run bash tools/smart_update.sh --apply to pull.

  • 2026-07-02 — 🔁 Ideas from Karpathy's LOOPS.md, brought into ARIS (#333–#337). Reviewers now start by looking for what may be wrong, not by giving a polite score. If a review result looks strange, ARIS points you to the saved reviewer transcript before you ask the model again. A failed build can be restarted from the plan instead of endlessly patched, while plans, logs, and results are kept. Scoring can now use real good and bad examples, /meta-optimize asks what can be removed, and /paper-writing agrees on a clear "done" checklist before drafting starts. ⚠️ Run bash tools/smart_update.sh --apply to pull.

  • 2026-06-20 — 📚 Research wiki: all four node layers now have deterministic writers — fixes "re-generated ideas not recorded" (#305, #306, #307, #308). A user hit a real bug — ideas recorded on the first /idea-creator run vanished on re-generation — because wiki pages were written freehand, a prose step the model skips on a re-prompt. Each layer now has a dedicated research_wiki.py writer joining ingest_paper: add_claim (claims born at /proof-checker), upsert_idea (/idea-creator), add_experiment (/result-to-claim) — each guarded by a drift-check so it can't silently regress to dead code. A claim's status is now a strict proof axis (verified/refuted/unproven/…) while experiment support is carried by supports/invalidates edges (closing a latent contradiction the shared validator rejected), and the Codex-CLI skill mirror is synced to match. Zero behavior change when no research-wiki/ is present.

  • 2026-06-19 — 🛰 Overnight loops can now notice when they die or get stuck (#300, #301, #302; adapted from operational patterns in Deli Chen's AutoResearch). A new watchdog checks whether an unattended loop is still updating its state file and writes an alert when it goes quiet; it only reports the problem, never restarts a verdict-bearing run. A separate iteration log watches for rounds that stop finding anything new: two empty rounds force a change of direction, four call in a human, and the cross-model jury still decides whether the result is actually good enough.

  • 2026-06-07 — 🖼️ /paper-poster-html is now the default poster pipeline; the old LaTeX /paper-poster is retired. It builds the poster as one HTML/CSS file at the venue's real print size, then runs measured layout and asset checks before a content reviewer sees it, so review time goes to the science instead of crooked columns. It also ships templates, reusable poster components, and venue token packs; the core gate machinery was adapted from posterly (MIT, by @Chenruishuo). ⚠️ /paper-poster now redirects to /paper-poster-html; the LaTeX pipeline lives only in git history.

  • 2026-05-31 — 🤝 Two community tools worth a look. Claude Fleet (@tianyilt) is a local read-only dashboard for keeping track of many Claude Code / Codex windows at once. posterly (@Chenruishuo) builds conference posters as a single HTML/CSS file and exports a print-ready PDF through headless Chromium, no LaTeX needed. Both are listed under Awesome Community. 🌟 if they help you.

  • 2026-05-31 — 🛰 Fourth reviewer backend: Gemini via Antigravity CLI (#267 by @ZGJY95). — reviewer: agy routes review through the Antigravity CLI for users without Codex MCP / Oracle — fail-closed on the cross-model invariant (recovers + verifies the real Gemini-family model, refuses non-Gemini, binds the recovered transcript to the call via a user-event nonce). Wired into reviewer-routing.md.

  • 2026-05-29 — ⚙️ ultracode-native convention layer — fan out for breadth on any runtime tier, keep the cross-model jury sacred. Three new shared-references docs decouple breadth from verdict: fan-out-pattern.md (skills generate candidates across same-family Claude subagents — Tier-1 Workflow / Tier-2 Agent / Tier-3 sequential — all ending in the identical cross-model jury), acceptance-gate.md ("a loop can DRIVE, it cannot ACQUIT" — self-judge execution-completeness, never quality/correctness), and external-cadence.md (/loop & CronCreate are fire-control, never a jury). Wired into /idea-creator, /research-lit, /proof-checker, /kill-argument (fan-out) plus 16 skills (cadence fence/affordance). Also stripped 48 vestigial Agent grants (least-privilege + a drift-check guard), fixed /idea-creator's same-family idea pre-filter, and reconciled an /auto-review-loop OR→AND stop-condition inconsistency. Non-ultracode users benefit immediately — fan-out degrades to sequential with the same final jury.

  • 2026-05-28 — 📝 First blog shipped: A Survey on Continuous DLM (2026 H1, 6 papers) — long-form bilingual technical survey by Ruofeng Yang (SJTU), written end-to-end through the ARIS-in-AI-Offer workflow (Claude Opus 4.7 + Codex GPT-5.5 xhigh + Gemini auto-gemini-3 cross-model discussion). Compares ELF, ByteDance Cola-DLM, and Flow-Matching family across discrete-DLM problems, the "known-unknown" continuous space idea, training pipeline, architecture / params / shapes, inference grids + Tab 6/7 numerical results, denoising trajectories, and a Field Landscape against Cola-DLM. A 1.7 MB self-contained HTML (no build) — demonstrates the kind of long-form analysis the /render-html toolchain can produce.

  • 2026-05-26 — 🌐 HTML auto-emission activated at 8 workflow checkpoints. /idea-discovery, /auto-review-loop, /research-pipeline, /kill-argument, /proof-checker, /paper-claim-audit, /citation-audit, /rebuttal now auto-render their primary MD artifact to a single-file HTML view via /render-html. Cost-tiered: interim views use --no-review, audit-class / reviewer-facing deliverables keep the full Codex render-fidelity gate. Default on (RENDER_HTML = true); per-skill opt-out. Failures non-blocking — source MD stays canonical.

  • 2026-05-26 — 🤝 Community PR wave — 5 merges this week. /wiki-enrich (#247 by @hungchun0201) fills paper TODOs ingest_paper leaves as scaffolds — Karpathy LLM-wiki principle, fetch chain alphaxiv→deepxiv→arXiv. Mirror drift checker + CI (#241 by @VeraPyuyi) keeps main↔mirror in sync. /research-pipeline Stage 2/3 unified into /experiment-bridge delegation (#243 by @ZBigFish) — old inline was a strict subset of the bridge. Windows PowerShell installer parity with reparse-chain inside-repo guard + -FromOld legacy migration + Windows CI matrix (#242 by @VeraPyuyi). Plus manual-review MCP (#246 by @ZBigFish) — third reviewer backend — reviewer: manual for zero-cost cross-model review (paste prompt to any non-Claude model: DeepSeek / Kimi / ChatGPT / Gemini / local llama); cross-model invariant guarded by bilingual UI banner + per-session token auth + fail-closed when MCP unavailable.

  • 2026-05-17 — 🐙 GitHub Copilot CLI adaptation — native SKILL.md + MCP support, no skill mirror needed. Installer (install_aris_copilot.sh) + smart-updater + 13-test suite. Community contribution by @EarendelH (#229, closes #214 / #227 / #203).

  • 2026-05-17 — 🛠 Tools-stability roadmap (Phase 1+2+3) complete (closes #176 / #177 / #178). Community reported that helper scripts weren't propagating into user projects after install_aris.sh. Phase 1 — every SKILL.md caller of the 10 canonical helpers now resolves via the strict-safe 3-layer chain .aris/tools/ → tools/ → $ARIS_REPO/tools/ documented in integration-contract.md §2 (which also defines 5 failure policies A/B/C/D1/D2/E). Phase 2 — new advisory CI lint catches hardcoded python3 tools/foo.py patterns in PR-modified SKILL.md (advisory only, never fails CI). Phase 3 — three single-owner helpers (figure-spec, paper-illustration-image2, experiment-queue) moved into their SKILL's scripts/ subdirectory; owner SKILLs use Layer 0 ${CLAUDE_SKILL_DIR}/scripts/ ahead of the canonical chain; legacy tools/ paths retained as os.execv Python forwarding shims. ⚠️ Existing users: no action needed — legacy tools/ entries are now shims. If you haven't run install_aris.sh since 2026-04-30, one idempotent rerun catches everything up.

  • 2026-05-14 — 🩹 /paper-plan + /paper-write learn GAP_REPORT.md + `` discipline (#217). When — style-ref: is set and the user's project has structural assets (figures/, results/, NARRATIVE_REPORT.md, etc.), /paper-plan emits a Gap Report mapping the exemplar's section topology + density (from style_profile.md) against your actual assets — surfacing slots you have no evidence to fill (e.g., "exemplar has 3×4 ablation table, you have no ablation data"). Then /paper-write writes `` HTML comments instead of fabricating content at missing slots — invisible in the compiled PDF, grep-friendly for human triage / /experiment-bridge follow-up. Narrow carve-out from the "no placeholders" rule, scoped to GAP_REPORT-listed slots only. Original idea by @zhangpelf.

  • 2026-05-14 — ⚙️ Default reviewer model: gpt-5.4 → gpt-5.5 across ~30 SKILL.md REVIEWER_MODEL defaults. Codex MCP has routed gpt-5.5 as the default since 2026-04-24; this catches the docs up to runtime. ⚠️ Behavior changes: (a) .aris/traces/* JSONs from prior runs are not reproducible — re-runs on 5.5 may emit different WARN/FAIL verdicts on borderline cases (reviewer-quality lift, not regression). (b) ChatGPT Plus/Pro monthly quotas drain faster under heavy use. Fallback: pass — reviewer-model: gpt-5.4 per invocation, or pin REVIEWER_MODEL = gpt-5.4 per skill. Oracle Pro tier (routed via — reviewer: oracle-pro) is a separate path and unaffected.

  • 2026-05-13 — 🔍 tools/verify_papers.py + Pre-Search Verification Protocol — anti-hallucination filter for literature-facing skills. New helper does 3-layer fallback verification (arXiv batch API up to 40 IDs/request → CrossRef DOI lookup → Semantic Scholar fuzzy title match, default 0.6 word-overlap) and emits 4-state per-paper status (verified / unverified / verify_pending / error) plus a top-level verdict aligning with assurance-contract.md (PASS / WARN / BLOCKED / ERROR). Transient failures (5xx, timeouts, 429) are tagged verify_pending and excluded from the hallucination rate so network blips don't get conflated with fabricated references. Per-project cache at /.aris/cache/verify_papers.json with 30-day TTL; canonical key priority arxiv:{id_without_version} → doi:{lowercase} → title:{sha1[:16]}. New Pre-Search Verification Protocol subsection in shared-references/citation-discipline.md makes the split explicit: this protocol is the fast filter between SEARCH (Step 1) and full VERIFY (Step 2); /citation-audit and /paper-claim-audit remain the submission-time audit gates and are not replaced. /research-lit gets a mandatory Step 1.5: Verify Candidate Papers calling the helper; /idea-creator and /novelty-check add a Key Rule reference for cited Closest Prior Work / landscape entries. Unverified papers are retained in output tagged [UNVERIFIED] (retention-over-silent-removal) so search-quality issues stay visible. Set ARIS_VERIFY_EMAIL in your shell to lift CrossRef to the polite-pool rate. Original signal from @YiwenZhu77 in #120 — landed via clean reimplementation rather than direct merge (PR was 5 weeks old + scope creep into figure-style).

  • 2026-05-06 — 🎤 /paper-talk workflow + /slides-polish skill — end-to-end conference talk pipeline. /paper-talk orchestrates paper → slide outline → Beamer + PPTX → per-page polish → assurance audits → final report (sister to /paper-writing, /paper-poster); composes /paper-slides, /slides-polish, plus /paper-claim-audit + /citation-audit when assurance: conference-ready. /slides-polish is the post-generation visual pass: per-page Codex review against a reference PDF + a fix-pattern catalog (PPTX font scaling 1.5-1.8× for projector-readable size, text-frame resize after font bump, banner-as-tcolorbox, italic style leak guard, em-dash spacing, Chinese EA font hint via PingFang SC, anonymity placeholder discipline). Assurance ladder draft / polished (default) / conference-ready is independent from the effort axis; effort: lite, assurance: conference-ready is legal and means "fast pipeline, every audit must emit verdict before final". Phase 4 staging adapter materializes slide text + speaker notes + talk script as a synthetic paper directory (.aris/paper-talk/audit-input/sections/*.tex + symlinked .bib / results/ / figures/) so the existing audits run with their paper-shaped contracts and emit 6-state JSON verdicts per shared-references/assurance-contract.md.

  • 2026-05-05 — 🔁 /resubmit-pipeline — Workflow 5: text-only resubmit across venues (#208). Port a polished paper from one venue to another under hard constraints (no new experiments, no bib edits, no framework changes, never overwrite prior submissions). 5 phases: physical isolation → 5-layer anonymity check → audits (proof / claim / citation --soft-only) → microedits via /auto-paper-improvement-loop --edit-whitelist with per-round diff gate → adversarial gate via /kill-argument → final compile + Overleaf push via /overleaf-sync. Two prerequisite SKILL upgrades shipped in the same PR: /auto-paper-improvement-loop --edit-whitelist (YAML schema with allowed/forbidden paths + forbidden_operations like new_cite / new_theorem_env / numerical_claim, forbidden_deletions, requires_user_approval_for, max_edits_per_round) and /citation-audit --soft-only (translates KEEP/FIX/REPLACE/REMOVE verdicts to text-rewrite proposals when bib is frozen; hallucinated citations get drop_cite_in_body_only action). Master RESUBMIT_REPORT.json ledger per shared-references/assurance-contract.md; 7-verdict failure mode table including USER_DECISION runtime state.

  • 2026-05-05 — 🗡 /kill-argument — adversarial Attack-Adjudication review for theory papers (#206). Two fresh codex 5.5 + xhigh threads: Thread 1 writes the strongest 200-word rejection memo a senior area chair would produce; Thread 2 (independent adjudicator, NOT defender) reads the current paper and classifies each rejection point as answered_by_current_text / partially_answered / still_unresolved with file:line evidence. Output: KILL_ARGUMENT.{md,json}, detect-only. Integrated as Phase 5.6 of /paper-writing (between claim-audit and citation-audit) and as the canonical implementation called from /auto-paper-improvement-loop Step 5.5 — replaces inline prompt in both places. Mandatory at assurance: submission for theory-heavy / scope-heavy papers; emits NOT_APPLICABLE for empirical papers without scope claims. Audit JSON is verify_paper_audits.sh-compatible (full schema per shared-references/assurance-contract.md, 6-state verdict). Catches the failure mode score-based reviews miss: when every local component is correct (numbers match, cites resolve, theorems prove) but the paper still oversells what it actually establishes.

  • 2026-05-04 — 🪲 /research-wiki and 8 caller skills now resolve helper via fallback chain (#204). Bug: after bash tools/install_aris.sh the helper lives at .aris/tools/research_wiki.py (symlink), but skills hard-coded tools/research_wiki.py and silently failed when invoked — research-wiki/ stayed empty across full W1 runs. Fix: 3-layer chain (.aris/tools/ → tools/ → $ARIS_REPO/tools/) codified in shared-references/wiki-helper-resolution.md. The manual-copy workaround at /tools/research_wiki.py is layer 2, so users who cp-installed the helper as a temporary fix continue to work. ⚠️ Existing users: rerun bash tools/install_aris.sh once — also picks up a separate Python 3.9 ImportError fix in the helper.

  • 2026-05-03 — 🎨 Opt-in — style-ref: for writer-side skills (#202). /paper-{plan,write,writing,illustration,poster,slides}, /grant-proposal, and /auto-paper-improvement-loop accept an optional — style-ref: argument that mimics a reference paper's structural style (section ordering, theorem/figure density, sentence cadence, citation style) without copying its prose, claims, or terminology. Sources: local .tex dir/file, local PDF, arXiv id (2501.12345 or arxiv:2501.12345), HTTP/HTTPS URL. Overleaf URLs/IDs are rejected — clone via /overleaf-sync setup first. Default OFF; existing behavior unchanged when the flag is absent. Reviewer / auditor sub-skills (/proof-checker, /paper-claim-audit, /citation-audit, the improvement-loop reviewer) never see the style ref — cross-model review independence preserved. ⚠️ Existing ARIS users: the helper ships at tools/extract_paper_style.py, distributed via the .aris/tools symlink (install_aris.sh Phase 0, added in #192). Re-run bash tools/install_aris.sh once to refresh the symlink and pick up the helper. Manual fallback: cp <ARIS-repo>/tools/extract_paper_style.py <your-project>/tools/. Without either, the writer skill aborts with a clear error pointing here.

  • 2026-05-02 — 🪨 Community spotlight: rosetta by @SyntaxSmith. Programmatic access to ChatGPT Pro / gpt-5.5-pro / DeepResearch from Node, via Chrome CDP Fetch interception + WebSocket second-leg streaming; ships an MCP server for Claude Code / Codex / Cline. Alternative implementation path to Oracle MCP for ARIS users invoking — reviewer: oracle-pro — same target capability (Pro-tier reviewer), different mechanics. Indexed under Awesome Community Skills & Extensions. 🌟 if you're using it!

  • 2026-05-02 — 💎🧿 Model & MCP routing updates. (a) /gemini-search default bumped to gemini-3-pro-preview (strongest Gemini, out-of-box). ⚠️ Action required: requires gemini-cli v0.40+ (run gemini --version; upgrade with npm i @google/gemini-cli if older). Legacy override: /gemini-search "topic" — model: gemini-2.5-pro. Other overrides: gemini-3-flash-preview (faster), auto-gemini-3 (load-routed). (b) /idea-discovery Phase 1 now includes Gemini in its literature survey by default (#199) — auto-injects — sources: all, gemini into /research-lit unless the user passed an explicit — sources:; graceful skip if gemini-cli not installed. (c) Oracle MCP upstream PR queue (steipete/oracle/pulls) is the first triage stop when invoking — reviewer: oracle-pro (especially o3-deep-research / gpt-5.5-pro) — ARIS does not vendor Oracle MCP; check upstream first if behavior surprises you (reviewer-routing.md)

  • 2026-05-02 — 🛠️🔗 Tools-infrastructure migration started. (a) install_aris.sh creates optional .aris/tools symlink (#192, closes #174) — Phase 0 of the 4-step tools-stability plan (#174 → #176 → #177 → #178); idempotent, zero impact until rerun. (b) /experiment-queue orchestration paths repaired (#193) — first real user of the symlink; 7 cascading bugs fixed via 3 rounds of Codex MCP gpt-5.5 xhigh audit. Pure prose + docstring; queue_manager.py logic untouched. Windows install_aris.ps1 parallel update tracked as follow-up

  • 2026-05-02 — 🔬 Three new opt-in audit flags via fast-path delegated-agent workflow (#187, #188, #189). /citation-audit --uncited surfaces bib entries with no \cite{} reference (detect-only). /proof-checker --deep-fix adds a repair-grade plan to the Phase 1 reviewer prompt (corrected statement / patch plan / closure tests + Schur/quadratic-form algebra sanity). /proof-checker --restatement-check adds Phase 3.6 cross-location theorem drift detection (6 drift signatures). Zero behavior change when flags unset. Plus doc PRs #190 (thread-policy) + #191 (auto-loop xref). Delegated-agent + maintainer-fixup pattern; Codex MCP gpt-5.5 xhigh review caught 6+ blockers

  • 2026-05-01 — 🔍 Gemini + OpenAlex literature sources for /research-lit (#175, community contribution by @stdAri). Two opt-in sources: /gemini-search (AI-driven discovery via jamubc/gemini-mcp-tool MCP) and /openalex (250M+ work open citation graph, no API key). Triggered via — sources: gemini or — sources: openalex; zero behavior change when default all (both excluded). Maintainer fixups: corrected @google/gemini-cli npm name; added try/except ImportError + bash preflight for graceful OpenAlex skip when requests missing

  • 2026-04-30 — 📝 /rebuttal per-reviewer thread mode + transferable patterns (SKILL.md). Adds VENUE_MODE (single_document | per_reviewer_thread) for OpenReview-style venues, reviewer_priority: pivotal routing, structural_distinction response mode, 5 reviewer-defensive heuristics, 2 Phase 5 lints, and severity-scaled stress rounds. Default VENUE_MODE = single_document keeps ICML-style behavior — zero change for existing users. Three rounds of cross-model review before/after merge

  • 2026-04-30 — 🪞 Codex skill mirror rebuilt + dedicated install/update chain (#179, community contribution by @No-518). skills/skills-codex/ now mirrors all 67 mainline skills; replaces mcp__codex__codex reviewer path with Codex-native spawn_agent + send_input. New tools/install_aris_codex.sh + tools/smart_update_codex.sh handle project-local symlinks with manifest tracking. Anti-drift: tests/test_codex_skill_mirror.py + tests/test_codex_install_update.py (26 failure paths). Open discussion in #184

  • 2026-04-24 — 🎨 /paper-illustration-image2 — Codex-native image generation as Phase 2b illustration backend (#166, community contribution by @kbr19-thu 清华). Uses ChatGPT Plus/Pro quota via local Codex app-server MCP bridge — no GEMINI_API_KEY required. Triggered by /paper-writing — illustration: codex-image2; default stays figurespec (zero behavior change). Async-only API, sandboxed writes to figures/ai_generated/, integration-contract-compliant helper. Marked experimental (Codex debug app-server is unstable upstream)

  • 2026-04-21 — 📚 Research Wiki ingest actually works now (research_wiki.py, /research-wiki). Fixes user-reported bug where /research-wiki init left papers/ empty forever (ingest subcommand had no implementation; paper-reading skills had no wiki hook). New canonical python3 tools/research_wiki.py ingest_paper helper owns slugging / metadata fetch / dedup / page render; all 6 paper-reading skills wired to it. Manual backfill via sync --arxiv-ids or sync --from-file. Ships with integration-contract.md formalizing the six-component pattern every cross-skill integration must follow

  • 2026-04-21 — 🛡️ Assurance Gate: — effort: beast | max now really runs mandatory audits (assurance-contract.md, tools/verify_paper_audits.sh). Fixes silent-skip of /proof-checker / /paper-claim-audit / /citation-audit at high effort. New assurance axis (draft | submission) independent from effort: lite / balanced → draft (zero behavior change), max / beast → submission. At submission the 3 audits emit a JSON artifact with 6-state verdict; paper-writing Phase 6 runs the external verifier as source of truth (non-zero exit blocks Final Report). SHA256 input hashing catches stale audits. Escape hatch: — effort: beast, assurance: draft

  • 2026-04-20 — 🩹 Project install: flat layout + manifest tracking — fixes a real bug where the previous nested install (.claude/skills/aris/) hid skills from Claude Code's slash-command discovery (CC only scans one directory level). Anyone who ran install_aris.sh before this date was silently affected. New install_aris.sh creates one symlink per skill at .claude/skills/<name>, writes a versioned manifest to .aris/installed-skills.txt, and is re-runnable to reconcile new/removed upstream skills. Defense-in-depth: 13 safety rules (no-symlinked-parents, exact-target revalidation, slug regex, atomic same-dir manifest rename, no-overwrite-real-files, mkdir-based portable lock, ADOPT for crash recovery, …). Granular --adopt-existing / --replace-link flags replace the all-or-nothing --force. Migration paths: --from-old for legacy nested symlink, --migrate-copy keep-user|prefer-upstream for legacy nested copy. smart_update.sh --target-subdir .claude/skills/aris is now deprecated with a redirect to install_aris.sh. Stale-file bug in cp -r overlay also fixed (now rm -rf && cp -r for safe-update path)

  • 2026-04-19 — 🔗 /overleaf-sync — two-way bridge between local ARIS paper directory and an Overleaf project via the official Overleaf Git bridge (Premium). Lets collaborators keep editing in the Overleaf web UI while ARIS audit/edit pipelines (/paper-claim-audit, /citation-audit, /auto-paper-improvement-loop) keep running locally. Sub-commands: setup (one-time, user-driven so the agent never sees the token) / pull (with diff-protocol — flags half-sentences, typos, claim/cite changes that should re-trigger audits) / push (with confirmation gate before writing to shared Overleaf state) / status (3-way divergence check). Token never touches the agent or any file — primed once into macOS Keychain via the user's terminal, then auth-free for all subsequent agent operations

  • 2026-04-19 — 📚 /citation-audit — fourth and final layer of the evidence-and-claim assurance stack (experiment-audit → result-to-claim → paper-claim-audit → citation-audit). Fresh cross-family reviewer (gpt-5.4 via Codex MCP) with web/DBLP/arXiv lookup verifies every \cite{...} along three independent axes: existence (paper resolves at claimed arXiv ID/DOI/venue), metadata correctness (authors/year/venue/title match canonical sources), and context appropriateness (the cited paper actually establishes the claim it supports — the most diagnostic check). Per-entry verdicts: KEEP / FIX / REPLACE / REMOVE. Auto-integrated into Workflow 3 Phase 5.8 as the pre-submission bibliography gate. Empirical motivation: in a real submission run, several real papers were cited in contexts they did not actually support, and at least one entry shipped with author = "Anonymous" — none caught by metadata-only checks

  • 2026-04-17 — 🔀 /experiment-queue integrated into Workflow 1.5 + research-pipeline — experiment-bridge Phase 4 Deploy now auto-routes by milestone job count: ≤5 jobs → /run-experiment, ≥10 jobs or phase dependencies → /experiment-queue (with OOM retry, stale-screen cleanup, wave-transition gating, crash-safe state). New --- batch: queue override for global force-queue mode. Large multi-seed sweeps from EXPERIMENT_PLAN.md (e.g., 36-cell N × seed × n_train grids) now get proper orchestration without manual queue invocation

  • 2026-04-17 — 🔗 Project-local symlink install (resolves #118) — new recommended default install. bash tools/install_aris.sh auto-detects platform (Claude Code / Codex CLI), creates .claude/skills/aris or .agents/skills/aris symlink to the ARIS repo, adds a managed `` block to CLAUDE.md / AGENTS.md telling the agent to use only project-local skills, and records install metadata in .aris/skill-source.txt. Solves the skill collision problem when ARIS is mixed with Superpowers / OpenHands / other community packs in the same global skill directory. PowerShell version (install_aris.ps1) ships with junction support for Windows. smart_update.sh --target-subdir flag added for .agents/skills/aris (Codex) project-copy installs; symlinked installs now correctly refuse smart_update and direct users to git pull. Global install remains supported for power users

  • 2026-04-16 — 🎨 /figure-spec — deterministic JSON→SVG renderer packaged as a first-class skill. Preferred default for architecture/workflow/pipeline/audit-cascade figures in papers. Shape-aware edge clipping (rect/circle/ellipse/diamond), self-loops, curved edges, multi-line labels with CJK width estimation. Editable vector output, reproducible (same spec → same SVG), no external API. Phase 2b in Workflow 3 restored: illustration: figurespec (new default) / gemini / mermaid / false — 4-way illustration selector with complementary strengths

  • 2026-04-16 — ⚙️ /experiment-queue — SSH job queue for multi-seed/multi-config ML experiments. Designed from real 36-cell NeurIPS sweep pain points: OOM-aware retry with backoff, stale-screen cleanup, wave-transition race prevention, teacher→student phase dependencies, crash-safe scheduler that resumes from JSON state. Declarative grid specs expand automatically (e.g., N × seed × n_train → 36 jobs). Configurable conda_hook + gpu_free_threshold_mib for non-standard environments. Use for ≥10 jobs; /run-experiment stays for ad-hoc

  • 2026-04-15 — 🛡️ Paper Writing Pipeline Hardening — 10 empirically-motivated patches from a real NeurIPS run. REVIEWER_BIAS_GUARD=true: every review round uses a fresh thread (codex-reply inflated 3→8/10). Reviewer Independence Protocol: no fix summaries to reviewer. Step 4.5 Restatement Regression Test: catches theorem drift across fix rounds. Step 5.5 Kill Argument Exercise: final-round adversarial attack/defense for theory papers. Location-aware overfull blocking. Theory Paper Consistency Pass in /paper-write. Enforced Bib Hygiene with DBLP/CrossRef validation. Phase 5.5 Mandatory Final Claim Audit as submission gate. Review Tracing Protocol: full prompt/response pairs saved to .aris/traces/ for reviewer-independence audit (review-tracing.md, save_trace.sh). Inspired by community contribution from @李傲龍

  • 2026-04-15 — 🎨 FigureSpec Renderer v2 — deterministic JSON→SVG figure generation for academic papers. Shape-aware edge clipping (rect/circle/ellipse/diamond), self-loops, curved edges, multi-line labels with CJK width estimation, comprehensive validation (type checks, structure, palette). Went through 5 rounds of Codex review (3/10→7/10). All architecture and workflow diagrams in the ARIS tech report were generated with this pipeline. New --- mode: vector for /paper-illustration skill

  • 2026-04-14 — 📋 /paper-claim-audit — zero-context paper-to-evidence verification. Fresh reviewer with NO prior context compares every number in the paper against raw result files. Catches rounding inflation, best-seed cherry-pick, config mismatch, delta errors, scope overclaim. Auto-integrated into Workflow 3 (Phase 4.7). Completes the 3-layer audit chain: /experiment-audit (code) → /result-to-claim (science) → /paper-claim-audit (reporting). 👁️ Visual PDF review also added to improvement loop — reviewer now sees compiled PDF, not just LaTeX source. Inspired by Hermes Agent

  • 2026-04-13 — 🧿 GPT-5.4 Pro via Oracle — — reviewer: oracle-pro on any skill for the strongest available reviewer. API mode (fast) or browser mode (free). Supported on: /research-review, /auto-review-loop, /experiment-audit, /proof-checker, /rebuttal, /idea-creator, /research-lit. Default stays Codex xhigh. Not installed = zero impact. Setup →

  • 2026-04-13 — 🔬 /proof-checker — rigorous mathematical proof verification via cross-model review. 20-category issue taxonomy, two-axis severity, side-condition checklists (DCT/MCT/Fubini/IFT/...), counterexample red team, proof-obligation ledger. Auto-integrated into Workflow 3: detects \begin{theorem} and runs before improvement loop. Complements /proof-writer

  • 2026-04-10 — ⚡ Effort Levels — — effort: lite | balanced | max | beast. Controls work intensity across all skills: papers found, ideas generated, review rounds, writing depth. Codex reasoning stays xhigh always. beast = every knob to maximum for top-venue sprints. Default balanced = zero change for existing users. Details →

  • 2026-04-10 — 🔎 DeepXiv integration — progressive paper retrieval via DeepXiv CLI. Opt-in: — sources: deepxiv or — sources: all, deepxiv. Staged reading: search → brief → head → section. pip install deepxiv-sdk to enable. Community contribution by @DreamEnding

  • 2026-04-10 — 🛡️ /experiment-audit — cross-model experiment integrity verification. GPT-5.4 reads your eval scripts and results directly, checks for fake ground truth, self-normalized scores, phantom results, and scope inflation (#131, #57). Advisory — warns loudly, never blocks. /result-to-claim auto-reads audit if present. New experiment-integrity.md shared reference. The executor must never judge its own integrity.

  • 2026-04-10 — 🧠 tools/smart_update.sh — intelligent skill updater. Compares local vs upstream, detects personal customizations (server paths, API keys), only updates safe skills. bash tools/smart_update.sh --apply

  • 2026-04-10 — 🏆 Community paper: UAV-CC — first community paper with full PDF archived. UAV change captioning benchmark for IEEE TGRS by @wxx827. Stack: Claude Opus 4.6 + Codex 5.4 xhigh + Cursor. Papers now archived in community_papers/

  • 2026-04-08 — 📚 /research-wiki — persistent research knowledge base inspired by Karpathy's LLM Wiki. Accumulates papers, ideas, experiments, and claims across the entire research lifecycle with typed relationships. Wiki-aware hooks in /research-lit (ingest papers), /idea-creator (read wiki + write ideas back), and /result-to-claim (update claim status + trigger re-ideation). Failed ideas become anti-repetition memory. ARIS now learns from its mistakes.

  • 2026-04-05 — 🧬 /meta-optimize — outer-loop harness optimization for ARIS. Passively logs skill invocations, tool calls, failures, and parameter overrides via Claude Code hooks. Run /meta-optimize to analyze accumulated usage data and propose SKILL.md improvements — reviewer-gated, user-approved. Inspired by Meta-Harness (Lee et al., 2026). ARIS now optimizes itself.

  • 2026-04-04 — 🔧 Codex Plugin deep integration — /codex:rescue now auto-invoked when experiments fail (Workflow 1.5) or LaTeX won't compile (Workflow 3). GPT independently diagnoses the bug before Claude retries — two AI debuggers are better than one. Optional: codex exec powers nightmare review, /codex:rescue powers auto-debug. Setup →

  • 2026-04-03 — ☁️ Modal serverless GPU — no GPU? gpu: modal in CLAUDE.md, one command (modal run launcher.py), no SSH, no Docker, auto scale-to-zero. $30/month free tier — enough to try ARIS experiments without any hardware. pip install modal && modal setup and go. Community contribution by @zeyuzhangzyz

  • 2026-04-03 — 🎮 Reviewer Difficulty Levels — medium (default, unchanged), hard (reviewer memory + debate protocol), nightmare (GPT reads repo directly via codex exec — Claude can't hide anything). — difficulty: nightmare for maximum stress test before submission

  • 2026-03-30 — 🔥 Auto-debug & exhaust-before-surrender — experiment-bridge auto-diagnoses failures (OOM, import, CUDA, NaN) and retries up to 3×. Inspired by PUA

  • 2026-03-30 — ☁️ Vast.ai GPU rental — gpu: vast auto-rents cheapest GPU. By @YIHONG-JIN. 🔧 MiniMax M2.7 upgrade by @octo-patch

  • 2026-03-27 — 📄 IEEE venue support (9 families). 🔎 Semantic Scholar. By @ypd666

  • 2026-03-26 — 📄 Document-based input — RESEARCH_BRIEF.md auto-detect

  • 2026-03-24 — 📝 Workflow 4: /rebuttal — 7-phase pipeline, 3 safety gates

  • 2026-03-23 — 🔧 /training-check, /result-to-claim, /ablation-planner integrated. 📦 compact mode. By @JingxuanKang & @couragec

  • 2026-03-22 — 📋 Templates — input templates for every workflow. 📄 7 venue templates — CVPR, ACL, AAAI, ACM MM added. 🛡️ Anti-hallucination fix — Workflow 2 enforces DBLP → CrossRef → [VERIFY]. 🔗 base repo — clone a GitHub repo as base codebase (— base repo: https://github.com/org/project)

  • 2026-03-22 — 🔍 Codex + Gemini review guide — Codex executes, Gemini reviews via local gemini-review MCP bridge. CN

  • 2026-03-20 — 🚀 Antigravity adaptation guide — use ARIS skills in Google Antigravity (agent-first IDE). Community contribution by @PeppaPigw

  • 2026-03-20 — 🖥️ Trae adaptation guide — use ARIS skills in Trae (ByteDance AI IDE). Community contribution by @Prometheus-cotigo. 🔢 formula-derivation — Community contribution by @Falling-Flower

  • 2026-03-19 — 🖼️ paper-poster — Conference poster. Community contribution by @dengzhe-hou

  • 2026-03-19 — 🔗 Workflow 1.5 upgraded — /experiment-bridge GPT-5.4 code review. 📊 W&B fix

  • 2026-03-18 — 🎤 paper-slides + 🔁 Codex+Claude bridge + 🖱️ Cursor guide + 🤖 Codex CLI skills + 📝 grant-proposal + 🎨 paper-illustration (Gemini) + 📊 CitationClaw

  • 2026-03-17 — 🔧 Git code sync + 🆓 ModelScope guide + parameter pass-through

  • 2026-03-16 — 🔬 research-refine + experiment-plan — turn vague ideas into problem-anchored proposals with claim-driven experiment roadmaps. Now integrated into Workflow 1 (/idea-discovery). Community contribution by @zjYao36

  • 2026-03-16 — 🇨🇳 Alibaba Coding Plan guide — one API key, 4 models (Kimi-K2.5 + Qwen3.5+ + GLM-5 + MiniMax-M2.7), dual-endpoint setup. Community contribution by @tianhao909

  • 2026-03-15 — 🔀 Bring your own model! Any OpenAI-compatible API now works as reviewer via llm-chat MCP server. GLM, MiniMax, Kimi, LongCat, DeepSeek all tested — zero Claude or OpenAI API needed

  • 2026-03-15 — 🐾 OpenClaw adaptation guide — use ARIS research workflows in OpenClaw without Claude Code slash skills

  • 2026-03-15 — 📐 proof-writer — community skill for rigorous theorem proof drafting. 📚 Anti-hallucination citations — /paper-write now fetches real BibTeX from DBLP/CrossRef instead of LLM-generated entries — on by default, zero install

  • 2026-03-14 — 📱 Feishu/Lark integration: three modes (off/push/interactive), mobile notifications for experiments, reviews, and checkpoints

  • 2026-03-13 — 🛑 Human-in-the-loop: configurable AUTO_PROCEED checkpoints across all workflows. Full autopilot or step-by-step approval

  • 2026-03-12 — 🔗 Zotero + Obsidian + local PDFs + arXiv/Scholar: multi-source literature search with cross-model novelty verification

  • 2026-03-12 — 🚀 Three end-to-end workflows complete: one prompt → top-venue-style paper. /research-pipeline chains idea discovery → auto review → paper writing autonomously

  • 2026-03-12 — 📝 /paper-writing workflow: narrative report → structured outline → figures → LaTeX → compiled PDF → 2-round auto-improvement (4/10 → 8.5/10)


3. 🚀 Quick Start

text
/* Detailed source-code truncated for AI context efficiency. */

Don't need all 85 skills? See Selective install below for group/skill-level picks.

Optional Grok CLI bridge: grok-exec exposes grok / grok-reply using your existing Grok CLI login, with grok-4.7 + xhigh defaults, persistent sessions, progress and cancellation. It is a separate MCP service; installing it does not change the reviewer routing of existing skills.

Selectable CLI reviewers: antigravity-exec and grok-exec support the complete packs through — reviewer: antigravity / grok; see the backend contract. The legacy — reviewer: agy still uses gemini-review.

📚 Research Wiki (optional) — one-line init for persistent memory across sessions; see full Research Wiki section

Give ARIS persistent memory across sessions. Papers, ideas, failed experiments — nothing is forgotten:

bash
# In Claude Code:
> /research-wiki init                         # creates research-wiki/ in your project
# That's it. From now on, /research-lit auto-ingests papers, /idea-creator reads
# the wiki before brainstorming (and writes ideas back), /result-to-claim updates
# claim status. Failed ideas become anti-repetition memory for future ideation.

🧬 Meta-Optimization (optional) — passive usage logging + /meta-optimize for data-driven SKILL.md improvements; see full Workflow M section

Run these in your normal terminal (not inside Claude Code) to enable passive usage logging:

bash
# One-time setup in your project directory
mkdir -p .claude .aris/meta tools/meta_opt
cp Auto-claude-code-research-in-sleep/templates/claude-hooks/meta_logging.json .claude/settings.json
cp Auto-claude-code-research-in-sleep/tools/meta_opt/*.sh tools/meta_opt/
chmod +x tools/meta_opt/*.sh
# Then start Claude Code — hooks are active immediately
claude

Events are logged to both project-level (.aris/meta/events.jsonl) and global (~/.aris/meta/events.jsonl) logs. After 5+ workflow runs, run /meta-optimize to see data-driven improvement proposals. Use /meta-optimize --global to analyze trends across all your projects.

📝 Templates + 🔎 DeepXiv + 🔎 Exa + 🗑️ Uninstall — input templates, two extra literature sources, and the uninstall command

📝 Templates available! See templates/ for ready-to-use input templates for every workflow — research brief (Workflow 1), experiment plan (Workflow 1.5), narrative report (Workflow 3), paper plan (Workflow 3).

🔎 Optional: DeepXiv progressive retrieval

bash
pip install deepxiv-sdk

Then use /deepxiv directly or opt into it from /research-lit with — sources: deepxiv or — sources: all, deepxiv.

🔎 Optional: Exa AI-powered web search

bash
pip install exa-py
export EXA_API_KEY=your-key-here

Then use /exa-search directly or opt into it from /research-lit with — sources: exa or — sources: all, exa. Covers blogs, docs, news, and research papers with built-in content extraction.

🗑️ Uninstall: To remove ARIS skills without affecting your own personal skills:

bash
cd Auto-claude-code-research-in-sleep && ls skills/ | xargs -I{} rm -rf ~/.claude/skills/{}

Show all 16 inline parameters and 14 override examples — AUTO_PROCEED / sources / arxiv download / DBLP_BIBTEX / code review / wandb / illustration / venue / base repo / gpu / compact / ref paper / effort / reviewer / difficulty (full per-skill defaults live in § Customization)

All pipeline behaviors are configurable via inline overrides — append — key: value to any command:

Parameter Default What it does
AUTO_PROCEED true At selection checkpoints, report the top idea and continue in the same turn. Set false to ask for explicit approval before committing GPU time
human checkpoint false Pause after each review round so you can read the score, give custom modification instructions, skip specific fixes, or stop early
sources all Which literature sources to search: zotero, obsidian, local, web, semantic-scholar, deepxiv, exa, gemini, openalex, or all. Note: semantic-scholar, deepxiv, exa, gemini, and openalex must be explicitly listed — not included in all
arxiv download false Download top relevant arXiv PDFs during literature survey. When false, only fetches metadata (title, abstract, authors)
DBLP_BIBTEX true Fetch real BibTeX from DBLP/CrossRef instead of LLM-generated entries. Eliminates hallucinated citations. Zero install
code review true GPT-6-Astra xhigh reviews experiment code before GPU deployment. Set false to skip
wandb false Auto-add W&B logging to experiment scripts. Set true + configure wandb_project in CLAUDE.md. /monitor-experiment pulls training curves from W&B
illustration gemini AI illustration in Workflow 3: gemini (default, needs GEMINI_API_KEY), mermaid (free), or false (skip)
venue ICLR Target venue: ICLR, NeurIPS, ICML, CVPR, ACL, AAAI, ACM. Determines LaTeX style file and page limit
base repo false GitHub repo URL to clone as base codebase (e.g., — base repo: https://github.com/org/project). No code? Build on top of an open-source project
gpu local GPU target: local (default), remote (SSH server), or vast (rent on-demand from Vast.ai — auto-provision, auto-destroy)
compact false Generate compact summary files (IDEA_CANDIDATES.md, findings.md, EXPERIMENT_LOG.md) for short-context models and session recovery
ref paper false Reference paper to build on (PDF path or arXiv URL). Summarized first, then ideas extend/improve it. Combine with base repo for paper+code workflows
effort balanced Work intensity: lite (0.4x tokens), balanced (default), max (2.5x), beast (5-8x). Controls breadth/depth/iterations. Codex reasoning never drops below the tier floor (regular xhigh / deep audits ultra). See Effort Levels
reviewer auto Reviewer backend: in Copilot CLI, /auto-review-loop auto-binds the native complementary rubber-duck; other hosts/skills default to codex (GPT-6-Astra, tiered xhigh/ultra). Explicit codex, manual, or oracle-pro overrides remain available.
difficulty medium Reviewer adversarial level: medium (default), hard (+ memory + debate), nightmare (+ GPT reads repo via codex exec)
text
/* Detailed source-code truncated for AI context efficiency. */

Sandbox behavior and strict mode — control whether tool-call overrides may change the configured sandbox policy

The runtime's sandbox settings provide a configured baseline, while a tool request may also carry sandbox-related overrides. In the legacy compatibility mode, the effective request can therefore differ from the values written in settings.json.

To make the configured policy authoritative, enable strictMode:

json
{
  "sandbox": {
    "enabled": true,
    "strictMode": true
  }
}

With strictMode: true, the runtime ignores these LLM-supplied overrides: dangerouslyDisableSandbox, namespaceRestrictions, isolateNetwork, filesystemMode, and allowedMounts. The configured sandbox policy remains in effect even when a tool call requests a different value. This is opt-in so existing configurations keep their legacy behavior by default.

Run aris doctor to inspect the currently reported sandbox state. strictMode controls whether tool requests can override the runtime configuration; it does not replace the host operating system's permissions, filesystem protections, or network policy.

Codex MCP config + alternative reviewer routing — pin the model in ~/.codex/config.toml; pointers to Codex+Claude-review, Codex+Gemini-review, and the Codex mirror install chain

Important: ARIS skills pin the reviewer explicitly (model: gpt-6-astra + a per-tier reasoning effort) in every fresh call — your ~/.codex/config.toml no longer silently decides the reviewer. Still set model = "gpt-6-astra" there (recommended): it covers codex-native/mirror sessions and anything that doesn't pin. ultra/max effort needs codex-cli ≥ 0.144.1 + a session restart.

Choose a reviewer in Codex: install the full skills/skills-codex/ pack and select — reviewer: claude-code, antigravity, or grok. See the backend contract for bridge setup and session rules.

The old Claude/Gemini partial overlays are frozen for existing installations; migrate safely to the full pack. The historical Claude and Gemini guides describe those legacy installations.

Want the Codex mirror install chain? Use tools/install_aris_codex.sh for managed project installs and tools/smart_update_codex.sh for copied Codex installs. The Claude scripts remain the mainline entry points for Claude projects.

The base Codex mirror defaults to a fresh Codex reviewer: same-family reviews remain provisional. Other routes require actual model identities and a completed, in-scope review before cross-family acceptance; a backend selection alone is insufficient. Submission and deterministic verification gates still apply.

See full setup guide for details and alternative model combinations if you don't have Claude/OpenAI API.

4. ✨ Features

ARIS chains 85 composable skills across the whole research lifecycle — literature & novelty → idea discovery → GPU experiments → autonomous review loop → paper writing → peer review — with cross-model adversarial review (Claude executes · GPT-6-Astra xhigh reviews · optional GPT-5.5 Pro via Oracle), anti-hallucination DBLP/CrossRef citations, a persistent Research Wiki, flexible model backends, human-in-the-loop checkpoints, and optional Feishu / Zotero / Obsidian / GPU integrations.

🔥 And it scales to any agent's ultracode-style deep mode — the breadth/firepower pass adapts to the runtime (Claude Code ultracode + workflows on Opus 4.8, Codex spawn_agent, or plain sequential), feeding three roles: breadth · cross-model review → accuracy · research wiki → memory. However a loop is driven, it reports to the same cross-model jury + research wiki — it can drive, never acquit.

Full feature list

  • 📊 85 composable skills — mix and match, or chain into full pipelines (/idea-discovery, /auto-review-loop, /paper-writing, /research-pipeline). See full catalog →

  • 🔍 Literature & novelty — multi-source paper search (Zotero + Obsidian + local PDFs + arXiv/Scholar) + cross-model novelty verification

  • 💡 Idea discovery — literature survey → brainstorm 8-12 ideas → novelty check → GPU pilot experiments → ranked report

  • 🔄 Auto review loop — 4-round autonomous review, 5/10 → 7.5/10 overnight with 20+ GPU experiments

  • 📝 Paper writing — narrative → outline → figures → LaTeX → PDF → auto-review (4/10 → 8.5/10), one command. Anti-hallucination citations via DBLP/CrossRef

  • 🤖 Cross-model collaboration — Claude Code executes and GPT-6-Astra reviews; in Copilot CLI, /auto-review-loop uses the native complementary rubber-duck model and verifies the actual cross-family pair from host events. Optional: — reviewer: oracle-pro → GPT-5.5 Pro via Oracle

  • 📝 Peer review — review others' papers as a conference reviewer, with structured scoring and meta-review

  • 🖥️ Review-driven experiments — when GPT-6-Astra says "run an ablation", Claude auto-writes the script, rsyncs to GPU, runs in screen, collects results, folds back into the paper. Configure server in CLAUDE.md (setup), or rent from Vast.ai with gpu: vast

  • 🔀 Flexible models — default Claude × GPT-6-Astra, also supports GLM, MiniMax, Kimi, LongCat, DeepSeek, etc. — no Claude or OpenAI API required

  • 🛑 Human-in-the-loop — configurable selection checkpoints. AUTO_PROCEED=true reports the choice and continues in the same turn; false asks for approval. Explicit Feishu interactive gates remain user-controlled

  • 📱 Feishu/Lark notifications — three modes: off (default, recommended), push-only (webhook → mobile), interactive (approve/reject in Feishu). Zero impact when off

    Preview: Push cards (group) & Interactive chat (private)

    Push Only — group chat cards (experiment done, checkpoint, error, pipeline complete):

    Interactive — private chat with Claude Code (approve/reject, custom instructions):

  • 📚 Research Wiki — persistent knowledge base across papers/ideas/experiments/claims. Failed ideas become anti-repetition memory — ARIS gets smarter every run. Inspired by Karpathy's LLM Wiki

  • 🧩 Extensible — domain-specific skills welcome! Add a SKILL.md and open a PR. See community skills like dse-loop (architecture/EDA)


ARIS ships 85+ skills across literature, ideation, experiments, audit, writing, talks, patents, and meta-utilities — the full catalog (role / category / requirements per skill) lives in docs/SKILLS_CATALOG.md to keep this README scannable.

Start here — common entry points (use case → skill)

Use case Start here
End-to-end research (idea → paper) /research-pipeline
Idea discovery + method refinement /idea-discovery
Run experiments from a plan /experiment-bridge
Auto review → fix → re-review /auto-review-loop
Narrative → polished PDF /paper-writing
Reply to peer reviews /rebuttal
Port a paper to a new venue /resubmit-pipeline
Paper → conference talk /paper-talk
Persistent research memory /research-wiki
Patent drafting (CN / US / EP) /patent-pipeline
ARIS optimizes itself /meta-optimize

→ Browse all 85 skills by category in the full catalog →


5. 📈 Score Progression (Real Run)

A real overnight 4-round run on an ML research project — the AI reviewer's score climbed 5.0/10 (borderline reject) → 7.5/10 (review-ready) as the loop autonomously ran 20+ GPU experiments, rewrote the narrative framing, and killed claims that didn't hold up, all without human intervention.

Round-by-round breakdown

Round Score What Happened
Initial 5.0/10 Borderline reject
Round 1 6.5/10 Added standard metrics, discovered metric decoupling
Round 2 6.8/10 Key claim failed to reproduce, pivoted narrative
Round 3 7.0/10 Large seed study killed main improvement claim
Round 4 7.5/10 ✅ Diagnostic evidence solidified, submission ready

6. 🏆 Community Showcase — Papers Built with ARIS

Real projects that used the full ARIS pipeline end-to-end. The scores listed are AI-review signals (CSPaper / Stanford Agentic Reviewer), not venue acceptances — and since ARIS optimizes through AI-review loops, high AI scores are an expected byproduct, not proof of acceptance (human reviewers still bring literature / venue / community judgment an AI reviewer misses). Used ARIS for a paper? Open an issue / PR to be featured!

Papers + their AI-review signals (3)

Paper AI-review signal Submission status Built by Notes
CS Paper Submission CSPaper 8/10 — AI reviewer recommendation: "Top 50% of accepted papers, clear accept" Submitted to a CS conference; awaiting official feedback @DefanXue & @Monglitay Full ARIS pipeline: idea → experiments → auto-review → paper writing. The quote is from CSPaper's simulated review, not an official venue review.
AAAI 2026 Paper Submission Stanford Agentic Reviewer 7/10 — AI reviewer recommendation: "Good paper, accept" Submitted to AAAI 2026 Main Technical; awaiting official decision @xinbo820-web Pure Codex CLI (ARIS-Codex skills). The 7/10 signal comes from an AAAI-style Stanford Agentic Reviewer run, not an official AAAI acceptance result.
UAV-CC Under review Submitted to IEEE TGRS @wxx827 UAV change captioning benchmark. Claude Opus 4.6 (executor) + Codex GPT-5.5 xhigh (reviewer) + Cursor Opus 4.6 (assist). PDF →

Reviewer screenshots

7. 🧩 Awesome Community Skills & Extensions

Domain-specific skills and external projects contributed by the community. PRs welcome — just add a skills/your-skill/SKILL.md and open a PR!

💡 How to use: Community skills are not auto-wired into core workflows. To use one, ask your executor (Claude Code / OpenClaw / etc.) to read the skill's SKILL.md, then plug it into the appropriate workflow stage based on the description below.

🎉 Community Skills (15): research-refine · experiment-plan · research-refine-pipeline · grant-proposal · paper-poster (deprecated → paper-poster-html) · paper-slides · mermaid-diagram · proof-writer · comm-lit-review · dse-loop · idea-discovery-robot · formula-derivation · paper-illustration · writing-systems-papers · skills-codex

🌐 External Projects & Docs (16): rosetta · open-source-hardening-skills · CitationClaw · auto-hparam-tuning · paper-to-course · deep-research-skills · Antigravity Adaptation Guide · OpenClaw Adaptation Guide · Cursor Adaptation Guide · Codex+Claude Review Bridge · Trae Adaptation Guide · MiniMax-AI/cli · posterly · Claude Fleet · anti-defensive-writing-Skill · OrcaReplay

🙌 Thanks to every contributor! We fold the tables below to keep the README readable — but every skill and project here is equally valued. PRs always welcome!

🎉 Community Skills (15) — click to expand

Name Domain Description Codex MCP?
🔬 research-refine General Turn a vague idea into a problem-anchored, implementation-oriented method proposal. Best inserted between /idea-discovery and /auto-review-loop Yes
🧪 experiment-plan General Turn a refined proposal into a claim-driven experiment roadmap with ablations, budgets, and run order No
🧭 research-refine-pipeline General One-shot chain: /research-refine → /experiment-plan for method refinement plus experiment planning Yes
📝 grant-proposal General Grant proposal drafting (KAKENHI/NSF/NSFC/ERC/DFG/SNSF/ARC/NWO). Chains /research-lit → /novelty-check → /research-review → /paper-illustration Yes
🎤 paper-slides General Conference talk slides (beamer → PDF + PPTX) with speaker notes, full talk script + Q&A prep. Auto slide count from talk type Yes
🖼️ paper-poster General DEPRECATED — redirect stub to the core /paper-poster-html (measurement-gated HTML/CSS pipeline); the legacy LaTeX implementation lives in git history —
📐 proof-writer ML Theory Rigorous theorem/lemma proof drafting — feasibility triage, dependency maps, honest blockage reports No
📡 comm-lit-review Communications / Wireless Domain-specific literature review — IEEE/ACM/ScienceDirect priority, venue tiering, PHY/MAC/transport/NTN taxonomy No
🏗️ dse-loop Architecture / EDA Autonomous design space exploration — iteratively run, analyze, and tune parameters (gem5, Yosys, etc.) No
🤖 idea-discovery-robot Robotics / Embodied AI Workflow 1 adaptation — grounds idea discovery in embodiment, benchmark, sim2real path, and real-robot safety constraints Yes
📐 mermaid-diagram General Mermaid diagrams (20+ types) — free alternative to paper-illustration, no API key needed No
🔢 formula-derivation General Research formula development — derivation, verification, and LaTeX formatting No
🖥️ writing-systems-papers Systems Paragraph-level blueprint for 10-12 page systems papers (OSDI/SOSP/ASPLOS/NSDI/EuroSys) — page allocation, writing patterns, self-check Yes
🎨 paper-illustration General AI-generated architecture diagrams via Gemini, built on PaperBanana. Integrated into Workflow 3 No
🤖 skills-codex General Codex CLI sync pack mirroring the main research skills (incl. result-to-claim, rebuttal, ablation-planner) + the shared-references/ support dir —

🌐 External Projects & Docs (16) — click to expand

Name Domain Description
🪨 rosetta Pro-tier ChatGPT MCP Programmatic access to ChatGPT Pro / gpt-5.5-pro / DeepResearch from Node, via Chrome CDP Fetch interception + WebSocket second-leg streaming. Ships an MCP server for Claude Code / Codex / Cline — alternative implementation path to Oracle MCP for — reviewer: oracle-pro style high-tier review. Supports multi-turn, parallel concurrency, live token deltas, 15-min idle-timeout watchdog (long Pro thinks survive). MIT, by @SyntaxSmith
📣 anti-defensive-writing-Skill Press-release writing principle "A paper is a launch, not a progress report": twelve rules against defensive writing — organize around the strongest advantage, pick the contest you win, every experiment has an argumentative duty, no self-weakening language. Skill (CN/EN) + copy-paste prompt. Four of its rules are folded into ARIS's writing contract. MIT, by @Adkid-Zephyr
🛡️ open-source-hardening-skills DevOps / OSS 10-skill pipeline to harden research code into production-ready open-source projects — audit, refactor, test, CI, docs, review
📊 CitationClaw General Citation impact analysis — input paper title → citation crawling, scholar identification, tiered analysis, HTML dashboard
🚀 Antigravity Adaptation Guide General Use ARIS skills in Google Antigravity — native SKILL.md support, dual model (Claude Opus 4.6 / Gemini 3.1 Pro), MCP setup, EN + CN guides
🐾 OpenClaw Adaptation Guide General Use ARIS workflow methodology in OpenClaw — skill-to-stage mapping, file-based orchestration, no Claude Code CLI needed
🖱️ Cursor Adaptation Guide General Use ARIS skills in Cursor — @-reference skills, MCP setup, workflow mapping, state file recovery across sessions
🖥️ Trae Adaptation Guide General Use ARIS skills in Trae (ByteDance AI IDE) — EN + CN guides
🎛️ auto-hparam-tuning General Automatic hyperparameter tuning — AI agent reads project, plans strategy, runs experiments, analyzes TensorBoard, learns from results. Hydra-based
🔁 OrcaReplay Reproducibility Records an agent run (Claude Code, Codex, OpenClaw, goose) and replays it offline, or forks it from any step onto a different model — so an overnight loop that went wrong can be re-examined without re-running it. Note: the trace stores the full request/response bytes, prompts and keys included — keep it where your unpublished work belongs. Apache-2.0.
🔁 Codex+Claude Review Bridge General Codex executes + Claude reviews via local claude-review MCP bridge with async polling
📚 paper-to-course Education Convert research papers (PDF/LaTeX) into interactive six-module HTML courses with formula breakdowns, literature timelines, quizzes, and glossary tooltips — single bundled file, no server needed
🤖 MiniMax-AI/cli General Official MiniMax CLI — text, image, video, speech, and music generation + web search. skill/SKILL.md follows the agentskills.io standard. Drop-in companion for the Alt B (MiniMax reviewer) setup
🔎 deep-research-skills General / Web Search Modular web-search strategy bundle — per-source playbooks for Stack Overflow, GitHub Issues / error-string debugging, Chinese tech communities (CSDN / 掘金 / 知乎 / V2EX / Tencent + Aliyun cloud forums), and general web (Reddit / HN / Dev.to / Medium). Complements ARIS's academic-paper-focused /research-lit stack with non-academic sources useful for debugging, version-compat tracking, and Chinese-language tech search. By @Weizhena
🖼️ posterly General / Posters Academic conference posters as a single HTML/CSS file → print-ready PDF via headless Chromium (no LaTeX). A Claude Code skill — its gate machinery now powers ARIS’s default /paper-poster-html. By @Chenruishuo
🛰️ Claude Fleet Dashboard / DevEx Local read-only dashboard for many concurrent Claude Code / Codex windows — triage (working / waiting-on-you / done), one-click Focus, ~50ms full-text search across transcripts, skill/memory analytics. By @tianyilt


8. 🔄 Workflows

These skills compose into a full research lifecycle. Each workflow can be used independently or chained together:

  • Exploring a new area (e.g., writing a survey)? Start with Workflow 1 → /idea-discovery
  • Have a plan, need to implement and run? Workflow 1.5 → /experiment-bridge
  • Already have results, need iterative improvement? Workflow 2 → /auto-review-loop
  • Ready to write the paper? Workflow 3 → /paper-writing (or step by step: /paper-plan → /paper-figure → /paper-write → /paper-compile → /auto-paper-improvement-loop)
  • Got reviews back? Need to rebuttal? Workflow 4 → /rebuttal — parse reviews, draft safe rebuttal, follow-up rounds
  • Full pipeline? Workflow 1 → 1.5 → 2 → 3 → submit → 4 → /research-pipeline + /rebuttal — from idea through submission and rebuttal
  • Need a multi-session proof campaign? Workflow 7 → /proof-orchestrator — run-directory proof runs, GPT Pro handoff packages, cross-run continuation
  • Want ARIS to remember and learn? 📚 /research-wiki init — persistent memory across sessions. Papers, ideas, failed experiments compound over time
  • Want ARIS to improve itself? Workflow M → /meta-optimize — analyze usage logs, propose skill improvements, reviewer-gated

⚠️ Important: These tools accelerate research, but they don't replace your own critical thinking. Always review generated ideas with your domain expertise, question the assumptions, and make the final call yourself. The best research comes from human insight + AI execution, not full autopilot.

Full Pipeline 🚀

text
/research-lit → /idea-creator → /novelty-check → /research-refine → /experiment-bridge → /auto-review-loop → /paper-writing → submit → /rebuttal → accept! 🎉
  (survey)      (brainstorm)    (verify novel)   (refine method)   (implement+deploy)  (review & fix)      (write paper)   (send)   (reply to reviewers)
  ├────────────── Workflow 1: Idea Discovery ──────────────┤ ├ Workflow 1.5 ─┤ ├── Workflow 2 ──┤ ├── Workflow 3 ──┤         ├── Workflow 4 ──┤

                                     📚 research-wiki (persistent memory — papers, ideas, experiments, claims)
                                        ↕ reads before ideation, writes after every stage, failed ideas = anti-repetition memory

                                              /meta-optimize (Workflow M — runs independently, improves ARIS itself)
                                                 ↑ reads .aris/meta/events.jsonl (accumulated from all runs above)

Workflow 1: Idea Discovery & Method Refinement 🔍

"What's the state of the art? Where are the gaps? How do we solve it?"

Don't have a concrete idea yet? Just give a research direction — /idea-discovery handles the rest:

  1. 📚 Survey the landscape (recent papers, open problems, recurring limitations)
  2. 🧠 Brainstorm 8-12 concrete ideas via GPT-6-Astra xhigh
  3. 🔍 Filter by feasibility, compute cost, and quick novelty search
  4. 🛡️ Validate top ideas with deep novelty check + devil's advocate review
  5. 🧪 Pilot top 2-3 ideas in parallel on different GPUs (30 min - 2 hr each)
  6. 🏆 Rank by empirical signal — ideas with positive pilot results rise to the top
  7. 🔬 Refine the top idea into a problem-anchored proposal via iterative GPT-6-Astra review
  8. 🧪 Plan claim-driven experiments with ablations, budgets, and run order

The output is a ranked IDEA_REPORT.md plus a refined proposal (refine-logs/FINAL_PROPOSAL.md) and experiment plan (refine-logs/EXPERIMENT_PLAN.md) for the top idea. Dead-end ideas are documented too, saving future exploration.

Show W1 flow diagram and example command sequence — research-lit → idea-creator → novelty-check → research-refine → experiment-plan

text
/* Detailed source-code truncated for AI context efficiency. */

Skills involved: research-lit + idea-creator + novelty-check + research-review + research-refine-pipeline

💡 One-command shortcut: /idea-discovery "your research direction" runs this entire workflow automatically.

🔄 Human-in-the-loop: At each AUTO_PROCEED-controlled selection checkpoint, true reports results and continues in the same turn; false asks for your feedback before continuing. If you request changes, tell it what's missing — it refines the prompt and regenerates. Explicit gates such as Feishu interactive approval remain user-controlled.

⚙️ Pilot experiment budgets (max hours, timeout, GPU budget) are configurable — see Customization.

📝 Blog post: Claude Code 两月 NeurIPS 指北

Workflow 1.5: Experiment Bridge 🔗

"I have a plan. Now implement it, deploy it, and get me initial results."

Already have an experiment plan (from Workflow 1 or your own)? /experiment-bridge turns it into running code:

  1. 📋 Parse the experiment plan (refine-logs/EXPERIMENT_PLAN.md)
  2. 💻 Implement experiment scripts (reuse existing code, add proper argparse/logging/seeds)
  3. 🔍 GPT-6-Astra code review — cross-model review catches logic bugs before wasting GPU hours (code review: true by default)
  4. ✅ Sanity check — run the smallest experiment first to catch runtime bugs
  5. 🚀 Deploy full experiment suite to GPU via /run-experiment
  6. 📊 Collect initial results and update the experiment tracker

Show W1.5 flow diagram — experiment plan → Claude implements → GPT-6-Astra code review → sanity check → GPU deploy → monitor → results

text
/* Detailed source-code truncated for AI context efficiency. */

Skills involved: experiment-bridge + run-experiment + monitor-experiment

💡 One-command shortcut: /experiment-bridge reads refine-logs/EXPERIMENT_PLAN.md automatically. Or point it to any plan: /experiment-bridge "my_plan.md".

⚙️ CODE_REVIEW, AUTO_DEPLOY, SANITY_FIRST, MAX_PARALLEL_RUNS are configurable — see Customization.

Workflow 2: Auto Research Loop 🔁 (sleep & wake up to results)

"Review my paper, fix what's wrong, repeat until it's good."

GPT-6-Astra reviews → identifies weaknesses → suggests experiments → Claude Code writes scripts, deploys to GPU, monitors results, rewrites the paper — all while you sleep. Just add your GPU server config to CLAUDE.md.

  1. 🔍 Deep review — GPT-6-Astra xhigh reviews the current paper / claims / experiments and identifies weaknesses
  2. 🩹 Fix — Claude implements the fixes (rewrites sections, adds baselines, or runs new experiments via /run-experiment); skips any experiment estimated > 4 GPU-hours and flags it for manual follow-up
  3. 📊 Re-evaluate — collect results via /monitor-experiment, update paper, feed back to the reviewer
  4. 🔁 Repeat — until score ≥ POSITIVE_THRESHOLD (default 6/10) or MAX_ROUNDS (default 4) is hit; if context window fills mid-loop, the workflow auto-resumes from REVIEW_STATE.json

Show W2 loop diagram — external review → implement fixes / run experiments → monitor results → repeat until threshold

text
┌─────────────────────────────────────────────────────────────┐
│                    Auto Review Loop                          │
│                                                              │
│   /research-review          /auto-review-loop                │
│   (single deep review)      (autonomous loop)                │
│         │                         │                          │
│         ▼                         ▼                          │
│   ┌──────────┐   ┌──────────┐   ┌──────────┐               │
│   │ External  │──▶│ Implement│──▶│ Monitor  │──▶ repeat     │
│   │ LLM      │   │ fixes    │   │ results  │    until       │
│   │ reviews  │   │ & run    │   │          │    score ≥ 6   │
│   └──────────┘   │ experiments│  └──────────┘               │
│                   └──────────┘                               │
│                                                              │
│   When reviewer suggests a new method direction:             │
│   /novelty-check — verify idea isn't already published       │
│                                                              │
│   Supporting skills:                                         │
│   /run-experiment    — deploy to local/remote/vast.ai GPU     │
│   /analyze-results   — interpret experiment outputs          │
│   /monitor-experiment — check progress, collect results      │
└─────────────────────────────────────────────────────────────┘

Skills involved: auto-review-loop + research-review + novelty-check + run-experiment + analyze-results + monitor-experiment

💡 One-command shortcut: /auto-review-loop "your paper topic" runs this entire workflow automatically.

Show W2 usage examples, reviewer difficulty levels, and full safety guarantees — topic/scope arguments, medium/hard/nightmare, 6 safety rules

What to pass as argument? A short topic or scope is enough — the skill automatically reads your project's narrative docs (NARRATIVE_REPORT.md), memory files, experiment results, and prior reviews to build the full context for GPT-6-Astra. Examples:

  • /auto-review-loop "factorized gap in discrete diffusion LMs" — broad topic, skill finds everything
  • /auto-review-loop "focus on Section 3-5, our CRF results are weak" — targeted scope with hints
  • /auto-review-loop — also works: skill reads project files and infers the topic

🎮 Reviewer Difficulty — control how adversarial the reviewer is:

Level What changes Use when
medium (default) Standard MCP review — same as before Normal workflow
hard + Reviewer Memory (GPT tracks suspicions across rounds) + Debate Protocol (Claude rebuts, GPT rules) Want tougher feedback
nightmare + GPT reads repo directly via codex exec (Claude can't filter what it sees) + adversarial verification Preparing for top venue, want maximum stress test
bash
/auto-review-loop "topic" — difficulty: nightmare    # GPT reads your code and verifies claims itself

🛡️ Key safety features:

  • 🔒 MAX_ROUNDS = 4 — prevents infinite loops; stops early if score threshold is met
  • ⏱️ > 4 GPU-hour experiments skipped — won't launch massive jobs; flags them for manual follow-up
  • 🧠 Prefer reframing over new experiments — when both can address a weakness, chooses the cheaper path
  • 🪞 No hiding weaknesses — explicit rule: "Do NOT hide weaknesses to game a positive score"
  • 🔧 Fix before re-review — must actually implement fixes before resubmitting; no empty promises
  • 💾 Compact recovery — persists state (REVIEW_STATE.json) after each round. If the context window fills up and auto-compacts mid-loop, the workflow reads the state file and resumes from where it left off — no human intervention needed

⚙️ MAX_ROUNDS, score threshold, and GPU limits are configurable — see Customization.

📝 Blog post: 开源 | 睡觉 Claude 自动跑实验改文

Workflow 3: Paper Writing Pipeline 📝

"Turn my research narrative into a submission-ready PDF." Requires a local LaTeX environment — see Prerequisites.

  1. 📝 Narrate — write NARRATIVE_REPORT.md (claims, experiments, results, figure descriptions); see templates/NARRATIVE_REPORT_TEMPLATE.md
  2. 🧭 Plan — /paper-plan builds the claims-evidence matrix + section plan
  3. 📊 Figures — /paper-figure generates data-driven plots and comparison tables from JSON/CSV
  4. ✍️ Write — /paper-write produces section-by-section LaTeX
  5. 🔧 Compile — /paper-compile builds the PDF, fixes errors, runs the page-limit check
  6. ✨ Improve — /auto-paper-improvement-loop runs 2 rounds of GPT-6-Astra content review + final format check

Show W3 architecture diagram and exact writing flow — NARRATIVE_REPORT → /paper-plan → /paper-figure → /paper-write → /paper-compile → improvement loop

text
/* Detailed source-code truncated for AI context efficiency. */

Skills involved: paper-plan + paper-figure + paper-write + paper-compile + auto-paper-improvement-loop + (post-acceptance) paper-poster-html + paper-slides

One-command shortcut: /paper-writing "NARRATIVE_REPORT.md" runs this entire workflow automatically.

Input: A NARRATIVE_REPORT.md describing the research: claims, experiments, results, figures. The more detailed the narrative (especially figure descriptions and quantitative results), the better the output.

Output: A paper/ directory with LaTeX source, clean .bib (only cited entries), and compiled PDF. The PDF is labelled submission-ready only when run at — effort: max | beast (or explicit — assurance: submission) and tools/verify_paper_audits.sh reports green on the three mandatory audits (proof-checker, paper-claim-audit, citation-audit); see Assurance Gate below. At the default balanced level, the output is a reviewed draft.

Show W3 feature details — Claims-Evidence Matrix, figure modes, clean bib, Gemini API setup, ICLR end-to-end test

Key features:

  • 📐 Claims-Evidence Matrix — every claim maps to evidence, every experiment supports a claim
  • 📊 Auto figure generation — line plots, bar charts, comparison tables from JSON data
  • 🧹 Clean bib — automated filtering removes uncited entries (948→215 lines in testing). Real BibTeX from DBLP/CrossRef instead of LLM-generated entries
  • 📄 Flexible sections — 5-8 sections depending on paper type (theory papers often need 7)
  • 🔍 GPT-6-Astra review — each step optionally reviewed by external LLM
  • ✂️ De-AI polish — removes AI writing patterns (delve, pivotal, landscape...)
  • 🎯 Page verification — pdftotext-based precise check that main body fits page limit

⚠️ Figure generation scope: /paper-figure auto-generates data-driven plots (training curves, bar charts, heatmaps) and comparison tables from JSON/CSV. For architecture diagrams and method figures: illustration: gemini (default) uses Claude→Gemini→Nano Banana Pro for publication-quality diagrams; illustration: mermaid generates Mermaid diagrams for free; illustration: false skips AI figures entirely.

Gemini API setup (for illustration: gemini): Get your API key at Google AI Studio, then set it as an environment variable: export GEMINI_API_KEY="your-key". Or add to your shell profile (~/.zshrc / ~/.bashrc). No other dependencies needed.

Tested end-to-end: Generated a 9-page ICLR 2026 theory paper (7 sections, 29 citations, 4 figures, 2 comparison tables) from a single NARRATIVE_REPORT.md — zero compilation errors, zero undefined references.

Auto Paper Improvement Loop ✨

After Workflow 3 generates the paper, /auto-paper-improvement-loop runs 2 rounds of GPT-6-Astra xhigh content review → fix → recompile, plus a final format compliance check, autonomously polishing the paper from rough draft to a reviewer-scored draft. Whether the result is tagged submission-ready is decided separately by the Phase 6 assurance gate (see Assurance Gate).

Show auto-paper-improvement benchmark — Score Progression on a real ICLR 2026 theory paper (4/10 → 8.5/10), plus Round 1/2/3 fix details

Score Progression (Real Test — ICLR 2026 theory paper):

Round Score Key Changes
Round 0 4/10 (content) Baseline
Round 1 6/10 (content) Fixed assumptions, softened claims, renamed notation
Round 2 7/10 (content) Added synthetic validation, stronger limitations
Round 3 5→8.5/10 (format) Removed hero fig, appendix, compressed conclusion, float spacing

Final: 8 pages main body (ICLR limit: 9), 0 overfull hbox, ICLR-compliant. +4.5 points across 3 rounds.

Round 1 fixes (6 items)

  1. CRITICAL — Assumption-model mismatch: A boundedness assumption contradicted the model's distributional family. Replaced with a tail-compatible assumption and added formal truncation bridge.
  2. CRITICAL — Theory-practice gap: Theory assumes idealized encoders, experiments use learned nonlinear encoders. Softened "validate" → "demonstrate practical relevance" and added explicit disclaimer.
  3. MAJOR — Missing quantitative metrics: Added parameter count table (latent vs total) with honest accounting of system cost.
  4. MAJOR — Theorem not self-contained: Added "Interpretation" paragraph listing all dependencies explicitly.
  5. MAJOR — Overclaim in novelty statement: Scoped a broad "first convergence guarantee" to precise conditions under which it holds.
  6. MAJOR — Notation confusion: Renamed a symbol that clashed with another key variable. Added Notation paragraph.

Round 2 fixes (4 items)

  1. MAJOR — Missing theory-aligned experiments: Added a synthetic validation subsection directly testing the two main theoretical predictions under controlled conditions.
  2. MAJOR — Overclaim softening: Replaced strong equivalence claims with appropriately hedged language across all files.
  3. MAJOR — Informal theoretical argument: Formalized an informal justification into a proper proposition with explicit error bounds.
  4. MINOR — Weak limitations: Expanded to explicitly list all assumptions and acknowledge missing standard evaluations.

Round 3 format fixes (8 items)

  1. Removed hero figure block (saved ~0.7 pages)
  2. Compressed conclusion from 15→9 lines
  3. Moved synthetic validation to Appendix A
  4. Moved comparison tables to Appendix B
  5. Fixed overfull hbox (85pt) with \resizebox
  6. Added compact float spacing (\captionsetup, \textfloatsep)
  7. Inlined centered question block in introduction
  8. Tightened itemize environments

Workflow 4: Rebuttal 📝 (reply to reviewers safely)

"Reviews are in. Help me draft a safe, grounded rebuttal."

Got reviews back? /rebuttal parses them, builds a strategy, and drafts a venue-compliant response:

  1. 📋 Parse — normalize reviews, validate venue rules (character limit, text-only, etc.)
  2. 🔍 Atomize — split each review into issue cards (type, severity, reviewer stance)
  3. 🗺️ Strategize — global themes, per-reviewer priorities, character budget, blocked claims
  4. 🧪 Evidence sprint — if auto experiment: true, auto-run supplementary experiments via /experiment-bridge
  5. ✍️ Draft — global opener + numbered per-reviewer responses + closing for meta-reviewer
  6. 🛡️ Safety check — 6 lints: coverage, provenance, commitment, tone, consistency, limit
  7. 🔬 GPT-6-Astra stress test — internal skeptical review of the draft
  8. 📄 Finalize — two outputs: PASTE_READY.txt (exact character count) + REBUTTAL_DRAFT_rich.md (extended version for manual editing)
  9. 🔄 Follow-up rounds — delta replies for reviewer discussions, technically escalating

Show W4 rebuttal flow diagram — parse reviews → strategy → optional evidence sprint → draft → GPT-6-Astra stress test → finalize 2 versions → follow-up rounds

text
/* Detailed source-code truncated for AI context efficiency. */

Skills involved: rebuttal

💡 Quick mode: /rebuttal — quick mode: true stops after parsing + strategy (Phase 0-3). See what reviewers want before committing to a full draft.

⚙️ VENUE, AUTO_EXPERIMENT, QUICK_MODE, MAX_STRESS_TEST_ROUNDS are configurable — see Customization.

Three safety gates — rebuttal will NOT finalize if any fails:

  • 🔒 Provenance — every claim maps to paper/review/user-confirmed result. No fabrication.
  • 🔒 Commitment — every promise is user-approved. No overpromising.
  • 🔒 Coverage — every reviewer concern is tracked. Nothing disappears.

Workflow 5: Resubmit Pipeline 🔁 (port a paper to a new venue, text-only)

Port a polished paper from venue A → B under hard, non-overridable guardrails — no new experiments · no bib edits · no framework changes · never overwrites prior submissions — via physical isolation, a 5-layer anonymity check, soft-only audits, whitelist microedits, and a /kill-argument adversarial gate. Full flow + constraints → docs/RESUBMIT_AND_TALK.md

Workflow 6: Conference Talk Pipeline 🎤 (paper → slides → polish → audits)

/paper-talk turns an accepted paper into a talk: outline → /paper-slides (Beamer + PPTX + speaker notes + Q&A) → /slides-polish (per-page Codex visual pass) → optional conference-ready audit gate. Sister to /paper-writing / /paper-poster-html. Full flow → docs/RESUBMIT_AND_TALK.md

Workflow 7: Proof Orchestrator 🧭 (standalone theory track — attack a theorem across days, not turns)

"This proof will take a week and three tools. Keep every attempt, audit, and escalation on the record."

Hard theorems are campaigns, not chat turns. /proof-orchestrator runs proof work as a stateful, local-first pipeline — each run gets its own directory, completed runs become append-only evidence, and every new run records which prior claims were proved, conjectural, or rejected:

  1. 🎯 Freeze the target — exact theorem, assumptions, quantifiers, allowed sources; new run or continuation
  2. 🧱 Maintain local evidence — run directory with task.md / materials.md / stable source snapshots
  3. 🧠 Attempt locally — full proof, disproof, counterexample, or diagnosis; a stall isolates the smallest hard obligation
  4. 🔍 Audit correctness — every lemma, bound, and quantifier checked against assumptions; claims labeled proved / imported / conjectural / repaired / unsupported
  5. ✒️ Edit for exposition — two gates: the 7-line notation scorecard (100% core-object retention, zero undefined symbols, zero collisions) and the top-down derivation-structure gate (acyclic dependency graph, no subgoal silently assuming the target — a bug-catcher in disguise: a proof that resists a clean target-first rewrite is usually hiding a gap, and circular reasoning surfaces the moment you try)
  6. 📦 GPT Pro handoff — a stalled proof becomes a package: browser-prompt.md (copy-paste ready), source-manifest.md (source roles), handoff.md (upload order + return instructions)
  7. 🧾 Re-audit the returned proof — format repair only, then the full correctness audit and exposition edit produce final.md

Show W7 flow diagram — freeze target → local attempt → audit → notation/structure gates → GPT Pro handoff (when stalled) → re-audit → final.md, plus the optional DeepSeek branch

text
/* Detailed source-code truncated for AI context efficiency. */

Skills involved: proof-orchestrator (+ llm-chat MCP for the optional DeepSeek branch)

⚖️ Optional DeepSeek second opinion: request it at the audit stage for a verified cross-family adversarial pass — findings are validated locally and recorded as run-local provisional evidence. An installed call-gpt-pro skill can likewise automate the GPT Pro dispatch when you ask for it on a run.

🧭 Standalone by design. Workflow 7 is theory work's own track — no Workflow 1–6 stage calls it, and /proof-checker keeps the submission gate in Workflow 3. Reach for it when a theorem outgrows single-shot /proof-writer drafting: multi-day campaigns, cross-run continuation, or when the strongest available prover lives in a browser tab.

💡 Continuation: point it at a prior run (next.md / redo.md) — it reads final.md / audit.md, reuses only audited claims, and opens a fresh run directory with full provenance.

📚 Research Wiki — Persistent Research Memory

"Stop re-deriving. Start compounding." — inspired by Karpathy's LLM Wiki

Without the wiki, ARIS is stateless — every /idea-discovery starts from scratch. With the wiki, ARIS accumulates knowledge across the entire research lifecycle: papers read, ideas tested, experiments run, claims verified or invalidated.

The key insight: failed ideas are the most valuable memory. A researcher who knows what doesn't work generates better ideas than one starting from zero.

Setup:

text
> /research-wiki init     # one-time, creates research-wiki/ in your project

That's it. Once initialized, the wiki works automatically.

Show the automatic wiki hooks — what fires at /research-lit, /idea-creator, /result-to-claim, plus the re-ideation nudge

When What happens Wiki action
/research-lit finds papers Papers auto-ingested papers/<slug>.md created, edges added, query_pack rebuilt
/idea-creator runs Reads wiki first Failed ideas = banlist, gaps = search seeds, papers = known prior work
/idea-creator finishes ALL ideas written back Both recommended AND eliminated ideas → ideas/.md
/result-to-claim judges Results written back Experiment page created, claim status updated (supported/invalidated)
3+ ideas fail Re-ideation suggested "💡 Consider re-running /idea-creator — the wiki now knows what doesn't work"

Show Research Wiki data model — Paper / Idea / Experiment / Claim entities and the typed graph edges that connect them

Four entity types:

Entity What it stores Example
📄 Paper Structured summary: thesis, method, limitations, reusable ingredients paper:chen2025_factorized_gap
💡 Idea Hypothesis, status (proposed/failed/succeeded), failure notes, lessons idea:001
🧪 Experiment Metrics, verdict, hardware, duration exp:001
📋 Claim Testable statement + evidence status (reported/supported/invalidated) claim:C1

Typed relationships (stored in graph/edges.jsonl):

text
paper --extends--> paper              idea --inspired_by--> paper
paper --contradicts--> paper          idea --tested_by--> experiment
paper --addresses_gap--> gap          experiment --supports--> claim
paper --supersedes--> paper           experiment --invalidates--> claim

Show Research Wiki spiral-learning example and manual subcommands — failed ideas → better ideas across 3 rounds; ingest / query / update / lint / stats

Spiral learning in action:

text
Round 1: read 15 papers → wiki remembers → idea A → experiment → FAIL
         wiki records: "A fails because OOM at batch>32, loss diverges"

Round 2: /idea-creator reads wiki → sees A failed → generates idea D (avoids A's trap)
         → experiment → PARTIAL SUCCESS
         wiki records: "D works on small models, fails on large"

Round 3: /idea-creator reads wiki → knows A failed + D partial → generates idea F
         (combines D's success with new approach) → experiment → SUCCESS 🎉

Subcommands:

text
/research-wiki init                              # initialize wiki
/research-wiki ingest "paper title" — arxiv: xxx  # manually add a paper
/research-wiki query "topic"                      # rebuild query_pack.md
/research-wiki update idea:001 — outcome: negative # update entity
/research-wiki lint                               # health check (orphans, contradictions, stale claims)
/research-wiki stats                              # overview (paper/idea/experiment/claim counts)

🔒 Safe by design: All workflow hooks are guarded by if research-wiki/ exists. No wiki = no impact. Zero dependencies (pure Python stdlib). You choose when to enable it.


Workflow M: Meta-Optimize 🧬 (ARIS optimizes itself)

"Analyze my usage patterns and improve your own skills."

Unlike Workflows 1–4 which optimize research artifacts (papers, code, experiments), Workflow M optimizes the harness itself — the SKILL.md instructions, default parameters, and convergence rules that govern how ARIS operates. Inspired by Meta-Harness (Lee et al., 2026).

Show Workflow M one-time setup and usage commands — Claude Code hook install, /meta-optimize variants (project / per-skill / --global / apply)

Setup (one-time, in normal terminal):

bash
mkdir -p .claude .aris/meta tools/meta_opt
cp Auto-claude-code-research-in-sleep/templates/claude-hooks/meta_logging.json .claude/settings.json
cp Auto-claude-code-research-in-sleep/tools/meta_opt/*.sh tools/meta_opt/
chmod +x tools/meta_opt/*.sh
claude   # hooks active immediately

Usage (after 5+ workflow runs):

text
> /meta-optimize                        # analyze current project
> /meta-optimize "auto-review-loop"     # focus on one skill
> /meta-optimize --global               # analyze trends across ALL projects
> /meta-optimize apply 1                # apply recommended change #1

How it works:

  1. 📊 Passive logging — Claude Code hooks silently record every skill invocation, tool call, failure, parameter override, and user prompt. Events are written to both project-level (.aris/meta/events.jsonl) and global (~/.aris/meta/events.jsonl, with a "project" tag) logs. Zero user effort.
  2. 🔍 Pattern analysis — /meta-optimize reads the log and identifies:
    • Parameters users override most often (bad defaults)
    • Tools that fail repeatedly in specific skills (missing error handling)
    • Review score plateaus (convergence rules too loose/tight)
    • Manual corrections users make (skill gaps)
  3. 🩹 Patch proposal — generates minimal diffs to target SKILL.md files with data-backed justifications
  4. 🔬 Reviewer gate — GPT-6-Astra xhigh reviews each patch: does the evidence support it? could it hurt other users?
  5. ✅ User approval — only applied with explicit user consent. All changes are logged and reversible.

Show Workflow M diagram and "what gets optimized" component table — event logs → SKILL.md patches → GPT-6-Astra review → user approval; prompts / defaults / convergence / error handling

text
┌─────────────────────────────────────────────────────────────────┐
│                  Workflow M: Meta-Optimize                        │
│                                                                  │
│   Normal ARIS usage (W1-W4)                                      │
│         │ (hooks log events passively)                           │
│         ▼                                                        │
│   .aris/meta/events.jsonl                                        │
│         │                                                        │
│         ▼                                                        │
│   ┌──────────┐     ┌──────────┐     ┌──────────┐               │
│   │ Analyze  │────▶│ Propose  │────▶│ GPT-6-Astra  │               │
│   │ patterns │     │ SKILL.md │     │ reviews  │               │
│   │          │     │ patches  │     │ patch    │               │
│   └──────────┘     └──────────┘     └──────────┘               │
│                                          │                       │
│                                          ▼                       │
│                                    User approves?                 │
│                                     Yes → Apply                  │
│                                     No  → Skip                   │
└─────────────────────────────────────────────────────────────────┘

What gets optimized (harness components):

Component Example
Skill prompts Reviewer instructions, quality gates, step descriptions
Default parameters difficulty, MAX_ROUNDS, threshold
Convergence rules When to stop the review loop, retry counts
Error handling Auto-debug patterns, failure recovery steps

What does NOT get optimized: research artifacts (papers, code, experiments) — that's what W1–W4 do.

Skills involved: meta-optimize

💡 This is a maintenance workflow, not part of the W1→W1.5→W2→W3→W4 research pipeline. Run it periodically, like git gc for your research harness.


⚡ Effort Levels

Every skill takes — effort: lite | balanced | max | beast — scaling breadth/depth (papers · ideas · pilots · rounds · seeds · audit depth) from ~0.4× to ~5–8×; balanced is the default (zero change for existing users). What never changes at any level: Codex reasoning stays at its tier floor (regular xhigh; deep audits ultra), DBLP/CrossRef citations on, reviewer independence on, experiment integrity on. 📖 Full spec + per-skill counts → effort-contract.md

Assurance Gate (effort: max | beast)

A second axis, orthogonal to effort: assurance decides whether mandatory audits are load-bearing. lite/balanced ⇒ draft (audits non-blocking — current behavior, zero change); max/beast ⇒ submission (paper-writing Phase 6 force-runs /proof-checker + /paper-claim-audit + /citation-audit in fresh threads and refuses the Final Report if tools/verify_paper_audits.sh exits non-zero). Escape hatch: — effort: beast, assurance: draft. 📖 Full spec → assurance-contract.md

🧿 Optional: GPT-5.5 Pro via Oracle

Add — reviewer: oracle-pro to any reviewer-aware skill (/proof-checker, /research-review, /experiment-audit, /rebuttal, …) to route review through GPT-5.5 Pro — strongest reasoning for deep proof / code / experiment-design critique. Default stays Codex xhigh; Oracle not installed ⇒ graceful fallback + warning (zero impact). 📖 Setup + per-skill examples → reviewer-routing.md



9. ⚙️ Setup

📖 New to ARIS? SETUP_GUIDE.md (中文) gives a prescriptive 6-step walkthrough for macOS local + remote Linux GPU server with Claude Code + Codex MCP — the recommended path. The section below is a quick reference; deeper GPU / customization / model-combo setup lives in the linked docs.

10.1 Prerequisites

  1. Claude Code installed
  2. (For review skills) Codex CLI installed and configured as MCP server:
    bash
    npm install @openai/codex
    claude mcp add codex -s user -- python3 "$HOME/aris_repo/mcp-servers/codex-exec/server.py"
    The path is mcp-servers/codex-exec/server.py inside your ARIS clone — codex-cli 0.154 removed codex mcp-server, this bridge stands in for it.
  3. (For Workflow 3: paper writing) LaTeX environment with latexmk and pdfinfo:
    bash
    # macOS
    brew install --cask mactex    # or: brew install basictex
    brew install poppler          # provides pdfinfo
    
    # Ubuntu/Debian
    sudo apt install texlive-full latexmk poppler-utils
    
    # Verify
    latexmk --version && pdfinfo -v

    Windows (PowerShell): Install a TeX distribution using the MiKTeX Basic Installer or TeX Live for Windows. Install Poppler for Windows separately, add the directory containing pdfinfo.exe to PATH, and open a new PowerShell window. Then verify:

    powershell
    latexmk --version
    pdfinfo -v

    If either command is not found, refresh the TeX distribution's package/path settings and check that the Poppler directory containing pdfinfo.exe is on PATH.
    If you only need Workflow 1 & 2 (idea discovery + auto review), LaTeX is not required.

10.2 Install Skills

💡 Recommended: project-local flat symlink install (since 2026-04-20). Each ARIS skill is symlinked individually into .claude/skills/<skill-name>, so Claude Code's slash-command discovery picks them up. A manifest at .aris/installed-skills.txt tracks what ARIS installed — uninstall and reconcile only ever touch managed entries, never your own skills.

🤖 Codex mirror route: keep Claude on install_aris.sh / smart_update.sh. For Codex-native project installs, use install_aris_codex.sh; for copied Codex installs, use smart_update_codex.sh.

🧩 Plugin route (Claude Code only): claude plugin marketplace add wanshuiyin/Auto-claude-code-research-in-sleep, then claude plugin install aris@aris, then /aris:setup once — it registers the Codex reviewer bridge that ships inside the plugin and points helper resolution at it; restart Claude Code afterwards. All skills arrive at once (no clone, no symlinks, no group selection) and are typed with the prefix: /aris:idea-discovery, /aris:paper-writing. Updates: claude plugin update aris@aris. Codex CLI reads the same repo as a plugin and gets the Codex-native mirror instead: codex plugin marketplace add wanshuiyin/Auto-claude-code-research-in-sleep, then codex plugin add aris@aris, then point helper resolution at it once — printf '%s\n' ~/.codex/plugins/cache/aris/aris/local > ~/.aris/repo (the path codex plugin list shows). Use the installers above for selective groups or the .aris/installed-skills.txt manifest.

text
/* Detailed source-code truncated for AI context efficiency. */

Why "git pull" alone isn't enough for new/removed skills: the flat layout uses one symlink per skill, so upstream additions/deletions don't propagate until the installer is re-run. The trade-off bought us Claude Code's automatic slash-command discovery (which only scans one directory level deep).

Migrating from the old nested install (pre-2026-04-20)

If you previously installed via install_aris.sh (which created .claude/skills/aris/ as a single nested symlink) or via smart_update.sh --target-subdir .claude/skills/aris, your slash commands probably weren't being auto-discovered by Claude Code. Migrate to the flat layout:

bash
# Symlink-style legacy install:
bash ~/aris_repo/tools/install_aris.sh ~/your-project --from-old

# Copy-style legacy install (with possible local edits — chose strategy explicitly):
bash ~/aris_repo/tools/install_aris.sh ~/your-project --from-old --migrate-copy keep-user
#   → keeps your nested .claude/skills/aris/ copy intact alongside the new flat install
bash ~/aris_repo/tools/install_aris.sh ~/your-project --from-old --migrate-copy prefer-upstream
#   → archives nested copy to .aris/legacy-copy-backup-<timestamp>/, then flattens

Alternative installs (advanced)

Project-local copy (no symlinks, useful for per-project skill edits):

bash
mkdir -p ~/your-project/.claude/skills
bash ~/aris_repo/tools/smart_update.sh --project ~/your-project --apply
# Default --target-subdir is .claude/skills (flat), which is what Claude Code expects.
# (The old --target-subdir .claude/skills/aris is now deprecated — see migration block above.)

Global install (one copy in your home dir, available to every project):

bash
mkdir -p ~/.claude/skills
cp -r ~/aris_repo/skills/* ~/.claude/skills/
# Update with: bash tools/smart_update.sh --apply

Global install increases the risk of skill name collisions with other globally-installed packs. Use only if you don't mix ARIS with Superpowers / OpenHands / etc. — otherwise prefer the project-local install above.

💡 New Claude Code versions may not auto-create ~/.claude/skills/. If using global install, create it first: mkdir -p ~/.claude/skills/. The symlink installer handles directory creation automatically.

Optional: Codex Plugin for Code Review

codex-plugin-cc provides additional Codex capabilities that ARIS auto-detects when installed:

bash
# In Claude Code:
/plugin marketplace add openai/codex-plugin-cc
/plugin install codex@openai-codex
/reload-plugins
/codex:setup

Where ARIS uses the plugin:

Skill Workflow What it does
/codex:review Workflow 1.5 Review experiment code before GPU deployment
/codex:adversarial-review Workflow 1.5 Adversarial code review (find edge cases, bugs)
/codex:rescue Workflow 1.5 + 3 Auto-debug rescue — when experiment or LaTeX compilation fails after 2 attempts, Codex independently diagnoses the root cause before the next retry

All plugin features are optional — if not installed, ARIS falls back to Claude's own diagnosis. The plugin just adds a second pair of eyes.

Note: ARIS's core cross-model review (paper scoring, idea evaluation, rebuttal stress test) still uses Codex MCP, which allows custom prompts. The plugin cannot replace this.

10.3 Update Skills

bash
cd Auto-claude-code-research-in-sleep
git pull

# 🧠 Smart update (recommended) — analyzes what's safe to update
bash tools/smart_update.sh          # dry-run: shows what would change
bash tools/smart_update.sh --apply  # apply: updates safe ones; NEW upstream skills prompt
                                     # one-by-one on a TTY, or use --add-new / --skip-new

# Manual options (if you prefer):
# cp -r skills/* ~/.claude/skills/       # Option A: overwrite all
# cp -rn skills/* ~/.claude/skills/      # Option B: only add new, keep yours
# cp -r skills/experiment-bridge ~/.claude/skills/  # Option C: specific skill

💡 Smart update compares your local skills with upstream, detects personal customizations (server paths, API keys, etc.), and only updates skills that are safe to replace. Skills with your personal info are flagged for manual review.

10.4 Usage

text
# Workflow 1: Idea Discovery
> /idea-discovery "your research direction"          # full pipeline
> /research-lit "topic"                              # just literature survey (all sources)
> /research-lit "topic" — sources: zotero, web        # mix and match sources
> /research-lit "topic" — sources: deepxiv            # DeepXiv-only progressive retrieval
> /research-lit "topic" — sources: exa                # Exa AI-powered web search with content extraction
> /research-lit "topic" — arxiv download: true         # also download top arXiv PDFs
> /arxiv "discrete diffusion" — download               # standalone arXiv search + download
> /idea-creator "topic"                              # just brainstorm

# Workflow 2: Auto Research Loop
> /auto-review-loop "your paper topic"               # review → fix → repeat
> /research-review "your paper"                      # single deep review

# Workflow 3: Paper Writing
> /paper-writing "NARRATIVE_REPORT.md"               # full pipeline
> /paper-plan "NARRATIVE_REPORT.md"                  # just outline
> /paper-compile "paper/"                            # just compile

# Full Pipeline
> /research-pipeline "your research direction"       # Workflow 1 → 2 → 3 end-to-end

# Supporting Skills
> /run-experiment train.py --lr 1e-4 --epochs 100
> /analyze-results figures/*.json
> /monitor-experiment server5

10.5 🌙 Auto-Allow for Overnight Runs (Optional)

Skip permission prompts on overnight runs — add a snippet to .claude/settings.local.json

To run the auto-review loop without clicking permission prompts, add to .claude/settings.local.json:

json
{
  "permissions": {
    "allow": [
      "mcp__codex__codex",
      "mcp__codex__codex-reply",
      "Write",
      "Edit",
      "Skill(auto-review-loop)"
    ]
  }
}

🖥️ GPU for Auto-Experiments (Optional)

When the reviewer says "run an ablation", Claude Code writes the script and runs it on your GPU — you just declare your server in CLAUDE.md. Three modes (Remote SSH · Local GPU · Vast.ai on-demand): config snippets + setup → docs/GPU_SETUP.md (Vast.ai deep-dive → Vast.ai guide). No GPU? Review/rewrite skills still work; experiment fixes are flagged for manual follow-up.

🔌 Integrations (Optional)

Plug your library / vault / notifications into ARIS — each auto-skips silently if unconfigured:

  • Zotero — collections + annotations + BibTeX in /research-lit (before web search).
  • Obsidian + arXiv — search your vault notes; arXiv is built-in, no setup.
  • Feishu / Lark — mobile push + interactive approve/reject for overnight runs.


10. 🎛️ Customization

Skills are plain Markdown — fork and tune them. Per-skill environment variables (GPU target, code review, reviewer routing, human checkpoints, paper-writing knobs) and parameter pass-through live in docs/CUSTOMIZATION.md.

Reviewer quota tight? The defaults are chosen for quality and stay as they are: skills start from natural language, and every review goes to the cross-model reviewer at its full tier. If a casual sentence starting a skill costs you quota, these are yours to opt into:

Option Saves Costs
Paste the paragraph below into your project's CLAUDE.md Skills starting from a sentence that merely resembles a trigger You name the skill to start it. It is guidance to the model, not a guarantee
— reviewer: manual Every reviewer call You paste the review in yourself, so no unattended overnight run
— effort: lite Papers read, ideas generated, rounds run Nothing on the reviewer: its tier is never lowered
text
Start ARIS skills or external reviewers only when I name an ARIS skill or explicitly
request an ARIS workflow. That request includes its child skills and reviewers;
continue under AUTO_PROCEED without asking for confirmation.

11. 🔀 Alternative Model Combinations

No Claude / OpenAI API? Swap in other providers — same cross-model architecture. ARIS ships 10 alternative routes (Z.ai GLM, Alibaba Kimi/Qwen/MiniMax, free DeepSeek-V3.1 via ModelScope, OpenRouter as a pin-one-of-many reviewer backend, Codex-as-executor with Claude/Gemini reviewers, Google Antigravity). Full routing table + per-route setup in docs/MODEL_COMBINATIONS.md.

12. 💬 Community

Domain-specific skills welcome! The core skills cover general research workflows, but every field has its own tools and patterns. We welcome PRs that add new skills for your domain — EDA, bioinformatics, robotics, HPC, or anything else. Just add a skills/your-skill/SKILL.md and open a PR. See dse-loop for an example.

Join the WeChat group for discussion on Claude Code + AI-driven research workflows:

13. 📖 Citation

If you use ARIS in your research, please cite:

bibtex
@article{yang2026aris,
  title={ARIS: Autonomous Research via Adversarial Multi-Agent Collaboration},
  author={Yang, Ruofeng and Li, Yongcan and Li, Shuai},
  journal={arXiv preprint arXiv:2605.03042},
  year={2026}
}

14. ⭐ Star History

15. 🙏 Acknowledgements

Inspired by — 🧪 AI Scientist (Sakana) · 📖 AutoResearch (Karpathy) · 🔭 FARS (Analemma) · 🎨 PaperBanana (PKU).

Core infra — Claude Code (execution backbone) · Codex CLI (cross-model review via MCP).

Integrations — Zotero (guide): zotero-mcp, Zotero. Obsidian (guide): mcpvault, obsidian-skills (by Obsidian CEO Steph Ango). Feishu/Lark (guide): feishu-claude-code, clawdbot-feishu, cc-connect, lark-openapi-mcp.

Paper-writing inspiration — claude-scholar · Research-Paper-Writing-Skills · baoyu-skills. Community — awesome-agent-skills (featured).

Platform adaptation — 🤖 @Falling-Flower (Codex CLI adaptation via spawn_agent) · 🔧 @No-518 (Codex skill maintenance) · 🖱️ @YecanLee (Cursor guide + local GPU docs) · 🏆 @DefanXue & @Monglitay (first ARIS community paper, CS conference 8/10).

Architecture & vision — 💡 @JingxuanKang: beyond code (training-check, result-to-claim, ablation-planner, watchdog, templates, session recovery), deeply shaped ARIS through discussions on compact mode, workflow state management, and the vision of autonomous research — many of today's core features (structured project files, context-aware session recovery) grew out of these conversations.

16. License

MIT


Overview (`aris-monitor/README.md`)

ARIS-Monitor

A tiny, native, always-on-top floating macOS widget that shows, at a glance,
which of your running Claude Code sessions need you — primarily
"needs approval / pending permission", plus a simple working / done status.

No browser. No Chrome extension. No Electron. Pure Python stdlib Tkinter —
zero pip install.

🔒 READ-ONLY monitoring + ONE opt-in focus action

ARIS-Monitor builds its display by only reading files under ~/.claude —
monitoring is strictly read-only (liveness is inferred from file freshness; it
does not even call os.kill(pid, 0)). The one non-read action is
Focus: clicking a session row raises that session's terminal window. That
path — and only that path — runs ps (to read the pid's tty) and the
raise-only focus-tty.sh (osascript activate / select). Focus is always
user-initiated and never kills, signals, writes, or modifies any session or
process — it can only bring a window to the front. No network calls, ever.

Run

bash
./run.sh            # start the floating widget (top-right, draggable)
# or directly:
python3 widget.py

A small borderless panel appears top-right, floating above your windows. Drag
it by the dark header. Quit with the ×, or press q / Esc.

Click any session row to jump to (focus) its terminal tab/window — the
triage loop is: panel goes red → click the row → you're at that terminal to
approve. Focus is raise-only (Terminal.app / iTerm2 / tmux); it never touches the
session itself.

Other modes:

bash
./run.sh --check    # read-only smoke test (prints the classified list, no GUI)
./run.sh --ticker   # headless terminal ticker (same scanner, same 2s loop)
python3 scanner.py  # same as --check

What it watches (READ-ONLY)

The authoritative needs-approval signal is the live session registry, not a
transcript guess:

text
~/.claude/sessions/<pid>.json     ->  status == "waiting"   (the core signal)
~/.claude/projects/<slug>/<id>.jsonl  (read-only tail, only to refine working/done)

The Claude Code app itself sets status == "waiting" (with an optional
waitingFor string like Bash(npm test) needs approval) while a permission
prompt is on screen
, and clears it the instant you answer. So:

  • needs-approval is detected with no transcript parsing — straight from the
    live JSON, which is why it is authoritative; and
  • it is inherently transient — the widget polls every ~2 s to catch it.
    On a quiescent machine you will only ever see working / done, never
    waiting. That is expected, not a bug.
dot bucket meaning
🔴 ● NEEDS YOU status == "waiting" — a permission prompt is blocking this session on you
🟡 ◐ working actively running (busy & fresh, or a background task in flight)
🟡 ◐ stalled stopped mid-tool while not waiting — may need a nudge (not red)
🟢 ○ done last turn completed (end_turn) — finished, awaiting your review
· stale (dim) updatedAt older than 30 min — rendered dim and sorted to the bottom

Sort order: NEEDS YOU → stalled → done → working → stale.

The panel shows the top 5 rows by that order; everything beyond folds behind
a clickable ▸ N more (click to show). needs-approval rows are never folded —
the cut stretches to include every red session. (Tune the cap with MAX_VISIBLE.)

Why not the "unmatched trailing tool call" heuristic?

Because a transcript that stops at a tool_use block while the session is
not status=="waiting" only means the run stalled, not that it is
waiting on your approval. Keying needs-approval off that would false-positive on
every mid-tool pause. The live status=="waiting" flag is the only
authoritative pending-permission signal, so that is what the red bucket uses.

Codex is out of scope (for needs-approval)

Codex has no on-disk live-status file equivalent to ~/.claude/sessions,
and its approval prompts are not written to the rollout JSONL. So ARIS-Monitor
does not scan Codex at all and will never claim Codex needs approval. The
pending-permission feature is Claude-Code-only by design.

Empty / all-clear state

With zero active sessions the panel stays visible and shows a calm
ARIS-Monitor — all clear ○ 0 header (green, never red) with a dim
no active Claude sessions line. Zero sessions = "nothing needs you", which is
visually distinct from "needs approval".

Files

  • widget.py — the Tkinter floating panel (UI; imports scanner.scan() for the
    read-only display and focus.focus() for the click-to-raise action).
  • scanner.py — the strictly read-only classifier. Public: scan(),
    summary(). python3 scanner.py is a GUI-less smoke test.
  • focus.py — the ONE non-read action: raise a session's terminal (ps for
    the tty + focus-tty.sh). Strictly raise-only; never kills/writes/signals.
  • focus-tty.sh — bundled raise-only shim (Terminal.app / iTerm2 / tmux pane).
    Always the bundled script (no ~/.claude/focus-tty.sh override is executed),
    so the focus action's command surface stays provably bounded to this reviewed
    shim — osascript activate/select + read-only tmux list-* discovery, never
    kill/send-keys/session mutation.
  • ticker.py — headless terminal fallback (same scanner, same 2 s loop), used
    automatically when Tkinter is unavailable.
  • run.sh — launcher: verifies Tk, starts the widget, falls back to the
    ticker. Supports --check and --ticker.

Dependencies

Python 3 standard library only: tkinter, json, os, time, glob,
dataclasses. No pip. No venv. No brew (common case). No browser.

Tkinter ships with macOS's Xcode Command Line Tools /usr/bin/python3 and with
most conda / Homebrew pythons (Tk 8.6 verified present here). If
python3 -c "import tkinter" fails on a minimal interpreter, install Tk for it
(e.g. brew install python-tk) — or just use ./run.sh --ticker, which needs
no Tk.

Note on run.sh and venvs: ARIS-Monitor has no third-party
dependencies, so there is nothing to install and run.sh deliberately does
not create a venv — a fresh venv often lacks the compiled _tkinter
module the base interpreter has, which would break the GUI. The launcher
simply verifies Tk against your existing python3 and runs.

Tunables

Top-of-file constants in scanner.py / widget.py:

  • REFRESH_MS (widget) / REFRESH_S (ticker) — poll cadence (default 2 s).
  • MAX_VISIBLE (widget) — rows shown before the rest fold behind ▸ N more (default 5; needs-approval rows are never folded).
  • LIVE_WINDOW — seconds before a session is styled dim/stale and sorted to the bottom (1800 = 30 min).
  • IDLE_THRESHOLD — busy-but-fresh cutoff for "working" (300).
  • TRANSCRIPT_TAIL_BYTES — read-only tail size (256 KiB).

macOS caveats (the documented price of zero-install)

overrideredirect floating windows are absent from Mission Control, are not
Cmd-Tab-able, and can sit below a true-fullscreen app's Space; the look is
utilitarian (no native rounded corners / vibrancy). Acceptable for an MVP
triage glance. The same scanner.py can later back a PyObjC NSPanel for 10/10
floating polish with zero detection-code changes — at the cost of one
pip install pyobjc-framework-Cocoa.


Overview (`templates/README.md`)

Templates

Ready-to-use templates for each ARIS workflow. Copy, fill in your content, and run the corresponding skill.

Workflow Input Templates

Template For Workflow What to do
RESEARCH_BRIEF_TEMPLATE.md Workflow 1 Detailed research direction as document input
RESEARCH_CONTRACT_TEMPLATE.md Workflow 1 Define problem boundaries, non-goals, timeline before starting
EXPERIMENT_PLAN_TEMPLATE.md Workflow 1.5 Claim-driven experiment roadmap with run order and budgets
NARRATIVE_REPORT_TEMPLATE.md Workflow 3 Research narrative with claims, experiments, results
PAPER_PLAN_TEMPLATE.md Workflow 3 Pre-made outline to skip planning phase
CLAUDE_MD_TEMPLATE.md All Workflows Project dashboard with Pipeline Status — create once per project
MANIFEST_TEMPLATE.md All Workflows Output tracking manifest — auto-maintained by skills

Chinese Templates (中文模板)

Template For Workflow What to do
RESEARCH_BRIEF_TEMPLATE_CN.md Workflow 1 研究简报中文模板
IDEA_CANDIDATES_TEMPLATE_CN.md Workflow 1 Idea 候选池中文模板
EXPERIMENT_PLAN_TEMPLATE_CN.md Workflow 1.5 实验计划中文模板

Patent Templates (`/patent-pipeline`)

Template For Workflow What to do
INVENTION_BRIEF_TEMPLATE.md Patent Pipeline Invention disclosure with technical problem, solution, advantages, figures
PATENT_CLAIMS_TEMPLATE.md /claims-drafting Claims hierarchy worksheet with examples for CN/US/EP
PATENT_SPECIFICATION_TEMPLATE.md /specification-writing Skeleton specification with all required sections

Compact Mode Templates (`— compact: true`)

Template Written by Purpose
IDEA_CANDIDATES_TEMPLATE.md /idea-discovery Top 3-5 surviving ideas (lean, not full 12-idea report)
EXPERIMENT_LOG_TEMPLATE.md /experiment-bridge Structured experiment record (results + reproduction commands)
FINDINGS_TEMPLATE.md /auto-review-loop One-line-per-finding discovery log (anomalies, decisions)

Usage

Research Pipeline

bash
cp templates/EXPERIMENT_PLAN_TEMPLATE.md refine-logs/EXPERIMENT_PLAN.md
# Edit with your content, then:
/experiment-bridge

Patent Pipeline

bash
cp templates/INVENTION_BRIEF_TEMPLATE.md patent/INVENTION_BRIEF.md
# Edit with your invention details, then:
/patent-pipeline "patent/INVENTION_BRIEF.md -- CN"

Overview (`docs/tutorials/README.md`)

ARIS Tutorials

Long-form interview-prep cheat sheets, written in Markdown and rendered to single-file HTML via the /render-html skill (academic-newspaper template, sticky TOC, MathJax + highlight.js, cross-model codex review gate).

📖 Curated collection: github.com/wanshuiyin/ARIS-in-AI-Offer — interview-prep cheat sheets organized into 6 categories with bilingual README.

🧠 General / Foundations

Tutorial MD HTML Topics
Attention 面试 Cheat Sheet md html Scaled-dot-product, MHA / MQA / GQA, RoPE / ALiBi, FlashAttention, KV cache, attention in diffusion, NaN-mask trap
KL Divergence in RLHF md html k1/k2/k3 estimators · forward vs reverse KL · KL in PPO/GRPO/DPO · placement gradient bias · "Rethinking KL" + "Comedy of Estimators"

🎯 Post-Training & Reasoning

Tutorial MD HTML Topics
RLHF / DPO / GRPO / PPO md html PPO clip + GAE · RLHF pipeline · DPO closed-form from BT · GRPO group-relative · KTO/IPO/SimPO/ORPO · PRM vs ORM · Constitutional AI
Reasoning Models (o1 / R1 / Test-Time Compute / PRM) md html o1/o3/R1 three-way comparison · GRPO derivation · PRM vs ORM · s1 budget forcing · MCTS+PUCT · R1-Distill
LLM On-Policy Distillation (OPD) md html Route A (full-vocab) vs Route B (REINFORCE/IS, Tinker default) · vOPD control variate · OPD+GRPO · MiniLLM / GKD / Qwen3 / Thinking Machines

🏛️ LLM Architecture & Systems

Tutorial MD HTML Topics
MoE (Mixture-of-Experts) md html DeepSeek-V3 fine-grained + shared · Mixtral · Llama 4 · auxiliary-loss-free balancing · EP all-to-all · DualPipe · capacity factor
Long Context (RoPE / YaRN / NTK / MLA / StreamingLLM) md html RoPE rotation, PI/NTK/YaRN/LongRoPE scaling, MLA decoupled RoPE, SWA + StreamingLLM, Ring Attention
KV Cache + Speculative Decoding md html PagedAttention, MQA/GQA/MLA, speculative decoding acceptance prob, Medusa / EAGLE-1/2/3, Lookahead
Quantization md html GPTQ Hessian-based · AWQ activation-aware · SmoothQuant · LLM.int8 · QuaRot/SpinQuant · FP8 E4M3/E5M2 · MX formats · NVFP4
Distributed Training md html DDP / FSDP2 / ZeRO 1/2/3 + ZeRO++ / TP (Megatron) / PP (GPipe, 1F1B, interleaved) / SP / CP / EP / DualPipe / Llama 3

🌊 Generative Models — Theory & Tokenizers

Tutorial MD HTML Topics
Flow Matching Quick Reference md html Conditional FM, Rectified Flow / VP / VE paths, training + sampling code, ODE solvers, SD3 / FLUX latent FM
Diffusion Foundations (DDPM / Score / DDIM / EDM / CFG) md html DDPM ELBO + L_simple, score matching + Tweedie, Score SDE + PF-ODE, DDIM, EDM preconditioning + Heun, CFG, Consistency Models + LCM + Turbo
VAE / VQ-VAE / VQ-GAN / FSQ md html VAE ELBO + reparam · β-VAE · IWAE · posterior collapse · VQ-VAE STE + EMA codebook · VQ-GAN + PatchGAN · FSQ even/odd levels · LFQ

🎨 Generation Systems

Tutorial MD HTML Topics
Image Generation Systems md html LDM · SD/SDXL/SD3/FLUX · DiT · AdaLN-Zero · ControlNet · IP-Adapter · LoRA · DreamBooth · ADD/LADD distillation
Video Generation md html 3D Causal VAE · Spacetime Patches · Spatiotemporal Attention · MM-DiT · I2V · VBench · Sora / Hunyuan-Video / Wan
3D Generation md html NeRF volumetric rendering · Instant-NGP hash · 3DGS rasterization · SDS / VSD · Trellis / Hunyuan3D
Diffusion Post-Training md html DDPO · DPOK · DRaFT-K · AlignProp · Diffusion-DPO · D3PO · SPO · Diffusion-KTO · MaPO · Flow-GRPO
Diffusion / Flow Distillation md html CM · iCT · sCM · CTM · LCM/TCD · rCM · DMD/DMD2 · ADD/LADD/Lightning · Rectified Flow/InstaFlow · Progressive distillation

👁️ Multimodal

Tutorial MD HTML Topics
VLM (CLIP / LLaVA / Qwen-VL / DeepSeek-VL) md html CLIP InfoNCE derivation, SigLIP, ViT, BLIP-2 Q-Former, Flamingo Perceiver, LLaVA, Qwen2-VL M-RoPE

✅ 23 tutorials across 6 categories; each also available in English alongside the Chinese version (e.g. attention_tutorial_en.md / _en.html). Full curated collection: ARIS-in-AI-Offer.

How they were produced

The two pilots were drafted by hand and rendered via /render-html. Subsequent tutorials use the dedicated workflow skill:

text
/interview-cheatsheet "<TOPIC>"            # default: 600-line balanced effort
/interview-cheatsheet "<TOPIC>" — effort: max    # ~1000 lines + deeper proofs

/interview-cheatsheet (skills/interview-cheatsheet/SKILL.md) is an ARIS skill that:

  1. Plans a 12-14 section structure (TL;DR · intuition · formula+derivation · from-scratch PyTorch · variants · 25 高频面试题 L1/L2/L3)
  2. Drafts the MD following the canonical style of the two pilot tutorials (heading conventions, table-pipe escapes, callout-list separation rules — all bugs caught during the pilot reviews are now encoded into the style guide)
  3. Cross-model codex gpt-5.5 xhigh review on math / code / interview-answer / citation correctness + personal-info redaction (fresh thread, never codex-reply)
  4. Fix-and-loop — trajectory-based (no hard cap; stop if same issue recurs or ~6 rounds without convergence)
  5. Renders via /render-html (which itself runs a 13-check codex review on the rendered output)
  6. Writes a combined audit trail to *.review.json
  7. Stops — never auto-commits. The user reviews and pushes manually.

See skills/interview-cheatsheet/SKILL.md for the full skill protocol and skills/render-html/SKILL.md for the renderer.


Overview (`mcp-servers/antigravity-exec/README.md`)

Antigravity CLI → MCP

使用已有 agy 登录,把 Gemini 3.8 Flash 接为独立 MCP。沿用同仓库 codex-exec / grok-exec 的 NDJSON、进度、取消和会话保存设计,Python 3.9+,无需第三方库。

默认模型 gemini-3.8-flash-high,effort high。提供 antigravity 和 antigravity-reply,作为独立工具使用,不修改 ARIS skills 的 reviewer 路由。

现有 gemini-review 已有 API、Gemini CLI 和 agy 后端,提供 review* 工具供正式评审流程使用。本桥接提供显式 model/effort 与 CLI 原生 conversation 续接;工具名和会话契约不同。— reviewer: agy 和 Codex 的 Gemini overlay 仍走现有 gemini-review,不会因安装本桥接而切换。

安装

  1. 安装 Antigravity CLI,运行 agy 登录;agy models 应包含目标模型。
  2. 把同目录 aris-antigravity-review.md 复制到 ~/.gemini/config/agents/。这是专供 MCP 选择的审阅 agent,不改变交互会话的默认 agent。
  3. 注册 MCP,绝对路径替换为自己的安装位置:
bash
codex mcp add antigravity --env AGY_BIN=/absolute/path/to/agy -- python3 /absolute/path/to/aris/mcp-servers/antigravity-exec/server.py

在 Codex config.toml 的 [mcp_servers.antigravity] 中设置 tool_timeout_sec = 3660。若本机网络需要代理,在该服务的 env 中显式配置实际可达的 http_proxy / https_proxy;不要依赖 GUI 启动时继承终端环境。

Claude Code 可另行注册:

bash
claude mcp add antigravity -s user -- python3 /absolute/path/to/aris/mcp-servers/antigravity-exec/server.py

重启对应客户端后使用新工具。常驻 MCP 与 shell 内启动的独立探测具有不同的宿主权限;受限 shell 不能写 CLI 状态目录或连接代理,不代表常驻服务也失败,应使用宿主的正常审批流程处理。

调用

首轮:

json
{"prompt":"请读取指定文件,回答这个问题。","cwd":"/absolute/path/to/project","model":"gemini-3.8-flash-high","effort":"high"}

续接 antigravity-reply:

json
{"threadId":"首轮返回的 UUID","prompt":"请接着解释第二点。"}

续接只接受这两个字段,沿用首轮 model、effort、cwd 和审阅 agent。桥接重启后仍可恢复自己创建的会话;不用 --continue,避免串到其他交互会话。threadId 同时放在文本和 structuredContent 中。

返回的 model 来自 CLI 的 init 事件,selectedModelLabel 来自本轮 CLI 解析模型的日志;effort 从该实际选择的变体标签解析,注明 effortSource=cli_selected_model_variant。缺少记录时返回 null,不把请求值冒充实测值;这也不是独立的服务端型号证明。不支持的模型或 effort 交由 CLI 明确报错,不自动降级。

权限与执行

  • 选择专用审阅 agent,其提示和工具声明限定文件读取与搜索;保留 CLI 原生权限检查,启用 --sandbox,不传跳过权限参数。CLI 1.2.17 的 init 仍列出完整工具目录,因此这里不宣称已验证所有写入被硬隔离。使用者应按现有 CLI 权限管理敏感工作区。
  • 用一条 NDJSON stdin 传提示,避免长提示进入命令行;关闭 stdin 后 CLI 完成本轮并退出。临时输入与本轮日志留在私有目录,调用结束清除;CLI 自己的会话仍按原生方式保存。
  • 接受完整 SUCCESS、非空回答和进程退出码0;ERROR、WAITING、取消、非零退出或缺失终态都返回 isError。
  • 等待模型时响应 ping、进度与取消;超时或宿主断开会回收本次 CLI 进程组。桥接不自动重试模型调用。
  • 每个服务进程顺序执行。CLI 的 num_turns 是累计用户回合,不是 Grok/Claude 的工具轮次上限;本桥接没有编造同名限制参数。
环境变量 默认值
AGY_BIN agy
AGY_EXEC_MODEL gemini-3.8-flash-high
AGY_EXEC_EFFORT high
AGY_EXEC_TIMEOUT_SEC 3600
AGY_EXEC_PROGRESS_INTERVAL_SEC 15
AGY_EXEC_STATE_DIR ~/.codex/state/antigravity-exec
AGY_EXEC_DEBUG_LOG 不启用

探测用短超时,例如 AGY_EXEC_TIMEOUT_SEC=90;正常审阅保留较长超时。

验证

2026-10-05,macOS、Antigravity CLI 1.2.17:直接 headless 首轮与续接成功;真实 MCP 用 view_file 读取测试文件,重启桥接后用同一会话正确复述随机字符串,两轮约40秒,CLI 两轮均选择 Gemini 3.8 Flash (High)。该验证覆盖调用与续接,不代表复杂审阅质量或并发额度测试。

离线协议测试:

bash
python3 -m unittest discover -s tests -p 'test_antigravity_exec_bridge.py' -v

8项用例覆盖协议、长输入、跨进程续接、错误终态、元数据缺失、取消和超时。Ruff、格式与 ty 检查通过。

接口依据:Google headless 文档、自定义 agent、Codex MCP 配置。


Overview (`mcp-servers/claude-review/README.md`)

Claude Review MCP

Bridge Codex-first ARIS workflows to the local Claude Code CLI.

What it does

  • Keeps Codex as the executor
  • Uses Claude Code CLI as the external reviewer
  • Exposes synchronous MCP tools:
    • review
    • review_reply
  • Exposes asynchronous MCP tools for long reviewer prompts:
    • review_start
    • review_reply_start
    • review_status

The synchronous tools return a JSON string containing threadId and response.
The asynchronous start tools return a JSON string containing jobId and status, and review_status later returns the final threadId and response.

Claude Code is the CLI transport. The reviewer uses its configured provider,
which may be Anthropic or an API-compatible provider such as DeepSeek. Do not
classify the reviewer's model family from the bridge name alone.

Install into Codex

bash
mkdir -p ~/.codex/mcp-servers/claude-review
cp mcp-servers/claude-review/server.py ~/.codex/mcp-servers/claude-review/server.py
codex mcp add claude-review -- python3 ~/.codex/mcp-servers/claude-review/server.py

Alternatively, register the absolute path to server.py in an existing ARIS
checkout so repository updates also update the bridge. If Codex cannot find
claude on PATH, pass --env CLAUDE_BIN=/absolute/path/to/claude before --.
The bridge uses Claude Code's existing provider settings and authentication;
there is no need to copy credentials into the MCP configuration. Leaving
CLAUDE_REVIEW_MODEL unset follows the CLI's configured model.

Reopen the Codex session after registering a new server and check its MCP tool
list. An existing interactive Claude Code window can remain open: this bridge
starts a separate non-interactive session and resumes only the supplied
threadId, never the most recent interactive conversation.

If your Claude Code login depends on a shell function such as claude-aws, use the wrapper instead:

bash
mkdir -p ~/.codex/mcp-servers/claude-review
cp mcp-servers/claude-review/server.py ~/.codex/mcp-servers/claude-review/server.py
cp mcp-servers/claude-review/run_with_claude_aws.sh ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh
chmod +x ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh
codex mcp add claude-review -- ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh

Environment Variables

  • CLAUDE_BIN: Claude CLI path, defaults to claude
  • CLAUDE_REVIEW_MODEL: optional reviewer model override
  • CLAUDE_REVIEW_SYSTEM: optional default system prompt
  • CLAUDE_REVIEW_TOOLS: Claude tools override, defaults to empty string
  • CLAUDE_REVIEW_TIMEOUT_SEC: subprocess timeout, defaults to 600
  • CLAUDE_REVIEW_STATE_DIR: async job storage, defaults to ~/.codex/state/claude-review
  • CLAUDE_REVIEW_DEBUG_LOG: local protocol/debug log path; logs include prompts and responses

Notes

  • The bridge runs Claude in non-interactive -p mode.
  • It passes --strict-mcp-config with an empty MCP configuration, so the
    reviewer does not inherit MCP servers such as Codex and delegate back to the
    executor. Provider settings remain available. CLI tools and plan permissions
    are not an operating-system sandbox.
  • By default the reviewer gets no tools. This matches the original ARIS pattern where the external reviewer only sees the prompt context prepared by the executor.
  • A prompt that hands the reviewer artifact paths instead of pasted context must therefore opt in per call, e.g. "tools": "Read,Grep,Glob". Without it the reviewer is asked to read files it has no tool to open, and it answers from your framing alone — exactly what artifact-grounded review is meant to avoid. The skills-codex-claude-review overlay passes this on its artifact-grounded review blocks; the server default stays tool-free, so prompt-only reviews are unchanged.
  • The opt-in is per call, not per thread: every call re-sends --tools, so a review_reply / review_reply_start continuing an artifact-grounded thread has to repeat it.
  • All four review tools accept cwd. Set it to the project directory when
    passing artifact paths, and repeat the same value on replies. Without it,
    the CLI inherits the MCP server's directory; threadId does not select a
    working directory. Async jobs save the resolved absolute directory before
    launching their worker.
  • Keep the opt-in read-only. The bridge already runs Claude with --permission-mode plan, and a reviewer has no reason to hold Bash, Edit, or Write.
  • threadId is the native Claude session id and can be passed directly to review_reply.
  • jobId is a bridge-local background task id stored on disk under ~/.codex/state/claude-review/jobs/ by default, so status can be resumed across MCP server restarts.

Example file review:

json
{
  "name": "review",
  "arguments": {
    "prompt": "Read draft.md and identify unsupported claims.",
    "cwd": "/absolute/path/to/project",
    "tools": "Read,Grep,Glob"
  }
}

Results include requestedModel (explicit argument or bridge default, otherwise
null) separately from model. The latter comes from the CLI result's model
field or a single modelUsage entry, with modelSource identifying the source.
reportedModels lists the usage entries when present. If the CLI does not
identify one model unambiguously, model is null; the requested alias is never
substituted as evidence. These are CLI reports, not independent server identity
verification. No context-window size or reasoning effort is inferred from the
model name.

Empty reviews, nonterminal output, CLI errors and explicit unfinished stop
reasons are returned as errors, with no automatic retry. Existing synchronous
calls block the protocol reader until the CLI returns or times out; MCP
cancellation is not a process-tree cancellation guarantee. Use async jobs for
long reviews and poll their status after reconnecting.

When to use sync vs async

  • Use review / review_reply for short prompts that comfortably finish within the host MCP tool timeout.
  • Use review_start / review_reply_start + review_status for long paper or project reviews. This avoids the observed Codex -> tools/call timeout around 120 seconds.

Async flow

Start a long review:

json
{
  "name": "review_start",
  "arguments": {
    "prompt": "Review this paper draft..."
  }
}

Example response:

json
{
  "jobId": "5d8d0a9c5a2f4f42ae44f6f0c2d73f6f",
  "status": "queued",
  "done": false
}

Poll later:

json
{
  "name": "review_status",
  "arguments": {
    "jobId": "5d8d0a9c5a2f4f42ae44f6f0c2d73f6f",
    "waitSeconds": 20
  }
}

When complete, review_status returns the same reviewer payload fields as the synchronous tools, including threadId, response, model, and stop_reason.


Overview (`mcp-servers/codex-exec/README.md`)

codex-exec — the `codex` MCP server, over `codex exec`

codex-cli 0.154.0 removed the codex mcp-server entry point that ARIS
registered as the codex MCP server. This bridge speaks the same contract —
tools codex and codex-reply, results {threadId, content} — and runs each
call as a codex exec subprocess. Nothing in the skills changes.

Register

bash
cd ~/aris_repo && git pull                  # existing install: older clones do not have this directory
claude mcp remove codex -s user             # only if the old `codex mcp-server` registration exists
claude mcp add codex -s user -- python3 "$(pwd)/mcp-servers/codex-exec/server.py"

Use the absolute path of your ARIS clone ($(pwd) from inside it). Restart
Claude Code; claude mcp list should show codex … ✓ Connected. Verified on
codex-cli 0.153.4 and 0.154.0; needs a version with codex exec resume, so there
is no reason to keep the old registration on 0.153 either. Skills need no change.

Installed by copying skills/ without keeping a clone? Clone the repo anywhere
and point at its server.py; the file is self-contained.

Other MCP hosts (Cursor, Trae, Antigravity, Copilot CLI) use the same key with
"command": "python3", "args": ["/absolute/path/to/aris_repo/mcp-servers/codex-exec/server.py"].

Requirements: codex on PATH and logged in; Python 3.9+ (macOS system python is fine); no packages.

What a call becomes

MCP argument codex exec
prompt stdin (no argv limit)
model -m MODEL
config {"model_reasoning_effort": "ultra"} -c model_reasoning_effort="ultra" (nested objects become dotted keys)
sandbox --sandbox MODE
cwd --cd DIR
codex-reply threadId codex exec resume THREAD plus the model, config, sandbox and cwd the thread was created with — resume alone would fall back to config.toml defaults, and ARIS's routing contract relies on a continued thread keeping its reviewer model and effort

Per-thread settings live in ~/.codex/state/codex-exec/threads/.json, one file each.

A failed turn (unknown model, auth, API error) comes back as isError: true
with codex's own error text, so the capability fallback in
skills/shared-references/reviewer-routing.md keys on the same wording as before.

While a review runs the bridge streams codex/event notifications and, when the
host passes a progressToken, a notifications/progress heartbeat every 15 s
(CODEX_EXEC_PROGRESS_INTERVAL_SEC), answers ping, and honours
notifications/cancelled. Notifications cannot override a host's hard tool
timeout — deep-audit reviews at ultra can run 30+ minutes.

Not offered, because codex exec cannot honour them: approval-policy,
base-instructions, developer-instructions, compact-prompt. No ARIS skill
passed them.

Debugging: CODEX_EXEC_DEBUG_LOG=/path/to/log records every request and the
exact codex exec command line; CODEX_BIN points at a specific codex binary.


Overview (`mcp-servers/codex-image2/README.md`)

codex-image2 MCP Bridge

Experimental bridge that lets Claude Code ask the local Codex desktop app
to generate an image through Codex's native app-server image-generation path.

This bridge is intentionally narrow:

  • it accepts text prompts
  • it waits for a native imageGeneration event from Codex
  • it rejects runs that fall back to shell/Python-based image creation
  • it copies the generated image only into cwd/figures/ai_generated/

Requirements

  • Codex desktop app installed and signed in
  • codex CLI available on PATH
  • codex debug app-server send-message-v2 "ping" works on your machine

Install for Claude Code

bash
mkdir -p ~/.claude/mcp-servers/codex-image2
cp mcp-servers/codex-image2/server.py ~/.claude/mcp-servers/codex-image2/server.py
chmod +x ~/.claude/mcp-servers/codex-image2/server.py

claude mcp add codex-image2 -s user -- python3 ~/.claude/mcp-servers/codex-image2/server.py

Exposed Tools

  • generate_start
  • generate_status

The bridge is intentionally async-first. Call generate_start, then poll
generate_status.

Smoke Test

After registering the server in Claude Code, ask Claude to call:

text
mcp__codex-image2__generate_start

with a prompt like:

text
Generate a clean blue circle on white background.

Then poll mcp__codex-image2__generate_status until done=true.

outputPath must stay under figures/ai_generated/ inside the provided cwd.
The server rejects writes outside that workspace root.

Current Limitations

  • The bridge uses the current Codex app-server path and is experimental
  • It is optimized for one-shot generation rather than conversational thread replay
  • Reference images are passed as path hints in the prompt; if Codex exposes local image viewing in that session, it may inspect them

Logging

  • Debug logging is opt-in via CODEX_IMAGE2_DEBUG_LOG=/path/to/debug.log
  • Raw Codex stdout/stderr run logs are off by default; enable only when needed with CODEX_IMAGE2_SAVE_RUN_LOGS=1

Overview (`mcp-servers/gemini-review/README.md`)

Gemini Review MCP

Bridge Codex-first ARIS workflows to Gemini, using the direct Gemini API by default.

What it does

  • Keeps Codex as the executor
  • Uses Gemini as the external reviewer
  • Exposes synchronous MCP tools:
    • review
    • review_reply
  • Exposes asynchronous MCP tools for long reviewer prompts:
    • review_start
    • review_reply_start
    • review_status

The synchronous tools return a JSON string containing threadId and response.
The asynchronous start tools return a JSON string containing jobId and status, and review_status later returns the final threadId and response.
When using the direct API backend, the tools also accept optional imagePaths / image_paths so Gemini can review local PNG/JPG/WebP files, which is used by the poster visual-review overlay.

Install into Codex

bash
mkdir -p ~/.codex/mcp-servers/gemini-review
cp mcp-servers/gemini-review/server.py ~/.codex/mcp-servers/gemini-review/server.py
codex mcp add gemini-review --env GEMINI_REVIEW_BACKEND=api -- python3 ~/.codex/mcp-servers/gemini-review/server.py

Prerequisites

Prepare the direct Gemini API path before use:

  • Gemini API: set GEMINI_API_KEY or GOOGLE_API_KEY

Optional fallback only:

  • Gemini CLI: install gemini and complete CLI login/auth if you explicitly want GEMINI_REVIEW_BACKEND=cli
  • Antigravity CLI: install/authenticate agy if you explicitly want GEMINI_REVIEW_BACKEND=agy

The server also auto-loads ~/.gemini/.env if it exists, so a local file such as:

bash
export GEMINI_API_KEY=...

is enough for API mode without exporting the variable in every shell.

Environment Variables

  • GEMINI_BIN: Gemini CLI path, defaults to gemini
  • AGY_BIN: Antigravity CLI path, defaults to agy
  • GEMINI_REVIEW_MODEL: optional reviewer model override used by API/Gemini CLI backends; agy model selection is controlled by Antigravity settings, so the bridge reports the actual model recovered from the current log/transcript and records any requested model as provenance only
  • GEMINI_REVIEW_API_MODEL: API-only default when GEMINI_REVIEW_MODEL is unset, defaults to gemini-2.5-flash
  • GEMINI_REVIEW_SYSTEM: optional default system prompt
  • GEMINI_REVIEW_BACKEND: reviewer backend override, one of api, auto, cli, or agy; defaults to api
  • GEMINI_REVIEW_TIMEOUT_SEC: HTTP / subprocess timeout, defaults to 600
  • GEMINI_REVIEW_MAX_STATUS_WAIT_SECONDS: maximum blocking wait for review_status, defaults to 30
  • GEMINI_REVIEW_AGY_PRINT_TIMEOUT: Antigravity --print-timeout value, defaults to ${GEMINI_REVIEW_TIMEOUT_SEC}s
  • GEMINI_REVIEW_AGY_APP_DATA_DIR: Antigravity CLI app data directory, defaults to ~/.gemini/antigravity-cli
  • GEMINI_REVIEW_AGY_ARTIFACT_MAX_CHARS: max characters read from an AGY-generated text artifact, defaults to 200000
  • GEMINI_REVIEW_WORKSPACE_ROOT: workspace root for local imagePaths, defaults to the server process current working directory
  • GEMINI_REVIEW_STATE_DIR: bridge state directory, defaults to ~/.codex/state/gemini-review
  • GEMINI_REVIEW_DEBUG_LOG: debug log path, defaults to ~/.codex/state/gemini-review/debug.log; custom paths must resolve under GEMINI_REVIEW_STATE_DIR
  • GEMINI_API_KEY: Gemini API key
  • GOOGLE_API_KEY: alternate Gemini API key env var

Notes

  • The bridge defaults to the direct Gemini API path. This is the intended reviewer backend for the ARIS skill overlay.
  • The server auto-loads only GEMINI_API_KEY and GOOGLE_API_KEY from ~/.gemini/.env; the file is ignored if it is a symlink, not owned by the current user, not a regular file, or group/world-writable.
  • GEMINI_REVIEW_BACKEND=auto is still supported if you want API-first auto-selection; it uses the API when a Gemini API key is configured and otherwise falls back to the Gemini CLI. Antigravity is never selected by auto; use GEMINI_REVIEW_BACKEND=agy explicitly.
  • GEMINI_REVIEW_BACKEND=agy routes review prompts through agy --print, which is useful when you want Codex to keep the MCP contract but use Antigravity CLI authentication/model routing. Because agy --print can exit successfully after writing a conversation transcript or generated artifact without printing the final text to stdout, the bridge passes a per-call --log-file and can recover from the Antigravity transcript for that same invocation only.
  • The agy backend is fail-closed for ARIS's cross-model invariant: the bridge cannot choose the Antigravity model per call, so it treats Antigravity's selected model as external configuration. After each call it must recover an actual Gemini-family model id from the current invocation's log/transcript and returns that id as model. If a caller passes a model value, the response also includes requested_model and a warning because the current agy CLI does not expose per-call model selection. If Antigravity routes the request to a non-Gemini model, or the log/transcript does not expose a model id, the call fails instead of returning an unauditable "agy-cli" placeholder.
  • Antigravity transcript recovery validates conversation ids with ^[0-9A-Za-z_-]+$, caps ids at 128 characters, requires the per-call invocation nonce, and accepts the nonce only from user/bridge-written transcript events before considering later transcript lines. Generated text artifacts are read only from the final planner response, only as a fallback when that response has no substantive inline text, only if their resolved file:// path stays under GEMINI_REVIEW_AGY_APP_DATA_DIR/brain/<conversation>/, and only if the artifact was updated during the current invocation window.
  • If the default API model is temporarily rate-limited on your current free-tier window, keep the same bridge and set GEMINI_REVIEW_MODEL=gemini-flash-latest as a model override.
  • The tools argument is accepted for compatibility with existing skills, but is ignored. This matches the original pattern where the external reviewer only sees the prompt context prepared by Codex.
  • imagePaths / image_paths are supported only by the direct Gemini API backend in this bridge. Paths must resolve under GEMINI_REVIEW_WORKSPACE_ROOT and are opened with no-symlink safeguards; platforms where the opened fd cannot be re-verified fail closed. CLI and agy fallback paths remain text-only.
  • threadId is a bridge-local conversation id persisted under ~/.codex/state/gemini-review/threads/ by default and can be passed to review_reply.
  • jobId is a bridge-local background task id stored under ~/.codex/state/gemini-review/jobs/ by default, so status can be resumed across MCP server restarts.
  • State files contain review prompts/responses so async jobs and threads can resume. The bridge creates state, thread, job, debug-log, and per-call agy log directories with owner-only permissions where possible; agy per-call log directories are temporary and are removed after the call. Delete GEMINI_REVIEW_STATE_DIR when you no longer need resumability. If you override GEMINI_REVIEW_STATE_DIR, choose a private directory rather than a shared /tmp path.
  • This is intentionally a narrow, repo-local adapter. We did not directly vendor a generic Gemini MCP server, because the ARIS reviewer-aware skills expect the specific review / review_reply / review_start / review_reply_start / review_status interface and resumable review-thread semantics.

Validation

This bridge was validated against the ARIS reviewer workflow in a privacy-safe way:

  • direct bridge smoke tests passed for:
    • review
    • review_start -> review_status
    • review_reply_start -> review_status
    • local-image multimodal review through imagePaths
  • the overlayed reviewer-aware Codex skills were checked to ensure all 15 predefined overrides point at this bridge contract
  • representative Codex-side executions on a private, non-public research repository confirmed that real skill runs can enter the gemini-review path from research-review, idea-generation, and paper-planning style workflows

Important nuance from testing:

  • Gemini free tier was sufficient for development-style validation, but bursty back-to-back runs could still trigger temporary 429 responses
  • on the same setup, a later retry completed sync review, async review_start -> review_status, and threaded review_reply_start -> review_status successfully with GEMINI_REVIEW_MODEL=gemini-flash-latest
  • long synchronous reviewer calls can still hit host-side MCP tool timeouts before Gemini responds
  • because of that, the async path is not just an implementation detail; it is the recommended operational path for long reviews

When to use sync vs async

  • Use review / review_reply for short prompts that comfortably finish within the host MCP tool timeout.
  • Use review_start / review_reply_start + review_status for long paper or project reviews. This avoids the observed Codex -> tools/call timeout around 120 seconds.

Async flow

Start a long review:

json
{
  "name": "review_start",
  "arguments": {
    "prompt": "Review this paper draft..."
  }
}

Multimodal example:

json
{
  "name": "review_start",
  "arguments": {
    "prompt": "Review this poster PNG for readability and clipping.",
    "imagePaths": ["poster/poster_v1.png"]
  }
}

Example response:

json
{
  "jobId": "5d8d0a9c5a2f4f42ae44f6f0c2d73f6f",
  "status": "queued",
  "done": false
}

Poll later:

json
{
  "name": "review_status",
  "arguments": {
    "jobId": "5d8d0a9c5a2f4f42ae44f6f0c2d73f6f",
    "waitSeconds": 20
  }
}

When complete, review_status returns the same reviewer payload fields as the synchronous tools, including threadId, response, model, backend, and stop_reason. For agy calls, the payload also includes model_provenance; if a model was requested, it also includes requested_model and warning.

Provenance and References


Overview (`mcp-servers/grok-exec/README.md`)

Grok CLI → MCP 桥接

这个桥接沿用相邻 codex-exec/server.py 的 stdio、进度通知、取消和会话记录设计,改用 Grok CLI 的 headless 模式。提供 grok 和 grok-reply,返回结构保留 threadId / content。Python 3.9+,无需第三方 Python 依赖。

默认模型为 grok-4.7、推理强度为 xhigh。在 Grok CLI 1.0.46 上实测,服务返回的模型名是 grok-4.7-build,首次调用和续接的会话摘要均记录 reasoning_effort: xhigh。CLI 显示名、请求名和服务返回名可能不同,因此返回值分别记录请求值与实际值。

注册

先安装 Grok CLI 并完成 grok login。桥接使用 CLI 已有的登录状态,不复制认证 token,也不需要另外填 API key。

Claude Code(将路径换成自己的 ARIS 仓库绝对路径):

bash
claude mcp add grok -s user -- python3 /absolute/path/to/aris/mcp-servers/grok-exec/server.py

Codex:

bash
codex mcp add grok --env GROK_BIN=/absolute/path/to/grok -- python3 /absolute/path/to/aris/mcp-servers/grok-exec/server.py

在 Codex 的 ~/.codex/config.toml 中给已有的 [mcp_servers.grok] 表补上 tool_timeout_sec = 3660。桥接自身默认 3600 秒超时,宿主需要留出取消与清理时间;进度通知不保证延长宿主期限。Codex MCP 配置说明。其他客户端也应设置相应的工具调用超时。

重新启动 MCP 客户端后检查工具列表。这个独立服务不自动修改 ARIS skills 的 reviewer 路由;需要使用 Grok 时显式调用它。一次连通性测试不等于一次研究评审通过。

调用

首次调用:

json
{
  "name": "grok",
  "arguments": {
    "prompt": "请读取指定文件并审阅,指出有证据支持的问题。",
    "cwd": "/absolute/path/to/project",
    "model": "grok-4.7",
    "effort": "xhigh"
  }
}

续接同一会话:

json
{
  "name": "grok-reply",
  "arguments": {
    "threadId": "首次调用返回的 UUID",
    "prompt": "我修改了这些文件,请继续检查。"
  }
}

grok-reply 使用 Grok 的原生 --resume,并显式重传首次调用的模型、effort、cwd、sandbox、工具集合和轮次上限。桥接重启后仍从保存的会话设置恢复;续接调用不能改这些参数。未知会话 ID 会报错,需要新建会话。

参数 默认值 含义
model grok-4.7 Grok CLI 接受的模型名
effort xhigh low / medium / high / xhigh
cwd MCP 服务启动目录 建议明确指定实际项目目录
sandbox read-only Grok 原生 read-only / workspace / strict / off
tools read_file,grep,list_dir Grok 原生工具 ID;空字符串禁用内置工具
max_turns 50 单次调用允许的最大轮数

默认是文件审阅用途:内置工具只开读取、搜索、列目录;关闭子代理、网页搜索和计划模式,禁止 MCP meta-tools。权限模式为 dontAsk,无需等待交互确认。sandbox 由 Grok CLI 实施,其操作系统支持和网络限制以 CLI 文档为准;不能把这个参数视为所有平台都具备同等强度的隔离保证。

成功结果的 structuredContent 包含:

json
{
  "threadId": "...",
  "content": "最终回复",
  "model": "grok-4.7-build",
  "effort": "xhigh",
  "stopReason": "end_turn",
  "requestedModel": "grok-4.7",
  "requestedEffort": "xhigh"
}

effort 从该 Grok 会话的 summary.json 读取;摘要不可用时返回 null,不会拿请求值冒充实际值。实际 effort 与请求不一致时,调用标为错误。model 取 CLI 返回的模型信息。

执行与失败处理

  • 长提示词通过权限为 0600 的临时文件传入,调用结束后删除;不经过 shell 插值。
  • 转发原生事件为 grok/event。客户端提供 progress token 时,默认每 15 秒发送心跳;等待模型期间仍可响应 ping 和取消。
  • CLI 失败、结果截断、轮次用完、缺失最终结果或非零退出码均返回 isError: true,不把半截回答当成正常审阅。
  • 超时、客户端取消或 stdin 关闭时,回收子进程;POSIX 上清理进程组。取消后仍不退出的子进程会被强制终止。
  • 桥接不自动重新发起工具调用。底层 Grok CLI 可能进行内部网络重试(已观察到最多15次);连通性探测建议用 GROK_EXEC_TIMEOUT_SEC=75 限制时长。会话设置记录与 Grok 原生会话共同用于续接。
  • 每个服务进程顺序执行调用。此版本只验证了单会话首轮、续接及故障处理,未做高并发或长时间配额测试。

环境变量:

变量 默认值
GROK_BIN PATH 中的 grok
GROK_EXEC_MODEL grok-4.7
GROK_EXEC_EFFORT xhigh
GROK_EXEC_TIMEOUT_SEC 3600
GROK_EXEC_PROGRESS_INTERVAL_SEC 15
GROK_EXEC_STATE_DIR ~/.codex/state/grok-exec
GROK_EXEC_DEBUG_LOG 不启用

桥接沿用 CLI 的 GROK_HOME 来定位会话摘要;未设置时是 ~/.grok。调试日志记录 RPC 方法与命令参数,不记录提示词正文;原生 Grok 会话仍按 CLI 自己的策略落盘。

验证

无需网络或 Grok 账号的协议回归测试:

bash
python3 -m unittest discover -s tests -p 'test_grok_exec_bridge.py' -v

2026-10-05 在 macOS、Grok CLI 1.0.46 上完成真实验证:直接 headless 调用成功;通过 MCP 读取合成文件,再用 grok-reply 回忆其中随机 token 成功,两个回合实际均为 grok-4.7-build / xhigh,两轮合计约 21 秒。没有据此宣称 headless 已启用 500k 上下文,或已验证复杂研究审阅质量。

排查模型列表获取失败

2026-10-05 另一次调用出现 unknown model id,当时只列出 grok-4.6 / grok-4.5。本机 CLI 日志同时记录 had_real_catalog=false、model_count=2 和 model catalog refresh failed;之后模型目录刷新成功,恢复4项(包含4.7),同一桥接再次返回真实的 grok-4.7-build / xhigh 回复。

因此,这种报错需要先核对 grok models、~/.grok/models_cache.json 的更新时间、~/.grok/logs/unified.jsonl 中的目录刷新结果,以及 CLI 路径、GROK_HOME 和宿主网络权限。后续同机对照确认,旧 MCP 子进程没有继承代理变量,直接连接报 No route to host,经本机已有代理可到达服务;这解释了该机器上的主要连接失败。遵循宿主审批流程取得所需访问,不关闭权限保护;不静默改用其他模型,不自动重试推理请求。日志与配置排查时不输出认证 token。

MCP 启动环境与代理

从应用启动的 MCP 服务不一定继承终端登录 shell 的代理。2026-10-05 的故障通过给本机 Codex 注册项显式补入 http_proxy / https_proxy 修复;清除 shell 继承代理、只使用注册 env 的首轮与续接均返回 grok-4.7-build / xhigh。如果你的网络依赖代理,在 [mcp_servers.grok.env] 使用你实际可达的代理地址,并重启 MCP 服务;不要把本机地址硬编码到共享桥接源码。

另一个受限会话连本地代理也被阻断,且宿主拒绝提权/停止进程。配置代理不能解除宿主沙箱限制,应按宿主权限流程处理;不能通过关闭隔离或换模型绕过。探测设置短超时;清理时核对准确的 session ID 与独立进程组,不误杀用户的 Grok 交互窗口。


Overview (`mcp-servers/manual-review/README.md`)

Manual Review MCP Server

English | 中文


What it does

A human-in-the-loop MCP server for ARIS cross-model review. Instead of calling Codex/GPT API automatically, it opens a browser page where you copy the review prompt to a different model family and paste the response back.

Zero API cost. Works with any text model ARIS can classify by family (OpenAI, Anthropic, Google, DeepSeek, Moonshot/Kimi, Qwen) — a name outside those cannot be shown to differ from the executor's, so it cannot acquit.

When to use

  • You don't have a Codex/GPT Plus subscription
  • You want to use free models (ChatGPT free tier, DeepSeek, Kimi, Gemini, etc.)
  • You prefer to choose which model reviews each time
  • You're on a budget but still want cross-model review quality

Installation

bash
# Register with Claude Code
claude mcp add manual-review -s user -- python3 /path/to/mcp-servers/manual-review/server.py

# Then use in any skill:
/auto-review-loop "topic" — reviewer: manual
/research-review "paper/" — reviewer: manual

Modes

Browser mode (default)

Opens a local web page. Works on Windows, macOS, and Linux with a desktop environment.

File mode (headless Linux)

For SSH/headless environments without a browser:

bash
export MANUAL_REVIEW_MODE=file

The server writes the prompt to a per-thread directory with a cross-model warning at the top of prompt.md. Read .aris/pending_review/pending_review.json — the prompt_file field tells you where to read the prompt, the response_file field tells you where to write the model's response. The file must be non-empty and stable (unchanged across two reads) before it's accepted.

Environment Variables

Variable Default Description
MANUAL_REVIEW_SERVER_NAME manual-review MCP server name
MANUAL_REVIEW_TIMEOUT_SEC 86400 (24h) Max wait time for response
MANUAL_REVIEW_MODE browser browser or file
MANUAL_REVIEW_AUTO_OPEN true Auto-open browser on review
MANUAL_REVIEW_PORT 17900 Fixed HTTP port (increments if occupied)
MANUAL_REVIEW_PENDING_DIR .aris/pending_review Directory for state/prompt/response files
MANUAL_REVIEW_DEBUG_LOG (empty) Debug log file path

Recovery

If you accidentally close the browser tab, open .aris/pending_review/pending_review.json and reopen the exact url value. It includes a one-session token — copy it in full (e.g., http://127.0.0.1:17900?token=abc123). Do not type the bare http://127.0.0.1:17900 as it will return 403.

Future Work

  • Image generation support (manual alternative to codex-image2)
  • Image review loop for paper illustrations

功能说明

ARIS 跨模型评审的人工中转 MCP 服务器。不自动调用 Codex/GPT API,而是打开浏览器页面,让你将评审提示词复制到不同模型家族,再将回复粘贴回来。

零 API 成本。支持任何文本模型。

适用场景

  • 没有 Codex/GPT Plus 订阅
  • 想使用免费模型(ChatGPT 免费版、DeepSeek、Kimi、Gemini 等)
  • 希望每次自行选择评审模型
  • 预算有限但仍想获得跨模型评审质量

安装

bash
# 注册到 Claude Code
claude mcp add manual-review -s user -- python3 /path/to/mcp-servers/manual-review/server.py

# 在任意技能中使用:
/auto-review-loop "topic" — reviewer: manual
/research-review "paper/" — reviewer: manual

模式

浏览器模式(默认)

打开本地网页。适用于 Windows、macOS 和有桌面环境的 Linux。

文件模式(无桌面 Linux)

适用于 SSH/无桌面环境:

bash
export MANUAL_REVIEW_MODE=file

服务器将提示词写入按线程隔离的子目录,prompt.md 顶部包含跨模型警告。读取 .aris/pending_review/pending_review.json — prompt_file 字段指向提示词文件,response_file 字段指向你应写入回复的位置。文件必须非空且稳定(两次读取内容不变)才会被接受。

环境变量

变量 默认值 说明
MANUAL_REVIEW_SERVER_NAME manual-review MCP 服务器名称
MANUAL_REVIEW_TIMEOUT_SEC 86400(24h) 最大等待时间
MANUAL_REVIEW_MODE browser browser 或 file
MANUAL_REVIEW_AUTO_OPEN true 是否自动打开浏览器
MANUAL_REVIEW_PORT 17900 固定 HTTP 端口(被占用时递增)
MANUAL_REVIEW_PENDING_DIR .aris/pending_review 状态/提示词/回复文件目录
MANUAL_REVIEW_DEBUG_LOG (空) 调试日志文件路径

恢复

如果不小心关闭了浏览器标签,打开 .aris/pending_review/pending_review.json,复制完整的 url 值(包含一次性 token,如 http://127.0.0.1:17900?token=abc123)重新打开。不要手动输入裸地址 http://127.0.0.1:17900,会返回 403。

后续计划

  • 图片生成支持(codex-image2 的手动替代方案)
  • 论文插图的图片评审循环

Overview (`skills/skills-codex-claude-review/README.md`)

skills-codex-claude-review

Frozen legacy partial overlay. Kept for existing installations and links; no new workflow features or regeneration from the base pack. Use the full skills-codex pack with reviewer selection for new installs and migration: safe migration. The historical installation and protocol notes below remain for existing users; transport names and old assurance statements do not establish actual model identity, review completion, or acceptance.

This package is a thin override layer for users who want:

  • Codex as the main executor
  • Claude Code as the reviewer
  • the local claude-review MCP bridge instead of a second Codex reviewer

It is designed to sit on top of the upstream Codex-native package at skills/skills-codex/.

Because the executor is Codex and the reviewer is Claude, overlay traces and
audit artifacts record review_independence: cross-family and
acceptance_status: accepted. The verifier still decides whether all required
audits reached accepted assurance.

What this package contains

  • Only the review-heavy skill overrides that need a different reviewer backend
  • No duplicate templates or resource directories
  • No replacement for the base skills/skills-codex/ installation

Current overrides:

  • research-review
  • novelty-check
  • research-refine
  • auto-review-loop
  • paper-plan
  • paper-figure
  • paper-write
  • auto-paper-improvement-loop

Install

  1. Install the base Codex-native mirror first:
bash
bash ~/aris_repo/tools/install_aris_codex.sh ~/your-project
  1. Re-run with the Claude overlay enabled:
bash
bash ~/aris_repo/tools/install_aris_codex.sh ~/your-project --reconcile --with-claude-review-overlay
  1. Register the local reviewer bridge:
bash
mkdir -p ~/.codex/mcp-servers/claude-review
cp mcp-servers/claude-review/server.py ~/.codex/mcp-servers/claude-review/server.py
codex mcp add claude-review -- python3 ~/.codex/mcp-servers/claude-review/server.py

If your Claude setup depends on a shell helper such as claude-aws, use the wrapper instead:

bash
cp mcp-servers/claude-review/run_with_claude_aws.sh ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh
chmod +x ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh
codex mcp add claude-review -- ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh

Why this exists

The upstream skills/skills-codex/ path already supports Codex-native execution with a second Codex reviewer via spawn_agent.

This package adds a different split:

  • executor: Codex
  • reviewer: Claude Code CLI
  • transport: claude-review MCP

For long paper and review prompts, the reviewer path uses:

  • review_start
  • review_reply_start
  • review_status

This avoids the observed Codex-hosted timeout issue when Claude is invoked synchronously through a local bridge.


Overview (`skills/skills-codex-gemini-review/README.md`)

skills-codex-gemini-review

Frozen legacy partial overlay. Kept for existing installations and links; no new workflow features or regeneration from the base pack. Use the full skills-codex pack with reviewer selection for new installs and migration: safe migration. The historical installation and protocol notes below remain for existing users; transport names and old assurance statements do not establish actual model identity, review completion, or acceptance.

This package is a thin override layer for users who want:

  • Codex as the main executor
  • Gemini as the reviewer
  • the local gemini-review MCP bridge instead of a second Codex reviewer

It is designed to sit on top of the upstream Codex-native package at skills/skills-codex/.

Because the executor is Codex and the reviewer is Gemini, overlay traces and
audit artifacts record review_independence: cross-family and
acceptance_status: accepted. The verifier still decides whether all required
audits reached accepted assurance.

What this package contains

  • Only the reviewer-aware skill overrides that need a different reviewer backend
  • No duplicate templates or resource directories
  • No replacement for the base skills/skills-codex/ installation

Current overrides:

  • idea-creator
  • idea-discovery
  • idea-discovery-robot
  • research-review
  • novelty-check
  • research-refine
  • auto-review-loop
  • grant-proposal
  • paper-plan
  • paper-figure
  • paper-poster-html
  • paper-slides
  • paper-write
  • paper-writing
  • auto-paper-improvement-loop

Core 8 vs Full 15

To avoid confusion, there are two useful ways to describe this overlay:

  • Core 8: the direct reviewer-heavy overlay set that maps one-to-one to the earlier Claude-review route
  • Full 15: the current reviewer-aware Codex skill surface routed to Gemini in this repository

The core 8 are:

  • research-review
  • novelty-check
  • research-refine
  • auto-review-loop
  • paper-plan
  • paper-figure
  • paper-write
  • auto-paper-improvement-loop

The additional 7 routed reviewer-aware entry points are:

  • idea-creator
  • idea-discovery
  • idea-discovery-robot
  • grant-proposal
  • paper-writing
  • paper-slides
  • paper-poster-html

So when comparing against the Claude overlay, the cleanest statement is:

The Gemini route preserves the same core 8-skill reviewer overlay shape, but expands the practical reviewer-facing surface to 15 skills in the current repo.

Direct Consumers vs Wrappers

  • 12 direct consumers call mcp__gemini-review__review_start / review_reply_start / review_status themselves:
    • research-review
    • novelty-check
    • research-refine
    • auto-review-loop
    • paper-plan
    • paper-figure
    • paper-write
    • auto-paper-improvement-loop
    • idea-creator
    • grant-proposal
    • paper-slides
    • paper-poster-html
  • 3 wrappers mostly orchestrate downstream reviewer-aware skills and pass REVIEWER_MODEL=gemini-review through:
    • idea-discovery
    • idea-discovery-robot
    • paper-writing

Install

Before registering the bridge, prepare the direct Gemini API path:

  • Gemini API: set GEMINI_API_KEY or GOOGLE_API_KEY (for example in ~/.gemini/.env)

Optional fallback only:

  • Gemini CLI: install gemini and complete login/auth if you explicitly want GEMINI_REVIEW_BACKEND=cli
  1. Install the base Codex-native mirror first:
bash
bash ~/aris_repo/tools/install_aris_codex.sh ~/your-project
  1. Re-run with the Gemini overlay enabled:
bash
bash ~/aris_repo/tools/install_aris_codex.sh ~/your-project --reconcile --with-gemini-review-overlay
  1. Register the local reviewer bridge:
bash
mkdir -p ~/.codex/mcp-servers/gemini-review
cp mcp-servers/gemini-review/server.py ~/.codex/mcp-servers/gemini-review/server.py
codex mcp add gemini-review --env GEMINI_REVIEW_BACKEND=api -- python3 ~/.codex/mcp-servers/gemini-review/server.py

The bridge defaults to the direct Gemini API path. This is the intended reviewer backend for this overlay.

If the default API model is temporarily rate-limited on your current free-tier window, keep the same overlay and bridge, and override only the reviewer model:

bash
codex mcp remove gemini-review
codex mcp add gemini-review --env GEMINI_REVIEW_BACKEND=api --env GEMINI_REVIEW_MODEL=gemini-flash-latest -- python3 ~/.codex/mcp-servers/gemini-review/server.py

Why this exists

The upstream skills/skills-codex/ path already supports Codex-native execution with a second Codex reviewer via spawn_agent.

This package adds a different split:

  • executor: Codex
  • reviewer: Gemini direct API
  • transport: gemini-review MCP

For long paper and review prompts, the reviewer path uses:

  • review_start
  • review_reply_start
  • review_status

This avoids the observed Codex-hosted timeout issue when Gemini is invoked synchronously through a local bridge.

Validation Summary

This overlay was validated in two ways:

  • Coverage check: all 15 predefined reviewer-aware skill overrides in this package were checked to confirm they target gemini-review
  • Runtime check:
    • the underlying bridge completed sync, async, threaded follow-up, and multimodal local-image review tests
    • representative Codex-side runs on a private, non-public research repository confirmed that real skill executions could reach the Gemini reviewer path for research-review, idea-generation, and paper-planning style tasks

Operational note:

  • Gemini free tier was usable for this workflow in practice, but bursty stress tests could still produce temporary 429 responses
  • on the same setup, a later retry completed sync review, async review_start -> review_status, and threaded review_reply_start -> review_status successfully with GEMINI_REVIEW_MODEL=gemini-flash-latest
  • for long prompts, prefer the async review_start / review_reply_start + review_status path

References

This package keeps the upstream ARIS skill shape, but swaps the reviewer transport to the local gemini-review bridge. It now covers every predefined Codex skill in this repo that previously depended on a secondary Codex reviewer or mcp__codex__codex review step. We intentionally did not directly depend on a generic Gemini MCP server package because the ARIS review skills rely on the narrow review* tool contract, resumable review-thread behavior, and now optional local-image review for poster PNGs.


Overview (`skills/skills-codex/README.md`)

`skills-codex`

Codex-native mirror and adaptation layer for the main ARIS skills/ package.

Scope

  • Base mirror coverage: all 85 mainline skills under skills/
  • Support directory: shared-references/, with all 30/30 mainline reference names mirrored
  • Default reviewer contract for reviewer-heavy skills:
    • round 1: spawn_agent
    • follow-up: send_input
    • model: gpt-6-astra; deep reviews: ultra, regular reviews: xhigh
    • base Codex self-review: review_independence: same-family,
      acceptance_status: provisional
    • other reviewers: select a backend in the full pack; acceptance depends on actual model identities, completed review scope, and the applicable gate

This package is still an appendage to the Claude mainline, not a separate Codex-first product line.

Project-local install is the default path for Codex:

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git ~/aris_repo
cd ~/your-project

bash ~/aris_repo/tools/install_aris_codex.sh .

This creates a flat managed layout:

text
.agents/skills/<skill-name> -> ~/aris_repo/skills/skills-codex/<skill-name>
.aris/installed-skills-codex.txt
AGENTS.md   # managed Codex block

Reconcile after upstream changes:

bash
cd ~/aris_repo && git pull
bash ~/aris_repo/tools/install_aris_codex.sh ~/your-project --reconcile

Uninstall only managed Codex entries:

bash
bash ~/aris_repo/tools/install_aris_codex.sh ~/your-project --uninstall

Select a Reviewer

Use the complete pack with selectable reviewers.
For one invocation, add — reviewer: antigravity (or grok, claude-code,
codex). For a project default, create .aris/reviewer.json yourself:

json
{"backend": "antigravity", "model": "gemini-4-argon-high", "effort": "high"}

Register the selected backend's MCP separately as described in the linked
contract. claude-code uses the CLI's configured provider and accepts no effort
override. Selecting a transport does not by itself establish cross-family review
or acceptance. The legacy agy route still uses gemini-review; it is distinct
from antigravity.

Migrate Frozen Partial Overlays

skills-codex-claude-review/ and skills-codex-gemini-review/ are frozen legacy
snapshots. Their directories and existing links remain available, but base skill
changes no longer regenerate them. New installations should use the full pack.
The old overlay install flags remain for compatibility, not ongoing feature sync.

For managed project symlinks, first inspect .agents/skills/<name> with
readlink and save .aris/installed-skills-codex.txt plus any customized source
files. Editing a symlinked skill edits its repository target; preserve those
changes before switching. Preview reconciliation without either overlay flag:

bash
bash ~/aris_repo/tools/install_aris_codex.sh ~/your-project --reconcile --dry-run

Check that the planned retargets point to skills/skills-codex/, then run the same
command without --dry-run. Real directories are conflicts and are not replaced.
For an unmanaged overlay link, inspect it and use --replace-link <skill-name>
only for that specific link, previewing first. Keep the overlay directories;
merge relevant personal edits into your chosen full-pack source deliberately.

For global copied skills in ~/.codex/skills/, back up the affected skill
directories outside that discovery directory. Compare each installed overlay
skill with its frozen source and the corresponding full-pack skill, preserving
personal edits separately. Stage the full-pack replacements in a temporary
directory, reapply those edits, and inspect the result before replacing only the
reviewed installed directories. Do not copy an entire overlay over the full pack
or bulk overwrite existing skills. Then set the project reviewer configuration
and register its bridge. No migration command here writes global settings
automatically; restart Codex after installation changes so it reloads the pack.

Copy Install and Update

If you intentionally use a copied Codex install instead of managed project symlinks:

bash
mkdir -p ~/.codex/skills
cp -a ~/aris_repo/skills/skills-codex/. ~/.codex/skills/

Update copied installs with:

bash
bash ~/aris_repo/tools/smart_update_codex.sh
bash ~/aris_repo/tools/smart_update_codex.sh --apply

For a copied project-local Codex install:

bash
bash ~/aris_repo/tools/smart_update_codex.sh --project ~/your-project
bash ~/aris_repo/tools/smart_update_codex.sh --project ~/your-project --apply

smart_update_codex.sh refuses symlink-managed installs and redirects them to install_aris_codex.sh --reconcile.

Non-Degrading Skills

The following Codex skills must not silently degrade when their required capability is missing:

  • comm-lit-review
  • research-lit
  • paper-poster-html
  • pixel-art

If the required source, reviewer, or local preview capability is unavailable, the skill should stop and tell the user what to configure.


Overview (`tools/experiment_queue/README.md`)

experiment-queue Tools

Scheduler and manifest builder for /experiment-queue skill.

Files

  • build_manifest.py — Expands grid spec (YAML/JSON) into explicit job manifest
  • queue_manager.py — Scheduler that runs on the remote host; polls, launches, retries, cleans

Install on Remote

The /experiment-queue skill auto-installs these on the SSH host under ~/.aris_queue/ per invocation (idempotent). The skill resolves the local helpers via a fallback chain (.aris/tools/experiment_queue/ → tools/experiment_queue/ → $ARIS_REPO/tools/experiment_queue/ → same, resolved via the global pointer file ~/.aris/repo, #366) so it works from any project layout.

For manual install (run from anywhere; $ARIS_REPO points at the cloned ARIS repo root):

bash
ssh <server> 'mkdir -p ~/.aris_queue'
scp "$ARIS_REPO/tools/experiment_queue/queue_manager.py" \
    "$ARIS_REPO/tools/experiment_queue/build_manifest.py" \
    <server>:~/.aris_queue/

Example

1. Write grid spec (on local or remote)

grid_spec.yaml:

yaml
project: my_grid_experiment
cwd: /home/user/your_project
conda: my_env
gpus: [0, 1, 2, 3, 4, 5, 6, 7]
max_parallel: 8
oom_retry: {delay: 120, max_attempts: 3}

phases:
  - name: distill
    grid:
      N: [64, 128, 256]
      seed: [42, 200, 201]
      n_train_subset: [50000, 150000, 500000, 652000]
    template:
      id: "s${seed}_N${N}_n${n_train_subset}"
      cmd: >
        python run_distill.py --backbone softmax --lam 0.5
        --t_max_distill 0 --K 500 --L 96 --W 16 --n_steps 30000
        --batch_size 128 --lr 1e-4 --seed ${seed} --subset_seed 2024
        --n_hidden ${N} --n_train_subset ${n_train_subset}
      expected_output: "figures/distill_sw_N${N}_*_seed${seed}.json"

2. Build manifest

bash
python3 build_manifest.py --config grid_spec.yaml --output manifest.json

3. Launch scheduler

Use a per-run directory under ~/.aris_queue/runs/ so concurrent queues don't collide and crash-resume is reproducible. Note that scp runs in SFTP mode in modern OpenSSH and does NOT reliably expand $HOME in destination paths — use remote-relative paths for scp destinations and $HOME-prefixed paths only inside ssh command strings (where remote bash expands them):

bash
RUN_TS=$(date -u +%Y%m%dT%H%M%SZ)
REMOTE_RUN_REL=".aris_queue/runs/$RUN_TS"          # for scp (relative to remote home)
REMOTE_RUN_DIR="\$HOME/$REMOTE_RUN_REL"            # for ssh commands (expanded remotely)

ssh <server> "mkdir -p \"$REMOTE_RUN_DIR/logs\" \"\$HOME/.aris_queue\""
scp manifest.json <server>:"$REMOTE_RUN_REL/manifest.json"

ssh <server> "nohup python3 \"\$HOME/.aris_queue/queue_manager.py\" \\
    --manifest \"$REMOTE_RUN_DIR/manifest.json\" \\
    --state    \"$REMOTE_RUN_DIR/queue_state.json\" \\
    --log-dir  \"$REMOTE_RUN_DIR/logs\" \\
    > \"$REMOTE_RUN_DIR/queue_mgr.log\" 2>&1 &"

Note: --log-dir is the per-job log directory the scheduler reads for OOM detection. The flag --log is declared by argparse but unused; do not pass it.

4. Monitor

bash
ssh <server> "jq '.jobs | group_by(.status) | map({(.[0].status): length}) | add' \"$REMOTE_RUN_DIR/queue_state.json\""

Returns:

json
{"completed": 30, "running": 6, "pending": 0}

State Machine

text
pending → running → completed
                  ↘ failed_oom → pending (after delay, up to max_attempts)
                               ↘ stuck (after max_attempts)
                  ↘ failed_other → stuck

Dependencies

  • Python 3.8+
  • nvidia-smi on remote
  • screen on remote
  • Optional: pyyaml (only if using YAML grid specs)

Invariants

  • No GPU overlap: scheduler only assigns GPU with memory.used < 500 MiB
  • State is source of truth: queue_state.json is written atomically every step
  • Idempotent: safe to kill and restart the scheduler; picks up from state
  • Output-based completion: completion is verified by expected_output existing, not just by screen/process exit

Not Yet Supported

  • Mid-run GPU reshuffling (if GPU becomes unavailable mid-job)
  • Automatic GPU-per-job count (all jobs assumed single-GPU)
  • Distributed multi-node queues
  • Auto-sync results back to local

Overview (`skills/paper-poster-html/templates/README.md`)

Three neutral HTML scaffolds, forked from the posterly templates (MIT, © 2026 Ruishuo Chen —
see ../NOTICE.md) and adapted for ARIS: flat de-gradient, --fs-* token scale, zero
inline-style utility classes, and the data-source / data-color-exempt contracts. Class
names are unchanged, so COMPONENTS.md (the component contract catalog) applies to all three.

Each template is self-contained and neutral: no lab branding, no paper content — only
TODO placeholders. The authoring loop is: copy one to your working dir as poster.html →
apply a token pack → fill TODOs with paper content + real figures → run the gates
(run_gates.py) and balance until they pass.

Every layout-critical element carries data-measure-role so the measurement gate can locate
columns / hero / footer regions across templates. Do not remove these attributes — the
measure gate depends on them.

Picking a template

Template Canvas Layout Use when
landscape_4col.html 60 × 36 in landscape header → optional banner → 4 columns → optional takeaways → footer The default. Standard ML conference poster (ICML / NeurIPS / generic landscape) with ~3–5 content cards per column; mix of figures, equations, and tables.
landscape_hero.html 60 × 36 in landscape header → hero panel (~60%) + supporting column (~40%) → takeaways → footer ONE figure / table / system diagram is the main message. One big illustration left, 3–4 short cards right. No framework banner — the hero is the banner.
portrait_2col.html 24 × 36 in portrait header → 2 columns → footer (no banner, no takeaways strip) Portrait venues / sub-A0 sizes. Vertical space is precious, so banner + takeaways are dropped; the final card in the right column carries the conclusion/takeaways.

(File names follow DESIGN_FINAL §1: the ARIS forks drop the posterly _neutral suffix.)

Scaffolds, not finished posters

A template is a scaffold, not a poster. Figures are commented out and copy is TODO
stubs, so each column only fills the top of the canvas. That has gate consequences you should
expect — do not "fix" them on a fresh scaffold:

  • preflight passes out of the box. It checks structure (valid data-measure-role values,
    no LaTeX residue, no bare < inside $…$ math, the root data-measure-role="poster"),
    which the scaffold already satisfies.
  • style_check source rules (1–3, 5–11) pass on the forked scaffold. The ARIS fork has
    no inline styles, no linear-gradient, no stray hex outside the token block — so the static
    source gate is green on the empty template. (The upstream posterly originals keep inline
    styles and would FAIL style_check — that is expected; the fork exists precisely to fix
    that.)
  • measure and polish are gates for your finished poster. They check that columns
    bottom-align to within 5 px, that the gap to the footer sits in a tight band (30–50), that
    intercard gaps stay in [12, 50], and that the canvas fills 95–101% — properties only a
    filled poster can have. An unfilled scaffold is expected to fail them (huge
    column-bottom spread, a large gap to the footer). That is the gate telling you the poster is
    not finished, not a bug in the template.
  • asset_check fails until you embed ≥2 real paper figures. A scaffold has none.

So the loop is: copy → apply token pack → fill content + drop in real figures → run
run_gates.py and balance until measure/polish/asset go green. See DESIGN_FINAL §8 for
the full phase structure and the worked ICLR 2026 acceptance case (§13).

Applying a token pack (`tokens/*.json` → `:root`)

The palette lives in two synchronized places: the tokens/*.json packs (machine-readable, what
style_check/run_gates read for the accent/gold hue_centers) and the :root DESIGN TOKENS
block in each template's <style> (what the browser renders). generic.json is the default
for every venue.
Venue packs are opt-in (— venue-colors: true).

To apply a pack, manually copy its values into the template's :root token block (the
block fenced by /* ===== DESIGN TOKENS ===== */ … /* ===== END DESIGN TOKENS ===== */ —
style_check locates the token block by exactly this comment pair, so keep it intact). The
JSON-to-CSS field mapping:

JSON path CSS token
accent.base --accent
accent.deep --accent-deep
accent.light --accent-light
accent.soft --accent-soft
gold.base --gold
gold.soft --gold-soft
neutrals.text_primary / text_secondary / text_muted --text-primary / --text-secondary / --text-muted
neutrals.bg_page / bg_card / bg_card_tint --bg-page / --bg-card / --bg-card-tint
neutrals.border_soft --border-soft

--bg-emphasis: var(--accent-light) and --border-strong: var(--accent) are derived tokens —
leave them as var(--…) references; they follow the accent automatically.

When you pass a pack to the gates (run_gates.py --tokens tokens/<venue>.json,
style_check.py --tokens …), the hue_centers in the JSON are the source of truth for the
hue-cluster check (style rule 4): the two allowed non-neutral hue families are
hue_centers.accent ± 22° and hue_centers.gold ± 22°. If you copied the JSON values into
:root correctly, the rendered hues will land inside those windows. (If you omit --tokens,
style_check derives the centers from the :root --accent / --gold instead.)

Available packs (all share the generic gold family #C9A24A / #FFF7E0; all venue accents
satisfy S ≤ 0.55, L ∈ [0.25, 0.45], hue ∉ [250, 285]):

Pack Accent identity accent hue center
generic.json slate-blue #2D5F8B (the default for every venue) 210
iclr.json deep green #2E6048 151
icml.json deep maroon #8B3A4A 348
neurips.json steel/slate blue #3A5A7A 210
cvpr.json deep azure/indigo #27407A 222
acl.json deep teal #256E72 183

Venue packs are opt-in identity, not a license to deviate from the discipline: a single
accent family + the shared gold, deep and desaturated, never purple. The default text
venue-badge (COMPONENTS.md) is the primary venue cue; the color pack is secondary.

Retargeting the canvas

A template ships with a default @page size and a matching .poster size. To change the
canvas you must edit both in the template (each in exactly one place), keeping them
identical — measure's canvas-fill / position-align gate compares the rendered .poster
bounding box against the @page viewport, so a mismatch fails the gate.

  1. @page in the <style> block — e.g. @page { size: 185cm 90cm; margin: 0; }.
  2. .poster print dimensions in @media print { .poster { … width: 185cm; height: 90cm; } }.
    (The screen .poster uses calc(N * var(--u)) with --u: 1.6px; print uses --u: 1mm, so
    the screen preview scales automatically — you only hardcode the print width/height.)

The canvas parser accepts in / mm / cm / pt units. ICLR 2026 main conference example
(the §13 acceptance case): the official print service spec is 185 × 90 cm landscape, so
start from landscape_4col.html and set both @page and the print .poster to
185cm 90cm / width: 185cm; height: 90cm;.

Safe-area / margin design belongs as internal padding on a full-bleed .poster, never as a
smaller poster — a smaller poster fails the position-align gate (the .poster bbox must align
to (0,0)–(viewport_w, viewport_h)).

Zero inline-style + utility-class policy

The templates and any finished poster carry no style= attribute (zero tolerance —
style_check rule 2; IMPLEMENTATION_CONVENTIONS §B). To make that possible the templates ship
their own utility classes in the <style> block, replacing every inline style the posterly
originals used:

text
.fs-1 … .fs-9        font-size: var(--fs-N)
.mt-1 … .mt-6        margin-top: calc(N * var(--u))
.mb-1 … .mb-4        margin-bottom: calc(N * var(--u))
.w-45 .w-50 … .w-100 figure <img> width 45%…100% (5% steps)
.text-secondary .text-muted .nowrap .text-center

The only sanctioned style= survivors:

  • the internal markup of a data-color-exempt="logo" element (a logo / seal SVG), and
  • style="width: NN%" on a data-source="paper" `` for aspect-ratio width tuning when the
    value is off the 5% grid (prefer the .w-NN class when it lands on a step).

Likewise: no linear-gradient anywhere; the only gradient allowed is the .poster
background radial-gradient tint with all color stops at alpha ≤ 0.06 (style rule 5). All
font-sizes go through the --fs-* scale; calc(var(--fs-N) * k) is allowed only for the
predefined component variants catalogued in COMPONENTS.md (e.g. .eqn--large). All colors
are tokens — no hex literal outside the :root token block (and the exempted logo SVG).

Adding a new template

A new template MUST:

  1. Set @page { size: <W> <H> } (in / mm / cm / pt) inside a <style> block — the
    canvas parser fails if absent — and a matching print .poster size.
  2. Carry data-measure-role="poster" on the root poster element.
  3. Use the roles consistently: header, banner (optional), body, column, card,
    hero (mutually exclusive with banner), footer-strip (optional), footer.
  4. Use the --u unit system (1.6px screen, 1mm print) for ALL sizing via
    calc(N * var(--u)) — never bare px except hairlines (≤ 2px).
  5. Carry the :root DESIGN TOKENS block fenced by the
    /* ===== DESIGN TOKENS ===== */ … /* ===== END DESIGN TOKENS ===== */ comment pair,
    the full --fs-1 … --fs-9 scale, and the §B utility classes.
  6. Use only components from COMPONENTS.md; no inline style=, no linear-gradient,
    no hex outside the token block.
  7. Keep all paper-specific content as TODO placeholders — neutral templates only.

Then add a row to the gallery table above, a catalog note if it introduces any new component
(which requires the COMPONENTS.md new-component checkpoint), and link it in SKILL.md Phase 3.


ARIS INTRO (`docs/ARIS_INTRO.md`)

ARIS — Autonomous Research via Adversarial Multi-Agent Collaboration

Let Claude Code do research while you sleep. Wake up to find your paper scored, weaknesses identified, experiments run, and narrative rewritten — autonomously. Repo: github.com/wanshuiyin/Auto-claude-code-research-in-sleep.

TL;DR

ARIS is a collection of 85 composable Claude Code skills that orchestrate cross-model collaboration: Claude Code drives the research (reads files, writes code, deploys experiments) while an external LLM (GPT-6-Astra via Codex MCP) acts as a critical reviewer. The two models disagree, debate, and force each other to do better — adversarial, not self-play.

Seven workflows (W1 / W1.5 / W2 / W3 / W4 / W5 / W6) compose into a full research lifecycle: idea discovery → experiment bridge → auto-review → paper writing → rebuttal → resubmit → conference talk. Tested end-to-end on real ICLR/NeurIPS submissions. Score progression on a real overnight run: 5/10 → 7.5/10 with 20+ GPU experiments.

💡 The ARIS bet. Markdown is for writers. HTML is for readers. Every workflow artifact stays in Markdown (auditable, machine-parseable, future-proof). When a human needs to actually read one, /render-html produces this view — gated by a fresh cross-model Codex review (the same ARIS invariant every other audit-class skill follows).


The Problem

Every ML researcher reading this knows the rhythm:

  1. Spend 3 weeks reading 80 papers.
  2. Brainstorm 12 ideas, kill 9 in your head, fail to validate the remaining 3 quickly.
  3. Pick one, lose a week to a bug, miss the GPU window.
  4. Submit, get a 5/10 review with "lacks ablation against XYZ".
  5. Rebuttal week is 72 hours; you have 2 days of teaching duty.

The bottleneck isn't ideas. It's the end-to-end orchestration between literature → ideation → experiments → writing → rebuttal. AI can compress every individual step, but the integration is fragile — and worse, a single model reviewing its own work falls into local minima.

🚨 Why not self-play with one model? Using Claude Code subagents (or any homogeneous agent team) for both execution and review tends to fall into local minima — the same model reviewing its own patterns creates blind spots. ARIS forces cross-family disagreement: Claude executes, GPT reviews. They don't share lineage, they don't share training data, they don't share blind spots.


Core Architecture

The system is, in one sentence:

$$
\text{Research} = \arg\max_{\theta}; \mathbb{E}{x \sim \mathcal{D}{\text{ideas}}}\bigl[, U_{\text{exec}}(\theta,;,x) - \lambda \cdot R_{\text{review}}(\theta,;,x) ,\bigr]
$$

where $U_{\text{exec}}$ is the utility of an executor model writing code / running experiments, and $R_{\text{review}}$ is an adversarial regularizer from a cross-family reviewer that penalizes overclaims, fabricated citations, unjustified theorem extensions, and self-flattery. The regularizer is non-differentiable — it's a fresh LLM thread reading the artifact cold.

The reviewer-independence protocol

Every review round uses a fresh codex thread. We never use codex-reply to continue a previous review conversation. This is a hard rule, learned from a real NeurIPS run where codex-reply chains inflated scores from 3/10 → 8/10 through narrative accumulation (the reviewer started defending its earlier criticism instead of evaluating the current artifact). The protocol is codified at skills/shared-references/reviewer-independence.md.

text
┌──────────────────────┐
│  ARIS — execution    │     ┌───────────────────────┐
│  (Claude Code)       │────▶│  Codex MCP (GPT-6-Astra)  │
│  — reads files       │     │  — reads paper cold   │
│  — writes code       │     │  — fresh thread       │
│  — deploys to GPU    │     │  — scores 1-10        │
└──────────────────────┘     │  — suggests fixes     │
         ▲                   └───────────────────────┘
         │                              │
         │                              ▼
         │              ┌─────────────────────────┐
         └──────────────│  weakness list (.md)    │
                        │  fix list (with budget) │
                        └─────────────────────────┘

🔒 Cross-family invariant. The executor and reviewer must be different model families (Claude × GPT, GLM × DeepSeek, Antigravity × Gemini, …). Same-family review is a non-feature; if you only have one provider, the cheapest fix is to add a free DeepSeek or Gemini reviewer via llm-chat MCP.


The Workflows

W Name One-line summary Entry point
1 Idea Discovery Literature → brainstorm 8-12 → novelty check → pilot 2-3 on GPU → ranked report /idea-discovery
1.5 Experiment Bridge Plan → implement → GPT-6-Astra code review → sanity check → deploy → collect /experiment-bridge
2 Auto Review Loop Review → fix → re-run → repeat until score ≥ 6/10 (or MAX_ROUNDS=4 hit) /auto-review-loop
3 Paper Writing Narrative → outline → figures → LaTeX → PDF → 2 rounds review (4 → 8.5/10) /paper-writing
4 Rebuttal Parse reviews → strategy → optional experiments → draft → stress test /rebuttal
5 Resubmit Port paper to a new venue under hard constraints (no new exps, no bib edits) /resubmit-pipeline
6 Conference Talk Paper → Beamer + PPTX + speaker notes + assurance audits /paper-talk

Workflow 1 — Idea Discovery & Method Refinement

"I have a research direction. What should I actually work on?"

/idea-discovery takes a vague research direction and outputs a ranked, pilot-validated proposal:

  1. 📚 Survey — multi-source literature search (Zotero / Obsidian / arXiv / Semantic Scholar / DeepXiv / Exa) builds a landscape map
  2. 🧠 Brainstorm — GPT-6-Astra xhigh generates 8-12 concrete ideas anchored to identified gaps
  3. 🔍 Novelty check — each top idea cross-checked against arXiv + DBLP for prior work; failed ideas killed early
  4. 🧪 Pilot — 2-3 surviving ideas get 1-2-hour single-GPU pilot runs (a real signal, not just LLM opinion)
  5. 🏆 Refine — top pilot result fed to /research-refine which anchors the problem, tightens the method, and emits an experiment plan ready for Workflow 1.5
bash
/idea-discovery "factorized gap in discrete diffusion LMs" \
    --- effort: max \
    --- sources: zotero, web, deepxiv

💡 The bet here: a 1-hour GPU pilot tells you more than 1 hour of LLM-only reasoning. Failed pilots also get written to Research Wiki so they become anti-repetition memory.


Workflow 1.5 — Experiment Bridge

"I have a plan. Make it run."

/experiment-bridge closes the gap between paper plan and running code:

  1. 📋 Read EXPERIMENT_PLAN.md (from W1 or hand-written)
  2. 💻 Implement experiment scripts — reuses your existing codebase, adds argparse / logging / seeds where missing
  3. 🔬 GPT-6-Astra code review — fresh-thread cross-model review of the generated code BEFORE any GPU time is spent (catches ~80% of bugs that would otherwise burn 8-GPU-hour runs)
  4. ✅ Sanity check — smallest config runs first; checks for OOM, NaN, runtime errors
  5. 🚀 Deploy — SSH to your GPU server (per CLAUDE.md), launch in screen, capture stdout/stderr
  6. 📊 Collect — /monitor-experiment polls until completion, fetches results, formats for downstream skills
bash
/experiment-bridge --- base repo: https://github.com/anthropic-experimental/some-baseline

🔒 Hard rule: code review is cross-model (Claude wrote it, GPT reviews it). Same-family review on your own code is a non-feature — the model that wrote a bug usually can't see it.


Workflow 2 — Auto Review Loop

"Review my paper, fix what's wrong, repeat until it passes."

/auto-review-loop is the most-cited workflow. Run it the night before a deadline; wake up to a polished paper.

  1. 🔍 Deep review — GPT-6-Astra xhigh reviews the paper, identifies weaknesses (severity tagged)
  2. 🩹 Fix — Claude implements the fixes (rewrite, add baselines, run experiments); skips any experiment > 4 GPU-hours, flags for manual follow-up
  3. 📊 Re-evaluate — collect results, update paper, feed back to the reviewer (fresh thread)
  4. 🔁 Repeat — until score ≥ POSITIVE_THRESHOLD (default 6/10) or MAX_ROUNDS (default 4); if the context window fills mid-loop, auto-resume from REVIEW_STATE.json
bash
/auto-review-loop "focus on Section 3-5, our CRF results are weak" \
    --- difficulty: nightmare \
    --- effort: max

The difficulty: nightmare flag lets GPT-6-Astra read your repo directly via codex exec — Claude can't filter what it sees. Maximum stress test before submission.

Key safety features (click to expand)

  • 🔒 MAX_ROUNDS = 4 — prevents infinite loops; stops early if score threshold is met
  • ⏱️ > 4 GPU-hour experiments skipped — flagged for manual follow-up, never silently launched
  • 🧠 Prefer reframing over new experiments — when both can address a weakness, picks the cheaper path
  • 🪞 No hiding weaknesses — explicit rule: "Do NOT hide weaknesses to game a positive score"
  • 🔧 Fix before re-review — must implement fixes before resubmitting; no empty promises
  • 💾 Compact recovery — persists REVIEW_STATE.json each round; auto-resumes if context window fills

🔁 Why this workflow is the headline: it's the only one that runs autonomously overnight — the human signs off before bed, the system reviews + fixes + re-runs experiments + re-reviews until the threshold is hit, and writes a one-paragraph summary of what changed. Empirically the most-cited path; the real-results table above is from one of these runs.


Workflow 3 — Paper Writing Pipeline

"I have results. Turn them into a submission-ready PDF."

/paper-writing takes a NARRATIVE_REPORT.md (claims, experiments, key figures) and produces compiled LaTeX:

  1. 📐 Plan — /paper-plan builds a claims-evidence matrix from the narrative, then a section-by-section outline
  2. 📊 Figures — /paper-figure auto-generates plots (line / bar / heatmap) and comparison tables from JSON/CSV results. Architecture diagrams via /figure-spec (deterministic JSON → SVG) or Gemini illustration
  3. ✍️ Write — /paper-write emits per-section LaTeX following the venue's style file. Citations pulled from DBLP / CrossRef (real BibTeX, never LLM-generated)
  4. 🔧 Compile — /paper-compile runs latexmk until clean, fixes overfull \hbox, verifies the page limit via pdftotext
  5. ✨ Polish — /auto-paper-improvement-loop runs 2 rounds of GPT-6-Astra content review + 1 round of format check. Real ICLR run: 4/10 → 8.5/10 across 3 rounds
bash
/paper-writing NARRATIVE_REPORT.md --- venue: ICLR --- effort: max

✅ Submission gate: at effort: max / effort: beast (or explicit assurance: submission), the PDF is only labelled "submission-ready" if /proof-checker, /paper-claim-audit, and /citation-audit all return green via tools/verify_paper_audits.sh.


Workflow 4 — Rebuttal

"Reviews came back. Help me draft a safe rebuttal."

/rebuttal is structured around three hard safety gates that block fabrication:

  1. 📥 Parse reviews — atomize into per-reviewer / per-concern entries; normalize against the venue's format (ICML char limit, NeurIPS per-reviewer threads, etc.)
  2. 🗺️ Strategy — global themes + per-reviewer priority + character budget + a list of blocked claims (things the reviewer flagged but the paper can't actually back)
  3. 🧪 Evidence sprint (optional) — if --- auto experiment: true and the reviewer asked for a missing experiment, hand off to /experiment-bridge, wait for results, fold into draft
  4. ✍️ Draft — global opener + numbered per-reviewer responses + closing for the meta-reviewer
  5. 🛡️ Safety check — 6 lints: coverage (no concern dropped), provenance (every claim cites paper/review/user-confirmed result), commitment (no overpromising), tone, internal consistency, character limit
  6. 🔬 GPT-6-Astra stress test — fresh-thread reviewer reads the draft cold, tries to break it
  7. 📤 Finalize — two outputs: PASTE_READY.txt (exact character count, ready to drop into OpenReview) + REBUTTAL_DRAFT_rich.md (extended, for human editing)
bash
/rebuttal "paper/ + reviews" --- venue: ICML --- character limit: 5000

🔒 Three safety gates — rebuttal will NOT finalize if any fails: (a) provenance — every claim maps to paper/review/user-confirmed result; (b) commitment — every promise is user-approved; (c) coverage — every reviewer concern is tracked through to a response.


Workflow 5 — Resubmit Pipeline

"Move a polished paper from venue A to venue B under hard constraints."

/resubmit-pipeline is for the ICML→NeurIPS / workshop→archival transition. Distinct from Workflow 3 (which writes from scratch) — here the paper exists, the goal is targeted edits only:

  1. 📁 Physical isolation — copy into <NEW_VENUE_DIR>/; the original submission directory is never touched
  2. 🛡️ 5-layer anonymity check — author names, affiliations, self-citations, GitHub / Overleaf URLs, in-text "we" patterns that break double-blind
  3. 🔬 Soft-only audits — /proof-checker, /paper-claim-audit, /citation-audit --soft-only (the --soft-only mode rewrites instead of editing bib, since the bib is frozen)
  4. ✏️ Microedit — /auto-paper-improvement-loop --edit-whitelist with a YAML schema (allowed_paths / forbidden_paths / forbidden_operations)
  5. 🗡 Adversarial gate — /kill-argument writes the strongest 200-word rejection memo a senior area chair would write; an independent adjudicator scores each point
  6. 📤 Compile + push — /paper-compile + optional /overleaf-sync push
bash
/resubmit-pipeline "paper/" --- venue: NeurIPS

🔒 Hard constraints (cannot be overridden): no new experiments, no bib edits, no framework changes, never overwrites prior submissions. Microedit YAML schema enforces these at every diff.


Workflow 6 — Conference Talk Pipeline

"Paper accepted. Prepare the talk."

/paper-talk is the post-acceptance sister workflow to /paper-writing:

  1. 📋 Outline — extracted from paper/ (or NARRATIVE_REPORT.md if no compiled paper); one slide-cluster per contribution; section→talk-beat mapping
  2. 🎨 Generate — /paper-slides emits Beamer source + PPTX + speaker notes + Q&A prep
  3. 💎 Polish — /slides-polish does per-page Codex review against the reference PDF; applies a fix-pattern catalog (PPTX font scaling 1.5-1.8× for projector legibility, banner-as-tcolorbox, em-dash spacing, Chinese EA font hint via PingFang SC, anonymity placeholder discipline)
  4. 🛡️ Audit (when assurance: conference-ready) — /paper-claim-audit + /citation-audit run against a synthetic paper directory at .aris/paper-talk/audit-input/sections/*.tex to verify slides don't introduce claims the paper can't back
bash
/paper-talk "paper/" --- venue: ICLR --- assurance: conference-ready

💡 Assurance ladder (independent of effort): draft / polished (default) / conference-ready. Legal combination: --- effort: lite --- assurance: conference-ready = "fast pipeline, every audit must emit a verdict before the final report." Use it when you trust the writing pass but want hard claim/citation gates.


Cross-cutting: Research Wiki & Meta-Optimize

Two skills that aren't bound to any single workflow but make the whole system smarter over time:

  • 📚 /research-wiki — persistent knowledge base across all seven workflows. Stores every paper read, idea piloted (including failures), experiment run, claim verified. Failed ideas become anti-repetition memory: the next time /idea-creator runs, it sees what didn't work and steers around it.

  • 🧬 /meta-optimize — the outer-loop SKILL.md optimizer. Reads accumulated event logs from your past runs (.aris/meta/events.jsonl), analyzes patterns (which skills failed often? which parameter overrides were common? where did scores plateau?), and proposes SKILL.md improvements. Reviewer-gated, user-approved.


Real Results

A real overnight 4-round run on an ML research project, from borderline reject to submission-ready:

Round Score Key change
0 5/10 Baseline narrative + figures
1 6.5/10 Fixed assumption-model mismatch, softened claims
2 6.8/10 Added synthetic validation; tightened limitations
3 7.0/10 Theorem self-contained; renamed conflicting notation
4 7.5/10 Format pass; passed page check; ICLR-compliant

Final: 8 pages main body (ICLR limit: 9), 0 overfull \hbox, ICLR-compliant. +2.5 points across 4 rounds.

✅ Reproducibility caveat. Score values from GPT-6-Astra are signals, not ground truth. ARIS iterates against them, so high AI-review scores are an expected outcome of the loop, not independent proof of acceptance. Human reviewers still bring updated literature knowledge and venue taste an AI reviewer doesn't model.


The 85 Skills

Grouped by role (full catalog: docs/SKILLS_CATALOG.md).

Category Count Headliners
Literature & ideation 9 /research-lit, /idea-creator, /novelty-check, /deepxiv, /arxiv
Experiments 8 /experiment-bridge, /run-experiment, /monitor-experiment, /experiment-audit
Paper writing 12 /paper-plan, /paper-figure, /paper-write, /paper-compile, /auto-paper-improvement-loop
Audits 6 /proof-checker, /paper-claim-audit, /citation-audit, /citation-crosscheck, /result-to-claim, /kill-argument
Talks & posters 5 /paper-talk, /paper-slides, /paper-poster-html, /slides-polish
Wiki & meta 6 /research-wiki, /meta-optimize, /research-pipeline, /research-refine
Proof & theory 4 /proof-writer, /formula-derivation, /proof-orchestrator, /lean-formalize
Integrations & support 31 /feishu-notify, /figure-spec, /render-html, /overleaf-sync …

The 3-layer audit chain

A core ARIS invariant: the executor must not judge its own integrity. Three layers of cross-model audit:

Layer Skill Asks When
1 /experiment-audit "Is the eval code honest? (no fake GT, no self-normalized scores, no phantom results)" Before / after experiment runs
2 /result-to-claim "Does the claim scientifically follow from the result?" After results, before writing
3 /paper-claim-audit "Does the paper report the numbers truthfully?" (fresh zero-context reviewer) Before submission

Plus /citation-audit (4th layer): every \cite{...} validated for existence, metadata, and context-appropriateness — the most diagnostic check ("does the cited paper actually establish this claim?"). And /kill-argument (5th layer): two fresh codex gpt-6-astra + ultra threads write the strongest 200-word rejection memo and an independent adjudicator pass before submission.


Cross-platform Support

ARIS skills are plain SKILL.md files. They run anywhere an agent reads markdown:

  • 🤖 Claude Code — the default, most tested
  • 🤖 Codex CLI — full skill mirror; spawn_agent instead of mcp__codex__codex (base pack's default reviewer is same-family — install a claude-review/gemini-review overlay for cross-family verdicts)
  • 🖱️ Cursor — agent mode reads ARIS skills directly
  • 🖥️ Trae — ByteDance AI IDE
  • 🚀 Antigravity — Google's agent-first IDE, native SKILL.md
  • 🐙 GitHub Copilot CLI — terminal agent, native SKILL.md
  • 🐾 OpenClaw — without Claude Code slash skills

📝 ARIS is a methodology, not a platform. Fork it, rewrite it, adapt it to your stack. The only invariants are: cross-family review, fresh threads for reviewers, audit integrity. Everything else — model choice, install path, integration surface — is yours.


中文版速览

ARIS(Autonomous Research via Adversarial Multi-Agent Collaboration,梦中科研)是一组 85 个可组合的 Claude Code skills,编排跨模型对抗式协作:

  • 执行:Claude Code 读文件、写代码、跑实验、改论文
  • 审稿:GPT-6-Astra(via Codex MCP)以跨家族审稿人身份打分、找弱点、提建议
  • 关键:每轮 review 用新 thread;执行者绝不审判自己的实验诚实度

七条工作流(W1 / W1.5 / W2 / W3 / W4 / W5 / W6)端到端贯通:找 idea → 实验桥接 → 自动审稿循环 → 写论文 → 写 rebuttal → 跨 venue 移植 → 会议演讲。在真实 ICLR/NeurIPS 投稿上验证过。

🆕 新加入的 skill:/render-html —— 把任何 ARIS 产出的 MD(如 IDEA_REPORT.md、AUTO_REVIEW.md、KILL_ARGUMENT.md)渲染成单文件 HTML,适合给人类读。Markdown 仍是 canonical source,HTML 是 generated view,永远嵌入源 SHA256 + 渲染时间戳防 drift。academic 模板默认走跨模型 Codex review gate——同样的 ARIS 不变量。


Get Started

bash
# 1. Clone ARIS to a stable location (once)
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git ~/aris_repo

# 2. Attach to a project (creates project-local symlinks)
cd ~/your-paper-project
bash ~/aris_repo/tools/install_aris.sh

# 3. Configure the GPT-6-Astra reviewer (Codex MCP)
npm install @openai/codex
codex setup                                    # pick gpt-6-astra when asked
claude mcp add codex -s user -- python3 "$HOME/aris_repo/mcp-servers/codex-exec/server.py"

# 4. Use in Claude Code
claude
> /research-pipeline "factorized gap in discrete diffusion LMs"

⚙️ Alternative model combinations — no Claude or OpenAI API required. See the Alt routes (Alt B/E for GLM × MiniMax-M3 or free DeepSeek-V3.1 via ModelScope; nine routes total, including Antigravity-as-executor and Gemini-direct-API-as-reviewer).


Inspirations

  • 🧪 AI Scientist (Sakana AI) — automated research pioneer
  • 📖 AutoResearch (Karpathy) — end-to-end research automation
  • 🔭 FARS (Analemma) — fully automated research system
  • 🎨 PaperBanana (PKU) — multi-agent academic illustration framework

Community

💬 Group WeChat group QR (refreshes weekly)
🌟 Star github.com/wanshuiyin/Auto-claude-code-research-in-sleep
📖 Technical report arXiv 2605.03042
📑 Skills catalog docs/SKILLS_CATALOG.md
🐛 Bugs / requests GitHub Issues

🌱 From idea to paper to podium — one toolchain. ARIS is a methodology, not a platform. Take it wherever you go.


ALI CODING PLAN GUIDE (`docs/ALI_CODING_PLAN_GUIDE.md`)

阿里百炼 Coding Plan 接入指南

本文档说明如何使用阿里百炼 Coding Plan 的一套 API Key 驱动 ARIS 全流程,无需 Claude 或 OpenAI API。


背景

Coding Plan 是什么

阿里百炼 Coding Plan 是阿里云推出的 AI 编程套餐,一个专属 API Key 打通四款国产顶级模型,同时兼容 OpenAI 和 Anthropic 两大主流 API 协议。

支持的模型

模型 图像理解 推荐用途 速度参考
qwen3.5-plus 是 执行器轻量任务 / 读图 ~94 tokens/s
kimi-k2.5 是 执行器主力(综合能力强) ~42 tokens/s
glm-5 否 审查器主力(推理质量高) ~51 tokens/s
MiniMax-M3 否 审查器备选(速度最快) ~101 tokens/s

为什么不能直接用 Codex MCP

原版 ARIS 的审查器使用 Codex MCP,而 Codex CLI 硬编码调用 OpenAI 专有的 Responses API (/v1/responses),第三方 API 提供商(包括 Coding Plan)均不支持该接口。

解决方案:使用项目内置的 llm-chat MCP 服务器,它调用标准 Chat Completions API (/v1/chat/completions),兼容所有 OpenAI 兼容端点,包括 Coding Plan。

相关讨论:OpenAI Codex GitHub #7782


重要:使用条款限制

警告:阿里百炼官方文档明确规定:

"仅限在编程工具(如 Claude Code、OpenClaw 等)中使用,禁止以 API 调用的形式用于自动化脚本、自定义应用程序后端或任何非交互式批量调用场景。将套餐 API Key 用于允许范围之外的调用将被视为违规或滥用,可能会导致订阅被暂停或 API Key 被封禁。"

使用前请了解以下风险评估:

使用场景 是否符合条款 风险
交互式使用(手动触发 skill,人在回路) 符合 低
半自动(每轮需人工确认,AUTO_PROCEED: false) 基本符合 低
过夜全自动循环(/auto-review-loop 无人值守) 违反 高,可能封禁 Key
llm-chat MCP 作为审查器被 Claude Code 调用 存在争议 中,取决于阿里方面解释

建议:如需完全自动化的过夜科研循环,考虑改用按量计费的百炼 API Key,或其他没有此限制的提供商(DeepSeek、MiniMax 直连等)。


双层架构

Coding Plan 提供两套 API 端点,分别对应 ARIS 的两个角色:

text
┌──────────────────────────────────────────────────────────┐
│                    Claude Code (CLI)                      │
│                                                           │
│  ┌──────────────────┐       ┌─────────────────────────┐  │
│  │     执行器        │──────▶│        审查器            │  │
│  │  (Claude CLI)    │       │   (llm-chat MCP)        │  │
│  │                  │       │                         │  │
│  │  ANTHROPIC_* 变量 │       │  LLM_* 环境变量          │  │
│  │  → Anthropic 端点 │       │  → OpenAI 端点           │  │
│  └──────────────────┘       └─────────────────────────┘  │
└──────────────────────────────────────────────────────────┘
角色 协议 端点
执行器(Claude CLI) Anthropic 兼容 https://coding.dashscope.aliyuncs.com/apps/anthropic
审查器(llm-chat MCP) OpenAI 兼容 https://coding.dashscope.aliyuncs.com/v1

两个端点使用同一个 Coding Plan 专属 API Key,无需分别申请。


安装步骤

前置条件

  • Claude Code CLI 已安装:npm install @anthropic-ai/claude-code
  • Python 3 可用:python3 --version(用 which python3 确认路径)
  • 已购买阿里百炼 Coding Plan 套餐并获取专属 API Key(在套餐页面直接获取,与百炼按量 Key 不互通)

Step 1:克隆仓库

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git
cd Auto-claude-code-research-in-sleep

Step 2:安装 Python 依赖

bash
pip3 install -r mcp-servers/llm-chat/requirements.txt

Step 3:部署 llm-chat MCP 服务器

bash
mkdir -p ~/.claude/mcp-servers/llm-chat
cp mcp-servers/llm-chat/server.py ~/.claude/mcp-servers/llm-chat/server.py

Step 4:安装 Skills

bash
mkdir -p ~/.claude/skills
cp -r skills/* ~/.claude/skills/

Step 5:配置 ~/.claude/settings.json

以下为推荐配置(kimi-k2.5 执行 + glm-5 审查)。用 which python3 替换 command 中的 python3 路径,用 echo $HOME 替换路径中的 $HOME:

json
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "your-coding-plan-api-key",
    "ANTHROPIC_BASE_URL": "https://coding.dashscope.aliyuncs.com/apps/anthropic",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "kimi-k2.5",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "qwen3.5-plus",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-M3",
    "API_TIMEOUT_MS": "3000000",
    "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "6000"
  },
  "mcpServers": {
    "llm-chat": {
      "command": "/usr/bin/python3",
      "args": ["$HOME/.claude/mcp-servers/llm-chat/server.py"],
      "env": {
        "LLM_API_KEY": "your-coding-plan-api-key",
        "LLM_BASE_URL": "https://coding.dashscope.aliyuncs.com/v1",
        "LLM_MODEL": "glm-5"
      }
    }
  }
}

Linux 路径说明:$HOME 通常为 /root(root 用户)或 /home/用户名。运行 echo $HOME 确认,并将配置中 args 里的 $HOME 替换为实际路径(settings.json 不会自动展开 shell 变量)。同理,用 which python3 确认 python3 实际路径。

Step 6:改写所有使用 Codex MCP 的 Skills

项目中有 46 个 skill 在 frontmatter 里授权了 mcp__codex__codex(依赖 OpenAI Responses API,Coding Plan 不支持),其中 28 个正文里有实际的调用块。在启动 Claude Code 后执行以下指令,让它自动完成改写:

text
Read skills/auto-review-loop-llm/SKILL.md as a reference.
It replaces mcp__codex__codex with mcp__llm-chat__chat.
Now rewrite ALL other skills that use mcp__codex__codex / mcp__codex__codex-reply
to use mcp__llm-chat__chat instead, following the same pattern.

Claude Code 会自动:

  1. 扫描 ~/.claude/skills/ 中所有使用 Codex MCP 的 skill 文件
  2. 参考 auto-review-loop-llm 的写法(MCP 优先 + curl fallback)
  3. 逐个改写为调用 mcp__llm-chat__chat

注意:此操作只修改 ~/.claude/skills/ 中的本地副本,不影响仓库原文件。如需恢复,重新执行 Step 4 即可。


模型选择建议

场景 执行器(OPUS 位) 审查器(llm-chat) 说明
推荐:能力均衡 kimi-k2.5 glm-5 kimi 执行综合能力强,glm-5 推理审查严谨
备选:速度优先 qwen3.5-plus MiniMax-M3 两者出词最快,适合快速迭代和调试
备选:测试阶段 qwen3.5-plus glm-5 执行轻量省请求次数,审查保持质量

关于跨模型优势:ARIS 的核心设计是执行器和审查器使用不同模型,互不审自己的输出,形成真正的反馈循环。如果两端用同一模型(如都用 kimi-k2.5),会部分削弱这一优势。


使用方法

配置完成后,按如下方式启动 Claude Code 并使用 skill:

bash
claude

直接可用(无需改写)

text
/auto-review-loop-llm "你的论文主题"    # 已原生支持 llm-chat MCP

改写后可用(Step 6 完成后)

text
/idea-discovery "你的研究方向"          # 工作流 1:文献 → idea → 查新 → 实验
/auto-review-loop "你的论文主题"        # 工作流 2:自动 review 循环
/paper-writing "NARRATIVE_REPORT.md"   # 工作流 3:叙事 → LaTeX → PDF
/research-pipeline "你的研究方向"       # 完整流水线:1 → 2 → 3

验证安装

1. 验证执行器端点(Anthropic 协议)

bash
curl -s "https://coding.dashscope.aliyuncs.com/apps/anthropic/v1/messages" \
  -H "Content-Type: application/json" \
  -H "x-api-key: your-coding-plan-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"kimi-k2.5","max_tokens":50,"messages":[{"role":"user","content":"Say hello"}]}'

预期:返回包含 "content" 字段的 JSON,其中有模型回复文本。

2. 验证审查器端点(OpenAI 协议)

bash
curl -s "https://coding.dashscope.aliyuncs.com/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-coding-plan-api-key" \
  -d '{"model":"glm-5","messages":[{"role":"user","content":"Say hello"}],"max_tokens":50}'

预期:返回包含 "choices" 字段的 JSON,其中有模型回复文本。

3. 验证 llm-chat MCP 服务器

bash
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | \
  LLM_API_KEY="your-coding-plan-api-key" \
  LLM_BASE_URL="https://coding.dashscope.aliyuncs.com/v1" \
  LLM_MODEL="glm-5" \
  python3 ~/.claude/mcp-servers/llm-chat/server.py

预期输出中包含:"protocolVersion":"2024-11-05"

4. 在 Claude Code 中端到端验证

bash
claude
> 读一下这个项目,验证 /auto-review-loop-llm skill 是否正常可用,列出可识别的所有 skill

文件结构总览

text
~/.claude/
├── settings.json                        # 包含 Coding Plan 执行器 + llm-chat MCP 配置
├── mcp-servers/
│   └── llm-chat/
│       └── server.py                    # 通用 LLM MCP 服务器(支持任意 OpenAI 兼容 API)
└── skills/
    ├── auto-review-loop-llm/
    │   └── SKILL.md                     # 已原生支持 llm-chat MCP,无需改写
    ├── idea-creator/
    │   └── SKILL.md                     # Step 6 改写后调用 mcp__llm-chat__chat
    ├── research-review/
    │   └── SKILL.md                     # Step 6 改写后调用 mcp__llm-chat__chat
    ├── novelty-check/
    │   └── SKILL.md                     # Step 6 改写后调用 mcp__llm-chat__chat
    └── ...(其余 skill 类似)

项目目录(运行时生成)/
├── review-stage/AUTO_REVIEW.md                       # 审查日志(自动追加)
└── review-stage/REVIEW_STATE.json                    # 状态持久化,支持断点恢复

与其他方案对比

默认方案 本方案(Coding Plan) MiniMax 方案 GLM + DeepSeek
执行器 Claude Opus/Sonnet kimi-k2.5 / qwen3.5-plus GLM-5 (Z.ai) GLM-5 (Z.ai)
审查器 GPT-6-Astra (Codex MCP) glm-5 / MiniMax-M3 MiniMax-M3 DeepSeek
需要 Claude API 是 否 否 否
需要 OpenAI API 是 否 否 否
API Key 数量 2 个 1 个 2 个 2 个
配置指南 README 快速开始 本文档 MINIMAX_MCP_GUIDE LLM_API_MIX_MATCH_GUIDE

常见问题

Q:执行器报错 "401 Unauthorized"?

Coding Plan 专属 API Key 与百炼平台按量调用 Key 不互通。确认在 Coding Plan 套餐页面 获取的是套餐专属 Key,而非普通百炼 Key。

Q:llm-chat MCP 工具在 Claude Code 中不出现?

  1. 检查系统临时目录中的 llm-chat-mcp-debug.log(可运行 python3 -c "import tempfile; print(tempfile.gettempdir())" 查看路径)
  2. 确认 settings.json 中 command 的 python3 路径正确(which python3)
  3. 确认 args 中的路径为绝对路径,不能包含未展开的 $HOME(需替换为 /root 或实际路径)
  4. 重启 Claude Code

Q:改写后 skill 仍然调用 mcp__codex__codex?

检查 ~/.claude/skills/ 下对应 SKILL.md 文件内容是否已更新。若未改写,重新执行 Step 6 的指令。

Q:Linux 上 python3 路径在哪?

运行 which python3 确认。常见路径:/usr/bin/python3。若使用 conda/venv 环境,路径会不同(如 /root/miniconda3/envs/xxx/bin/python3)。

Q:过夜自动运行安全吗?

Coding Plan 明确禁止"非交互式批量调用",过夜无人值守的自动化循环存在封禁风险。建议改用百炼按量计费 Key 或其他无此限制的提供商。

Q:如何切换审查器模型(如从 glm-5 改为 MiniMax-M3)?

修改 ~/.claude/settings.json 中 mcpServers.llm-chat.env.LLM_MODEL 的值,重启 Claude Code 即可生效。


参考资料


ANTIGRAVITY ADAPTATION (`docs/ANTIGRAVITY_ADAPTATION.md`)

Antigravity Adaptation Guide (ARIS Workflows)

Use ARIS research workflows in Google Antigravity — the agent-first AI IDE from Google DeepMind.

Antigravity natively supports SKILL.md files with the same YAML frontmatter + Markdown body format used by ARIS, making it one of the most natural hosts for ARIS workflows.

1. Key Differences: Claude Code vs Antigravity

Concept Claude Code Antigravity
Skill invocation /skill-name "args" (slash command) Agent auto-discovers from description; or read SKILL.md via view_file
Skill storage ~/.claude/skills/skill-name/SKILL.md ~/.gemini/antigravity/skills/skill-name/SKILL.md (global) or <workspace>/.agents/skills/skill-name/SKILL.md (project-local)
MCP servers claude mcp add ... ~/.gemini/settings.json → mcpServers section
Project instructions CLAUDE.md in project root GEMINI.md in project root (equivalent)
Agent execution Persistent CLI session, auto-compact Editor sidebar + Manager View; multi-agent orchestration
File references Auto-read from project view_file tool; agent reads workspace files automatically
Long-running jobs Single CLI session Agent sessions with artifact-based checkpoints
Models available Claude Opus 4.6 / Sonnet 4.6 Gemini 3.1 Pro (high), Claude Opus 4.6 (Thinking), GPT-OSS-120B

2. Model Selection

Antigravity supports multiple models as the executor (the model that runs ARIS workflows):

Model Best for Configuration
Claude Opus 4.6 (Thinking) Complex reasoning, long pipelines, code generation Model selector → Claude Opus 4.6 (Thinking)
Gemini 3.1 Pro (high) Fast iteration, large context, Google ecosystem integration Model selector → Gemini 3.1 Pro with reasoning effort set to high

Tip: Claude Opus 4.6 (Thinking) and Gemini 3.1 Pro (high) have different strengths. Claude Opus excels at step-by-step reasoning and code accuracy; Gemini 3.1 Pro has a larger context window and faster response times. Choose based on your workflow needs.

Model-Specific Notes

For Claude Opus 4.6 (Thinking):

  • Extended thinking mode is enabled by default — ideal for complex research reasoning
  • ARIS skill instructions will be followed very faithfully
  • May be slower on long review prompts but more thorough

For Gemini 3.1 Pro (high):

  • Larger context window (handles more project files at once)
  • Natively understands SKILL.md format (Google's own standard)
  • Set reasoning effort to high for best research quality — add to ~/.gemini/settings.json:
    json
    {
      "model": {
        "name": "gemini-3.1-pro-preview"
      }
    }

3. Setup

3.1 Install skills

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git
cd Auto-claude-code-research-in-sleep

# Option A: Global install (available across all projects)
mkdir -p ~/.gemini/antigravity/skills
cp -r skills/* ~/.gemini/antigravity/skills/

# Option B: Project-local install (recommended for isolation)
mkdir -p /path/to/your/project/.agents/skills
cp -r skills/* /path/to/your/project/.agents/skills/

Important: Antigravity discovers skills from ~/.gemini/antigravity/skills/ (global) and <workspace>/.agents/skills/ (project-scoped). The agent sees skill names and descriptions at startup, then loads full SKILL.md content when relevant.

3.2 Set up Codex MCP in Antigravity (for review skills)

ARIS uses an external LLM (GPT-6-Astra via Codex) as a critical reviewer. To enable this in Antigravity:

  1. Install Codex CLI and authenticate:

    bash
    npm install @openai/codex
    codex login   # authenticate with your ChatGPT or API key
  2. Add MCP server in Antigravity — edit ~/.gemini/settings.json:

    json
    {
      "mcpServers": {
        "codex": {
          "command": "python3",
          "args": ["/ABSOLUTE/PATH/TO/aris_repo/mcp-servers/codex-exec/server.py"]
        }
      }
    }

    Or for project-local scope, create .gemini/settings.json in your project root:

    json
    {
      "mcpServers": {
        "codex": {
          "command": "python3",
          "args": ["/ABSOLUTE/PATH/TO/aris_repo/mcp-servers/codex-exec/server.py"]
        }
      }
    }
  3. Restart Antigravity. Verify the MCP server connects — the agent will report available tools that include mcp__codex__codex and mcp__codex__codex-reply.

3.3 Alternative reviewer MCP (no OpenAI API)

If you don't have an OpenAI API key, use the llm-chat MCP server with any OpenAI-compatible API (DeepSeek, GLM, MiniMax, Kimi, etc.):

  1. Create a virtual environment and install the required dependency:

    bash
    cd /path/to/Auto-claude-code-research-in-sleep
    python3 -m venv .venv
    .venv/bin/pip install -r mcp-servers/llm-chat/requirements.txt
  2. Add MCP server — edit ~/.gemini/settings.json. Both paths must be absolute:

    json
    {
      "mcpServers": {
        "llm-chat": {
          "command": "/path/to/Auto-claude-code-research-in-sleep/.venv/bin/python3",
          "args": ["/path/to/Auto-claude-code-research-in-sleep/mcp-servers/llm-chat/server.py"],
          "env": {
            "LLM_BASE_URL": "https://api.deepseek.com/v1",
            "LLM_API_KEY": "your_key",
            "LLM_MODEL": "deepseek-chat"
          }
        }
      }
    }
  3. Restart Antigravity. The llm-chat MCP should appear in available tools.

See LLM_API_MIX_MATCH_GUIDE.md for tested provider configurations.

3.4 Project instructions (GEMINI.md)

Antigravity uses GEMINI.md (equivalent to Claude Code's CLAUDE.md) for project-specific instructions. Create this file in your project root:

markdown
## GPU Server (for auto-experiments)

- SSH: `ssh my-gpu-server` (key-based auth, no password)
- GPU: 4x A100
- Conda env: `research` (Python 3.10 + PyTorch)
- Activate: `eval "$(/opt/conda/bin/conda shell.bash hook)" && conda activate research`
- Code directory: `/home/user/experiments/`
- Use `screen` for background jobs: `screen -dmS exp0 bash -c '...'`

## Research Project

- Topic: [your research topic]
- Target venue: ICLR/NeurIPS/ICML
- Key files: NARRATIVE_REPORT.md, idea-stage/IDEA_REPORT.md

4. How to Invoke Skills

Antigravity discovers ARIS skills via the YAML description field in each SKILL.md. There are three approaches:

Simply describe what you want in the chat. Antigravity matches your intent to installed skills:

text
Run the auto review loop for "factorized gap in discrete diffusion LMs".

If ARIS skills are installed (§3.1), Antigravity will automatically discover and activate the auto-review-loop skill.

Approach B: Explicit skill reference

Ask the agent to read a specific SKILL.md:

text
Read the file skills/auto-review-loop/SKILL.md and follow its instructions.
Topic: "factorized gap in discrete diffusion LMs".

Or if installed globally:

text
Read ~/.gemini/antigravity/skills/auto-review-loop/SKILL.md and execute it.
Topic: "factorized gap in discrete diffusion LMs".

Approach C: Direct prompt (one-off use)

Copy the relevant workflow instructions directly into the chat. Best for quick, one-time use.

5. Workflow Mapping

Workflow 1: Idea Discovery

Claude Code:

text
/idea-discovery "your research direction"

Antigravity equivalent:

text
Run the full idea discovery pipeline for "your research direction".

Follow these sub-skills in sequence:
1. Read and execute skills/research-lit/SKILL.md — literature survey
2. Read and execute skills/idea-creator/SKILL.md — brainstorm ideas
3. Read and execute skills/novelty-check/SKILL.md — verify novelty
4. Read and execute skills/research-review/SKILL.md — critical review
5. Read and execute skills/research-refine-pipeline/SKILL.md — refine method + plan experiments

Tip: If the context gets long, run each phase as a separate agent task in Antigravity's Manager View. Pass results via files (e.g., idea-stage/IDEA_REPORT.md, refine-logs/FINAL_PROPOSAL.md).

Workflow 1.5: Experiment Bridge

Claude Code:

text
/experiment-bridge

Antigravity equivalent:

text
Read and execute skills/experiment-bridge/SKILL.md.
Read refine-logs/EXPERIMENT_PLAN.md and implement the experiments.
Deploy to GPU via skills/run-experiment/SKILL.md.

Workflow 2: Auto Review Loop

Claude Code:

text
/auto-review-loop "your paper topic"

Antigravity equivalent:

text
Read and execute skills/auto-review-loop/SKILL.md.
Run the auto review loop for "your paper topic".
Read project narrative docs, memory files, experiment results.
Use MCP tool mcp__codex__codex for external review.

Important: If using the llm-chat MCP instead of Codex, replace mcp__codex__codex with mcp__llm-chat__chat. Or use the adapted skill: skills/auto-review-loop-llm/SKILL.md.

Workflow 3: Paper Writing

Claude Code:

text
/paper-writing "NARRATIVE_REPORT.md"

Antigravity equivalent:

text
Read and execute skills/paper-writing/SKILL.md.
Input: NARRATIVE_REPORT.md in project root.

Sub-skills to execute in sequence:
1. Read and execute skills/paper-plan/SKILL.md — outline + claims-evidence matrix
2. Read and execute skills/paper-figure/SKILL.md — generate plots and tables
3. Read and execute skills/paper-write/SKILL.md — write LaTeX sections
4. Read and execute skills/paper-compile/SKILL.md — build PDF
5. Read and execute skills/auto-paper-improvement-loop/SKILL.md — review and polish

Full Pipeline

For the full pipeline (/research-pipeline), leverage Antigravity's multi-agent capability to run stages in parallel where possible:

Stage What to do Output files
1 Idea Discovery: skills/idea-discovery/SKILL.md + your direction idea-stage/IDEA_REPORT.md, refine-logs/FINAL_PROPOSAL.md, refine-logs/EXPERIMENT_PLAN.md
2 Experiment Bridge: skills/experiment-bridge/SKILL.md Experiment scripts, results
3 Auto Review Loop: skills/auto-review-loop/SKILL.md review-stage/AUTO_REVIEW.md
4 Paper Writing: skills/paper-writing/SKILL.md + NARRATIVE_REPORT.md paper/ directory

Each stage reads the previous stage's output files, so context carries forward across agent sessions.

Note: Stage 4 expects a NARRATIVE_REPORT.md — see NARRATIVE_REPORT_EXAMPLE.md for the expected format.

6. MCP Tool Calls

ARIS skills reference MCP tools by name. These work identically in Antigravity once configured:

ARIS MCP tool What it does Required MCP server
mcp__codex__codex Send prompt to GPT-6-Astra Codex
mcp__codex__codex-reply Continue conversation thread Codex
mcp__llm-chat__chat Send prompt to any OpenAI-compatible model llm-chat
mcp__zotero__* Search Zotero library zotero (name may vary)
mcp__obsidian-vault__* Search Obsidian vault obsidian-vault (name may vary)

7. State Files & Recovery

ARIS workflows persist state to files for crash recovery. These work identically in Antigravity:

File Purpose Written by
review-stage/REVIEW_STATE.json Auto-review loop progress auto-review-loop
review-stage/AUTO_REVIEW.md Cumulative review log auto-review-loop
idea-stage/IDEA_REPORT.md Ranked ideas with pilot results idea-discovery
PAPER_PLAN.md Paper outline + claims-evidence matrix paper-plan
refine-logs/FINAL_PROPOSAL.md Refined method proposal research-refine
refine-logs/EXPERIMENT_PLAN.md Experiment roadmap experiment-plan
refine-logs/EXPERIMENT_TRACKER.md Run-by-run execution status experiment-plan

If an Antigravity agent session ends mid-workflow, start a new session and reference the state file:

text
Read skills/auto-review-loop/SKILL.md, then read review-stage/REVIEW_STATE.json and review-stage/AUTO_REVIEW.md.
Resume the auto review loop from the saved state.

8. GPU Server Setup

Add your server info to GEMINI.md in your project root (equivalent to CLAUDE.md):

markdown
## Remote Server

- SSH: `ssh my-gpu-server` (key-based auth, no password)
- GPU: 4x A100
- Conda env: `research` (Python 3.10 + PyTorch)
- Activate: `eval "$(/opt/conda/bin/conda shell.bash hook)" && conda activate research`
- Code directory: `/home/user/experiments/`
- Use `screen` for background jobs

Then invoke:

text
Read skills/run-experiment/SKILL.md and GEMINI.md.
Deploy the training script to the remote GPU server.

9. Antigravity-Specific Advantages

Antigravity provides several unique capabilities that enhance ARIS workflows:

Multi-Agent Orchestration

Use Antigravity's Manager View to run multiple ARIS stages simultaneously:

  • Agent 1: Literature survey (Workflow 1, Stage 1)
  • Agent 2: Running experiments on GPU (Workflow 1.5)
  • Agent 3: Reviewing and iterating on prior results (Workflow 2)

Browser Integration

Antigravity includes a built-in browser. Useful for:

  • Previewing generated charts/figures from /paper-figure
  • Testing web-based arXiv searches during /research-lit
  • Viewing compiled PDF from /paper-compile

Artifact System

Antigravity's artifact system (implementation plans, walkthroughs) maps naturally to ARIS outputs:

  • idea-stage/IDEA_REPORT.md → implementation plan artifact
  • review-stage/AUTO_REVIEW.md → walkthrough artifact
  • PAPER_PLAN.md → implementation plan artifact

Knowledge Persistence

Antigravity's knowledge system retains context across conversations:

  • Past review findings from /auto-review-loop are available in future sessions
  • Experiment configurations and results persist in knowledge items
  • Literature survey results can be referenced without re-running

10. Limitations & Workarounds

Limitation Workaround
No native /skill-name slash commands Use natural language (auto-discovery) or explicit read SKILL.md references
Skills reference $ARGUMENTS Replace with your actual arguments in the prompt
SKILL.md files use /skill-name to call sub-skills Tell the agent to read and execute the sub-skill SKILL.md files explicitly
allowed-tools not enforced Antigravity's agent has access to all configured tools by default — not a problem in practice
CLAUDE.md references in skills Antigravity reads GEMINI.md instead — rename or copy CLAUDE.md to GEMINI.md, or tell the agent to read both
Context window varies by model Claude Opus 4.6: similar to Claude Code. Gemini 3.1 Pro: larger window. Both handle full pipelines well. Break into stages if needed

11. Quick Reference

text
# Literature survey
Read skills/research-lit/SKILL.md and search for papers on "discrete diffusion models".

# Idea discovery (full pipeline)
Read skills/idea-discovery/SKILL.md and run idea discovery for
"factorized gap in discrete diffusion LMs".

# Single deep review
Read skills/research-review/SKILL.md and review this research:
[describe your work or point to files].

# Auto review loop
Read skills/auto-review-loop/SKILL.md and run the auto review loop.
Topic: "your paper topic".

# Paper writing
Read skills/paper-writing/SKILL.md and write the paper from NARRATIVE_REPORT.md.

# Run experiment
Read skills/run-experiment/SKILL.md and GEMINI.md.
Deploy: python train.py --lr 1e-4 --epochs 100

12. Summary: Claude Code → Antigravity Migration Checklist

  • Install skills to ~/.gemini/antigravity/skills/ or /.agents/skills/
  • Configure MCP servers in ~/.gemini/settings.json
  • Copy CLAUDE.md content to GEMINI.md (or keep both)
  • Select model: Claude Opus 4.6 (Thinking) or Gemini 3.1 Pro (high)
  • Use natural language or explicit skill references instead of /slash-commands
  • Verify MCP tools are available (codex or llm-chat)
  • Run a quick test: Read skills/research-review/SKILL.md and review my project

ANTIGRAVITY ADAPTATION CN (`docs/ANTIGRAVITY_ADAPTATION_CN.md`)

Antigravity 适配指南(ARIS 工作流)

在 Google Antigravity 中使用 ARIS 研究工作流 —— Google DeepMind 出品的 Agent-First AI IDE。

Antigravity 原生支持与 ARIS 相同的 SKILL.md 格式(YAML frontmatter + Markdown body),是 ARIS 工作流最自然的宿主之一。

1. 关键差异:Claude Code vs Antigravity

概念 Claude Code Antigravity
Skill 调用 /skill-name "args"(斜杠命令) Agent 通过 description 自动发现;或通过 view_file 读取 SKILL.md
Skill 存放 ~/.claude/skills/skill-name/SKILL.md ~/.gemini/antigravity/skills/skill-name/SKILL.md(全局)或 <workspace>/.agents/skills/skill-name/SKILL.md(项目级)
MCP 配置 claude mcp add ... ~/.gemini/settings.json → mcpServers 字段
项目说明 项目根目录 CLAUDE.md 项目根目录 GEMINI.md(等效)
Agent 执行 持续 CLI 会话,自动压缩 编辑器侧边栏 + Manager 视图;支持多 agent 编排
文件引用 自动读取项目文件 view_file 工具;agent 自动读取工作区文件
长任务 单 CLI 会话 Agent 会话 + artifact 检查点
可用模型 Claude Opus 4.6 / Sonnet 4.6 Gemini 3.1 Pro (high)、Claude Opus 4.6 (Thinking)、GPT-OSS-120B

2. 模型选择

Antigravity 支持多种模型作为执行器(运行 ARIS 工作流的模型):

模型 最适合 配置方式
Claude Opus 4.6 (Thinking) 复杂推理、长流水线、代码生成 模型选择器 → Claude Opus 4.6 (Thinking)
Gemini 3.1 Pro (high) 快速迭代、大上下文、Google 生态集成 模型选择器 → Gemini 3.1 Pro,推理力度设为 high

提示: Claude Opus 4.6 (Thinking) 和 Gemini 3.1 Pro (high) 各有优势。Claude Opus 擅长逐步推理和代码准确性;Gemini 3.1 Pro 上下文窗口更大、响应速度更快。请根据工作流需求选择。

模型特定说明

Claude Opus 4.6 (Thinking):

  • 默认启用扩展思考模式——适合复杂的研究推理
  • ARIS skill 指令会被非常忠实地执行
  • 长审阅 prompt 可能较慢,但更彻底

Gemini 3.1 Pro (high):

  • 上下文窗口更大(一次处理更多项目文件)
  • 原生理解 SKILL.md 格式(Google 自己的标准)
  • 推理力度建议设为 high——添加到 ~/.gemini/settings.json:
    json
    {
      "model": {
        "name": "gemini-3.1-pro-preview"
      }
    }

3. 安装配置

3.1 安装 Skills

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git
cd Auto-claude-code-research-in-sleep

# 方案 A:全局安装(所有项目可用)
mkdir -p ~/.gemini/antigravity/skills
cp -r skills/* ~/.gemini/antigravity/skills/

# 方案 B:项目级安装(推荐,隔离性好)
mkdir -p /path/to/your/project/.agents/skills
cp -r skills/* /path/to/your/project/.agents/skills/

重要: Antigravity 从 ~/.gemini/antigravity/skills/(全局)和 <workspace>/.agents/skills/(项目级)发现技能。Agent 启动时看到技能名称和描述,相关时加载完整 SKILL.md 内容。

3.2 配置 Codex 审阅 MCP(用于审阅技能)

ARIS 使用外部 LLM(GPT-6-Astra via Codex)作为审阅者。在 Antigravity 中启用:

  1. 安装并认证 Codex CLI:

    bash
    npm install @openai/codex
    codex login   # 用 ChatGPT 或 API key 认证
  2. 在 Antigravity 中添加 MCP——编辑 ~/.gemini/settings.json:

    json
    {
      "mcpServers": {
        "codex": {
          "command": "python3",
          "args": ["/ABSOLUTE/PATH/TO/aris_repo/mcp-servers/codex-exec/server.py"]
        }
      }
    }

    或在项目根目录创建 .gemini/settings.json(项目级配置):

    json
    {
      "mcpServers": {
        "codex": {
          "command": "python3",
          "args": ["/ABSOLUTE/PATH/TO/aris_repo/mcp-servers/codex-exec/server.py"]
        }
      }
    }
  3. 重启 Antigravity,验证 MCP 连接——agent 应报告 mcp__codex__codex 和 mcp__codex__codex-reply 工具可用。

3.3 替代审阅 MCP(无 OpenAI API)

没有 OpenAI API key?使用 llm-chat MCP 服务器对接 DeepSeek/GLM/MiniMax/Kimi 等兼容接口:

  1. 创建虚拟环境并安装依赖:

    bash
    cd /path/to/Auto-claude-code-research-in-sleep
    python3 -m venv .venv
    .venv/bin/pip install -r mcp-servers/llm-chat/requirements.txt
  2. 添加 MCP——编辑~/.gemini/antigravity/mcp_config.json(旧版:~/.gemini/settings.json),路径必须为绝对路径:

    json
    {
      "mcpServers": {
        "llm-chat": {
          "command": "/path/to/Auto-claude-code-research-in-sleep/.venv/bin/python3",
          "args": ["/path/to/Auto-claude-code-research-in-sleep/mcp-servers/llm-chat/server.py"],
          "env": {
            "LLM_BASE_URL": "https://api.deepseek.com/v1",
            "LLM_API_KEY": "your_key",
            "LLM_MODEL": "deepseek-chat"
          }
        }
      }
    }
  3. 重启 Antigravity,确认 llm-chat MCP 在可用工具中。

详见 LLM_API_MIX_MATCH_GUIDE.md 获取已测试的提供商配置。

3.4 项目说明(GEMINI.md)

Antigravity 使用 GEMINI.md(等价于 Claude Code 的 CLAUDE.md)存放项目级说明。在项目根目录创建:

markdown
## GPU 服务器(用于自动实验)

- SSH: `ssh my-gpu-server`(密钥认证,无密码)
- GPU: 4x A100
- Conda 环境: `research` (Python 3.10 + PyTorch)
- 激活命令: `eval "$(/opt/conda/bin/conda shell.bash hook)" && conda activate research`
- 代码目录: `/home/user/experiments/`
- 后台任务: `screen -dmS exp0 bash -c '...'`

## 研究项目

- 课题: [你的研究方向]
- 目标会议: ICLR/NeurIPS/ICML
- 关键文件: NARRATIVE_REPORT.md, idea-stage/IDEA_REPORT.md

4. 如何调用 Skills

Antigravity 通过 SKILL.md 中的 YAML description 字段自动发现 ARIS 技能。三种方式:

方式 A:自然语言(推荐——Antigravity 自动发现)

直接在对话中描述需求,Antigravity 会自动匹配已安装的技能:

text
对 "discrete diffusion models 中的 factorized gap" 运行自动评审循环。

如果 ARIS 技能已安装(§3.1),Antigravity 会自动发现并激活 auto-review-loop 技能。

方式 B:显式引用技能文件

要求 agent 读取特定 SKILL.md:

text
读取 skills/auto-review-loop/SKILL.md 并按照其指令执行。
课题:"factorized gap in discrete diffusion LMs"。

方式 C:直接粘贴指令(一次性使用)

将相关 workflow 指令直接粘贴到对话中,适合临时任务。

5. 工作流映射

Workflow 1:Idea Discovery(创意发现)

Claude Code:

text
/idea-discovery "your research direction"

Antigravity 等价:

text
运行完整的 idea discovery 流程,方向:"your research direction"。

按顺序执行以下子技能:
1. 读取并执行 skills/research-lit/SKILL.md —— 文献综述
2. 读取并执行 skills/idea-creator/SKILL.md —— 头脑风暴
3. 读取并执行 skills/novelty-check/SKILL.md —— 新颖性验证
4. 读取并执行 skills/research-review/SKILL.md —— 深度评审
5. 读取并执行 skills/research-refine-pipeline/SKILL.md —— 方法精化 + 实验规划

Workflow 1.5:Experiment Bridge(实验桥接)

Claude Code:

text
/experiment-bridge

Antigravity 等价:

text
读取并执行 skills/experiment-bridge/SKILL.md。
读取 refine-logs/EXPERIMENT_PLAN.md 并实现实验。
通过 skills/run-experiment/SKILL.md 部署到 GPU。

Workflow 2:Auto Review Loop(自动评审循环)

Claude Code:

text
/auto-review-loop "your paper topic"

Antigravity 等价:

text
读取并执行 skills/auto-review-loop/SKILL.md。
对 "your paper topic" 运行自动评审循环。
读取项目叙事文档、记忆文件和实验结果。
使用 MCP 工具 mcp__codex__codex 进行外部审阅。

注意: 如果使用 llm-chat MCP,把 mcp__codex__codex 替换为 mcp__llm-chat__chat。或使用适配版技能:skills/auto-review-loop-llm/SKILL.md。

Workflow 3:Paper Writing(论文写作)

Claude Code:

text
/paper-writing "NARRATIVE_REPORT.md"

Antigravity 等价:

text
读取并执行 skills/paper-writing/SKILL.md。
输入:项目根目录的 NARRATIVE_REPORT.md。

按顺序执行以下子技能:
1. 读取并执行 skills/paper-plan/SKILL.md —— 大纲 + claims-evidence matrix
2. 读取并执行 skills/paper-figure/SKILL.md —— 生成图表
3. 读取并执行 skills/paper-write/SKILL.md —— 写 LaTeX 章节
4. 读取并执行 skills/paper-compile/SKILL.md —— 编译 PDF
5. 读取并执行 skills/auto-paper-improvement-loop/SKILL.md —— 审阅与润色

全流程分阶段建议

利用 Antigravity 的多 agent 能力,在可能的情况下并行运行各阶段:

阶段 执行方式 产出文件
1 创意发现:skills/idea-discovery/SKILL.md + 研究方向 idea-stage/IDEA_REPORT.md, refine-logs/FINAL_PROPOSAL.md, refine-logs/EXPERIMENT_PLAN.md
2 实验桥接:skills/experiment-bridge/SKILL.md 实验脚本与结果
3 自动评审:skills/auto-review-loop/SKILL.md review-stage/AUTO_REVIEW.md
4 论文写作:skills/paper-writing/SKILL.md + NARRATIVE_REPORT.md paper/ 目录

6. MCP 工具对照

ARIS MCP 工具 作用 需要的 MCP Server
mcp__codex__codex 发审阅请求到 GPT-6-Astra codex
mcp__codex__codex-reply 续接审阅线程 codex
mcp__llm-chat__chat 发请求到兼容 OpenAI API 模型 llm-chat
mcp__zotero__* 搜索 Zotero 文献库 zotero
mcp__obsidian-vault__* 搜索 Obsidian 笔记库 obsidian-vault

7. 状态文件与恢复

文件 作用 对应流程
review-stage/REVIEW_STATE.json 自动评审进度 auto-review-loop
review-stage/AUTO_REVIEW.md 累计评审日志 auto-review-loop
idea-stage/IDEA_REPORT.md 创意筛选与排名 idea-discovery
PAPER_PLAN.md 论文大纲 + claim-evidence matrix paper-plan
refine-logs/FINAL_PROPOSAL.md 精化后的方法提案 research-refine
refine-logs/EXPERIMENT_PLAN.md 实验路线图 experiment-plan

中断恢复示例:

text
读取 skills/auto-review-loop/SKILL.md,然后读取 review-stage/REVIEW_STATE.json 和 review-stage/AUTO_REVIEW.md。
从保存的状态恢复自动评审循环。

8. Antigravity 独有优势

多 Agent 编排

使用 Antigravity 的 Manager View 同时运行多个 ARIS 阶段:

  • Agent 1:文献综述(Workflow 1 第 1 阶段)
  • Agent 2:在 GPU 上跑实验(Workflow 1.5)
  • Agent 3:审阅并迭代此前结果(Workflow 2)

内置浏览器

Antigravity 内置浏览器,可用于:

  • 预览 /paper-figure 生成的图表
  • /research-lit 中的 arXiv 搜索
  • 查看 /paper-compile 编译的 PDF

Artifact 系统

ARIS 产出自然映射到 Antigravity 的 artifact 系统:

  • idea-stage/IDEA_REPORT.md → implementation plan artifact
  • review-stage/AUTO_REVIEW.md → walkthrough artifact
  • PAPER_PLAN.md → implementation plan artifact

知识持久化

Antigravity 的知识系统跨对话保留上下文:

  • /auto-review-loop 的评审发现在未来会话中可用
  • 实验配置和结果持久保存在知识条目中

9. 常见限制与处理

限制 处理方式
无 /skill-name 斜杠命令 使用自然语言(自动发现)或显式引用 SKILL.md
Skills 引用 $ARGUMENTS 在提示词中写明实际参数
SKILL.md 中用斜杠语法调用子技能 告诉 agent 显式读取并执行子技能的 SKILL.md 文件
allowed-tools 不强制执行 Antigravity agent 默认可使用所有已配置工具——实际无影响
Skills 引用 CLAUDE.md Antigravity 读 GEMINI.md——重命名或复制 CLAUDE.md 为 GEMINI.md,或告诉 agent 两个文件都读
上下文窗口因模型而异 Claude Opus 4.6 与 Claude Code 类似;Gemini 3.1 Pro 窗口更大。必要时分阶段执行

10. 快速参考

text
# 文献综述
读取 skills/research-lit/SKILL.md,搜索 "discrete diffusion models" 相关论文。

# 创意发现(完整流程)
读取 skills/idea-discovery/SKILL.md,对 "factorized gap in discrete diffusion LMs" 运行创意发现。

# 单次深度评审
读取 skills/research-review/SKILL.md,评审我的研究:[描述或指向文件]。

# 自动评审循环
读取 skills/auto-review-loop/SKILL.md,运行自动评审循环。课题:"your paper topic"。

# 论文写作
读取 skills/paper-writing/SKILL.md,根据 NARRATIVE_REPORT.md 写论文。

# 部署实验
读取 skills/run-experiment/SKILL.md 和 GEMINI.md。
部署:python train.py --lr 1e-4 --epochs 100

11. 迁移清单:Claude Code → Antigravity

  • 安装 skills 到 ~/.gemini/antigravity/skills/ 或 /.agents/skills/
  • 在 ~/.gemini/settings.json 配置 MCP 服务器
  • 将 CLAUDE.md 内容复制到 GEMINI.md(或保留两者)
  • 选择模型:Claude Opus 4.6 (Thinking) 或 Gemini 3.1 Pro (high)
  • 用自然语言或显式技能引用替代 /斜杠命令
  • 验证 MCP 工具可用(codex 或 llm-chat)
  • 快速测试:读取 skills/research-review/SKILL.md 并评审我的项目

ARIS Code README CN (`docs/ARIS-Code-README_CN.md`)

ARIS-Code 文档已移至 aris-code 分支

👉 点击查看最新中文文档

👉 English Version

👉 ⬇️ Download Latest Release


ARIS Code README EN (`docs/ARIS-Code-README_EN.md`)

ARIS-Code docs moved to aris-code branch

👉 View Latest English Docs

👉 中文版

👉 ⬇️ Download Latest Release


ARIS INTRO.Review.Json (`docs/ARIS_INTRO.review.json`)

{
"skill": "render-html",
"source": "docs/ARIS_INTRO.md",
"source_sha256": "7757b71ab1b1bacc6a4df7c7dc1909d74acd17542bfe815ee6a25522a908d0eb",
"output": "docs/ARIS_INTRO.html",
"author": "Ruofeng Yang (杨若峰), Shanghai Jiao Tong University",
"reviewer": "codex gpt-5.5 xhigh, fresh thread per run (never codex-reply)",
"verdict": "PASS",
"checks": {
"source_hash_match": "pass",
"information_fidelity": "pass",
"structure": "pass",
"math_code_tables": "pass",
"callouts": "pass",
"safety_escaping": "pass",
"placeholder_leak": "pass",
"link_targets_absolute": "pass",
"details_inner_markdown_rendered": "pass",
"no_absolute_local_path_leak": "pass",
"author_byline_rendered": "pass",
"per_workflow_schema_consistency": "pass",
"workflow_count_consistency": "pass"
},
"blocking_issues": [],
"warnings": [],
"history": [
{
"run": 1,
"verdict": "WARN",
"thread_id": "019e3bfe-69de-7de1-8d64-7c70e3d19013",
"issue": "Key safety features inner markdown bullets emitted as literal text",
"fix": "Added _render_html_block() in render_html.py — blocks recursively parse inner content as Markdown (GFM convention)"
},
{
"run": 2,
"verdict": "PASS",
"thread_id": "019e3c03-32ac-78a0-b3a0-969db86e009e",
"issue": null,
"fix": null
},
{
"run": 3,
"verdict": "PASS",
"thread_id": "019e3c0d-7c4a-7b30-abd1-8df2aa9ad275",
"issue": "Added privacy + byline pass — verified no absolute /Users/... path leaks, author byline renders with CJK characters intact",
"fix": "Renderer: added _repo_relative() helper for display path; added --author flag + {{BYLINE_BLOCK}} placeholder; templates render byline between subtitle and meta strip"
},
{
"run": 4,
"verdict": "FAIL",
"thread_id": "019e3c17-a220-7f10-8237-ada07335a1e6",
"issue": "Expanded doc with 6 new workflow detail sections; FAIL because W2 lacked closing callout while other workflows had one; minor 'Six Workflows' vs 7 entries label inconsistency",
"fix": "Added W2 closing 🔁 callout; renamed section heading to 'The Workflows'"
},
{
"run": 5,
"verdict": "WARN",
"thread_id": "019e3c1c-0c52-7f02-8756-c92a0d251004",
"issue": "W2's new 🔁 callout rendered as plain not styled callout (emoji not in callout-prefix map); residual 'Six workflows'/'六大工作流' wording in TL;DR and CN section",
"fix": "Added 🔁 (+ 🌱 / 📚 / 🧬) to _CALLOUT_PREFIX_MAP in render_html.py; updated TL;DR + CN section to 'Seven workflows (W1/W1.5/W2/W3/W4/W5/W6)' / '七条工作流'"
},
{
"run": 6,
"verdict": "WARN",
"thread_id": "019e3c1f-3ccd-7b40-80ff-28d93a8b2408",
"issue": "One residual 'across all six workflows' phrase in Research Wiki bullet",
"fix": "Changed 'six' → 'seven' in Research Wiki bullet"
},
{
"run": 7,
"verdict": "PASS",
"thread_id": "019e3c20-e5fd-7872-baf2-7819a572cf03",
"issue": null,
"fix": null
}
],
"summary": "Seven-round review: WARN (details MD) → PASS → PASS (privacy+byline) → FAIL (W2 missing closing callout) → WARN (🔁 not styled, count drift) → WARN (one stale count phrase) → PASS. 13 checks pass on run 7. Each round generated a renderer or content fix; full audit trail above. Final source SHA256 612bea09bdbe.",
"rendered_at": "2026-05-19"
}


CODEX CLAUDE REVIEW GUIDE (`docs/CODEX_CLAUDE_REVIEW_GUIDE.md`)

Codex + Claude Reviewer Guide

This guide documents a frozen legacy partial overlay. New installs use the complete Codex pack with reviewer selection; see migration and preserving customizations. Existing directories and links remain available, without new feature sync.

Run ARIS with:

  • Codex as the main executor
  • Claude Code CLI as the reviewer
  • the local claude-review MCP bridge as the transport layer

This guide is additive to the upstream Codex-native path. It does not replace skills/skills-codex/.

Architecture

  • Base skill set: skills/skills-codex/
  • Reviewer override layer: skills/skills-codex-claude-review/
  • Reviewer bridge: mcp-servers/claude-review/

The install order matters:

  1. install skills/skills-codex/*
  2. install skills/skills-codex-claude-review/*
  3. register claude-review MCP

Install

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git
cd Auto-claude-code-research-in-sleep

mkdir -p ~/.codex/skills
cp -a skills/skills-codex/* ~/.codex/skills/
cp -a skills/skills-codex-claude-review/* ~/.codex/skills/

mkdir -p ~/.codex/mcp-servers/claude-review
cp mcp-servers/claude-review/server.py ~/.codex/mcp-servers/claude-review/server.py
codex mcp add claude-review -- python3 ~/.codex/mcp-servers/claude-review/server.py

If your Claude login depends on a shell helper such as claude-aws, use the wrapper:

bash
cp mcp-servers/claude-review/run_with_claude_aws.sh ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh
chmod +x ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh
codex mcp add claude-review -- ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh

Optional reviewer model override:

bash
codex mcp remove claude-review
codex mcp add claude-review --env CLAUDE_REVIEW_MODEL=claude-opus-4-1 -- python3 ~/.codex/mcp-servers/claude-review/server.py

Verify

  1. Check MCP registration:
bash
codex mcp list
  1. Check Claude CLI login:
bash
claude -p "Reply with exactly READY" --output-format json --tools ""
  1. Start Codex in your project:
bash
codex -C /path/to/your/project

What gets overridden

The overlay only replaces review-heavy skills:

  • research-review
  • novelty-check
  • research-refine
  • auto-review-loop
  • paper-plan
  • paper-figure
  • paper-write
  • auto-paper-improvement-loop

Everything else still comes from the upstream skills/skills-codex/ package.

Async reviewer flow

For long paper or project reviews, use:

  • review_start
  • review_reply_start
  • review_status

Why: in this host path, the review hop is:

Codex -> claude-review MCP -> local Claude CLI -> Claude backend

That extra local CLI hop is what makes long synchronous reviewer calls more likely to hit the observed Codex-hosted MCP timeout.

Project config

No special project config file is required for this path.

  • keep using your existing CLAUDE.md
  • keep your current project layout
  • only switch the installed Codex skill files and MCP registration

Maintenance

Regenerate the overlay package with:

bash
python3 tools/generate_codex_claude_review_overrides.py

CODEX CLAUDE REVIEW GUIDE CN (`docs/CODEX_CLAUDE_REVIEW_GUIDE_CN.md`)

Codex + Claude 审稿人指南

本页记录已冻结的旧 partial overlay 安装。新安装使用完整 Codex 包和 reviewer 选择;迁移与保留定制。旧目录与已有链接继续保留,不再同步新功能。

让 ARIS 以以下方式运行:

  • Codex 作为主执行者
  • Claude Code CLI 作为审稿人
  • 通过本地 claude-review MCP bridge 连接两者

这条路径是对上游 Codex 原生方案的增量叠加,不会替代 skills/skills-codex/。

架构

  • 基础技能包:skills/skills-codex/
  • 审稿覆盖层:skills/skills-codex-claude-review/
  • 审稿 bridge:mcp-servers/claude-review/

安装顺序必须保持:

  1. 先安装 skills/skills-codex/*
  2. 再安装 skills/skills-codex-claude-review/*
  3. 最后注册 claude-review MCP

安装

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git
cd Auto-claude-code-research-in-sleep

mkdir -p ~/.codex/skills
cp -a skills/skills-codex/* ~/.codex/skills/
cp -a skills/skills-codex-claude-review/* ~/.codex/skills/

mkdir -p ~/.codex/mcp-servers/claude-review
cp mcp-servers/claude-review/server.py ~/.codex/mcp-servers/claude-review/server.py
codex mcp add claude-review -- python3 ~/.codex/mcp-servers/claude-review/server.py

如果你的 Claude 登录依赖 claude-aws 之类的 shell helper,请改用 wrapper:

bash
cp mcp-servers/claude-review/run_with_claude_aws.sh ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh
chmod +x ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh
codex mcp add claude-review -- ~/.codex/mcp-servers/claude-review/run_with_claude_aws.sh

如果你想固定 Claude 审稿模型:

bash
codex mcp remove claude-review
codex mcp add claude-review --env CLAUDE_REVIEW_MODEL=claude-opus-4-1 -- python3 ~/.codex/mcp-servers/claude-review/server.py

验证

  1. 检查 MCP 注册:
bash
codex mcp list
  1. 检查 Claude CLI 登录:
bash
claude -p "Reply with exactly READY" --output-format json --tools ""
  1. 在项目中启动 Codex:
bash
codex -C /path/to/your/project

哪些技能会被覆盖

覆盖层只替换 review-heavy 技能:

  • research-review
  • novelty-check
  • research-refine
  • auto-review-loop
  • paper-plan
  • paper-figure
  • paper-write
  • auto-paper-improvement-loop

其余技能仍然来自上游原生 skills/skills-codex/。

异步 reviewer 流程

对于长论文或长项目审稿,请使用:

  • review_start
  • review_reply_start
  • review_status

原因是这条宿主链路里的 review hop 更长:

Codex -> claude-review MCP -> 本地 Claude CLI -> Claude 后端

多出来的本地 CLI hop,正是长同步 reviewer 调用更容易撞上 Codex 侧 MCP 超时的主要原因。

项目配置

这条路径不要求你新建特殊项目配置文件。

  • 继续使用现有 CLAUDE.md
  • 保持原有项目目录结构
  • 只需要切换 Codex 安装的技能文件和 MCP 注册

维护

重新生成这个 overlay 包:

bash
python3 tools/generate_codex_claude_review_overrides.py

CODEX GEMINI REVIEW GUIDE (`docs/CODEX_GEMINI_REVIEW_GUIDE.md`)

Codex + Gemini Reviewer Guide

This guide documents a frozen legacy partial overlay. New installs use the complete Codex pack with reviewer selection; see migration and preserving customizations. Existing directories and links remain available, without new feature sync.

Run ARIS with:

  • Codex as the main executor
  • Gemini as the reviewer
  • the local gemini-review MCP bridge as the transport layer
  • the direct Gemini API as the default reviewer backend

This guide is additive to the upstream Codex-native path. It does not replace skills/skills-codex/.

Architecture

  • Base skill set: skills/skills-codex/
  • Reviewer override layer: skills/skills-codex-gemini-review/
  • Reviewer bridge: mcp-servers/gemini-review/

The install order matters:

  1. install skills/skills-codex/*
  2. install skills/skills-codex-gemini-review/*
  3. register gemini-review MCP

Install

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git
cd Auto-claude-code-research-in-sleep

mkdir -p ~/.codex/skills
cp -a skills/skills-codex/* ~/.codex/skills/
cp -a skills/skills-codex-gemini-review/* ~/.codex/skills/

mkdir -p ~/.codex/mcp-servers/gemini-review
cp mcp-servers/gemini-review/server.py ~/.codex/mcp-servers/gemini-review/server.py
cp mcp-servers/gemini-review/README.md ~/.codex/mcp-servers/gemini-review/README.md
codex mcp add gemini-review --env GEMINI_REVIEW_BACKEND=api -- python3 ~/.codex/mcp-servers/gemini-review/server.py

Recommended credential file:

bash
mkdir -p ~/.gemini
cat > ~/.gemini/.env <<'EOF'
GEMINI_API_KEY="your-key"
EOF
chmod 600 ~/.gemini/.env

The bridge auto-loads ~/.gemini/.env if present.

Why direct API is the default

  • This path is designed to maximize reuse of the original ARIS reviewer-aware skills while minimizing skill changes.
  • The gemini-review bridge preserves the same review / review_reply / review_start / review_reply_start / review_status contract used by the existing Claude-review overlay.
  • Using the direct Gemini API removes the extra local CLI hop and keeps the reviewer path closer to the API-backed integrations already used elsewhere in ARIS.

Access Notes

  • Google AI Studio / Gemini API has a free tier in eligible countries; this does not require a Gemini Advanced / Google One AI Premium subscription.
  • Free-tier model availability and rate limits change over time, so do not treat any single quota number or older model example as permanent.
  • On the free tier, prompts and responses may be used to improve Google's products; do not position this path as suitable for sensitive data unless the user has reviewed the current official terms.
  • Official references:

Optional CLI fallback

The intended path is direct API. If you explicitly need Gemini CLI instead:

bash
codex mcp remove gemini-review
codex mcp add gemini-review --env GEMINI_REVIEW_BACKEND=cli -- python3 ~/.codex/mcp-servers/gemini-review/server.py

That fallback is available, but it is not the primary path for this guide.

Verify

  1. Check MCP registration:
bash
codex mcp list
  1. Check that your Gemini API key file exists:
bash
test -f ~/.gemini/.env && echo "Gemini env file found"
  1. Start Codex in your project:
bash
codex -C /path/to/your/project

Troubleshooting

If the default API model returns temporary free-tier 429 responses in your current window, keep the same bridge and override only the reviewer model:

bash
codex mcp remove gemini-review
codex mcp add gemini-review --env GEMINI_REVIEW_BACKEND=api --env GEMINI_REVIEW_MODEL=gemini-flash-latest -- python3 ~/.codex/mcp-servers/gemini-review/server.py

This does not change the ARIS reviewer contract or skill overlay shape. It only changes the Gemini API model used behind the same local gemini-review bridge.

Validation Summary

This path was validated in two layers:

  • Full overlay coverage check: all 15 predefined reviewer-aware Codex skills overridden by skills/skills-codex-gemini-review/ were checked to confirm they point at gemini-review and no longer depend on the old reviewer transport.
  • Runtime bridge check: the local gemini-review MCP bridge was exercised with:
    • review
    • review_reply
    • review_start
    • review_reply_start
    • review_status
    • imagePaths multimodal review for local images
  • Representative Codex-side smoke tests: we ran the overlay on a private, non-public research repository and confirmed that real Codex executions reached the Gemini reviewer path for representative tasks in research review, idea generation, and paper-planning style workflows.

What passed:

  • direct API review returned valid reviewer text
  • async review jobs completed and could be resumed through review_status
  • follow-up review rounds worked with persisted thread state
  • local-image review worked through imagePaths
  • the runtime-tested Codex skill paths successfully loaded the Gemini overlay and issued real gemini-review tool calls

What we observed:

  • Gemini free-tier access is practical for this reviewer path, but bursty test loops can still trigger temporary 429 rate-limit responses
  • rate-limit behavior is model-dependent; current API model surfaces should be checked in AI Studio / ListModels, not inferred from older quota tables
  • in a later retry on the same setup, the direct API bridge completed sync review, async review_start -> review_status, and threaded review_reply_start -> review_status successfully with GEMINI_REVIEW_MODEL=gemini-flash-latest
  • those 429 responses behaved like short-window burst limits, not a sign that the integration itself was broken
  • long synchronous reviewer calls can still hit host-side MCP tool timeouts, so the async review_start / review_reply_start + review_status flow remains the recommended default for long prompts

This is why the bridge exposes both sync and async tools, while the reviewer-aware skill overlays prefer the async path for long reviews.

What gets overridden

The overlay replaces the predefined reviewer-aware Codex skills:

  • idea-creator
  • idea-discovery
  • idea-discovery-robot
  • research-review
  • novelty-check
  • research-refine
  • auto-review-loop
  • grant-proposal
  • paper-plan
  • paper-figure
  • paper-poster-html
  • paper-slides
  • paper-write
  • paper-writing
  • auto-paper-improvement-loop

Everything else still comes from the upstream skills/skills-codex/ package.

Core 8 vs Runtime 15

There are two equally correct ways to describe the scope of this path:

  • Core 8: the direct one-to-one reviewer overlay set that aligns with the existing Claude-review path
  • Runtime 15: the full reviewer-aware Codex skill surface that is routed to Gemini in the current installed skill set

The core 8 are:

  • research-review
  • novelty-check
  • research-refine
  • auto-review-loop
  • paper-plan
  • paper-figure
  • paper-write
  • auto-paper-improvement-loop

These are the skills that most directly mirror the earlier Claude-review overlay structure and reviewer contract.

The additional 7 reviewer-aware skills routed to Gemini are:

  • idea-creator
  • idea-discovery
  • idea-discovery-robot
  • grant-proposal
  • paper-writing
  • paper-slides
  • paper-poster-html

So the practical summary is:

  • the core mechanism still tracks the same 8-skill overlay pattern as the Claude route
  • the current runtime reviewer surface is broader, reaching 15 skills in total

This is why the diff is larger without changing the underlying reviewer contract shape.

Direct Consumers vs Wrappers

Within those 15 skills, there are two categories:

  • 12 direct consumers that call mcp__gemini-review__review_start / review_reply_start / review_status themselves:
    • research-review
    • novelty-check
    • research-refine
    • auto-review-loop
    • paper-plan
    • paper-figure
    • paper-write
    • auto-paper-improvement-loop
    • idea-creator
    • grant-proposal
    • paper-slides
    • paper-poster-html
  • 3 wrappers that mainly orchestrate downstream reviewer-aware sub-skills and pass REVIEWER_MODEL=gemini-review through:
    • idea-discovery
    • idea-discovery-robot
    • paper-writing

This matters for validation: you do not need to fully complete all 15 workflows to validate the reviewer transport. A combination of full structural checks, bridge runtime checks, and representative direct-consumer / wrapper smoke tests is enough to validate the PR-level integration logic.

Async reviewer flow

For long paper or project reviews, use:

  • review_start
  • review_reply_start
  • review_status

Why: even on the direct API path, long synchronous reviewer calls can still hit host-side MCP tool timeouts. The async review* flow keeps the original reviewer-aware skills usable without changing their behavior.

Project config

No special project config file is required for this path.

  • keep using your existing CLAUDE.md
  • keep your current project layout
  • only switch the installed Codex skill files and MCP registration

Maintenance

Keep this path intentionally narrow:

  • reuse skills/skills-codex/* unchanged
  • only override the reviewer-aware skills in skills/skills-codex-gemini-review/*
  • keep mcp-servers/gemini-review/server.py focused on the review* compatibility contract
  • when a skill needs poster PNG review, pass local imagePaths through the direct Gemini API backend instead of inventing a second bridge

CODEX GEMINI REVIEW GUIDE CN (`docs/CODEX_GEMINI_REVIEW_GUIDE_CN.md`)

Codex + Gemini 审稿人指南

本页记录已冻结的旧 partial overlay 安装。新安装使用完整 Codex 包和 reviewer 选择;迁移与保留定制。旧目录与已有链接继续保留,不再同步新功能。

使用:

  • Codex 作为主执行者
  • Gemini 作为审稿人
  • 本地 gemini-review MCP bridge 作为传输层
  • direct Gemini API 作为默认 reviewer backend

这份指南是对上游 skills/skills-codex/ 的叠加方案,不是替换。

架构

  • 基础 skill 集:skills/skills-codex/
  • 审稿覆盖层:skills/skills-codex-gemini-review/
  • 审稿 bridge:mcp-servers/gemini-review/

安装顺序很重要:

  1. 先安装 skills/skills-codex/*
  2. 再安装 skills/skills-codex-gemini-review/*
  3. 最后注册 gemini-review MCP

安装

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git
cd Auto-claude-code-research-in-sleep

mkdir -p ~/.codex/skills
cp -a skills/skills-codex/* ~/.codex/skills/
cp -a skills/skills-codex-gemini-review/* ~/.codex/skills/

mkdir -p ~/.codex/mcp-servers/gemini-review
cp mcp-servers/gemini-review/server.py ~/.codex/mcp-servers/gemini-review/server.py
cp mcp-servers/gemini-review/README.md ~/.codex/mcp-servers/gemini-review/README.md
codex mcp add gemini-review --env GEMINI_REVIEW_BACKEND=api -- python3 ~/.codex/mcp-servers/gemini-review/server.py

推荐凭证文件:

bash
mkdir -p ~/.gemini
cat > ~/.gemini/.env <<'EOF'
GEMINI_API_KEY="your-key"
EOF
chmod 600 ~/.gemini/.env

如果存在,bridge 会自动加载 ~/.gemini/.env。

为什么默认走 direct API

  • 这条路径的目标是:最大化复用原始 ARIS 的 reviewer-aware skills,同时最少改 skill。
  • gemini-review bridge 保留了与 Claude-review overlay 相同的 review / review_reply / review_start / review_reply_start / review_status 契约。
  • 直接走 Gemini API 可以去掉本地 CLI 这一跳,让 reviewer 路径更接近 ARIS 里已有的 API 型集成方式。

接入边界说明

  • Google AI Studio / Gemini API 在支持地区提供免费层;这不要求你先订阅 Gemini Advanced / Google One AI Premium。
  • 免费层可用模型、速率限制和配额会变化,不应把某个固定额度或旧模型示例写成长期承诺。
  • 免费层下的 prompt / response 处理条款与付费层不同;如果涉及敏感数据,必须先核对官方当前条款。
  • 官方入口与定价说明:

可选 CLI fallback

这份指南的预期路径是 direct API。
如果你明确想切到 Gemini CLI,可改成:

bash
codex mcp remove gemini-review
codex mcp add gemini-review --env GEMINI_REVIEW_BACKEND=cli -- python3 ~/.codex/mcp-servers/gemini-review/server.py

但这不是本指南的主路径。

验证

  1. 检查 MCP 是否注册成功:
bash
codex mcp list
  1. 检查本地 Gemini 凭证文件是否存在:
bash
test -f ~/.gemini/.env && echo "Gemini env file found"
  1. 在你的项目里启动 Codex:
bash
codex -C /path/to/your/project

排障

如果默认 API 模型在你当前的免费层时间窗口里返回临时 429,不要改 bridge 结构,只需要覆盖 reviewer model:

bash
codex mcp remove gemini-review
codex mcp add gemini-review --env GEMINI_REVIEW_BACKEND=api --env GEMINI_REVIEW_MODEL=gemini-flash-latest -- python3 ~/.codex/mcp-servers/gemini-review/server.py

这不会改变 ARIS 的 reviewer 契约,也不会改变 skill overlay 的组织方式,只是让同一个本地 gemini-review bridge 在底层改用另一个 Gemini API 模型。

验证结果摘要

这条路径做了两层验证:

  • 全量 overlay 覆盖检查:skills/skills-codex-gemini-review/ 覆盖的 15 个预定义 reviewer-aware Codex skill 都逐一核对过,确认已经指向 gemini-review,不再依赖旧的 reviewer transport。
  • bridge 运行时验证:本地 gemini-review MCP bridge 实测覆盖了:
    • review
    • review_reply
    • review_start
    • review_reply_start
    • review_status
    • 基于本地图像的 imagePaths 多模态审查
  • 代表性 Codex 侧 smoke test:我们在一个私有、未公开的研究仓库上实跑了这套 overlay,确认真实的 Codex 执行能够进入 Gemini reviewer 路径,覆盖了研究审稿、idea 生成、论文规划这几类代表性工作流。

已经验证通过的点:

  • direct API 审稿可以返回有效 reviewer 文本
  • 异步 review job 可以完成,并可通过 review_status 恢复状态
  • 带 thread 状态的 follow-up review 可以继续多轮对话
  • imagePaths 本地图像审查可用
  • 已实跑的 Codex skill 路径能够正确加载 Gemini overlay,并发出真实的 gemini-review tool call

测试中的实际观察:

  • Gemini 免费层对这条 reviewer 路径是可用的,但如果在很短时间内集中压测,仍然可能出现临时 429
  • 速率限制表现和具体模型有关;当前 API 模型面应以 AI Studio / ListModels 为准,而不是沿用旧配额表里的模型示例
  • 在同一套环境上的后续重试中,把 GEMINI_REVIEW_MODEL 覆盖为 gemini-flash-latest 后,direct API bridge 已成功跑通同步 review、异步 review_start -> review_status 以及带 thread 的 review_reply_start -> review_status
  • 这类 429 更像是短时间 burst limit,而不是集成本身失效
  • 对超长 prompt,宿主侧 MCP tool timeout 仍可能先于同步调用返回,所以长审稿默认仍推荐 review_start / review_reply_start + review_status

这也是为什么 bridge 同时暴露同步和异步工具,而 reviewer-aware skill overlay 默认优先走异步流程。

会覆盖哪些 skill

这个 overlay 会替换预定义的 reviewer-aware Codex skills:

  • idea-creator
  • idea-discovery
  • idea-discovery-robot
  • research-review
  • novelty-check
  • research-refine
  • auto-review-loop
  • grant-proposal
  • paper-plan
  • paper-figure
  • paper-poster-html
  • paper-slides
  • paper-write
  • paper-writing
  • auto-paper-improvement-loop

其它能力仍然来自上游 skills/skills-codex/。

核心 8 个 vs 运行态 15 个

这条路径有两种都成立的描述方式:

  • 核心 8 个:和现有 Claude-review 路径一一对齐的 reviewer overlay 核心集合
  • 运行态 15 个:当前安装后的 Codex skill 集里,实际切到 Gemini reviewer 的完整 reviewer-aware 技能面

其中 核心 8 个 是:

  • research-review
  • novelty-check
  • research-refine
  • auto-review-loop
  • paper-plan
  • paper-figure
  • paper-write
  • auto-paper-improvement-loop

这 8 个最直接对应早先 Claude-review overlay 的组织方式和 reviewer 契约。

另外扩展进去的 7 个 reviewer-aware 技能是:

  • idea-creator
  • idea-discovery
  • idea-discovery-robot
  • grant-proposal
  • paper-writing
  • paper-slides
  • paper-poster-html

所以更准确的理解是:

  • 核心机制 仍然沿用和 Claude 路径相同的 8-skill overlay 形状
  • 运行态 reviewer 覆盖面 则已经扩展到 15 个 skill

这也解释了为什么 diff 更大,但并不意味着 reviewer 契约本身被改乱了。

直接消费者 vs wrapper

这 15 个 skill 里又可以分成两类:

  • 12 个直接消费者:自己会直接调用 mcp__gemini-review__review_start / review_reply_start / review_status
    • research-review
    • novelty-check
    • research-refine
    • auto-review-loop
    • paper-plan
    • paper-figure
    • paper-write
    • auto-paper-improvement-loop
    • idea-creator
    • grant-proposal
    • paper-slides
    • paper-poster-html
  • 3 个 wrapper:主要负责串联下游 reviewer-aware 子 skill,并向下传递 REVIEWER_MODEL=gemini-review
    • idea-discovery
    • idea-discovery-robot
    • paper-writing

这层分类对验收很重要:不需要把 15 条工作流都完整跑到底,才能证明 reviewer transport 是通的。对于 PR 验收,更合理的做法是:全量结构检查 + bridge 运行时验证 + 少量直接消费者 / wrapper 的代表性 smoke test 组合验证。

异步 reviewer 流程

对于长论文 / 长项目审稿,使用:

  • review_start
  • review_reply_start
  • review_status

原因:即便走 direct API,超长同步 reviewer 调用仍然可能撞上宿主侧的 MCP timeout。保留异步 review* 流程,才能在不改原有 reviewer-aware skill 行为的前提下继续复用它们。

项目配置

这条路径不需要额外的项目配置文件。

  • 继续使用你现有的 CLAUDE.md
  • 保持现有项目布局
  • 只切换安装的 Codex skill 文件和 MCP 注册

维护原则

让这条路径保持足够窄:

  • 基础能力继续复用 skills/skills-codex/*
  • 只在 skills/skills-codex-gemini-review/* 里覆盖 reviewer-aware skills
  • 让 mcp-servers/gemini-review/server.py 只聚焦 review* 兼容契约
  • 如果某个 skill 需要审查 poster PNG,就通过 direct Gemini API backend 传 imagePaths,而不是再发明第二套 bridge

CODEX POLICY AUDIT (`docs/CODEX_POLICY_AUDIT.md`)

Codex skill invocation audit (#433)

Install the audit dependency in your Python environment, then run:

bash
python -m pip install -r tools/requirements-codex-policy-audit.txt
python tools/audit_codex_invocation.py --root skills/skills-codex > codex-policy-report.json

The report inventories the Codex mirror, detects malformed/duplicate opt-in invocation policies and lists skills referenced by other skills. A reference is a conservative warning, not evidence of a successful runtime sub-skill invocation.

YAML is parsed with PyYAML's safe loader, including block and flow mappings. Duplicate keys, malformed YAML, non-mapping policies, and non-boolean invocation flags are errors. An omitted policy or flag retains Codex's implicit-invocation default. The report always records runtime_verified: false; static references cannot establish runtime compatibility.

The audit is read-only. It never sets allow_implicit_invocation: false, because a maintainer raised a risk that explicit-only configuration may disable parent-to-child skill calls. Before changing policies, verify actual $child-skill invocation with the installed Codex CLI and record its version. Run python tools/audit_codex_invocation.py --fail-on-referenced-explicit to fail closed for any potentially blocked references.

Runtime diagnostic with real Codex CLI

Run python tools/probe_codex_invocation.py with an installed codex executable. The script initializes a disposable Git project and CODEX_HOME, creates two control skills, and calls codex debug prompt-input once with a neutral prompt that names neither skill. No model requests or credentials are needed; the installed skills and user configuration are untouched.

Observed on GitHub-hosted Ubuntu in the original probe and reproduced locally on macOS with the neutral prompt using codex-cli 0.163.0:

  • Default skill: present in model-visible <skills_instructions> metadata.
  • Skill with policy.allow_implicit_invocation: false: absent from the implicit catalog.
  • This verifies discovery/context filtering only. It does not test explicit invocation or establish that a parent ARIS Skill can invoke an explicit-only child.

Original CI evidence: https://github.com/SiyuanChenToDo/Auto-claude-code-research-in-sleep/actions/runs/39044605650

The dedicated workflow runs on relevant pull requests, pushes to main, and manual dispatch. It publishes the static report and pins the catalog probe to Codex 0.163.0 so CLI changes are reviewed explicitly. Unit tests run in the normal Linux/macOS test suite. A missing control or unusable debug output is inconclusive (exit 2); a visible explicit-only control is a filtering failure (exit 3).

Before any shipping policy changes, exercise a real parent-to-child workflow through Codex CLI in the relevant execution mode, and ensure the child Skill body and artifacts are actually produced. Upstream issue openai/codex#40600 reports explicit $skill expansion problems on Codex 0.149.0; this probe does not reproduce or resolve that issue on 0.163.0. Keep current defaults until the parent-to-child compatibility gate is satisfied. This diagnostic does not close ARIS #433.


COPILOT CLI ADAPTATION (`docs/COPILOT_CLI_ADAPTATION.md`)

GitHub Copilot CLI Adaptation Guide (ARIS Workflows)

Use ARIS research workflows in GitHub Copilot CLI (gh copilot / standalone copilot).

Verified with: Copilot CLI v0.130+ (GA, May 2026). Run copilot --version to confirm. If your version differs, use /model to check available models and verify MCP support.

Copilot CLI natively supports SKILL.md files with the same YAML frontmatter format used by ARIS, making it one of the most compatible hosts — no skill mirror needed, mainline skills work directly.

1. Key Differences: Claude Code vs Copilot CLI

Concept Claude Code Copilot CLI
Skill invocation /skill-name "args" /skill-name "args" (identical)
Skill storage ~/.claude/skills/skill-name/SKILL.md .github/skills/skill-name/SKILL.md (project) or ~/.copilot/skills/skill-name/SKILL.md (global)
MCP servers claude mcp add ... ~/.copilot/mcp-config.json or .mcp.json (project)
Project instructions CLAUDE.md AGENTS.md (root) or .github/copilot-instructions.md
Agent execution Persistent CLI session Persistent CLI session (similar)
File operations Always available --allow-tool='write' / --allow-tool='shell'
Skill discovery Slash commands + auto-match Slash commands + auto-match from description
Models Claude Opus 4.6 GPT-5 mini, GPT-4.1, GPT-5, o3 (configurable via /model)

2. Setup

2.1 Install Copilot CLI

bash
# Via GitHub CLI extension
gh extension install github/copilot-cli

# Or standalone
npm install @github/copilot-cli

2.2 Clone ARIS and install skills

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git ~/aris_repo
cd ~/your-project

# Symlink install (recommended, stays in sync with upstream)
bash ~/aris_repo/tools/install_aris_copilot.sh .

This creates:

text
.github/skills/<skill-name> -> ~/aris_repo/skills/<skill-name>
.aris/installed-skills-copilot.txt    # manifest
AGENTS.md                             # managed block added

Reconcile after upstream changes:

bash
cd ~/aris_repo && git pull
bash ~/aris_repo/tools/install_aris_copilot.sh ~/your-project --reconcile

Uninstall:

bash
bash ~/aris_repo/tools/install_aris_copilot.sh ~/your-project --uninstall

2.3 Alternative: Copy-based install

For environments where symlinks don't work:

bash
# Global install
mkdir -p ~/.copilot/skills
cp -r ~/aris_repo/skills/* ~/.copilot/skills/
# Remove Codex-specific mirrors (not needed for Copilot CLI)
rm -rf ~/.copilot/skills/skills-codex*

# Update later
bash ~/aris_repo/tools/smart_update_copilot.sh --apply

# Project-level
bash ~/aris_repo/tools/smart_update_copilot.sh --project ~/your-project --apply

2.4 Native auto-review and optional Codex MCP

/auto-review-loop now defaults to Copilot CLI's built-in complementary
rubber-duck subagent. ARIS verifies the native lifecycle and the actual
cross-family model pair from Copilot session events, so this default needs no
Codex MCP. If no complementary model is available, the loop fails closed or
uses a positively available opposite-family fallback.

The current Copilot account/session must expose the built-in rubber-duck
agent. Check /subagents in an interactive Copilot session if it is absent.
ARIS does not change Copilot user settings or enable experimental features on
your behalf; an unavailable native agent triggers the same fail-closed fallback
and is never replaced by a generic agent under a rubber-duck label.

Other reviewer skills still use their documented external backends. Configure
Codex MCP if you use those skills, explicitly pass — reviewer: codex, or want
an Anthropic/Google-executor fallback for /auto-review-loop:

  1. Install and authenticate Codex:

    bash
    npm install @openai/codex
    codex login
  2. Add MCP server — edit ~/.copilot/mcp-config.json:

    json
    {
      "mcpServers": {
        "codex": {
          "command": "python3",
          "args": ["/ABSOLUTE/PATH/TO/aris_repo/mcp-servers/codex-exec/server.py"]
        }
      }
    }

    Or project-level .mcp.json:

    json
    {
      "mcpServers": {
        "codex": {
          "command": "python3",
          "args": ["/ABSOLUTE/PATH/TO/aris_repo/mcp-servers/codex-exec/server.py"]
        }
      }
    }
  3. Restart Copilot CLI. Verify with /mcp or check that mcp__codex__codex appears in available tools.

2.5 Alternative reviewer MCP (no OpenAI API)

Use the llm-chat MCP server with any OpenAI-compatible API (DeepSeek, GLM, MiniMax, Kimi, etc.):

  1. Install dependencies:

    bash
    cd ~/aris_repo
    python3 -m venv .venv
    .venv/bin/pip install -r mcp-servers/llm-chat/requirements.txt
  2. Add to ~/.copilot/mcp-config.json (absolute paths required):

    json
    {
      "mcpServers": {
        "llm-chat": {
          "command": "/path/to/aris_repo/.venv/bin/python3",
          "args": ["/path/to/aris_repo/mcp-servers/llm-chat/server.py"],
          "env": {
            "LLM_BASE_URL": "https://api.deepseek.com/v1",
            "LLM_API_KEY": "your_key",
            "LLM_MODEL": "deepseek-chat"
          }
        }
      }
    }

See LLM_API_MIX_MATCH_GUIDE.md for tested provider configurations.

2.6 Project instructions (AGENTS.md)

Copilot CLI reads AGENTS.md for project-specific instructions. The installer adds a managed block automatically. Add your own sections:

markdown
## GPU Server

- SSH: `ssh my-gpu-server` (key-based auth)
- GPU: 4x A100
- Conda env: `research` (Python 3.10 + PyTorch)
- Activate: `eval "$(/opt/conda/bin/conda shell.bash hook)" && conda activate research`
- Code directory: `/home/user/experiments/`

## Research Project

- Topic: [your research topic]
- Target venue: ICLR/NeurIPS/ICML

3. How to Invoke Skills

Copilot CLI supports the same slash command syntax as Claude Code:

text
/research-lit "discrete diffusion models"
/idea-discovery "factorized gap in discrete diffusion LMs"
/auto-review-loop "your paper topic"
/paper-writing "NARRATIVE_REPORT.md"
/research-pipeline "your direction"

Skills are also auto-discovered from their description field — just describe what you want naturally:

text
Find papers about discrete diffusion models
Run the full idea discovery pipeline for my research direction

Type / to see all available skills.

4. Workflow Mapping

Since Copilot CLI uses the same slash command syntax, all workflows work identically to Claude Code:

Full Pipeline

text
/research-pipeline "your research direction"

Individual Workflows

Workflow Command
W1: Idea Discovery /idea-discovery "direction"
W1.5: Experiment Bridge /experiment-bridge
W2: Auto Review /auto-review-loop "scope"
W3: Paper Writing /paper-writing "NARRATIVE_REPORT.md"
W4: Rebuttal /rebuttal "paper/ + reviews" — venue: ICML, character limit: 5000

Parameters

Same syntax as Claude Code:

text
/research-pipeline "topic" — effort: beast, difficulty: nightmare, auto_write: true, venue: NeurIPS
/auto-review-loop "topic" — human checkpoint: true, compact: true

5. MCP Tool Calls

ARIS skills reference MCP tools by name. These work in Copilot CLI once configured:

ARIS MCP tool What it does Required MCP server
mcp__codex__codex Send prompt to GPT-6-Astra/5.5 Codex
mcp__codex__codex-reply Continue conversation thread Codex
mcp__llm-chat__chat Send prompt to any OpenAI-compatible model llm-chat
mcp__zotero__* Search Zotero library zotero
mcp__obsidian-vault__* Search Obsidian vault obsidian-vault

Note: If using llm-chat instead of Codex, use the adapted skill variant: /auto-review-loop-llm.

6. State Files & Recovery

ARIS workflows persist state for crash recovery. These work identically in Copilot CLI:

File Purpose Written by
review-stage/REVIEW_STATE.json Auto-review loop progress /auto-review-loop
review-stage/AUTO_REVIEW.md Cumulative review log /auto-review-loop
idea-stage/IDEA_REPORT.md Ranked ideas with pilot results /idea-discovery
PAPER_PLAN.md Paper outline + claims matrix /paper-plan
refine-logs/FINAL_PROPOSAL.md Refined method proposal /research-refine
refine-logs/EXPERIMENT_PLAN.md Experiment roadmap /experiment-plan

If a session ends mid-workflow, start a new session — the skill reads state files automatically and resumes.

7. Permission Flags

Copilot CLI requires explicit permission for file writes and shell execution. For ARIS workflows (which need both), launch with:

bash
copilot --allow-tool='write' --allow-tool='shell'

Or configure in ~/.copilot/config:

yaml
allowed_tools:
  - write
  - shell

Security note: Only grant these permissions in projects where you trust the ARIS skills. The skills never execute arbitrary code — they only run experiment scripts you've approved.

8. Model Selection

Copilot CLI supports multiple executor models. Use /model to switch:

Model Best for Notes
GPT-5 mini Fast iteration, simple tasks Included in subscription
GPT-4.1 Balanced quality/speed Included in subscription
GPT-5 Complex reasoning, long pipelines Premium requests
o3 Deep mathematical reasoning Premium requests

Tip: For full research pipelines (/research-pipeline, /paper-writing), use GPT-5 or o3 for best results. For quick tasks (/research-lit, /paper-compile), GPT-5 mini is sufficient.

9. Copilot CLI-Specific Features

Explore Agent

Use Copilot's built-in /explore for fast codebase questions without cluttering main context — useful before invoking ARIS skills:

text
/explore How is the experiment pipeline structured in this project?

Task Agent

Use /task for running builds and tests alongside ARIS workflows:

text
/task Run pytest and report failures

GitHub MCP Server

Copilot's native GitHub MCP integrates with ARIS workflows for issue/PR management:

text
/research-pipeline "topic"
# ... after completion ...
# Create a PR with the paper

Web Fetch

The built-in web_fetch tool complements ARIS's /research-lit for fetching paper content:

text
/research-lit "topic" — sources: web

10. Limitations & Workarounds

Limitation Workaround
Skills reference CLAUDE.md Copilot reads AGENTS.md instead. The installer creates this. Skills that read CLAUDE.md internally will still work if you keep both files, or create a symlink: ln -s AGENTS.md CLAUDE.md
allowed-tools in SKILL.md Copilot respects these but requires user-level permission flags (--allow-tool) to actually execute
Native rubber-duck unavailable Check whether /subagents exposes/enables rubber-duck; ARIS does not change this setting automatically. If unavailable, configure an opposite-family external fallback or use an account/session that exposes it
Native complementary model unavailable /auto-review-loop never accepts a same/unknown-family review. Configure an opposite-family external fallback (Codex for Anthropic/Google executors; a non-OpenAI manual reviewer for OpenAI executors), or switch the Copilot session model/account
No auto-compact recovery Copilot CLI handles long sessions natively. Use state files for manual recovery if needed
Context window varies by model GPT-5 mini has smaller context. For long pipelines, use GPT-5 or break into stages

Cross-Model Review Consideration

For /auto-review-loop, native rubber-duck chooses a complementary model and
ARIS rejects same/unknown-family evidence. If you explicitly force Codex while
the Copilot executor is also OpenAI-family—or use another reviewer skill whose
default is Codex—choose a non-OpenAI external reviewer instead:

  1. Use llm-chat MCP with Claude as reviewer (true cross-family):

    json
    {
      "mcpServers": {
        "llm-chat": {
          "command": "/path/to/.venv/bin/python3",
          "args": ["/path/to/mcp-servers/llm-chat/server.py"],
          "env": {
            "LLM_BASE_URL": "https://api.anthropic.com/v1",
            "LLM_API_KEY": "your_anthropic_key",
            "LLM_MODEL": "claude-sonnet-4-6"
          }
        }
      }
    }
  2. Or use the dedicated claude-review MCP server.

11. Quick Reference

bash
# Install skills to project
bash ~/aris_repo/tools/install_aris_copilot.sh .

# Update after upstream changes
cd ~/aris_repo && git pull
bash ~/aris_repo/tools/install_aris_copilot.sh ~/your-project --reconcile

# Launch Copilot with full permissions for ARIS
copilot --allow-tool='write' --allow-tool='shell'

# Run workflows (same as Claude Code)
/research-lit "discrete diffusion models"
/idea-discovery "factorized gap" — effort: max
/auto-review-loop "paper topic" — difficulty: hard
/paper-writing "NARRATIVE_REPORT.md" — venue: NeurIPS
/rebuttal "paper/ + reviews" — venue: ICML, character limit: 5000

12. Migration Checklist: Claude Code → Copilot CLI

  • Install skills: bash tools/install_aris_copilot.sh .
  • Optional/other reviewer skills: add Codex or llm-chat to ~/.copilot/mcp-config.json
  • Copy CLAUDE.md content to AGENTS.md (or keep both + symlink)
  • Set permission flags: --allow-tool='write' --allow-tool='shell'
  • Verify: type / to see ARIS skills listed
  • Test native default: /auto-review-loop "small review scope"
  • If using external reviewer skills, test /research-review "your draft"

CURSOR ADAPTATION (`docs/CURSOR_ADAPTATION.md`)

Cursor Adaptation Guide (ARIS Workflows)

Use ARIS research workflows in Cursor without Claude Code slash commands.

1. Key Differences: Claude Code vs Cursor

Concept Claude Code Cursor
Skill invocation /skill-name "args" (slash command) Paste instructions or @-reference the SKILL.md
Skill storage ~/.claude/skills/skill-name/SKILL.md .cursor/rules/*.mdc or reference directly
MCP servers claude mcp add ... Cursor Settings → Features → MCP, or .cursor/mcp.json
Agent execution Always-on CLI Agent mode (Ctrl/Cmd+I or chat panel)
File references Auto-read from project @filename to attach context
Long-running jobs Single CLI session, auto-compact recovery Chat sessions; use state files for recovery

2. Setup

2.1 Clone the repo

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git

Important: Open this repo (or add it as a workspace folder) in Cursor. The @skills/... references throughout this guide use Cursor's @-file feature, which only resolves files within your open workspace. If you work in a separate project, either copy the skills/ folder into it or add the ARIS repo as a second workspace folder (File → Add Folder to Workspace).

2.2 Set up Codex MCP in Cursor (for review skills)

ARIS uses an external LLM (GPT-6-Astra via Codex) as a critical reviewer. To enable this in Cursor:

  1. Install Codex CLI and authenticate:

    bash
    npm install @openai/codex
    codex login   # authenticate with your ChatGPT or API key
  2. Add MCP server in Cursor — create or edit .cursor/mcp.json in your project root:

    json
    {
      "mcpServers": {
        "codex": {
          "command": "python3",
          "args": ["/ABSOLUTE/PATH/TO/aris_repo/mcp-servers/codex-exec/server.py"]
        }
      }
    }
  3. Restart Cursor. Verify the MCP server appears under Settings → Features → MCP.

2.3 Set up alternative reviewer (no OpenAI API)

If you don't have an OpenAI API key, use the llm-chat MCP server with any OpenAI-compatible API (DeepSeek, GLM, MiniMax, Kimi, etc.):

  1. Create a virtual environment and install the required dependency (the server needs httpx):

    bash
    cd /path/to/Auto-claude-code-research-in-sleep
    python3 -m venv .venv
     .venv/bin/pip install -r mcp-servers/llm-chat/requirements.txt
  2. Add MCP server in Cursor — create or edit .cursor/mcp.json. Both paths must be absolute — command points to the venv python (not system python, otherwise httpx won't be found), and args points to the server script:

    json
    {
      "mcpServers": {
        "llm-chat": {
          "command": "/path/to/Auto-claude-code-research-in-sleep/.venv/bin/python3",
          "args": ["/path/to/Auto-claude-code-research-in-sleep/mcp-servers/llm-chat/server.py"],
          "env": {
            "LLM_BASE_URL": "https://api.deepseek.com/v1",
            "LLM_API_KEY": "your_key",
            "LLM_MODEL": "deepseek-chat"
          }
        }
      }
    }
  3. Restart Cursor. Verify the MCP server appears (green dot) under Settings → Features → MCP. If it shows a red dot, check llm-chat-mcp-debug.log in your system temp directory (run python3 -c "import tempfile; print(tempfile.gettempdir())" to locate it).

See LLM_API_MIX_MATCH_GUIDE.md for tested provider configurations.

3. How to Invoke Skills

Claude Code uses /skill-name to auto-load a SKILL.md. In Cursor, you have three approaches:

In Cursor's agent mode chat, type:

text
@skills/auto-review-loop/SKILL.md

Run the auto review loop for "factorized gap in discrete diffusion LMs".

Cursor reads the full SKILL.md and follows the instructions. This is the closest equivalent to Claude Code's /auto-review-loop.

Approach B: Convert to Cursor Rules (for frequent use)

For skills you use often, convert them to Cursor Rules so they load automatically:

  1. Create .cursor/rules/ in your project root.

  2. Create a rule file, e.g. .cursor/rules/auto-review-loop.mdc:

    text
    ---
    description: "Autonomous multi-round research review loop"
    globs:
      - "review-stage/AUTO_REVIEW.md"
      - "review-stage/REVIEW_STATE.json"
    ---
    
    [Paste the full SKILL.md content here, minus the YAML frontmatter]
  3. The rule activates automatically when you work with matching files, or you can reference it manually.

Approach C: Direct prompt (one-off use)

Copy the relevant workflow instructions directly into the chat. Best for quick, one-time use.

4. Workflow Mapping

Workflow 1: Idea Discovery

Claude Code:

text
/idea-discovery "your research direction"

Cursor equivalent:

text
@skills/idea-discovery/SKILL.md

Run the full idea discovery pipeline for "your research direction".

Use these sub-skills in sequence (the SKILL.md references them as
/skill-name which is Claude Code syntax — use these @-references instead):
1. @skills/research-lit/SKILL.md — literature survey
2. @skills/idea-creator/SKILL.md — brainstorm ideas
3. @skills/novelty-check/SKILL.md — verify novelty
4. @skills/research-review/SKILL.md — critical review
5. @skills/research-refine-pipeline/SKILL.md — refine method + plan experiments

Tip: Cursor's context window may be smaller than Claude Code's. For long pipelines, run each phase in a separate chat and pass results via files (e.g., idea-stage/IDEA_REPORT.md, refine-logs/FINAL_PROPOSAL.md).

Workflow 1.5: Experiment Bridge

Claude Code:

text
/experiment-bridge

Cursor equivalent:

text
@skills/experiment-bridge/SKILL.md

Read refine-logs/EXPERIMENT_PLAN.md and implement the experiments.
Deploy to GPU via @skills/run-experiment/SKILL.md.

Workflow 2: Auto Review Loop

Claude Code:

text
/auto-review-loop "your paper topic"

Cursor equivalent:

text
@skills/auto-review-loop/SKILL.md

Run the auto review loop for "your paper topic".
Read project narrative docs, memory files, experiment results.
Use MCP tool mcp__codex__codex for external review.

Important: If using the llm-chat MCP instead of Codex, replace mcp__codex__codex with mcp__llm-chat__chat in your prompt. See auto-review-loop-llm for the adapted skill.

Workflow 3: Paper Writing

Claude Code:

text
/paper-writing "NARRATIVE_REPORT.md"

Cursor equivalent:

text
@skills/paper-writing/SKILL.md
@NARRATIVE_REPORT.md

Run the full paper writing pipeline from NARRATIVE_REPORT.md.

Sub-skills to use in sequence (replace /skill-name from SKILL.md):
1. @skills/paper-plan/SKILL.md — outline + claims-evidence matrix
2. @skills/paper-figure/SKILL.md — generate plots and tables
3. @skills/paper-write/SKILL.md — write LaTeX sections
4. @skills/paper-compile/SKILL.md — build PDF
5. @skills/auto-paper-improvement-loop/SKILL.md — review and polish

Full Pipeline

For the full pipeline (/research-pipeline), break it into stages across chat sessions:

Stage What to do Output files
1 @skills/idea-discovery/SKILL.md + your direction idea-stage/IDEA_REPORT.md, refine-logs/FINAL_PROPOSAL.md, refine-logs/EXPERIMENT_PLAN.md
2 @skills/experiment-bridge/SKILL.md + @refine-logs/EXPERIMENT_PLAN.md + @refine-logs/FINAL_PROPOSAL.md Experiment scripts, results
3 @skills/auto-review-loop/SKILL.md + your topic review-stage/AUTO_REVIEW.md
4 @skills/paper-writing/SKILL.md + @NARRATIVE_REPORT.md paper/ directory

Each stage reads the previous stage's output files, so context carries forward even across sessions.

Note: Stage 4 expects a NARRATIVE_REPORT.md describing your research story (claims, experiments, results). This is typically written by you based on review-stage/AUTO_REVIEW.md and experiment results — see NARRATIVE_REPORT_EXAMPLE.md for the expected format.

5. MCP Tool Calls

ARIS skills reference MCP tools by name (e.g., mcp__codex__codex). Cursor supports MCP tool calls in agent mode — when the SKILL.md instructions say to call an MCP tool, Cursor's agent will invoke it if the server is configured.

ARIS MCP tool What it does Required MCP server
mcp__codex__codex Send prompt to GPT-6-Astra Codex
mcp__codex__codex-reply Continue conversation thread Codex
mcp__llm-chat__chat Send prompt to any OpenAI-compatible model llm-chat
mcp__zotero__* Search Zotero library zotero (name may vary by config)
mcp__obsidian-vault__* Search Obsidian vault obsidian-vault (name may vary by config)

6. State Files & Recovery

ARIS workflows persist state to files for crash recovery. These work identically in Cursor:

File Purpose Written by
review-stage/REVIEW_STATE.json Auto-review loop progress /auto-review-loop
review-stage/AUTO_REVIEW.md Cumulative review log /auto-review-loop
idea-stage/IDEA_REPORT.md Ranked ideas with pilot results /idea-discovery
PAPER_PLAN.md Paper outline + claims-evidence matrix /paper-plan
refine-logs/FINAL_PROPOSAL.md Refined method proposal /research-refine
refine-logs/EXPERIMENT_PLAN.md Experiment roadmap /experiment-plan
refine-logs/EXPERIMENT_TRACKER.md Run-by-run execution status /experiment-plan

If a Cursor chat session ends mid-workflow, start a new session and reference the state file:

text
@skills/auto-review-loop/SKILL.md
@review-stage/REVIEW_STATE.json
@review-stage/AUTO_REVIEW.md

Resume the auto review loop from the saved state.

7. GPU Server Setup

Same as Claude Code — add your server info to CLAUDE.md (or any project doc that Cursor reads). Reference it in your prompt:

text
@CLAUDE.md
@skills/run-experiment/SKILL.md

Deploy the training script to the remote GPU server.

8. Limitations & Workarounds

Limitation Workaround
No native slash commands Use @skills/skill-name/SKILL.md to reference skills
Context window may be smaller Break long pipelines into per-stage sessions, pass results via files
No auto-compact recovery Use review-stage/REVIEW_STATE.json to resume manually across sessions
allowed-tools not enforced Cursor agent has access to all its tools by default — not a problem in practice
Skills reference $ARGUMENTS Replace with your actual arguments in the prompt
SKILL.md files use /skill-name to call sub-skills Cursor ignores these. For pipeline skills (idea-discovery, paper-writing), list the sub-skill @ references explicitly in your prompt — see Workflow 1 and 3 examples
@skills/... requires workspace access The ARIS repo (or its skills/ folder) must be in your Cursor workspace — see Setup §2.1

9. Quick Reference

text
# Literature survey
@skills/research-lit/SKILL.md
Search for papers on "discrete diffusion models".

# Idea discovery (full pipeline)
@skills/idea-discovery/SKILL.md
Run idea discovery for "factorized gap in discrete diffusion LMs".

# Single deep review
@skills/research-review/SKILL.md
Review this research: [paste or @-reference your work].

# Auto review loop
@skills/auto-review-loop/SKILL.md
Run the auto review loop. Topic: "your paper topic".

# Paper writing
@skills/paper-writing/SKILL.md
@NARRATIVE_REPORT.md
Write the paper from this narrative report.

# Run experiment
@skills/run-experiment/SKILL.md
@CLAUDE.md
Deploy: python train.py --lr 1e-4 --epochs 100

CUSTOMIZATION (`docs/CUSTOMIZATION.md`)

🎛️ Customization

← back to README · per-skill tunables (environment variables) for ARIS skills.

Skills are plain Markdown files. Fork and customize:

💡 Parameter pass-through: Parameters flow down the call chain automatically. For example, /research-pipeline "topic" — sources: zotero, arxiv download: true passes sources and arxiv download through idea-discovery all the way down to research-lit. This also works for optional sources such as deepxiv and exa: /research-pipeline "topic" — sources: all, deepxiv, exa. You can set any downstream parameter at any level — just add — key: value to your command.

text
research-pipeline  ──→  idea-discovery      ──→  research-lit
                   ──→  experiment-bridge    ──→  run-experiment
                   ──→  auto-review-loop
                                            ──→  idea-creator
                                            ──→  novelty-check
                                            ──→  research-review

Full Research Pipeline (`research-pipeline`)

Tune end-to-end behavior: GPU target, arXiv download, code review, human checkpoints, base repo, W&B logging, compact summaries, reference paper, illustration backend, and auto-proceed.

Override inline: /research-pipeline "topic" — auto proceed: false, illustration: mermaid

Show constants, defaults, and pass-through for /research-pipeline

Constant Default Description Pass-through
AUTO_PROCEED true At each selection checkpoint, report the top-ranked option and continue in the same turn; false asks for explicit confirmation → idea-discovery → paper-writing when AUTO_WRITE=true
ARXIV_DOWNLOAD false Download top arXiv PDFs after literature search → idea-discovery → research-lit
HUMAN_CHECKPOINT false When true, pause after each review round for approval → auto-review-loop
WANDB false Auto-add W&B logging to experiments → experiment-bridge → run-experiment
CODE_REVIEW true GPT-6-Astra reviews experiment code before deployment → experiment-bridge
BASE_REPO false GitHub repo URL to clone as base codebase for experiments → experiment-bridge
GPU local GPU target: local, remote (SSH), or vast (Vast.ai on-demand rental) → experiment-bridge → run-experiment
COMPACT false Generate compact summary files for short-context models and session recovery → all workflows
REF_PAPER false Reference paper (PDF path or URL) to base ideas on. Summarized first, then used as context → idea-discovery
ILLUSTRATION gemini AI illustration: gemini (default), mermaid (free), or false (skip) → paper-writing

Auto Review Loop (`auto-review-loop`)

Tune stopping criteria: how many review→fix iterations, score threshold to declare submission-ready, and GPU-hour budget above which long experiments get flagged for manual follow-up.

Show stopping criteria for /auto-review-loop

Constant Default Description
MAX_ROUNDS 4 Maximum review→fix→re-review iterations
POSITIVE_THRESHOLD 6/10 Score at which the loop stops (submission-ready)
> 4 GPU-hour skip 4h Experiments exceeding this are flagged for manual follow-up

Idea Discovery (`idea-discovery` / `idea-creator`)

Tune the pilot phase: max hours per pilot, hard timeout, max ideas piloted in parallel, total GPU budget, plus auto-proceed and arXiv download toggles.

Override inline: /idea-discovery "topic" — pilot budget: 4h per idea, sources: zotero, arxiv download: true

Show pilot-budget constants for /idea-discovery and /idea-creator

Constant Default Description Pass-through
PILOT_MAX_HOURS 2h Skip any pilot estimated to take longer per GPU —
PILOT_TIMEOUT_HOURS 3h Hard timeout — kill runaway pilots, collect partial results —
MAX_PILOT_IDEAS 3 Maximum number of ideas to pilot in parallel —
MAX_TOTAL_GPU_HOURS 8h Total GPU budget across all pilots —
AUTO_PROCEED true Report the top-ranked option and continue in the same turn; false asks for explicit confirmation —
ARXIV_DOWNLOAD false Download top arXiv PDFs after literature search → research-lit

AUTO_PROCEED=true applies to its own selection checkpoints only. Explicit
user-controlled gates, such as Feishu interactive approval, a missing venue,
or required manual figures, remain blocking. The pipeline never relies on a
silent-response timeout to resume after a turn ends.

Experiment Bridge (`experiment-bridge`)

Tune deployment safety: GPT-6-Astra code review, auto-deploy after review, sanity-test smallest experiment first, parallel run cap, W&B logging, and base-repo URL.

Override inline: /experiment-bridge — base repo: https://github.com/org/project

Show deployment and safety constants for /experiment-bridge

Constant Default Description
CODE_REVIEW true GPT-6-Astra xhigh reviews code before deployment. Catches logic bugs before wasting GPU hours
AUTO_DEPLOY true Automatically deploy experiments after implementation + review. Set false to manually inspect
SANITY_FIRST true Run smallest experiment first to catch setup bugs before full deployment
MAX_PARALLEL_RUNS 4 Maximum experiments to deploy in parallel (limited by available GPUs)
WANDB false Auto-add W&B logging. Requires wandb_project in CLAUDE.md
BASE_REPO false GitHub repo URL to clone as base codebase for experiments

Literature Search (`research-lit`)

Tune sourcing: local PDF directories, local-scan cap, which sources to search (Zotero / Obsidian / web / Semantic Scholar / DeepXiv / Exa), and arXiv PDF download settings.

Override inline: /research-lit "topic" — sources: zotero, web, /research-lit "topic" — sources: all, deepxiv, /research-lit "topic" — sources: all, exa, /research-lit "topic" — arxiv download: true, max download: 10

Show source-selection and arXiv download constants for /research-lit

Constant Default Description
PAPER_LIBRARY papers/, literature/ Local directories to scan for PDFs before searching online
MAX_LOCAL_PAPERS 20 Max local PDFs to scan (first 3 pages each)
SOURCES all Which sources to search: zotero, obsidian, local, web, semantic-scholar, deepxiv, exa, or all. semantic-scholar, deepxiv, and exa must be explicitly listed
ARXIV_DOWNLOAD false When true, download top relevant arXiv PDFs to PAPER_LIBRARY after search
ARXIV_MAX_DOWNLOAD 5 Maximum number of PDFs to download when ARXIV_DOWNLOAD = true

Paper Writing (`paper-write`)

Tune paper format: real BibTeX from DBLP, target venue (ICLR/NeurIPS/ICML/CVPR/ACL/AAAI/IEEE…), anonymous author block, page limit, and illustration backend.

Override inline: /paper-write — target venue: NeurIPS, illustration: mermaid

Show paper-format and illustration constants for /paper-write

Constant Default Description
DBLP_BIBTEX true Fetch real BibTeX from DBLP/CrossRef instead of LLM-generated entries
TARGET_VENUE ICLR Target venue: ICLR, NeurIPS, ICML, CVPR, ACL, AAAI, ACM, IEEE_JOURNAL, IEEE_CONF
ANONYMOUS true Use anonymous author block for blind review. Note: most IEEE venues are NOT anonymous — set false for IEEE
MAX_PAGES 9 Page limit. ML conferences: main body excl. refs. IEEE: total pages incl. refs
ILLUSTRATION gemini AI illustration mode: gemini (default, needs GEMINI_API_KEY), mermaid (free), or false (skip)

General (all skills using Codex MCP)

Tune the reviewer model used by every Codex MCP call (default gpt-6-astra), or fork the SKILL.md to customize prompt templates and the per-skill tool allowlist.

  • Prompt templates — tailor the review persona and evaluation criteria
  • allowed-tools — restrict or expand what each skill can do

Show Codex MCP reviewer-model options

Constant Default Description
REVIEWER_MODEL gpt-6-astra OpenAI model used via Codex MCP. Also available: gpt-5.3-codex, gpt-5.2-codex, o3. See supported models for full list.

CUSTOMIZATION CN (`docs/CUSTOMIZATION_CN.md`)

🎛️ 自定义

← 返回 README · ARIS 各 skill 的可调参数(环境变量)。

Skills 就是普通的 Markdown 文件,fork 后随意改:

💡 参数自动透传:参数沿调用链自动向下传递。例如 /research-pipeline "方向" — sources: zotero, arxiv download: true 会将 sources 和 arxiv download 经 idea-discovery 一路传到 research-lit。这同样适用于 deepxiv 和 exa 这类可选源:/research-pipeline "方向" — sources: all, deepxiv, exa。你可以在任何层级设置下游参数——只需加 — key: value。

text
research-pipeline  ──→  idea-discovery      ──→  research-lit
                   ──→  experiment-bridge    ──→  run-experiment
                   ──→  auto-review-loop
                                            ──→  idea-creator
                                            ──→  novelty-check
                                            ──→  research-review

全流程(`research-pipeline`)

调端到端行为:GPU 目标、arXiv 下载、代码审查、人工 checkpoint、base repo、W&B 日志、精简摘要、参考论文、作图后端,以及自动继续。

行内覆盖:/research-pipeline "方向" — auto proceed: false, wandb: true, illustration: true

展开 /research-pipeline 的常量、默认值与透传

常量 默认值 说明 透传
AUTO_PROCEED true 每个选择检查点报告最优方案并在同一轮继续;设为 false 时请求明确确认 → idea-discovery → AUTO_WRITE=true 时的 paper-writing
ARXIV_DOWNLOAD false 搜索后自动下载最相关的 arXiv PDF → idea-discovery → research-lit
HUMAN_CHECKPOINT false 设为 true 时每轮 review 后暂停等待确认 → auto-review-loop
WANDB false 自动给实验脚本加 W&B 日志 → experiment-bridge → run-experiment
CODE_REVIEW true GPT-6-Astra 部署前审查实验代码 → experiment-bridge
BASE_REPO false GitHub 仓库 URL,克隆作为实验基础代码 → experiment-bridge
GPU local GPU 目标:local、remote(SSH)、或 vast(Vast.ai 按需租用) → experiment-bridge → run-experiment
COMPACT false 生成精简摘要文件,适合短 context 模型和 session 恢复 → 所有工作流
REF_PAPER false 参考论文(PDF 或 URL),先总结再基于它找 idea → idea-discovery
ILLUSTRATION gemini AI 作图:gemini(默认,需 API key)、mermaid(免费)、false(跳过) → paper-writing

自动 Review 循环(`auto-review-loop`)

调停止条件:review→修复 轮数上限、判定"可投稿"的分数阈值、超过哪个 GPU-小时预算的实验自动标记为需人工跟进。

展开 /auto-review-loop 的停止条件

常量 默认值 说明
MAX_ROUNDS 4 最多 review→修复→再 review 轮数
POSITIVE_THRESHOLD 6/10 达到此分数自动停止(可投稿)
> 4 GPU-hour 跳过 4h 超过此时长的实验标记为"需人工跟进"

找 Idea(`idea-discovery` / `idea-creator`)

调 pilot 阶段:单 pilot 最大耗时、硬超时、并行 pilot 数、总 GPU 预算,外加自动继续和 arXiv 下载开关。

行内覆盖:/idea-discovery "方向" — pilot budget: 4h per idea, sources: zotero, arxiv download: true

展开 /idea-discovery 与 /idea-creator 的 pilot 预算常量

常量 默认值 说明 透传
PILOT_MAX_HOURS 2h 单个 pilot 预估超时则跳过 —
PILOT_TIMEOUT_HOURS 3h 硬超时——强制终止,收集部分结果 —
MAX_PILOT_IDEAS 3 最多并行 pilot 几个 idea —
MAX_TOTAL_GPU_HOURS 8h 所有 pilot 的总 GPU 预算 —
AUTO_PROCEED true 报告最优方案并在同一轮继续;设为 false 时请求明确确认 —
ARXIV_DOWNLOAD false 搜索后自动下载最相关的 arXiv PDF → research-lit

AUTO_PROCEED=true 只作用于它控制的选择检查点。显式的用户门禁(例如
飞书 interactive 审批、缺少 venue、或必须由用户补充的手动画图)仍会阻塞等待。
流程不会依赖“静默超时”来在一轮结束后恢复。

实验桥接(`experiment-bridge`)

调部署安全:GPT-6-Astra 代码审查、审查后自动部署、最小实验先跑、并行上限、W&B 日志、base repo URL。

行内覆盖:/experiment-bridge — code review: false, wandb: true

展开 /experiment-bridge 的部署与安全常量

常量 默认值 说明
CODE_REVIEW true GPT-6-Astra xhigh 部署前审查代码。在浪费 GPU 前抓逻辑 bug
AUTO_DEPLOY true 实现 + 审查后自动部署。设 false 可手动检查
BASE_REPO false GitHub 仓库 URL,克隆作为实验基础代码
SANITY_FIRST true 先跑最小实验,提前发现 bug
MAX_PARALLEL_RUNS 4 最多并行部署几个实验(受可用 GPU 限制)
WANDB false 自动加 W&B 日志。需在 CLAUDE.md 配 wandb_project

文献搜索(`research-lit`)

调来源:本地 PDF 目录、本地扫描上限、搜索哪些源(Zotero / Obsidian / 网络 / Semantic Scholar / DeepXiv / Exa),以及 arXiv PDF 自动下载设置。

行内覆盖:/research-lit "方向" — sources: zotero, web、/research-lit "方向" — sources: all, deepxiv、/research-lit "方向" — sources: all, exa、/research-lit "方向" — arxiv download: true, max download: 10

展开 /research-lit 的源选择和 arXiv 下载常量

常量 默认值 说明
PAPER_LIBRARY papers/, literature/ 本地论文目录,搜外部之前先扫这里的 PDF
MAX_LOCAL_PAPERS 20 最多扫描多少本地 PDF(每篇读前 3 页)
SOURCES all 搜索哪些源:zotero、obsidian、local、web、semantic-scholar、deepxiv、exa、all(逗号分隔)。semantic-scholar、deepxiv 和 exa 需显式指定
ARXIV_DOWNLOAD false 设为 true 时,搜索后自动下载最相关的 arXiv PDF 到 PAPER_LIBRARY
ARXIV_MAX_DOWNLOAD 5 ARXIV_DOWNLOAD = true 时最多下载的 PDF 数量

论文写作(`paper-write`)

调论文格式:DBLP 真实 BibTeX、目标会议(ICLR/NeurIPS/ICML/CVPR/ACL/AAAI/IEEE…)、匿名作者块、页数上限、作图后端。

行内覆盖:/paper-write — target venue: NeurIPS, illustration: true

展开 /paper-write 的论文格式与作图常量

常量 默认值 说明
DBLP_BIBTEX true 从 DBLP/CrossRef 拉取真实 BibTeX,替代 LLM 生成的条目
TARGET_VENUE ICLR 目标会议/期刊格式:ICLR、NeurIPS、ICML、CVPR、ACL、AAAI、ACM、IEEE_JOURNAL、IEEE_CONF
ANONYMOUS true 匿名审稿模式。注意:大多数 IEEE 期刊/会议不匿名,IEEE 时设为 false
MAX_PAGES 9 页数上限。ML 会议:正文不含参考文献。IEEE:总页数含参考文献
ILLUSTRATION gemini AI 作图:gemini(默认,需 API key)、mermaid(免费)、false(跳过)

通用(所有使用 Codex MCP 的 skill)

调所有 Codex MCP 调用使用的 reviewer 模型(默认 gpt-6-astra),或者 fork SKILL.md 定制 prompt 模板与每个 skill 的工具白名单。

  • Prompt 模板 — 定制评审人格和评估标准
  • allowed-tools — 限制或扩展每个 skill 可用的工具

展开 Codex MCP reviewer 模型选项

常量 默认值 说明
REVIEWER_MODEL gpt-6-astra Codex MCP 调用的 OpenAI 模型。其他可选:gpt-5.3-codex、gpt-5.2-codex、o3。完整列表见 supported models

GPU SETUP (`docs/GPU_SETUP.md`)

🖥️ GPU Setup for Auto-Experiments

← back to README · declare your GPU server in CLAUDE.md so ARIS can run experiments for you.

When GPT-6-Astra says "run an ablation study" or "add a baseline comparison", Claude Code automatically writes the experiment script and deploys it to your GPU server. For this to work, Claude Code needs to know your server environment.

Three GPU modes are supported — pick one and add it to your project's CLAUDE.md:

Option A: Remote SSH Server (`gpu: remote`)

markdown
## Remote Server
- gpu: remote
- SSH: `ssh my-gpu-server` (key-based auth, no password)
- GPU: 4x A100
- Conda env: `research` (Python 3.10 + PyTorch)
- Activate: `eval "$(/opt/conda/bin/conda shell.bash hook)" && conda activate research`
- Code directory: `/home/user/experiments/`
- Use `screen` for background jobs: `screen -dmS exp0 bash -c '...'`

Claude Code reads this and knows how to SSH in, activate the environment, and launch experiments. GPT-6-Astra (the reviewer) only decides what experiments to run — Claude Code figures out how based on your CLAUDE.md.

Option B: Local GPU (`gpu: local`)

If you are already on the GPU server, you can add the following to your CLAUDE.md:

markdown
## GPU Environment
- gpu: local
- This machine has direct GPU access (no SSH needed)
- GPU: 4x A100 80GB
- Experiment environment: `YOUR_CONDA_ENV` (Python 3.x + PyTorch)
- Activate before any Python command: `The command to activate your experiment environment` (uv, conda, etc.)
- Code directory: `/home/YOUR_USERNAME/YOUR_CODE_DIRECTORY/`

Option C: Vast.ai On-Demand GPU (`gpu: vast`)

No GPU? Rent one from Vast.ai on demand. ARIS analyzes your training task (model size, dataset, time), finds the cheapest GPU that fits, ranks options by total cost (not just $/hr), then rents → runs → collects → destroys automatically.

Drop this in CLAUDE.md:

markdown
## Vast.ai
- gpu: vast                  # rent on-demand GPU from vast.ai
- auto_destroy: true         # auto-destroy after experiment completes (default)
- max_budget: 5.00           # optional: warn if estimated cost exceeds this

📖 Full setup guide → integrations/VAST_GPU_GUIDE.md covers:

  • Account + vastai CLI install + API key + SSH key prerequisites (5 steps)
  • How ARIS picks GPUs and shows a live cost-ranked table
  • Manual rental via /vast-gpu (list / rent / destroy)
  • Typical cost expectations (~$0.30-2 for ablations on RTX 4090, ~$2-10 for A100/H100 baselines)
  • When gpu: vast is preferable to gpu: remote / gpu: local

No server at all? The review and rewriting skills still work without GPU access. Only experiment-related fixes will be skipped (flagged for manual follow-up).


GPU SETUP CN (`docs/GPU_SETUP_CN.md`)

🖥️ GPU 配置(自动跑实验用)

← 返回 README · 在 CLAUDE.md 里声明 GPU 服务器,让 ARIS 帮你跑实验。

当 GPT-6-Astra 审稿说"需要补一个消融实验"或"加一个 baseline 对比"时,Claude Code 会自动写实验脚本并部署到你的 GPU 服务器。为此,Claude Code 需要知道你的服务器环境。

在项目的 CLAUDE.md 中添加服务器信息:

markdown
## 远程服务器

- SSH:`ssh my-gpu-server`(密钥免密登录)
- GPU:4x A100
- Conda 环境:`research`(Python 3.10 + PyTorch)
- 激活:`eval "$(/opt/conda/bin/conda shell.bash hook)" && conda activate research`
- 代码目录:`/home/user/experiments/`
- 后台运行用 `screen`:`screen -dmS exp0 bash -c '...'`

Claude Code 读到这些就知道怎么 SSH、激活环境、启动实验。GPT-6-Astra(审稿人)只决定做什么实验——Claude Code 根据你的 CLAUDE.md 搞定怎么跑。

如果你已经在 GPU 服务器上,可以添加以下到你的 CLAUDE.md:

markdown
## GPU 环境

- 这台机器有直接 GPU 访问(不需要 SSH)
- GPU:4x A100 80GB
- 实验环境:`YOUR_CONDA_ENV`(Python 3.x + PyTorch)
- 激活前任何 Python 命令:`激活实验环境的命令`(uv, conda 等)
- 代码目录:`/home/YOUR_USERNAME/YOUR_CODE_DIRECTORY/`

没有 GPU 服务器? Review 和改写功能不受影响,只有需要跑实验的修复会被跳过(标记为"需人工跟进")。或者按需租 GPU 跑实验,见下方 Vast.ai 集成。

☁️ Vast.ai 按需 GPU

没 GPU?从 Vast.ai 按需租。ARIS 分析你的训练任务(模型大小、数据集、时间),找能放下的最便宜 GPU,按总成本(不是 $/hr)排序展示,然后租 → 跑 → 收 → 销毁全自动。

在项目 CLAUDE.md 加:

markdown
## Vast.ai
- gpu: vast                  # 从 vast.ai 按需租 GPU
- auto_destroy: true         # 实验跑完自动销毁(默认)
- max_budget: 5.00           # 可选:估算超过这个数会警告

📖 完整配置指南 → integrations/VAST_GPU_GUIDE_CN.md 包含:

  • 账号 + vastai CLI + API key + SSH key 准备工作(5 个步骤)
  • ARIS 如何挑 GPU 并展示实时成本排序表
  • 手动租用:/vast-gpu(list / rent / destroy)
  • 典型花费区间(RTX 4090 消融 ~$0.30-2/次,A100/H100 baseline ~$2-10/次)
  • 什么时候用 gpu: vast 比 gpu: remote / gpu: local 更划算

也不想租? Review 和改写类 skill 仍可用,只有需要跑实验的修复会被跳过(标记为"需人工跟进")。


LLM API MIX MATCH GUIDE (`docs/LLM_API_MIX_MATCH_GUIDE.md`)

LLM API 混搭配置指南

本指南说明如何自由搭配 Claude Code 执行器和外部审查器的 API。

双层架构

text
┌─────────────────────────────────────────────────────┐
│                   Claude Code                        │
│                                                      │
│  ┌─────────────────┐      ┌─────────────────────┐   │
│  │    执行器        │─────▶│      审查器          │   │
│  │  (Executor)     │      │    (Reviewer)       │   │
│  │                 │      │                     │   │
│  │  ANTHROPIC_*    │      │  LLM_*              │   │
│  │  环境变量        │      │  环境变量            │   │
│  └─────────────────┘      └─────────────────────┘   │
│                                                      │
└─────────────────────────────────────────────────────┘

执行器配置

执行器通过 ANTHROPIC_* 环境变量配置。

1. 原生 Claude API

json
{
  "ANTHROPIC_AUTH_TOKEN": "sk-ant-xxx",
  "ANTHROPIC_BASE_URL": "https://api.anthropic.com",
  "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-6"
}

2. Z.ai (GLM)

json
{
  "ANTHROPIC_AUTH_TOKEN": "your-zai-key",
  "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
  "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.5-air",
  "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.7",
  "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5"
}

3. Kimi (Moonshot)

官方文档: https://platform.moonshot.cn/docs/guide/agent-support

json
{
  "ANTHROPIC_AUTH_TOKEN": "sk-xxx",
  "ANTHROPIC_BASE_URL": "https://api.moonshot.cn/anthropic",
  "ANTHROPIC_DEFAULT_OPUS_MODEL": "kimi-k2",
  "ANTHROPIC_DEFAULT_SONNET_MODEL": "kimi-k2",
  "ANTHROPIC_SMALL_FAST_MODEL": "kimi-k2-thinking-turbo",
  "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "6000"
}

4. LongCat (美团)

官方文档: https://longcat.chat/platform/docs/zh/ClaudeCode.html

json
{
  "ANTHROPIC_AUTH_TOKEN": "ak_xxx",
  "ANTHROPIC_BASE_URL": "https://api.longcat.chat/anthropic",
  "ANTHROPIC_DEFAULT_OPUS_MODEL": "LongCat-Flash-Thinking-2601",
  "ANTHROPIC_DEFAULT_SONNET_MODEL": "LongCat-Flash-Thinking-2601",
  "ANTHROPIC_SMALL_FAST_MODEL": "LongCat-Flash-Lite",
  "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "6000"
}

5. 自定义兼容端点

json
{
  "ANTHROPIC_AUTH_TOKEN": "your-key",
  "ANTHROPIC_BASE_URL": "https://your-endpoint.com/anthropic",
  "ANTHROPIC_DEFAULT_OPUS_MODEL": "your-model"
}

审查器配置

审查器通过 llm-chat MCP 服务器调用任意API。

MCP 服务器配置

在 ~/.claude/settings.json 中添加:

json
{
  "mcpServers": {
    "llm-chat": {
      "command": "/usr/bin/python3",
      "args": ["/Users/yourname/.claude/mcp-servers/llm-chat/server.py"],
      "env": {
        "LLM_API_KEY": "your-api-key",
        "LLM_BASE_URL": "https://api.example.com/v1",
        "LLM_MODEL": "model-name"
      }
    }
  }
}

常用审查器提供商

提供商 LLM_BASE_URL LLM_MODEL
DeepSeek https://api.deepseek.com/v1 deepseek-chat
MiniMax https://api.minimax.io/v1 MiniMax-M3

完整配置示例

json
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "your-executor-key",
    "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5"
  },
  "mcpServers": {
    "llm-chat": {
      "command": "/usr/bin/python3",
      "args": ["/Users/yourname/.claude/mcp-servers/llm-chat/server.py"],
      "env": {
        "LLM_API_KEY": "your-reviewer-key",
        "LLM_BASE_URL": "https://api.deepseek.com/v1",
        "LLM_MODEL": "deepseek-chat"
      }
    }
  }
}

使用方式

bash
# 使用通用 LLM 审查 skill
/auto-review-loop-llm

改写所有 Skills(重要!)

auto-review-loop-llm 只是一个 skill 的通用 LLM 版。项目中有 46 个 skill 在 frontmatter 里授权了 Codex MCP (mcp__codex__codex),其中 28 个正文里有实际的调用块。如果你想全面切换到其他模型,需要让 Claude Code 把它们全部改写。

安装完 llm-chat MCP 服务器后,在 Claude Code 对话中执行:

text
Read skills/auto-review-loop-llm/SKILL.md as a reference.
It replaces mcp__codex__codex with mcp__llm-chat__chat.
Now rewrite ALL other skills that use mcp__codex__codex / mcp__codex__codex-reply
to use mcp__llm-chat__chat instead, following the same pattern.

Claude Code 会自动:

  1. 扫描所有 skill 文件,找到使用 Codex MCP 的地方
  2. 参考 auto-review-loop-llm 的写法(MCP 优先 + curl fallback)
  3. 逐个改写到你本地的 ~/.claude/skills/ 目录

⚠️ 注意: 这只修改你本地的 skill 副本,不影响仓库原文件。想恢复默认?重新 cp -r skills/* ~/.claude/skills/ 即可。


常见问题

Q: 为什么不用 Codex MCP?

Codex CLI 使用 OpenAI 的 Responses API (/v1/responses),这个 API 只有 OpenAI 官方支持,第三方提供商(DeepSeek、MiniMax 等)都不支持。所以我们新建了 llm-chat MCP 服务器,使用标准的 Chat Completions API (/v1/chat/completions),兼容所有 OpenAI-compatible API。

Q: GLM/Kimi/LongCat 能用吗?

可以!这些提供商支持 Anthropic-compatible API,配置到执行器(ANTHROPIC_* 环境变量)即可。审查器(LLM_* 环境变量)可以用任意 OpenAI-compatible API。


混搭组合示例

组合 1: GLM + DeepSeek(性价比)

json
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "your-zai-key",
    "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5"
  },
  "mcpServers": {
    "llm-chat": {
      "command": "/usr/bin/python3",
      "args": ["/Users/yourname/.claude/mcp-servers/llm-chat/server.py"],
      "env": {
        "LLM_API_KEY": "your-deepseek-key",
        "LLM_BASE_URL": "https://api.deepseek.com/v1",
        "LLM_MODEL": "deepseek-chat"
      }
    }
  }
}

组合 2: GLM + Kimi(长文本)

json
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "your-zai-key",
    "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5"
  },
  "mcpServers": {
    "llm-chat": {
      "command": "/usr/bin/python3",
      "args": ["/Users/yourname/.claude/mcp-servers/llm-chat/server.py"],
      "env": {
        "LLM_API_KEY": "your-kimi-key",
        "LLM_BASE_URL": "https://api.moonshot.cn/v1",
        "LLM_MODEL": "moonshot-v1-32k"
      }
    }
  }
}

组合 3: 原生 Claude + MiniMax

json
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-ant-xxx",
    "ANTHROPIC_BASE_URL": "https://api.anthropic.com",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-6"
  },
  "mcpServers": {
    "llm-chat": {
      "command": "/usr/bin/python3",
      "args": ["/Users/yourname/.claude/mcp-servers/llm-chat/server.py"],
      "env": {
        "LLM_API_KEY": "your-minimax-key",
        "LLM_BASE_URL": "https://api.minimax.io/v1",
        "LLM_MODEL": "MiniMax-M3"
      }
    }
  }
}

MANUAL REVIEW GUIDE (`docs/MANUAL_REVIEW_GUIDE.md`)

Manual Review Guide

Zero API cost cross-model review. Copy the prompt to a different model family, paste the response back. If the executor is Claude Code, do NOT use Claude products as the reviewer.

Overview

The Manual Review MCP server is a human-in-the-loop alternative to the default Codex MCP reviewer. Instead of requiring a GPT Plus/Pro subscription for automated cross-model review, it lets you manually mediate the review using a different model family. If the executor is Claude Code, do NOT use Claude products as the reviewer. Recommended: ChatGPT, DeepSeek, Kimi, Gemini or Qwen. The reviewer's model must be one ARIS can classify — a name outside the recognized families cannot be shown to differ from the executor's, so it cannot acquit. See the Reviewer-Model: section below for the list.

The trade-off: you lose full automation (you need to copy/paste), but gain complete flexibility in model choice and zero API cost.

When to Use

  • You have a Claude Code subscription but no GPT Plus/Codex subscription
  • You want to use free-tier models for review
  • You prefer to choose which model reviews each piece of work
  • You're experimenting and don't want to burn API credits on reviews

Installation

bash
# One-time setup: register the MCP server with Claude Code
claude mcp add manual-review -s user -- python3 /path/to/Auto-claude-code-research-in-sleep/mcp-servers/manual-review/server.py

No additional dependencies required — the server uses only Python standard library.

Usage

Add — reviewer: manual to any wired skill (see Supported Skills below):

text
/auto-review-loop "your topic" — reviewer: manual
/research-review "paper/" — reviewer: manual
/experiment-audit "results/" — reviewer: manual
/proof-checker "paper/" — reviewer: manual
/rebuttal "paper/" — reviewer: manual
/idea-creator "direction" — reviewer: manual

Workflow

Browser Mode (default)

  1. The pipeline reaches a review step
  2. A browser page opens automatically at http://127.0.0.1:
  3. Left panel: the full review prompt (click "Copy Prompt")
  4. Right panel: paste the model's response here — its first line must be
    Reviewer-Model: <exact-model-id>
    (see below)
  5. Click "Submit" — the pipeline continues. If the header is missing or the model
    is the same family as the executor, the page tells you why and you can fix the
    line in place.

File Mode (headless Linux / SSH)

Set MANUAL_REVIEW_MODE=file in your environment.

  1. The pipeline reaches a review step
  2. Check .aris/pending_review/pending_review.json for the prompt_file and response_file paths.
  3. Open the file at prompt_file to read the prompt.
  4. Copy to your model, get the response.
  5. Write the response to the file at response_file, with
    Reviewer-Model: <exact-model-id> as its first line (see below).
  6. The server detects the file (after confirming it's stable) and continues.

Important: The server waits for the response file to be non-empty AND stable (unchanged across two reads). Do not hardcode .aris/pending_review/response.md — always use the path from pending_review.json. Don't create an empty file first — write the full content in one operation, or use a temporary name and rename.

Multi-Round Reviews

For skills that use multiple review rounds (e.g., /auto-review-loop), the browser page shows previous exchanges in a collapsible "History" section. This helps you maintain context when continuing the conversation in your chosen model.

Tip: Keep the same model conversation open across rounds for best continuity.

The `Reviewer-Model:` header

Verdict-bearing reviews require the response to begin with one line naming the
model that actually wrote it:

text
Reviewer-Model: deepseek-v3

Score: 7/10
...

ARIS derives the reviewer's model family from that line and refuses a review by
the executor's own family — that is the whole point of routing the review outside
the executor. Recognized families are OpenAI (gpt*, o1/o3/o4, codex),
Anthropic (claude*), Google (gemini*), DeepSeek, Moonshot (kimi*), and
Qwen (qwen*, tongyi). A model outside that list cannot be classified, so it
cannot acquit — name it exactly as the provider does.

This is a declared identity, not an attestation: ARIS checks the line you write,
it does not independently discover which web UI you used.

Tips for Best Results

  1. Use a reasoning-capable model — the config badge shows reasoning_effort = xhigh, meaning the prompt is designed for deep reasoning. Models like GPT-4o, DeepSeek-V3, Kimi, or Gemini work well. Do NOT use any Claude-family model if the executor is Claude Code.
  2. Keep the Reviewer-Model: line first — before any blank line, heading, or
    preamble your model may have added.
  3. Paste the FULL response — don't truncate or summarize. The pipeline parses specific fields (scores, verdicts, action items) from the response.
  4. Don't modify the prompt — paste it exactly as shown. The prompt is identical to what Codex would receive.
  5. For multi-round reviews — maintain the conversation in your model (don't start a new chat for round 2).

Recovery

  • Accidentally closed the tab? Check .aris/pending_review/pending_review.json for the full URL (it includes a one-time token — copy it in full, don't type the bare http://127.0.0.1:17900). The server is still running — just reopen the URL.
  • Server timed out? Default timeout is 24 hours. If exceeded, the pipeline reports an error. Re-run the skill.
  • Wrong response pasted? There's no undo after submit. Re-run the skill if needed.

Supported Skills

The following skills have manual-review wired (Claude Code only):

Skill Review Purpose
/research-review Paper critique
/auto-review-loop Iterative improvement
/experiment-audit Eval code integrity
/proof-checker Math verification
/rebuttal Rebuttal stress test
/idea-creator Idea evaluation

/research-lit currently has no manual-review call block; use — reviewer: oracle-pro where supported, or run a separate review skill manually.

Future Work

  • Image generation: Manual alternative to codex-image2 for paper illustrations (upload/paste images back)
  • Image review loop: Iterative illustration improvement through the same UI

MANUAL REVIEW GUIDE CN (`docs/MANUAL_REVIEW_GUIDE_CN.md`)

手动评审指南

零 API 成本的跨模型评审。 复制提示词到不同模型家族,粘贴回复即可。如果执行器是 Claude Code,请勿使用 Claude 产品作为评审者。

概述

手动评审 MCP 服务器是默认 Codex MCP 评审器的人工中转替代方案。无需 GPT Plus/Pro 订阅即可实现跨模型评审——你可以使用不同模型家族。如果执行器是 Claude Code,请勿使用 Claude 产品作为评审者。推荐:ChatGPT、DeepSeek、Kimi、Gemini 或 Qwen。评审模型必须是 ARIS 能够归类的——无法归类的名字也就无法证明它与执行器不同家族,因而不能用于验收。可识别的家族见下方 Reviewer-Model: 一节。

代价:失去完全自动化(需要手动复制粘贴),换来模型选择的完全自由和零 API 成本。

适用场景

  • 有 Claude Code 订阅但没有 GPT Plus/Codex 订阅
  • 想使用免费模型进行评审
  • 希望每次自行选择评审模型
  • 实验阶段不想在评审上消耗 API 额度

安装

bash
# 一次性设置:注册 MCP 服务器到 Claude Code
claude mcp add manual-review -s user -- python3 /path/to/Auto-claude-code-research-in-sleep/mcp-servers/manual-review/server.py

无需额外依赖——服务器仅使用 Python 标准库。

使用方法

在已接线的技能后添加 — reviewer: manual(见下方支持的技能):

text
/auto-review-loop "your topic" — reviewer: manual
/research-review "paper/" — reviewer: manual
/experiment-audit "results/" — reviewer: manual
/proof-checker "paper/" — reviewer: manual
/rebuttal "paper/" — reviewer: manual
/idea-creator "direction" — reviewer: manual

工作流程

浏览器模式(默认)

  1. 流程到达评审步骤
  2. 浏览器自动打开 http://127.0.0.1:
  3. 左侧面板:完整评审提示词(点击"复制提示词")
  4. 右侧面板:在此粘贴模型回复——第一行必须是 Reviewer-Model: <准确模型 ID>(见下)
  5. 点击"提交"——流程继续。若缺少该行或评审模型与执行器同家族,页面会直接告诉你原因,可以就地改好那一行。

文件模式(无桌面 Linux / SSH)

设置环境变量 MANUAL_REVIEW_MODE=file。

  1. 流程到达评审步骤
  2. 查看 .aris/pending_review/pending_review.json,获取 prompt_file 和 response_file 路径。
  3. 打开 prompt_file 指向的文件,阅读提示词。
  4. 复制到你的模型,获取回复。
  5. 将回复写入 response_file 指向的文件,第一行为 Reviewer-Model: <准确模型 ID>(见下)。
  6. 服务器检测到文件(确认稳定后)继续流程。

重要:服务器等待回复文件非空且稳定(两次读取内容不变)后才读取。不要硬编码 .aris/pending_review/response.md — 始终使用 pending_review.json 中的路径。不要先创建空文件再编辑——直接一次性写入完整内容,或使用临时文件名后重命名。

多轮评审

对于使用多轮评审的技能(如 /auto-review-loop),浏览器页面会在可折叠的"历史对话"区域显示之前的交互。这帮助你在所选模型中保持上下文连续性。

建议:跨轮次保持同一个模型对话窗口,以获得最佳连续性。

`Reviewer-Model:` 行

需要产出判定的评审,回复必须以一行注明实际撰写它的模型开头:

text
Reviewer-Model: deepseek-v3

Score: 7/10
...

ARIS 从这一行推导评审模型的家族,并拒绝与执行器同家族的评审——把评审放到执行器之外,本来就是为了这个。可识别的家族:OpenAI(gpt*、o1/o3/o4、codex)、Anthropic(claude*)、Google(gemini*)、DeepSeek、Moonshot(kimi*)、Qwen(qwen*、tongyi)。不在此列的模型无法归类,因而不能用于验收——请照厂商的写法准确填写。

这是自报的身份,不是证明:ARIS 校验的是你写的这一行,它无法独立得知你实际用了哪个网页。

最佳实践

  1. 使用推理能力强的模型——配置提示显示 reasoning_effort = xhigh,意味着提示词为深度推理设计。GPT-4o、DeepSeek-V3、Kimi、Gemini 等效果较好。如果执行器是 Claude Code,请勿使用任何 Claude 家族模型。
  2. 保持 Reviewer-Model: 在第一行——不要让模型自己加的空行、标题或开场白排在它前面。
  3. 粘贴完整回复——不要截断或总结。流程会从回复中解析特定字段(分数、判定、行动项)。
  4. 不要修改提示词——原样粘贴。提示词与 Codex 收到的完全一致。
  5. 多轮评审时——在模型中保持对话(第 2 轮不要开新对话)。

恢复

  • 不小心关了标签页? 查看 .aris/pending_review/pending_review.json 获取完整 URL(包含一次性 token — 必须完整复制,不要手动输入裸地址 http://127.0.0.1:17900)。服务器仍在运行——重新打开 URL 即可。
  • 服务器超时? 默认超时 24 小时。超时后流程报错,重新运行技能即可。
  • 粘贴了错误回复? 提交后无法撤销。需要时重新运行技能。

支持的技能

以下技能已接线 manual-review(仅限 Claude Code):

技能 评审用途
/research-review 论文评审
/auto-review-loop 迭代改进
/experiment-audit 实验代码审计
/proof-checker 数学证明验证
/rebuttal 反驳压力测试
/idea-creator 想法评估

/research-lit 当前没有 manual-review 调用块;如需文献分析深度评审,请使用已支持的 oracle-pro 路由或单独运行评审 skill。

后续计划

  • 图片生成:codex-image2 的手动替代方案(上传/粘贴图片)
  • 图片评审循环:通过同一 UI 进行论文插图的迭代改进

MINIMAX MCP GUIDE (`docs/MINIMAX_MCP_GUIDE.md`)

MiniMax MCP 集成指南

本文档说明如何在 Auto-claude-code-research-in-sleep 项目中使用 MiniMax API 替代 OpenAI Codex MCP 进行研究审查。

背景

OpenAI Codex CLI 使用 Responses API (/v1/responses),而 MiniMax 等第三方 API 提供商只支持 Chat Completions API (/v1/chat/completions)。因此,Codex MCP 无法直接与 MiniMax 配合使用。

解决方案:创建自定义 MCP 服务器直接调用 MiniMax Chat Completions API。

相关讨论:GitHub #7782

两种 Review Loop 版本

版本 Skill 名称 触发词 外部审查服务
原版 auto-review-loop "auto review loop" Codex MCP (OpenAI)
MiniMax版 auto-review-loop-minimax "auto review loop minimax" MiniMax API

如何选择

  • 使用原版:如果你有 OpenAI API Key,且预算充足
  • 使用 MiniMax版:如果你想使用 MiniMax API(更便宜,或已有 MiniMax 账号)

安装步骤

1. 创建 MCP 服务器目录

bash
mkdir -p ~/.claude/mcp-servers/minimax-chat

2. 复制 MCP 服务器代码

将 mcp-servers/minimax-chat/server.py 复制到:

text
~/.claude/mcp-servers/minimax-chat/server.py

3. 安装 Python 依赖

bash
pip3 install -r mcp-servers/minimax-chat/requirements.txt

4. 配置 Claude Code settings.json

在 ~/.claude/settings.json 中添加:

json
{
  "env": {
    "MINIMAX_API_KEY": "你的MiniMax API Key"
  },
  "mcpServers": {
    "minimax-chat": {
      "command": "/usr/bin/python3",
      "args": ["/Users/你的用户名/.claude/mcp-servers/minimax-chat/server.py"],
      "env": {
        "MINIMAX_API_KEY": "你的MiniMax API Key",
        "MINIMAX_BASE_URL": "https://api.minimax.io/v1",
        "MINIMAX_MODEL": "MiniMax-M3"
      }
    }
  }
}

5. 重启 Claude Code

重启后,MCP 服务器将自动加载。

改写所有 Skills(重要!)

auto-review-loop-minimax 只是一个 skill 的 MiniMax 版。项目中有 46 个 skill 在 frontmatter 里授权了 Codex MCP (mcp__codex__codex),其中 28 个正文里有实际的调用块。如果你想全面切换到 MiniMax,需要让 Claude Code 把它们全部改写。

安装完 MCP 服务器后,在 Claude Code 对话中执行:

text
Read skills/auto-review-loop-minimax/SKILL.md as a reference.
It replaces mcp__codex__codex with mcp__minimax-chat__minimax_chat.
Now rewrite ALL other skills that use mcp__codex__codex / mcp__codex__codex-reply
to use mcp__minimax-chat__minimax_chat instead, following the same pattern.

Claude Code 会自动:

  1. 扫描所有 skill 文件,找到使用 Codex MCP 的地方
  2. 参考 auto-review-loop-minimax 的写法(MCP 优先 + curl fallback)
  3. 逐个改写到你本地的 ~/.claude/skills/ 目录

注意:这只修改你本地的 skill 副本,不影响仓库原文件。

使用方法

方法一:通过 MCP 工具(推荐)

当 MCP 正确配置后,使用:

text
/auto-review-loop-minimax

Skill 会自动检测并使用 mcp__minimax-chat__minimax_chat 工具。

方法二:通过 curl(备选)

如果 MCP 不可用,Skill 会自动回退到使用 curl 直接调用 MiniMax API。

确保环境变量 MINIMAX_API_KEY 已设置。

文件结构

text
~/.claude/
├── settings.json                    # Claude Code 全局配置
├── mcp-servers/
│   └── minimax-chat/
│       └── server.py                # MiniMax MCP 服务器
└── skills/
    ├── auto-review-loop/
    │   └── SKILL.md                 # 原版(Codex MCP)
    └── auto-review-loop-minimax/
        └── SKILL.md                 # MiniMax 版

项目目录/
├── review-stage/AUTO_REVIEW.md                   # 审查日志(自动生成)
└── review-stage/REVIEW_STATE.json                # 状态持久化(自动生成)

MCP 服务器特性

  • 双格式支持:自动检测并支持标准 MCP 格式和 NDJSON 格式
  • 调试日志:日志保存在系统临时目录下的 minimax-mcp-debug.log
  • 错误处理:完善的错误处理和恢复机制

验证安装

测试 MCP 服务器

bash
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | \
  MINIMAX_API_KEY="your-key" \
  python3 ~/.claude/mcp-servers/minimax-chat/server.py

预期输出:

json
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05",...}}

测试 MiniMax API 连通性

bash
curl -s "https://api.minimax.io/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $MINIMAX_API_KEY" \
  -d '{
    "model": "MiniMax-M3",
    "messages": [{"role": "user", "content": "Say hello"}],
    "max_tokens": 50
  }'

常见问题

Q: MCP 工具不可用?

  1. 检查系统临时目录下的 minimax-mcp-debug.log 日志文件(可运行 python3 -c "import tempfile; print(tempfile.gettempdir())" 查看系统临时目录)
  2. 确认 settings.json 配置正确
  3. 确认 Python 路径正确(/usr/bin/python3 或 which python3)
  4. 重启 Claude Code

Q: API 调用失败?

  1. 确认 API Key 正确且有效
  2. 确认网络可访问 https://api.minimax.io/v1
  3. 检查 API 余额是否充足
  4. 查看调试日志中的错误信息

Q: Skill 没有触发?

确保使用正确的触发词:

  • 原版:auto review loop
  • MiniMax版:auto review loop minimax

Q: 为什么不用 Codex MCP?

Codex CLI 硬编码使用 OpenAI Responses API,该 API 不被第三方提供商支持。详见 GitHub 讨论。

贡献

欢迎提交 Issue 和 PR 来改进这个集成!

参考资料


MODELSCOPE GUIDE (`docs/MODELSCOPE_GUIDE.md`)

ModelScope(魔搭社区)接入指南

本文档说明如何使用 ModelScope 的免费 API 驱动 ARIS 全流程,无需 Claude 或 OpenAI API。


背景

ModelScope 是什么

ModelScope(魔搭社区) 是阿里达摩院推出的开源模型即服务(MaaS)平台,提供 1000+ 开源模型的免费 API 推理服务,同时兼容 OpenAI 和 Anthropic 两大主流 API 协议。

为什么适合 ARIS

  • 免费:注册即送每日 2000 次 API 调用,无需付费套餐
  • 一个 Key 双协议:同一个 ms-xxx API Key 同时支持 Anthropic 和 OpenAI 兼容端点
  • 模型丰富:DeepSeek-V4-Pro、DeepSeek-R1、Qwen3-Coder、GLM-5.1、Yi 等主流开源模型均可用
  • 无使用限制:不像 Coding Plan 有"禁止自动化调用"的条款限制

支持的模型(推荐)

模型 推荐用途 说明
deepseek-ai/DeepSeek-V4-Pro 执行器主力 综合能力强
Qwen/Qwen3-Coder-30B-A3B-Instruct 执行器轻量 / 快速模型 代码能力优秀,速度快
deepseek-ai/DeepSeek-R1 审查器主力 推理质量高,适合深度 review
Qwen/Qwen3-235B-A22B-Instruct 审查器备选 大参数量,综合审查

完整模型列表见 ModelScope 模型库,筛选"API 推理"即可。模型 ID 格式为 组织/模型名。

为什么不能直接用 Codex MCP

原版 ARIS 的审查器使用 Codex MCP,而 Codex CLI 硬编码调用 OpenAI 专有的 Responses API (/v1/responses),第三方 API 提供商(包括 ModelScope)均不支持该接口。

解决方案:使用项目内置的 llm-chat MCP 服务器,它调用标准 Chat Completions API (/v1/chat/completions),兼容所有 OpenAI 兼容端点,包括 ModelScope。


双层架构

ModelScope 同时提供两套 API 端点,分别对应 ARIS 的两个角色:

text
┌──────────────────────────────────────────────────────────┐
│                    Claude Code (CLI)                      │
│                                                           │
│  ┌──────────────────┐       ┌─────────────────────────┐  │
│  │     执行器        │──────▶│        审查器            │  │
│  │  (Claude CLI)    │       │   (llm-chat MCP)        │  │
│  │                  │       │                         │  │
│  │  ANTHROPIC_* 变量 │       │  LLM_* 环境变量          │  │
│  │  → Anthropic 端点 │       │  → OpenAI 端点           │  │
│  └──────────────────┘       └─────────────────────────┘  │
└──────────────────────────────────────────────────────────┘
角色 协议 端点
执行器(Claude CLI) Anthropic 兼容 https://api-inference.modelscope.cn
审查器(llm-chat MCP) OpenAI 兼容 https://api-inference.modelscope.cn/v1

两个端点使用同一个 ModelScope API Key(ms-xxx 格式),无需分别申请。


获取 API Key

  1. 访问 ModelScope 并注册账号(支持支付宝/GitHub 登录)
  2. 登录后进入 API Key 管理页
  3. 创建一个 SDK Token,格式为 ms-xxxxxxxxxxxxxxxx
  4. 无需付费——注册即可获得每日 2000 次免费调用额度

安装步骤

前置条件

  • Claude Code CLI 已安装:npm install @anthropic-ai/claude-code
  • Python 3 可用:python3 --version(用 which python3 确认路径)
  • 已获取 ModelScope API Key(见上方)

Step 1:克隆仓库

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git
cd Auto-claude-code-research-in-sleep

Step 2:安装 Python 依赖

bash
pip3 install -r mcp-servers/llm-chat/requirements.txt

Step 3:部署 llm-chat MCP 服务器

bash
mkdir -p ~/.claude/mcp-servers/llm-chat
cp mcp-servers/llm-chat/server.py ~/.claude/mcp-servers/llm-chat/server.py

Step 4:安装 Skills

bash
mkdir -p ~/.claude/skills
cp -r skills/* ~/.claude/skills/

Step 5:配置 ~/.claude/settings.json

以下为推荐配置(DeepSeek-V4-Pro 执行 + DeepSeek-R1 审查)。用 which python3 替换 command 中的 python3 路径,用 echo $HOME 替换路径中的 $HOME:

json
{
  "env": {
    "ANTHROPIC_API_KEY": "ms-your-modelscope-token",
    "ANTHROPIC_BASE_URL": "https://api-inference.modelscope.cn",
    "ANTHROPIC_MODEL": "deepseek-ai/DeepSeek-V4-Pro",
    "ANTHROPIC_SMALL_FAST_MODEL": "Qwen/Qwen3-Coder-30B-A3B-Instruct",
    "API_TIMEOUT_MS": "3000000"
  },
  "mcpServers": {
    "llm-chat": {
      "command": "/usr/bin/python3",
      "args": ["$HOME/.claude/mcp-servers/llm-chat/server.py"],
      "env": {
        "LLM_API_KEY": "ms-your-modelscope-token",
        "LLM_BASE_URL": "https://api-inference.modelscope.cn/v1",
        "LLM_MODEL": "deepseek-ai/DeepSeek-R1"
      }
    }
  }
}

路径说明:$HOME 需替换为实际路径(如 /root 或 /home/用户名),settings.json 不会自动展开 shell 变量。用 which python3 确认 python3 实际路径。

Step 6:改写所有使用 Codex MCP 的 Skills

项目中有 46 个 skill 在 frontmatter 里授权了 mcp__codex__codex(依赖 OpenAI Responses API,ModelScope 不支持),其中 28 个正文里有实际的调用块。在启动 Claude Code 后执行以下指令,让它自动完成改写:

text
Read skills/auto-review-loop-llm/SKILL.md as a reference.
It replaces mcp__codex__codex with mcp__llm-chat__chat.
Now rewrite ALL other skills that use mcp__codex__codex / mcp__codex__codex-reply
to use mcp__llm-chat__chat instead, following the same pattern.

Claude Code 会自动扫描并改写所有相关 skill。

注意:此操作只修改 ~/.claude/skills/ 中的本地副本,不影响仓库原文件。如需恢复,重新执行 Step 4 即可。


模型选择建议

场景 执行器 审查器 说明
推荐:能力均衡 deepseek-ai/DeepSeek-V4-Pro deepseek-ai/DeepSeek-R1 DeepSeek 系列综合最强
备选:速度优先 Qwen/Qwen3-Coder-30B-A3B-Instruct Qwen/Qwen3-235B-A22B-Instruct Qwen 系列,代码能力优秀
备选:跨模型 deepseek-ai/DeepSeek-V4-Pro Qwen/Qwen3-235B-A22B-Instruct 不同模型族,更强对抗性

关于跨模型优势:ARIS 的核心设计是执行器和审查器使用不同模型,形成真正的反馈循环。推荐使用不同模型族(如 DeepSeek 执行 + Qwen 审查)以最大化对抗性。


使用方法

配置完成后启动 Claude Code:

bash
claude

直接可用(无需改写)

text
/auto-review-loop-llm "你的论文主题"    # 已原生支持 llm-chat MCP

改写后可用(Step 6 完成后)

text
/idea-discovery "你的研究方向"          # 工作流 1:文献 → idea → 查新 → 精炼 → 实验规划
/auto-review-loop "你的论文主题"        # 工作流 2:自动 review 循环
/paper-writing "NARRATIVE_REPORT.md"   # 工作流 3:叙事 → LaTeX → PDF
/research-pipeline "你的研究方向"       # 完整流水线:1 → 2 → 3

验证安装

1. 验证执行器端点(Anthropic 协议)

bash
curl -s "https://api-inference.modelscope.cn/v1/messages" \
  -H "Content-Type: application/json" \
  -H "x-api-key: ms-your-modelscope-token" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"deepseek-ai/DeepSeek-V4-Pro","max_tokens":50,"messages":[{"role":"user","content":"Say hello"}]}'

预期:返回包含 "content" 字段的 JSON。

2. 验证审查器端点(OpenAI 协议)

bash
curl -s "https://api-inference.modelscope.cn/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ms-your-modelscope-token" \
  -d '{"model":"deepseek-ai/DeepSeek-R1","messages":[{"role":"user","content":"Say hello"}],"max_tokens":50}'

预期:返回包含 "choices" 字段的 JSON。

3. 验证 llm-chat MCP 服务器

bash
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | \
  LLM_API_KEY="ms-your-modelscope-token" \
  LLM_BASE_URL="https://api-inference.modelscope.cn/v1" \
  LLM_MODEL="deepseek-ai/DeepSeek-R1" \
  python3 ~/.claude/mcp-servers/llm-chat/server.py

预期输出中包含:"protocolVersion":"2024-11-05"

4. 在 Claude Code 中端到端验证

bash
claude
> 读一下这个项目,验证所有 skill 是否正常可用

与其他方案对比

默认方案 Coding Plan 本方案(ModelScope) GLM + MiniMax
执行器 Claude Opus/Sonnet kimi-k2.5 DeepSeek-V4-Pro GLM-5 (Z.ai)
审查器 GPT-6-Astra (Codex MCP) glm-5 DeepSeek-R1 MiniMax-M3
需要 Claude API 是 否 否 否
需要 OpenAI API 是 否 否 否
费用 按量 套餐付费 免费(2000次/天) 按量
自动化限制 无 有(禁止无人值守) 无 无
API Key 数量 2 个 1 个 1 个 2 个
配置指南 README ALI_CODING_PLAN_GUIDE 本文档 LLM_API_MIX_MATCH_GUIDE

ModelScope 的独特优势:免费 + 无自动化限制 + 一个 Key,是最低门槛的 ARIS 接入方式。


免费额度与限制

项目 限制
每日调用次数 2000 次(注册即送)
单次请求 tokens 取决于具体模型(通常 8K-128K)
并发限制 有,具体见 API 使用限制
自动化使用 允许(无 Coding Plan 式限制)

对于典型的 /auto-review-loop(4 轮,每轮 ~10 次 API 调用),一天可跑 ~50 次完整循环,远超日常使用需求。


常见问题

Q:API Key 从哪里获取?

登录 ModelScope,进入 我的令牌 页面创建 SDK Token。格式为 ms-xxxxxxxxxxxxxxxx。

Q:免费额度用完了怎么办?

等待第二天自动刷新(每日 2000 次)。如需更高额度,可在 ModelScope 平台申请或使用其他提供商。

Q:执行器报错 "401 Unauthorized"?

确认使用的是 ModelScope SDK Token(ms-xxx 格式),非其他平台的 Key。

Q:llm-chat MCP 工具在 Claude Code 中不出现?

  1. 确认 settings.json 中 command 的 python3 路径正确(which python3)
  2. 确认 args 中的路径为绝对路径(不能包含 $HOME,需替换为实际值)
  3. 重启 Claude Code

Q:模型 ID 怎么找?

在 ModelScope 模型库 搜索模型,页面 URL 中的路径即为模型 ID(如 deepseek-ai/DeepSeek-R1)。只有标注"API 推理"的模型才支持 API 调用。

Q:如何切换审查器模型?

修改 ~/.claude/settings.json 中 mcpServers.llm-chat.env.LLM_MODEL 的值,重启 Claude Code 即可。


参考资料


MODEL COMBINATIONS (`docs/MODEL_COMBINATIONS.md`)

🔀 Alternative Model Combinations

← back to README · run ARIS with non-default executor / reviewer providers.

Don't have Claude / OpenAI API access? You can swap in other models — same cross-model architecture, different providers.

⭐ We strongly recommend Claude + GPT-6-Astra (default setup). It's the most tested and reliable combination. Alternative setups work but may require prompt tuning.

Beyond the default Claude × GPT-6-Astra route, ARIS ships 10 alternative routes (Alt A-I + C.1) covering Z.ai's GLM, Alibaba's Kimi/Qwen/GLM/MiniMax bundle, ModelScope's free DeepSeek-V3.1, Codex-as-executor with Claude or Gemini reviewers, and Google Antigravity as the executor.

Show full routing table — Default + Alt A-I × executor / reviewer / Claude-API needed / OpenAI-API needed / guide link

Executor Reviewer Need Claude API? Need OpenAI API? Guide
Default ⭐ Claude Opus/Sonnet GPT-6-Astra (Codex MCP) Yes Yes Quick Start
Alt A GLM-5 (Z.ai) GPT-6-Astra (Codex MCP) No Yes Setup below
Alt B GLM-5 (Z.ai) MiniMax-M3 No No MINIMAX_MCP_GUIDE
Alt C Any CC-compatible Any OpenAI-compatible No No LLM_API_MIX_MATCH_GUIDE
Alt C.1 Claude / any CC-compatible OpenRouter pinned model via llm-chat Optional No OPENROUTER_GUIDE
Alt D Kimi-K2.5 / Qwen3.5+ GLM-5 / MiniMax-M3 No No ALI_CODING_PLAN_GUIDE
Alt E 🆓 DeepSeek-V3.1 / Qwen3-Coder DeepSeek-R1 / Qwen3-235B No No MODELSCOPE_GUIDE
Alt F Codex CLI (GPT-6-Astra) Codex spawn_agent (GPT-6-Astra) No Yes skills-codex/
Alt G 🆕 Codex CLI Claude Code CLI (claude-review MCP) No* No* CODEX_CLAUDE_REVIEW_GUIDE
Alt H 🆕 Antigravity (Claude Opus 4.6 / Gemini 3.1 Pro) GPT-6-Astra (Codex MCP) or any via llm-chat No Optional ANTIGRAVITY_ADAPTATION
Alt I 🆕 Codex CLI Gemini direct API (gemini-review MCP) No No CODEX_GEMINI_REVIEW_GUIDE

How to choose:

  • Default — you have Claude + OpenAI access and want the most tested route.
  • Alt A — only swap Claude for GLM, keep GPT-6-Astra as reviewer via Codex MCP.
  • Alt B or Alt E — no Claude API, no OpenAI API (Alt E is free via ModelScope).
  • Alt C or Alt D — OpenAI-compatible mix-and-match (Alt D = one Alibaba key for both sides).
  • Alt C.1 — OpenRouter as an opt-in llm-chat reviewer backend: one key, many models; pin a concrete reviewer model and keep it in a different family from the executor.
  • Alt G or Alt I — Codex stays as executor, only the reviewer changes (Claude or Gemini).
  • Alt H — Antigravity as the executor (Claude Opus 4.6 or Gemini 3.1 Pro), GPT-6-Astra or any llm-chat reviewer.

* Alt G normally relies on local Codex CLI and Claude Code CLI logins. Direct API keys are optional, not required.

Show detailed provider notes for Alt C/D/E/G/H/I

Alt C supports tested providers: GLM (Z.ai), Kimi (Moonshot), LongCat (Meituan) as executors; DeepSeek, MiniMax as reviewers. Any OpenAI-compatible API should also work via the generic llm-chat MCP server.

Alt D uses Alibaba Coding Plan — one API key for both executor and reviewer, 4 models included (Kimi, Qwen, GLM, MiniMax).

Alt E uses ModelScope — free (2000 calls/day), one key, no automation restrictions.

Alt G keeps Codex as executor but swaps the reviewer to Claude Code CLI via the local claude-review MCP bridge, with async polling for long paper/review prompts.

Alt H uses Google Antigravity as the executor with native SKILL.md support — choose Claude Opus 4.6 (Thinking) or Gemini 3.1 Pro (high) as the execution model.

Alt I keeps Codex as executor, adds only a thin skills-codex-gemini-review overlay, and routes the reviewer-aware predefined skills through the local gemini-review MCP bridge with direct Gemini API by default. It is the closest Gemini analogue to the existing Codex+Claude review path, while minimizing skill changes and now also covers poster PNG review via the same bridge. Free-tier availability, rate limits, and data-use terms remain subject to Google's current policy.

12.1 Alt A: GLM + GPT

Only replace the executor (Claude → GLM via Z.ai), keep GPT-6-Astra as reviewer via Codex MCP. Codex CLI reuses your existing OPENAI_API_KEY (from ~/.codex/config.toml or environment); no extra reviewer-side config.

Show Alt A setup commands and ~/.claude/settings.json

bash
npm install @anthropic-ai/claude-code
npm install @openai/codex
codex setup   # set model to gpt-6-astra

Configure ~/.claude/settings.json:

json
{
    "env": {
        "ANTHROPIC_AUTH_TOKEN": "your_zai_api_key",
        "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
        "API_TIMEOUT_MS": "3000000",
        "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.5-air",
        "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.7",
        "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5"
    },
    "mcpServers": {
        "codex": {
            "command": "python3",
            "args": ["/ABSOLUTE/PATH/TO/aris_repo/mcp-servers/codex-exec/server.py"]
        }
    }
}

12.2 Alt B: GLM + MiniMax

No Claude or OpenAI API needed. Uses a custom MiniMax MCP server instead of Codex (because MiniMax doesn't support OpenAI's Responses API). Full guide: docs/MINIMAX_MCP_GUIDE.md.

12.3 Alt C: Any Executor + Any Reviewer

Mix and match freely using the generic llm-chat MCP server. Supports any OpenAI-compatible API as reviewer. Full guide: docs/LLM_API_MIX_MATCH_GUIDE.md.

Example combinations: GLM + DeepSeek, Kimi + MiniMax, Claude + DeepSeek, LongCat + GLM, etc.

12.4 After Setup: Install Skills & Verify

Use the project-local symlink install from § Install Skills above — that's the recommended path for all routes. The global-copy fallback below also works if you prefer everything under ~/.claude/skills/.

Show global-copy fallback install commands and the non-Claude executor verification prompt

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git
cd Auto-claude-code-research-in-sleep
cp -r skills/* ~/.claude/skills/
claude

⚠️ For non-Claude executors (GLM, Kimi, etc.): Let the model read through the project once to ensure skills are correctly parsed. This is especially important if you've rewritten skills to use a different reviewer MCP (e.g., mcp__llm-chat__chat instead of mcp__codex__codex) — the new executor needs to understand the changed tool call patterns:

text
Read through this project and verify all skills are working:
/idea-creator, /research-review, /auto-review-loop, /novelty-check,
/idea-discovery, /research-pipeline, /research-lit, /run-experiment,
/analyze-results, /monitor-experiment, /pixel-art

⚠️ Note: Alternative models may behave differently from Claude and GPT-6-Astra. You may need to tune prompt templates for best results. The core cross-model architecture remains the same.


MODEL COMBINATIONS CN (`docs/MODEL_COMBINATIONS_CN.md`)

🔀 替代模型组合

← 返回 README · 用非默认的 executor / reviewer 组合跑 ARIS。

没有 Claude / OpenAI API?可以换用其他模型——同样的跨模型架构,不同的提供商。

⭐ 强烈推荐使用 Claude + GPT-6-Astra(默认组合)。 这是经过最充分测试、最稳定的组合。替代方案可用但可能需要调整 prompt。

除了默认的 Claude × GPT-6-Astra,ARIS 还内置 10 条替代路由(方案 A-I + C.1),覆盖 Z.ai 的 GLM、阿里百炼的 Kimi/Qwen/GLM/MiniMax 套餐、ModelScope 免费的 DeepSeek-V3.1、Codex 作为执行者搭配 Claude 或 Gemini 审稿、以及 Google Antigravity 作为执行器。

展开完整路由表 —— 默认 + 方案 A-I × 执行者 / 审稿人 / 是否需要 Claude API / 是否需要 OpenAI API / 配置指南链接

执行者 审稿人 需要 Claude API? 需要 OpenAI API? 配置指南
默认 ⭐ Claude Opus/Sonnet GPT-6-Astra(Codex MCP) 是 是 快速开始
方案 A GLM-5(Z.ai) GPT-6-Astra(Codex MCP) 否 是 配置见下
方案 B GLM-5(Z.ai) MiniMax-M3 否 否 MINIMAX_MCP_GUIDE
方案 C 任意 CC 兼容 任意 OpenAI 兼容 否 否 LLM_API_MIX_MATCH_GUIDE
方案 C.1 Claude / 任意 CC 兼容 OpenRouter 固定模型 via llm-chat 可选 否 OPENROUTER_GUIDE_CN
方案 D Kimi-K2.5 / Qwen3.5+ GLM-5 / MiniMax-M3 否 否 ALI_CODING_PLAN_GUIDE
方案 E 🆓 DeepSeek-V3.1 / Qwen3-Coder DeepSeek-R1 / Qwen3-235B 否 否 MODELSCOPE_GUIDE
方案 F Codex CLI (GPT-6-Astra) Codex spawn_agent (GPT-6-Astra) 否 是 skills-codex/
方案 G 🆕 Codex CLI Claude Code CLI(claude-review MCP) 否* 否* CODEX_CLAUDE_REVIEW_GUIDE_CN
方案 H 🆕 Antigravity(Claude Opus 4.6 / Gemini 3.1 Pro) GPT-6-Astra(Codex MCP)或 llm-chat 否 可选 ANTIGRAVITY_ADAPTATION_CN
方案 I 🆕 Codex CLI Gemini direct API(gemini-review MCP) 否 否 CODEX_GEMINI_REVIEW_GUIDE_CN

怎么选:

  • 默认 —— 你有 Claude + OpenAI 双账号,想要最稳的路径。
  • 方案 A —— 只换执行者(Claude → GLM),审稿人保留 GPT-6-Astra via Codex MCP。
  • 方案 B 或 方案 E —— 不用 Claude、不用 OpenAI API(方案 E 通过 ModelScope 免费)。
  • 方案 C 或 方案 D —— OpenAI 兼容 API 自由混搭(方案 D 用阿里一个 Key 跑双端)。
  • 方案 C.1 —— OpenRouter 作为 opt-in 的 llm-chat 审稿后端:一个 Key 用多家模型;请固定具体审稿模型,并确保与执行者来自不同模型家族。
  • 方案 G 或 方案 I —— 保留 Codex 作为执行者,只换审稿人(Claude 或 Gemini)。
  • 方案 H —— 用 Antigravity 作为执行器(Claude Opus 4.6 或 Gemini 3.1 Pro),GPT-6-Astra 或任意 llm-chat 审稿。

* 方案 G 通常依赖本地 Codex CLI 和 Claude Code CLI 的登录态;不强制要求 API key。

展开方案 C/D/E/G/H/I 的提供商细节

方案 C 已适配的提供商:GLM(Z.ai)、Kimi(Moonshot)、LongCat(美团)作为执行器;DeepSeek、MiniMax 作为审查器。任何 OpenAI 兼容 API 理论上均可通过通用 llm-chat MCP 服务器接入。

方案 D 使用阿里百炼 Coding Plan——一个 API Key 包含 4 款模型(Kimi、Qwen、GLM、MiniMax),双端点配置。

方案 E 使用 ModelScope(魔搭社区)——免费(2000 次/天),一个 Key,无自动化限制。

方案 G 保持 Codex 作为执行者,但把审稿人切换成通过本地 claude-review MCP bridge 暴露出来的 Claude Code CLI,并用异步轮询处理长论文 / 长 review prompt。

方案 H 使用 Google Antigravity 作为执行器,原生支持 SKILL.md——可选 Claude Opus 4.6(Thinking)或 Gemini 3.1 Pro(high)作为执行模型。

方案 I 保持 Codex 作为执行者,只增加一层很薄的 skills-codex-gemini-review overlay,并通过本地 gemini-review MCP bridge 把 reviewer-aware 预定义 skills 默认接到 direct Gemini API。这是与现有 Codex+Claude 审稿路径最接近的 Gemini 版本,同时 skill 改动最少,而且连 poster PNG 审查也复用了同一个 bridge。免费层可用性、限速和数据处理条款仍以 Google 当前政策为准。

方案 A: GLM + GPT

只替换执行者(Claude → 通过 Z.ai 切到 GLM),保留 GPT-6-Astra 通过 Codex MCP 审稿。Codex CLI 复用你已有的 OPENAI_API_KEY(来自 ~/.codex/config.toml 或环境变量),审稿端不需要额外配置。

展开方案 A 的安装命令与 ~/.claude/settings.json

bash
npm install @anthropic-ai/claude-code
npm install @openai/codex
codex setup   # 提示选模型时选 gpt-6-astra

配置 ~/.claude/settings.json:

json
{
    "env": {
        "ANTHROPIC_AUTH_TOKEN": "your_zai_api_key",
        "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
        "API_TIMEOUT_MS": "3000000",
        "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.5-air",
        "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.7",
        "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5"
    },
    "mcpServers": {
        "codex": {
            "command": "python3",
            "args": ["/ABSOLUTE/PATH/TO/aris_repo/mcp-servers/codex-exec/server.py"]
        }
    }
}

方案 B: GLM + MiniMax

无需 Claude 或 OpenAI API。使用自定义 MiniMax MCP 服务器替代 Codex(因为 MiniMax 不支持 OpenAI 的 Responses API)。完整指南:docs/MINIMAX_MCP_GUIDE.md。

方案 C: 任意执行者 + 任意审稿人

通过通用 llm-chat MCP 服务器自由混搭,支持任意 OpenAI 兼容 API 作为审稿人。完整指南:docs/LLM_API_MIX_MATCH_GUIDE.md。

示例组合:GLM + DeepSeek、Kimi + MiniMax、Claude + DeepSeek、LongCat + GLM 等。

配置完成后:安装 Skills 并验证

推荐用上面 § 安装 Skills 的项目级 symlink 安装——所有方案通用。下面的全局拷贝是 fallback,如果你更习惯把所有 skill 放到 ~/.claude/skills/ 也行。

展开全局拷贝 fallback 安装命令与非 Claude 执行者的验证 prompt

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git
cd Auto-claude-code-research-in-sleep
cp -r skills/* ~/.claude/skills/
claude

⚠️ 非 Claude 执行者(GLM、Kimi 等): 需要让模型先读一遍项目,确保 skill 能正确解析。尤其是当你已经改写了 skill以使用不同的审查器 MCP(如 mcp__llm-chat__chat 替代 mcp__codex__codex)时——新执行器需要理解变更后的工具调用方式:

text
读一下这个项目,验证所有 skills 是否正常:
/idea-creator, /research-review, /auto-review-loop, /novelty-check,
/idea-discovery, /research-pipeline, /research-lit, /run-experiment,
/analyze-results, /monitor-experiment, /pixel-art

⚠️ 注意: 替代模型的行为可能与 Claude 和 GPT-6-Astra 有所不同。你可能需要微调 prompt 模板以获得最佳效果。核心的跨模型架构不变。


MiniMax GLM Configuration (`docs/MiniMax-GLM-Configuration.md`)

MiniMax-M3 + GLM 配置教程 (Alt C)

概述

此配置方案使用 MiniMax-M3 作为执行者(Executor),GLM-5 作为审稿人(Reviewer)。

与方案 B(GLM + MiniMax)正好相反——适合需要 MiniMax 强大推理能力作为主力,GLM 进行代码审查的场景。

模型组合对比

角色 方案 A:GLM + GPT 方案 B:GLM + MiniMax 方案 C:MiniMax + GLM
执行者(Claude Code) GLM-5(智谱 API) GLM-5(智谱 API) MiniMax-M3(MiniMax API)
审稿人(Skill 工具) mcp__codex__codex mcp__llm-chat__chat mcp__llm-chat__chat
需要 OpenAI API? 是 否 否

配置步骤

第 1 步:安装 Claude Code

bash
npm install @anthropic-ai/claude-code

第 2 步:克隆 MCP Servers

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git
cd Auto-claude-code-research-in-sleep/mcp-servers/llm-chat
pip install -r requirements.txt
cd ../..

第 3 步:配置 `~/.claude/settings.json`

编辑 ~/.claude/settings.json:

bash
nano ~/.claude/settings.json

添加以下配置:

json
{
    "env": {
        "ANTHROPIC_AUTH_TOKEN": "your_minimax_api_key",
        "ANTHROPIC_BASE_URL": "https://api.minimax.io/anthropic",
        "API_TIMEOUT_MS": "3000000",
        "ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-M3",
        "ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-M3",
        "ANTHROPIC_DEFAULT_OPUS_MODEL": "MiniMax-M3"
    },
    "mcpServers": {
        "llm-chat": {
            "command": "python",
            "args": [
                "/path/to/mcp-servers/llm-chat/server.py"
            ],
            "env": {
                "LLM_API_KEY": "your_glm_api_key",
                "LLM_BASE_URL": "https://open.bigmodel.cn/api/paas/v4/",
                "LLM_MODEL": "GLM-5",
                "LLM_SERVER_NAME": "glm"
            }
        }
    }
}

注意:将 /path/to/mcp-servers/llm-chat/server.py 替换为实际路径。

保存:Ctrl+O → Enter → Ctrl+X

第 4 步:验证配置

bash
# 启动 Claude Code
claude

# 验证 MiniMax 连接
> 请简单介绍一下你自己,告诉我你是什么模型

# 验证 GLM MCP
> 请使用 mcp__glm__chat 工具审查一段简单的代码

配置说明

执行者配置(MiniMax)

配置项 值 说明
ANTHROPIC_AUTH_TOKEN MiniMax API Key 从 MiniMax 开放平台 获取
ANTHROPIC_BASE_URL https://api.minimax.io/anthropic MiniMax Anthropic 兼容端点
ANTHROPIC_DEFAULT_*_MODEL MiniMax-M3 使用 MiniMax-M3 作为所有模型

审稿人配置(GLM via llm-chat MCP)

配置项 值 说明
LLM_API_KEY GLM API Key 从 智谱开放平台 获取
LLM_BASE_URL https://open.bigmodel.cn/api/paas/v4/ GLM OpenAI 兼容端点
LLM_MODEL GLM-5 使用 GLM-5 作为审稿模型
MCP 工具 mcp__glm__chat 调用 GLM 进行审稿

API 密钥获取

MiniMax API Key

  1. 访问 MiniMax 开放平台
  2. 注册/登录账号
  3. 进入「API 密钥管理」
  4. 创建新的 API Key

GLM API Key

  1. 访问 智谱开放平台
  2. 注册/登录账号
  3. 进入「API Keys」页面
  4. 创建新的 API Key

工作流程

text
┌─────────────────────────────────────────────────────────────┐
│                    Auto-claude-code-research                │
│                    (Sleep Mode Research)                    │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
              ┌───────────────────────────────┐
              │      MiniMax-M3               │
              │      (Executor)               │
              │                               │
              │  • 理解研究任务                 │
              │  • 执行代码编写                 │
              │  • 运行测试验证                 │
              │  • 生成研究报告                 │
              └───────────────────────────────┘
                              │
                              ▼
              ┌───────────────────────────────┐
              │      GLM-5 (via llm-chat)    │
              │      (Reviewer)               │
              │                               │
              │  • 代码质量审查                │
              │  • 逻辑正确性验证              │
              │  • 安全漏洞检查                │
              │  • 改进建议生成                │
              └───────────────────────────────┘
                              │
                              ▼
              ┌───────────────────────────────┐
              │         最终输出               │
              │    (代码 + 报告 + 审查意见)    │
              └───────────────────────────────┘

关键区别

此方案与方案 B 的关键区别:

方案 B:GLM + MiniMax 方案 C:MiniMax + GLM
审稿人 API MiniMax OpenAI 兼容 API GLM OpenAI 兼容 API
MCP 工具 mcp__codex__codex mcp__glm__chat
模型 MiniMax-M3 GLM-5

常见问题

Q: MiniMax API 返回错误

检查以下几点:

  • API Key 是否正确配置
  • Base URL 是否正确(注意末尾的 /)
  • 账户余额是否充足

Q: GLM MCP 未生效

确保:

  • llm-chat/server.py 路径正确
  • Python 依赖已安装 (pip install -r requirements.txt)
  • mcp__glm__chat 工具可用
  • 网络可访问智谱 API 端点

参考


此配置方案由社区贡献,适用于 Auto-claude-code-research-in-sleep 项目


NARRATIVE REPORT EXAMPLE (`docs/NARRATIVE_REPORT_EXAMPLE.md`)

Narrative Report: Attention Sparsity Patterns in Long-Context Transformers

This is a sample NARRATIVE_REPORT.md for demonstrating /paper-writing (Workflow 3). It shows the structure and level of detail that produces the best results. Replace this content with your own research.

Core Story

We investigate how attention patterns in Transformer language models change as context length increases from 2K to 128K tokens. Our key finding is that attention becomes increasingly sparse — at 128K context, 90%+ of attention mass concentrates on fewer than 5% of positions — but existing sparse attention methods (e.g., sliding window, BigBird) fail to match the learned sparsity pattern, leading to a 12-18% perplexity gap compared to full attention.

We propose Adaptive Sparsity Distillation (ASD), which learns position-dependent sparsity masks from a full-attention teacher at short context, then generalizes to long context at inference. ASD closes 70% of the sparse-vs-full gap while using 8× less memory than full attention.

Claims

  1. Attention sparsity increases with context length: At 2K tokens, top-5% positions capture 60% attention mass; at 128K, they capture 93%. This is consistent across model sizes (125M to 7B) and training data.

  2. Fixed-pattern sparse attention is suboptimal: Sliding window (W=512) captures only 40% of the learned sparse pattern at 128K context, explaining the persistent perplexity gap (14.2 vs 12.6 full attention on PG-19).

  3. ASD transfers short-context sparsity to long context: Distilled masks from 4K context generalize to 128K with 85% overlap, because the sparsity pattern is largely position-relative (not position-absolute).

  4. ASD achieves favorable quality-efficiency tradeoff: 13.1 PPL (vs 12.6 full, 14.2 sliding window) at 8× memory reduction on PG-19 128K.

Experiments

Setup

  • Models: GPT-2 125M (pilot), Llama-2 7B (main)
  • Data: PG-19 (books, long documents), GovReport (summarization), SCROLLS (long-range QA)
  • Hardware: 8× A100 80GB, DeepSpeed ZeRO-3
  • Baselines: Full attention, sliding window (W=128/256/512), BigBird, Longformer, StreamingLLM

Experiment 1: Sparsity Measurement (Figure 1)

Measured attention entropy and top-k concentration at context lengths [512, 1K, 2K, 4K, 8K, 16K, 32K, 64K, 128K].

Results (Llama-2 7B, PG-19, averaged over layers 8-24):

Context Length Attention Entropy (bits) Top-5% Mass Top-1% Mass
512 5.82 0.48 0.21
2K 5.14 0.61 0.33
8K 4.31 0.77 0.49
32K 3.52 0.88 0.62
128K 2.87 0.93 0.71

Interpretation: Entropy drops ~50% from 512 to 128K. Sparsity is not uniform across layers — early layers (1-4) remain relatively dense; middle and late layers (8-32) become extremely sparse.

Experiment 2: Fixed-Pattern Overlap Analysis (Figure 2)

Computed overlap between each fixed-pattern method's attention mask and the actual learned attention pattern (thresholded at top-5%).

Method Overlap @ 2K Overlap @ 32K Overlap @ 128K
Sliding Window (W=512) 0.72 0.51 0.40
BigBird (W=256, G=64) 0.68 0.55 0.44
Longformer (W=256, G=64) 0.69 0.54 0.43
StreamingLLM (S=4) 0.35 0.28 0.25

Interpretation: All fixed patterns degrade with context length. Sliding window is best at short context but degrades fastest. The mismatch explains the perplexity gap.

Experiment 3: ASD Distillation (Figure 3, Table 1)

Trained ASD masks from 4K full-attention teacher, evaluated at [4K, 16K, 32K, 64K, 128K].

Table 1: Perplexity on PG-19

Method 4K 16K 32K 64K 128K Memory (128K)
Full Attention 11.2 11.8 12.1 12.3 12.6 80 GB
Sliding Window (W=512) 11.5 12.8 13.4 13.8 14.2 10 GB
BigBird 11.6 12.6 13.1 13.5 13.9 12 GB
StreamingLLM 12.4 13.8 14.5 15.1 15.8 8 GB
ASD (ours) 11.3 12.0 12.4 12.7 13.1 10 GB

Gap closed: (14.2 - 13.1) / (14.2 - 12.6) = 69% of the sliding-window-to-full gap.

Experiment 4: Mask Transfer Analysis (Figure 4)

Measured how well 4K-distilled masks generalize to longer contexts.

Evaluation Length Mask Overlap with Full-Attention Top-5% ASD PPL Full PPL
4K (train) 0.95 11.3 11.2
16K 0.91 12.0 11.8
32K 0.88 12.4 12.1
64K 0.86 12.7 12.3
128K 0.85 13.1 12.6

Interpretation: Overlap degrades gracefully (95% → 85%), not catastrophically. Masks are position-relative patterns (e.g., "attend to tokens at distance ±50 and ±200") that transfer well.

Experiment 5: Downstream Tasks (Table 2)

Task Full Attn SW-512 ASD Random Sparse
GovReport (R-L) 34.2 30.1 33.4 25.8
SCROLLS (QA F1) 41.5 35.2 39.8 28.4
BookSum (R-L) 28.7 24.3 27.1 20.5

ASD consistently outperforms fixed-pattern baselines and approaches full attention.

Experiment 6: Ablation — Distillation Context Length (Figure 5)

Distilled from different teacher context lengths, evaluated at 128K:

Teacher Context 128K PPL Mask Overlap @ 128K
1K 13.8 0.78
2K 13.5 0.81
4K 13.1 0.85
8K 13.0 0.86
16K 12.9 0.87

Diminishing returns beyond 4K — ASD is practical because it only needs short-context distillation.

Figures

  1. Figure 1: Line plot — attention entropy vs context length (log-scale x-axis), separate lines for layer groups (early/middle/late). Shows the sparsity increase.
  2. Figure 2: Heatmap — overlap matrix (method × context length). Shows fixed patterns degrade.
  3. Figure 3: Bar chart — PPL comparison across methods at 128K. Main result.
  4. Figure 4: Line plot — mask overlap vs evaluation length. Shows graceful degradation.
  5. Figure 5: Line plot — teacher context vs 128K PPL. Shows diminishing returns.
  6. Table 1: Main results table (Experiment 3). Already in LaTeX-ready format.
  7. Table 2: Downstream tasks table (Experiment 5).

Known Weaknesses

  • Only evaluated on English text (PG-19, GovReport). Multilingual and code domains untested.
  • ASD adds a distillation phase (~2 GPU-hours on 8×A100). Not zero-cost.
  • Comparison with concurrent work (MInference, Quest) incomplete — these appeared after our experiments.
  • Theoretical justification for why position-relative patterns generalize is informal (Section 4.3 is hand-wavy).
  • Sparse Attention: BigBird (Zaheer et al., NeurIPS 2020), Longformer (Beltagy et al., 2020), StreamingLLM (Xiao et al., ICLR 2024)
  • Long Context: RoPE scaling (Chen et al., 2023), YaRN (Peng et al., ICLR 2024), LongRoPE (Ding et al., 2024)
  • Attention Analysis: Attention is not Explanation (Jain & Wallace, NAACL 2019), quantifying attention flow (Abnar & Zuidema, ACL 2020)
  • Efficient Attention: FlashAttention (Dao et al., NeurIPS 2022), FlashAttention-2 (Dao, ICLR 2024), Ring Attention (Liu et al., 2024)
  • Knowledge Distillation for Efficiency: DistilBERT (Sanh et al., 2019), TinyBERT (Jiao et al., EMNLP 2020)

Proposed Title

"Attention Sparsity Scales with Context: Distilling Adaptive Sparse Masks for Long-Range Transformers"

Target Venue

ICLR 2027


OPENCLAW ADAPTATION (`docs/OPENCLAW_ADAPTATION.md`)

OpenClaw 适配指南(ARIS Workflow)

目标:在没有 Claude Code slash 技能的情况下,把 ARIS 的核心流程迁移到 OpenClaw 对话式执行。

1. 适配思路

ARIS 的本质是「科研流程编排」:

  • Workflow 1:文献 → 想法 → 新颖性/可行性评估
  • Workflow 2:实验执行 → 自动评审循环 → 迭代修复

在 OpenClaw 中,可用“阶段化任务 + 文件化产出”替代 slash skill。


2. 对应关系(ARIS → OpenClaw)

ARIS /skill OpenClaw 等价执行方式 产出文件
/research-lit 让 agent 执行文献扫描与结构化综述 outputs/lit_scan.md
/idea-creator 让 agent 生成候选方案 + MVP + 失败信号 outputs/idea_report.md
/run-experiment 生成实验矩阵、运行命令、日志路径规范 outputs/experiment_plan.md / outputs/runbook.md
/auto-review-loop 轮次化评审(评分+最小修复动作) outputs/review_loop.md
全流程 分阶段串联执行 outputs/final_summary.md

3. 最小可跑流程(可直接复制)

阶段1:文献扫描

text
执行阶段1:按课题做文献扫描,输出 outputs/lit_scan.md,并给出5条研究空白。

阶段2:想法生成

text
执行阶段2:基于 outputs/lit_scan.md 生成3个 idea,输出 outputs/idea_report.md,并给出 Top1/Top2。

阶段3:实验剧本

text
执行阶段3:基于 Top1 生成实验矩阵与周计划,输出 outputs/experiment_plan.md 和 outputs/runbook.md。

阶段4:评审循环

text
执行阶段4:开始 review loop,最多4轮;每轮输出评分、短板、最小修复动作,更新 outputs/review_loop.md。

4. OpenClaw 实施建议

  1. 文件优先:每阶段必须有明确文件产出,避免上下文漂移。
  2. 轮次控制:review loop 默认最多 4 轮,避免无穷迭代。
  3. 证据可追溯:涉及史料/数据时,强制记录来源与定位字段。
  4. 同步机制:本地文件可同步到飞书文档,便于跨端审阅。
  5. 升级安全:修改前先做备份提交,再做正式改动提交。

OPENROUTER GUIDE (`docs/OPENROUTER_GUIDE.md`)

OpenRouter Integration Guide

This document explains how to use OpenRouter as an ARIS reviewer backend through the existing llm-chat MCP server. This is useful when you want a free or pay-as-you-go alternative for review calls without replacing ARIS's default assurance routing.

For mandatory audit gates, keep ARIS's default Codex MCP reviewer unless you have made a deliberate, audited routing change. Executor and reviewer must be pinned to different model families.


Background

What is OpenRouter

OpenRouter is a unified AI model API gateway that provides:

  • 200+ models: OpenAI, Anthropic, Google, DeepSeek, MiniMax, Qwen, and more
  • Free models: Some models offer free tiers, such as minimax/minimax-m2.5:free
  • Unified interface: Standard OpenAI-compatible API, one key for many model providers
  • Transparent pricing: Free models plus pay-as-you-go billing
Model Provider family Purpose Notes
minimax/minimax-m2.5:free MiniMax Reviewer Good free reviewer candidate when executor is not MiniMax
meta-llama/llama-3.1-70b-instruct Meta Llama Reviewer Paid pinned fallback when executor is not Llama

Full model list: https://openrouter.ai/models

Use a pinned model ID rather than the Free Models Router for any skill that emits an assurance-gated verdict, and ensure executor and reviewer pin to different model families.


Dual-Layer Architecture

text
┌──────────────────────────────────────────────────────────┐
│                    Claude Code (CLI)                      │
│                                                           │
│  ┌──────────────────┐       ┌─────────────────────────┐  │
│  │     Executor     │──────▶│        Reviewer          │  │
│  │  (Claude CLI)    │       │   (llm-chat MCP)         │  │
│  │                  │       │                         │  │
│  │  ANTHROPIC_*     │       │  LLM_* environment       │  │
│  │  variables       │       │  variables               │  │
│  └──────────────────┘       └─────────────────────────┘  │
└──────────────────────────────────────────────────────────┘
Role Protocol Endpoint
Executor Anthropic-compatible Anthropic, OpenRouter, or another Claude Code-compatible endpoint
Reviewer OpenAI-compatible https://openrouter.ai/api/v1 through llm-chat

OpenRouter should be treated as an opt-in reviewer backend via /auto-review-loop-llm. Production audit and assurance skills that depend on cross-family review should stay on mcp__codex__codex unless reviewer routing is intentionally changed and re-audited.


Getting an API Key

  1. Visit OpenRouter to register an account.
  2. Go to the Keys page and create an API key.
  3. Key format: sk-or-v1-xxxxxxxxxxxxxxxx.
  4. Free models can be used without deposit, subject to OpenRouter's current limits.

Installation Steps

Prerequisites

  • Claude Code CLI installed: npm install @anthropic-ai/claude-code
  • Python 3 available
  • OpenRouter API key obtained
  • A local ARIS checkout

Step 1: Clone ARIS

bash
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.git /path/to/aris_repo
cd /path/to/aris_repo

Step 2: Install Python Dependencies

bash
pip3 install -r mcp-servers/llm-chat/requirements.txt

Step 3: Install ARIS Skills with the Standard Installer

bash
# Standard ARIS install: points symlinks from a target project into this ARIS repo.
bash /path/to/aris_repo/tools/install_aris.sh /path/to/your-project

Do not pass $PWD from inside the ARIS repo itself. The installer should target your paper or experiment project, not the ARIS checkout. It manages per-skill symlinks, the installed-skill manifest, the .aris/tools/ helper chain (plus the global pointer file ~/.aris/repo, which lets the same chain resolve even for a global copy-install with no per-project manifest), and reconcile/uninstall/migration paths.

Step 4: Deploy the llm-chat MCP Server

bash
mkdir -p ~/.claude/mcp-servers/llm-chat
cp mcp-servers/llm-chat/server.py ~/.claude/mcp-servers/llm-chat/server.py

This manual copy is only for the MCP server, which install_aris.sh does not manage. Do not copy skills/* by hand.

Step 5: Configure `~/.claude/settings.json`

Option A: Executor also uses OpenRouter

Use a specific Anthropic-family model for Claude Code execution and a non-Anthropic OpenRouter model for review.

json
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-or-v1-your-openrouter-key",
    "ANTHROPIC_API_KEY": "",
    "ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "anthropic/claude-opus-4.6",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "anthropic/claude-sonnet-4.6",
    "ANTHROPIC_SMALL_FAST_MODEL": "anthropic/claude-sonnet-4.6",
    "API_TIMEOUT_MS": "3000000",
    "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "6000"
  },
  "mcpServers": {
    "llm-chat": {
      "command": "/usr/bin/python3",
      "args": ["$HOME/.claude/mcp-servers/llm-chat/server.py"],
      "env": {
        "LLM_API_KEY": "sk-or-v1-your-openrouter-key",
        "LLM_BASE_URL": "https://openrouter.ai/api/v1",
        "LLM_MODEL": "minimax/minimax-m2.5:free"
      }
    }
  }
}

Option B: Executor uses another API and reviewer uses OpenRouter (recommended)

json
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "your-executor-api-key",
    "ANTHROPIC_BASE_URL": "https://api.anthropic.com",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-6",
    "API_TIMEOUT_MS": "3000000",
    "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "6000"
  },
  "mcpServers": {
    "llm-chat": {
      "command": "/usr/bin/python3",
      "args": ["$HOME/.claude/mcp-servers/llm-chat/server.py"],
      "env": {
        "LLM_API_KEY": "sk-or-v1-your-openrouter-key",
        "LLM_BASE_URL": "https://openrouter.ai/api/v1",
        "LLM_MODEL": "minimax/minimax-m2.5:free"
      }
    }
  }
}

Path notes: Replace $HOME with the actual path, such as /root or /home/username, and confirm the python3 path with which python3.


Use in ARIS

Use the already-shipped /auto-review-loop-llm skill when you want OpenRouter-backed review:

bash
claude
> /auto-review-loop-llm "your paper topic"

Do not batch-rewrite upstream skills from mcp__codex__codex to mcp__llm-chat__chat. Skills with assurance: submission, such as production paper audits and proof/citation checks, rely on ARIS's reviewer independence contract and should remain on the default Codex MCP path unless you intentionally update reviewer routing.


Verification

1. Verify Reviewer Endpoint

bash
curl -s "https://openrouter.ai/api/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-or-v1-your-key" \
  -d '{
    "model": "minimax/minimax-m2.5:free",
    "messages": [{"role": "user", "content": "Say hello"}],
    "max_tokens": 50
  }'

Expected: JSON response containing a "choices" field.

2. End-to-End Verification in Claude Code

bash
claude
> Read the project and verify that the /auto-review-loop-llm skill is working properly

Comparison with Other Solutions

Default Coding Plan ModelScope OpenRouter
Executor Claude Opus kimi-k2.5 DeepSeek-V3 200+ models available
Reviewer GPT-6-Astra xhigh fresh thread glm-5 DeepSeek-R1 200+ pinned models available
Free Options No No Yes, 2000/day subject to current ModelScope policy (source) Yes, free models subject to OpenRouter limits
API Key Count 2 1 1 1
Model Selection Limited 4 types 1000+ types 200+ types
Pricing Pay-as-you-go Package Free Free + pay-as-you-go

OpenRouter's advantage: one key can access many reviewer model families, including free options. For ARIS audit correctness, pin the reviewer model explicitly.


FAQ

Q: What is openrouter/free?

openrouter/free is OpenRouter's Free Models Router. It auto-selects from currently available free models and may return different model families over time. It is fine for casual experiments, but do not use it for ARIS assurance-gated review.

Q: What are the limitations of free models?

Free models have rate limits and availability can change. For heavy or reproducible usage, use a paid pinned model.

Q: How do I switch reviewer models?

Modify the LLM_MODEL value in settings.json, ensure the model is from a different family than the executor, and restart Claude Code.

Q: Does OpenRouter support Claude Code execution?

OpenRouter can be used as the Claude Code executor backend for compatible models, but this guide recommends OpenRouter first as a reviewer backend through llm-chat.

Q: Why is the llm-chat MCP call failing?

Check:

  1. API key format is correct and starts with sk-or-v1-.
  2. Model ID is pinned and includes a namespace, such as minimax/minimax-m2.5:free.
  3. Account has sufficient free quota or paid balance.

References


OPENROUTER GUIDE CN (`docs/OPENROUTER_GUIDE_CN.md`)

OpenRouter 接入指南

本文档说明如何通过现有 llm-chat MCP 服务器,把 OpenRouter 作为 ARIS 的审稿后端。它适合想用免费或按量付费模型做 reviewer 的场景,但不替代 ARIS 默认的 assurance 审稿路由。

对强制审计 gate,请保留 ARIS 默认的 Codex MCP 审稿路径,除非你已经做过有意识、可审计的路由替换。执行者和审稿人必须固定到不同模型家族。


背景

OpenRouter 是什么

OpenRouter 是统一 AI 模型 API 网关,提供:

  • 200+ 模型:OpenAI、Anthropic、Google、DeepSeek、MiniMax、Qwen 等
  • 免费模型:部分模型提供免费额度,例如 minimax/minimax-m2.5:free
  • 统一接口:标准 OpenAI-compatible API,一个 Key 访问多个模型提供商
  • 价格透明:免费模型 + 按量计费

推荐审稿模型

模型 模型家族 用途 说明
minimax/minimax-m2.5:free MiniMax 审稿人 执行者不是 MiniMax 时可作为免费 reviewer 候选
`meta-llama/llama-3.1-70b-ins