1仕組みと動作原理
プロダクト全体は実行可能バイナリではなく、82個のMarkdown製「スキル」(SKILL.md)で構成:インストールは各スキルディレクトリをプロジェクトの .claude/skills/<name> にシンボリックリンクするだけで、ホストCLIのスラッシュコマンド探索機構で読み込まれ、プロンプトのオーケストレーションと確定的な少数スクリプトで振る舞いを実現。
bash Auto-claude-code-research-in-sleep/tools/install_aris.sh ~/your-project # symlinks ARIS skills into <project>/.claude/skills/
フラグシップの起点 /research-pipeline は5つのフェーズ(idea-discovery → experiment-bridge → auto-review-loop → summary → paper-writing)を連携させ、各段階の実行状態と「受入審査状態」を .aris/runs/<run_id>.json に分離して永続化することで、中断しても最初からやり直さず再開可能。
- **RESUMABLE = true** — When `true` (default), the pipeline records per-stage state to `.aris/runs/<run_id>.json` so a crashed/interrupted run can resume via `/research-pipeline — resume <run_id>` instead of restarting. Stage status splits `done` (executor finished writing) from `accepted` (the stage's cross-model gate / deterministic verifier passed); resume re-validates any `done`-but-unaccepted stage. See `shared-references/resumable-runs.md`.
「就寝中の自律実行」の運用形態:Stage 1 は日中・夕方にテーマ選定を行い、Stage 2-3(実験実装+自律査読ループ)は完全無人で実行。Stage 3 は /auto-review-loop 内部のマルチラウンドループ(デフォルト4回、スコア≥6 かつ verdict∈{ready,almost} で終了)であり、外部タイマーを不要とする。
**Sweet spot**: Run Stage 1 in the evening, launch Stage 2-3 before bed, wake up to a reviewed paper.
「外部タイマー」に対する明確な規約的制約:タイマーやハートビートは起動とタスク推進のみを担い、作業品質の合否判定は決して行わない。ハートビートが停滞を検知した場合、構造的な方向転換か人間へのエスカレーションのみが許可され、「十分である」と独断判定することは禁止。
One-liner: **a heartbeat may say "keep going," never "good enough."**
無人実行時の稼働維持と監視は確定的なデーモンに依存:GPUサーバー側では標準ライブラリ+nvidia-smiのみを用いたwatchdogが常駐し、タスク種別ごとに DEAD/IDLE/STALLED/STALE アラートを出力して summary.txt に集約、低頻度ポーリングに対応。
A lightweight Python daemon that runs on each GPU server, continuously monitoring all registered tasks. Zero dependencies beyond Python 3 standard library + `nvidia-smi`.
「査読の妥当性」を担保するクロスモデル審査団メカニズム:実行側(Claude / Codex / Cursor / Antigravity / Copilot CLI)がコードや論文を執筆し、査読側は必ず別系列のモデル(Codex MCP の GPT-6-Astra、claude-review / gemini-review MCP、または Copilot ネイティブの rubber-duck)を担当。査読呼び出しごとのスレッド/トレースIDもすべて保存。
Executor (Claude / Codex / Cursor / Antigravity / Copilot CLI) writes code & papers; reviewer (GPT-6-Astra via Codex MCP, Claude / Gemini via `claude-review` / `gemini-review` MCP, or Copilot's evidence-gated native complementary reviewer for `/auto-review-loop`) critiques independently.
「モデル組み合わせ層」は二層構造:実行側はホスト自身の ANTHROPIC_* や各社互換エンドポイントの環境変数を使用し、査読側は同梱のMCPブリッジ(llm-chat / minimax-chat / gemini-review / claude-review)を経由。これにより、実行と査読で完全に異なる事業者やAPIキーを併用可能。
本指南说明如何自由搭配 Claude Code 执行器和外部审查器的 API。
実験の本格的な実行はBashからリモート/クラウドGPUを直接制御:ssh + rsync + screen によるデプロイ、vast.ai インスタンスのオンデマンド調達(自動破棄・予算上限付き)、または Modal サーバーレスGPUに対応。判断基準はプロジェクトの CLAUDE.md 内の gpu: local|remote|vast|modal 設定。
- **Vast.ai** (`gpu: vast`): Check for `vast-instances.json` at project root — if a running instance exists, use it. Also check `CLAUDE.md` for a `## Vast.ai` section.
エージェント向けの全体インデックスとして AGENT_GUIDE.md(LLM向け構造化ルーティング)を配置し、「SKILL.md こそが正式仕様であり、ガイドと競合した場合は SKILL.md を優先する」と明記することで、大規模リポジトリにおけるコンテキストの乖離を抑制。
> **Source of Truth.** This file is a *routing index*, not a specification.
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| cli | codex(OpenAI Codex CLI,`codex exec` 子进程) |
| cli | vastai(vast.ai 租机 CLI) |
| cli | modal(Modal 无服务器 GPU) |
| cli | ssh / rsync / screen / nvidia-smi(远程 GPU 服务器部署与巡检) |
| cli | rsync 代码同步(远端部署路径之一) |
| cli | LaTeX 工具链(latexmk / pdfinfo / pdffonts,论文编译与体检) |
| api | Anthropic 兼容端点(执行器侧,可用官方或第三方兼容网关) |
| api | OpenAI 兼容 LLM API(llm-chat MCP,可指向 OpenAI/DeepSeek/Kimi/MiniMax/自建兼容端点) |
| api | DeepSeek(经 llm-chat 作为审查器后端) |
| api | Moonshot / Kimi(经 llm-chat 作为审查器后端) |
| api | MiniMax Chat(minimax-chat MCP,/auto-review-loop-minimax 的专用后端) |
| api | Google Gemini(gemini-review MCP,直接 API 生成端点) |
| api | Feishu / Lark 机器人 webhook(推送通知) |
| api | Exa 搜索 API(exa-py SDK;/exa-search 与 /research-lit 的 sources: exa) |
| api | Semantic Scholar Graph API(论文检索) |
| api | OpenAlex API(引用图谱检索) |
| api | arXiv(元数据 API + PDF 下载) |
| api | CrossRef / DBLP(真实 BibTeX 校验,反幻觉引用) |
| api | Weights & Biases(训练曲线回读;由 monitor-experiment / training-check 调用) |
| api | Overleaf Git 桥(论文双向同步,凭 keychain/token) |
| network | 本地 HTTP 服务(人工审查 MCP 在 127.0.0.1 开浏览器审批页;飞书桥默认 5000 端口) |
| package | lark-oapi(Python 飞书 SDK,feishu-bridge 依赖) |
| package | httpx(llm-chat / minimax-chat 的 HTTP 客户端) |
| package | deepxiv-sdk(可选:渐进式论文阅读技能 /deepxiv) |
4推奨統制措置と判定根拠
- 本地凭据 / 浏览器配置: ユーザーのログインCookie/セッション/キーチェーンの読み取り: Overleafトークン: システムキーチェーン経由で取得(tools/overleaf_setup.sh が macOS keychain から取得、overle
- scripts/: ローカルスクリプトまたはコマンドの実行: mcp-servers/codex-exec/server.py: サブプロセスとして `codex exec` を反復実行(argv = [CODEX_BIN,
- 网络端点: 外部ネットワークアクセスの宣言: api.anthropic.com / api.z.ai / api.moonshot.cn / api.longcat.chat(実行側の ANTH
- 本地工作目录: ファイルの読み書きと成果物出力: .aris/runs/<run_id>.json(フェーズ状態と検収記録)および .aris/runs/<run_id>.iterations.jsonl(停止基準ログ)
5二重目の独立検証
- [ok] skill.path 定位(旗舰入口选择) — 候选与判据:① 仓库根——glob 确认无 SKILL.md、无 plugin.json/.claude-plugin 清单,且 skills/ 下是 82 个平级技能目录(多入口多技能插件),按共享路径规则不取根;② skills/research-pipeline——README 快速开始的单命令总入口写的是 `/research-pipeline "your research direction" # Full pipeline: Workflow 1 → 1.5 → 2 → 3 end-to-end`,docs/SKILLS_CATALOG.md 的『🏗️ Workflow Orchestrators』一节以 '**Most users start here.**' 开头并把 /research-pipeline 列为第一条('**Full chain** — Workflow 1 → 1.5 → 2 → 3, from research direction to submission-ready paper'),AGENT_GUIDE.md 亦写 'Main chain: /research-pipeline = W1 → W1.5 → W2 → W3'——三处独立证据一致指向它;③ skills/idea-discovery(W1)与 skills/auto-review-loop(W2,『睡觉跑』本体)——都是它的下游子技能,按『never a sibling sub-skill』规则不取。结论:取 skills/research-pipeline 作为旗舰条目。
- [ok] pin commit 与本地工作副本一致 — git rev-parse HEAD 输出 15b9b27de6e265a058e875bbf15b09bf8a522aa3,与任务给定 pin 逐字符相同;未执行任何写操作。
- [ok] license 元数据 — 仓库根 LICENSE 首行 'MIT License'、'Copyright (c) 2026 wanshuiyin',与任务给定 MIT 一致。
- [ok] 『82 skills』声明的真实性 — skills/ 下 86 个目录 − 4 个非技能目录(shared-references 与三个 skills-codex* 镜像/叠加层)= 82,与 README:612 与 docs/SKILLS_CATALOG.md 的 82 完全对齐;README 顶部另一处提到 '81 bundled skills' 指的是 ARIS-Code CLI 二进制内置包,与本仓库 main 树的 82 个目录不是同一口径,已在结论中按 main 树口径采信。
- [ok] 外部依赖:codex 审查器确实是本地子进程而非文档承诺 — mcp-servers/codex-exec/server.py 源码含 `argv = [CODEX_BIN, "exec"]`、`subprocess.Popen(argv, ...)`、`shutil.which(CODEX_BIN)`,且 CODEX_BIN 默认为 'codex';README/AGENT_GUIDE 关于『codex-cli 0.154 删除 codex mcp-server 后由本仓库自带桥接管』的叙述与代码一致。
- [ok] 外部依赖:审查器端点逐个可定位 — LLM(llm-chat)、MiniMax、Gemini 三处端点均来自各自 server.py 的 os.environ 默认值或请求构造行;Exa 走 SDK(仅 EXA_API_KEY + exa-py 可见,无硬编码域名,已在 endpoint 字段标明 exa.ai 而非杜撰 API 路径);arXiv/CrossRef/S2/OpenAlex 均命中 tools/*.py 的常量。
- [discrepancy] 凭证读取:是否存在未披露的密钥读取 — 第一遍只列了环境变量与 ~/.gemini/.env、~/.claude/feishu.json。第二遍补到三处未在首轮列出的读取面:① ~/.codex/config.toml(README 明确 reviewer 模型来源,属读取用户 LLM 凭证/配置);② ~/.modal.toml 与 vastai 的 API key 文件(serverless-modal / vast-gpu 技能要求);③ 全局指针 ~/.aris/repo 与项目 .aris/installed-skills.txt(被技能 bash 块读取以解析 helper 路径)。三者均为『本地配置/凭证文件读取』,已并入 security.credential_reads,结论档位不变(橙色本就因凭证接触面)。
- [ok] 注入面:是否真的做了防御而非只在文档里写 — tools/threat_scan.py 实现存在(regex、scope all/context/strict、quarantine 返回占位符 + findings),且 skills/idea-creator/SKILL.md 的 'ARIS_QUERY_PACK_SCAN_START … END' bash 块真的解析并调用它、扫描失败时跳过 wiki 上下文;skills/shared-references/injection-hygiene.md 给出『干净扫描≠安全』与分档 warn/block 规则。防御是落地的,不是宣言。
6結論
bbe5d4e4e1f79f79…