Research CI を初めて使う研究者向けの説明と、使い始めるまでに必要な設定の手順です。 上から順に進めれば、最後に自分の Claude から最初の run を回せる状態になります。
ソフトウェアの CI がコードの変更を自動でテストするように、研究の「問い」をゲートにかけて検査する仕組みです。 あなたが書いた未発表の研究状態(Research Seed)を出発点に、モデルが問いの候補を作り、 Novelty Gate で「本当に新しいか・既知の系ではないか」を判定し、生き残った問いだけを最小の検証(Witness)まで進めます。
run の前に、あなた自身の3つのソースを読みます。ソースが読めなかった場合は「読めなかった」と明示され、 空の結果を「新規性の証拠」として扱うことはありません。
| ソース | 役割 |
|---|---|
| 📚 Zotero | 何を「新しい」と呼んではならないか(先行研究の発見用インデックス) |
| 🗒 Notion | 何が既知で何が未解決か。既存の問いと、kill 済みの問いの記録 |
| 💻 GitHub | 実際に何を計算・証明・反証したか(seed と、seed が指すファイル・直近 commit) |
| 構成要素 | 役割 |
|---|---|
| あなたの Claude | MCP 経由で Research CI のツールを呼び、問いを作り、判定を提出する「運転手」 |
| Research CI Core | 三源を読み、ルール付きのプロンプトを渡す。結果を Notion の Research Questions DB に記録する |
| Research CI Gateway | 本人確認、各サービスへの接続、Preflight、そして FAIL policy の執行(モデル側からリセットできない) |
| zotero-user-<あなたのID> | あなた専用の Zotero 接続サービス。API key はここにだけ置かれる |
user_id と招待リンクを受け取った方のみ使えます。domain: quantum(量子研究)のみ。visibility: private のみ。breedable / open は受理されません。本人 はあなたが行う作業、運営者 は運営者側で行う作業です。
user_idzotero-user-<user_id> がある Railway project への招待rci_... と MCP の URLGitHub に seed 用の private repository を用意し、ルートに seed.md を置きます。
これは論文の草稿ではなく、あなたの現在の研究状態です。問い生成は「手持ちの結果の中の異常」から出発するので、
結果・計算・失敗例のセクションが最も効きます。
---
seed_id: my-research-seed
title: A one-line statement of what this seed is about
domain: quantum
visibility: private
owner: your-github-handle
---
## Problem
## Current claim / hypothesis
## Known results
## Assumptions
## Open questions
## Existing calculations
## Relevant literature
## Failure cases / counterexamples
| 区分 | セクション |
|---|---|
| 必須 | Problem / Current claim / Assumptions / Open questions — 欠けると REJECTED |
| 内部証拠 | Known results / Existing calculations / Failure cases の少なくとも1つ — 全部空だと INCOMPLETE |
| 推奨 | Relevant literature — Novelty Gate が「新しいと呼べないもの」の出発点にする |
TODO / TBD / HTML コメントだけのセクションは空とみなされます。Core が手元にある場合は push 前に検証できます:
research-ci seed validate ./seed.md # READY=0 / INCOMPLETE=1 / REJECTED=2
Personal Access Token は預かりません。Gateway は App から1時間で失効するトークンをその都度発行します。
結果は常に research-ci/<seed>-<run> ブランチの Pull Request として届き、main へ直接 push されることはありません。
Research Questions にしてください。
同名の DB が複数あると、どれを使うかを CI は勝手に選ばず、確認を求めます。
また Status と Lifecycle は Select 型である必要があります
(Notion が既定で提案する組み込みの「Status 型」では読み込みが失敗します)。新規作成に任せるのが確実です。開発版では、Zotero の資格情報をご本人が自分専用のサービス zotero-user-<user_id> に登録します。
key は Gateway にも運営者にも渡りません。
ZOTERO_LIBRARY_ID です(ユーザー名ではありません)。research-cizotero-user-<あなたの user_id> を選びます。他の人のサービスは開かないでください。| 変数 | 値 |
|---|---|
ZOTERO_API_KEY | 4-1 で発行した key |
ZOTERO_LIBRARY_ID | 個人ライブラリ: 4-1 で控えた user ID(数字) グループ: zotero.org/groups/<数字>/... の数字 |
ZOTERO_LIBRARY_TYPE | user(個人ライブラリ、既定)または group |
Zotero credential check: OK と出れば成功です。EXTERNAL_URL / PORT / HEALTH_PORT などの他の変数は変更しないでください。
また、このサービスに public domain を追加しないでください(private network からのみ到達する設計です)。| ログの表示 | 意味と対処 |
|---|---|
HTTP 403 / 404 | key・ID・TYPE のどれかが違います。ID がユーザー名になっていないか、グループなのに user のままでないかを確認 |
ZOTERO_API_KEY is required | 変数名の綴り違い、または値が空です |
degraded | 起動時に Zotero API に届かず key を検証できていません。再デプロイしてください。この状態では Preflight は通りません |
5項目すべてが ok のときだけ STATUS = READY になります。接続後は Claude から research_ci_preflight でも確認できます。
| チェック | 失敗したときに見る所 |
|---|---|
github_readable | GitHub App がインストールされ、repo が許可されているか(手順 2) |
notion_readable | Notion を認可し、1ページ以上共有しているか(手順 3) |
zotero_readable | ログに credential check: OK が出ているか(手順 4) |
project_binding_valid | seed repo が App の許可範囲に入っているか |
ci_write_target_valid | 書き込み先 repo に push 権限があるか |
rci_ で始まる)を受け取ります。表示は一度きりなので、パスワードマネージャーに保存してください。有効期限は既定で 90 日です。https://…/mcp の形)を登録します。rci_... トークンを貼って Connect を押します。research_ci_preflight などが表示されれば完了です。このトークンはあなた自身の user_id にしか届きません。他の人の研究状態は読めませんし、他の人からあなたの状態も読めません。
Claude に例えば次のように頼みます。
Research CI で preflight を確認してから、私の seed の context を読み、
run を開いて問いの候補を作ってください。各候補は gate に提出し、
結果は Research Questions DB に記録してください。
Claude は通常、次の順にツールを呼びます。
| ツール | 内容 |
|---|---|
research_ci_preflight | 接続が READY か確認 |
research_ci_get_context | seed・三源・Gate 0〜2 のルールを取得。候補はここからだけ作る |
research_ci_open_run | run を開始し、使える予算を受け取る |
research_ci_submit_gate | 判定を1件ずつ記録。候補を kill できるのはこれだけ |
research_ci_record_question | 生き残った候補も kill された候補も Notion に記録。既定は dry run で、commit=true のときだけ実際に行が作られる |
research_ci_killed_questions | この seed でこれまでに kill された問いの一覧(run をまたぐ) |
Notion の行は Target Journal = Exploratory、Security = Confidential など保守的な値で作られ、
Last Human Review は空のままです。内容を確認するのはあなたです。
以下は「お願い」ではなく Gateway 側で執行されます。モデルが言い換えても、新しい run を開いても回避できません。
| 判定 | 意味 |
|---|---|
PASS | 必要条件を満たした |
PASS WITH NARROWING | claim を狭めれば生きる |
HOLD | 有望だが証明・計算・確認が未完了(未検証の計算を PASS と書かないための判定) |
FAIL | 不成立。理由(fail_kind)で扱いが変わる |
prior_art / natural_corollary / reformulation / internal_duplication。その候補は死に、同じ seed では以後の run でも復活しません。robustness / scope。claim の narrowing が1回だけ許されます。fail_kind の無い FAIL は致命扱いです。prior_art で kill するには外部一次ソースの証拠が必要です(DOI / arXiv / 出版社ページを実際に読み、先行研究の具体的な主張と衝突の理由を書く)。
Zotero にある・キーワードが一致した、だけでは kill できず、その場合候補は生き残ります。※ Zotero は「発見のための索引」であって新規性の権威ではありません。 ライブラリに無いことは新しいことの証拠ではなく、ライブラリにあることは先行研究が候補を沈める証拠ではありません。
| 資格情報 | どこにあるか |
|---|---|
| GitHub | PAT は預かりません。App から1時間有効のトークンを都度発行 |
| Notion | OAuth トークンを Gateway 内で暗号化して保管。Core やモデルには渡りません |
| Zotero API key | あなたの zotero-user-<id> の Railway Variables だけ |
rci_ トークン | あなたの手元だけ。Gateway はハッシュしか持たず、再表示できません |
rci_ トークンを、Notion・GitHub(seed や issue を含む)・Slack・Claude との会話に貼らないでください。
漏れた可能性がある場合は、Zotero key は zotero.org/settings/keys で削除して再発行し、
rci_ トークンは運営者に失効を依頼してください。| 症状 | 対処 |
|---|---|
| 招待リンクが開けない | 有効期限(7日)切れです。運営者に再発行を依頼。接続済みの項目を再度つなぐと上書きされる点に注意 |
| seed が INCOMPLETE | Known results / Existing calculations / Failure cases のどれかを実際の内容で埋める |
| seed が REJECTED | 必須セクションの欠落、または domain / visibility が β0 の範囲外 |
| Notion の DB を作れない | Research CI に共有したページが無い、または候補ページが複数ある。親にしたいページを運営者に伝える |
| Notion に行が増えない | record_question が dry run のまま。commit=true で記録するよう Claude に頼む |
| コネクタ接続で弾かれる | rci_ トークンの期限切れ・失効・貼り間違い。運営者に再発行を依頼 |
| 「読めなかったソース」と出る | 該当サービスの接続を確認し、Preflight をやり直す。この状態の run では確信度が低く扱われます |
解決しない場合は、秘密情報を含めずに症状・時刻・run ID を添えて運営者に連絡してください。