Skip to main content
Glama
co-scientist-plugin

co-scientist-plugin

co-scientist plugin

코딩 에이전트 내부에서 멀티 에이전트 과학 연구 엔진을 실행하세요.

Claude Code, Codex CLI, Cursor, VS Code, Copilot 및 Kiro가 AI co-scientist 엔진을 구동할 수 있게 해주는 Agent Plugins 1.0 패키지입니다: 가설을 생성하고, 검토하고, Elo 토너먼트에서 순위를 매기고, 승자를 진화시키고, 종합 결과를 다시 읽어옵니다.

tests Python 3.11 to 3.13 License: Apache 2.0 Agent Plugins 1.0

설치 · 에이전트가 얻는 것 · 설계 원칙 · ScientistOS와 함께 사용 · 기여하기


아이디어

AI co-scientist 엔진은 Gottweis 외, Nature, 2026의 오픈 재구현입니다. 연구 목표를 받아 여섯 개의 전문 에이전트를 실행합니다: 생성(Generation), 반성(Reflection), 순위(Ranking), 진화(Evolution), 근접성(Proximity), 메타 검토(Meta-review)이며, Supervisor가 내구성 있는 SQLite 작업 큐를 통해 일정을 관리합니다.

그 엔진에는 CLI가 있습니다. 이 패키지는 에이전트 지향 인터페이스를 제공하므로, 명령을 직접 입력하는 대신 Claude Code나 Codex가 엔진을 구동할 수 있습니다:

you    → "review hypothesis 3 in that Crohn's session and tell me what breaks"
agent  → reads the hypothesis, searches the literature, applies the rubric,
         records the review into the engine's database, reports the verdict

에이전트가 작성한 검토는 이제 엔진 자체의 Reflection 에이전트가 쓰는 것과 동일한 테이블의 행이 됩니다. 토너먼트에 집계됩니다. 메타 검토가 이를 확인할 수 있습니다.

Related MCP server: multivon-mcp

에이전트가 얻는 것

하나의 MCP 서버에 열다섯 개의 도구가 있습니다:

그룹

도구

수명주기

session_start · session_resume · session_pause · session_abort · session_list · session_status

읽기

hypotheses_list · hypothesis_get · overview_get

쓰기

hypothesis_record · review_record · match_record · feedback_add

진단

estimate_cost · doctor

도구가 처리할 수 없는 판단을 담은 일곱 개의 스킬:

스킬

기능

running-research-sessions

모호한 목표를 실제 목표로 다듬고, 실행 규모에 따라 게이트를 걸고, 시작하고 모니터링합니다

reading-research-overviews

다섯 가지 알려진 실패 모드를 확인하며 순위 결과를 정직하게 읽습니다

reviewing-hypotheses

점수 기준과 판정 결정 규칙이 있는 루브릭으로 검토한 후 기록합니다

ranking-hypotheses

3~5턴 토론을 진행하고, 정렬된 기준으로 결정하며, Elo 매치를 기록합니다

evolving-hypotheses

결합, 단순화, 실현 가능성, 틀에서 벗어나기 — 각각 고유한 참조 파일과 실패 모드가 있습니다

benchmarking-models

모델 간 Elo 벤치마크와, 과장 없이 결과를 읽는 방법

grounding-claims

인용이 주장하는 바를 실제로 말하는지, 주장별로 판정과 함께 확인합니다

설계 원칙

엔진은 모든 상태를 유지합니다: Elo, 작업 큐, 중복 제거, 임베딩, 토큰 예산, 종료 조건. 이 패키지는 그중 어떤 것도 재구현하지 않습니다.

에이전트가 생성하는 모든 것은 엔진 자체의 에이전트가 쓰는 것과 동일한 저장소를 통해 다시 들어갑니다. match_record는 엔진의 Elo 모듈과 elo_journal 멱등성을 재사용합니다. review_record는 Reflection이 하는 것과 정확히 동일하게 동일한 Review 모델을 쓰고 draft를 reviewed로 승격시킵니다. hypothesis_record는 부모가 주어졌는지 여부에서 created_by를 파생합니다.

스킬은 그 결과를 평이한 말로 명시합니다: 기록되지 않은 출력은 존재하지 않습니다. review_record를 호출하지 않고 채팅에서 검토를 설명한 에이전트는 시스템이 사용할 수 있는 것을 아무것도 생산하지 않은 것입니다.

이것이 "프롬프트를 스킬로 옮기고 끝내는" 흔한 실패를 막는 방법입니다. 품질의 원천은 프롬프트가 아닙니다. 토너먼트가 그 원천이며, 토너먼트에는 점수를 기록할 곳이 필요합니다.

ScientistOS와 함께 사용

이 플러그인은 후보 가설을 생성하고 순위를 매깁니다. 가설에서 무엇을 주장할 수 있는지는 결정하지 않으며, 그 차이는 중요합니다: 가설이 토너먼트에서 1위를 해도 문헌이 모순하는 메커니즘에 기반할 수 있습니다. reading-research-overviews 스킬은 그 실패 모드와 수동으로 확인해야 할 몇 가지 다른 것들을 나열합니다.

ScientistOS는 그 확인을 권고가 아닌 구조적으로 만듭니다. 타입이 있는 증거 그래프를 유지하고, 계보(lineage)가 뒷받침하지 않는 강도로 주장을 기록하는 것을 거부합니다.

this plugin   →  ranked hypotheses, reviews with claim / url / excerpt per source
                              ↓
ScientistOS   →  hypothesis and source nodes, evidence at its honest level,
                 an integrity gate before anything gets written up

둘 다 스킬 및 MCP 패키지이므로 나란히 설치할 수 있고, 둘 다 로드된 에이전트는 전체 경로를 얻습니다. 여기에는 ScientistOS가 필요하지 않으며, ScientistOS도 이 패키지에 의존하지 않습니다.

설치

API 키가 필요 없고, 결제에 대해 결정할 것도 없습니다. 이 글을 읽고 있다면 이미 Claude Code 또는 Codex CLI에 로그인되어 있을 것이며, 그것이 전부입니다: 연구 엔진은 코딩 에이전트가 사용하는 것과 동일한 구독을 통해 에이전트를 실행합니다.

python3.12 -m venv .venv
source .venv/bin/activate

pip install "co-scientist @ git+https://github.com/Kaimen-Inc/Co-Scientist.git"
pip install "co-scientist-plugin @ git+https://github.com/Ahmad-Jaradat-Space/co-scientist-plugin.git"

co-scientist init

첫 연결 시 서버는 작동하는 백엔드를 찾습니다. 찾지 못하면 설치되어 로그인된 에이전트 CLI를 채택하고, 그 선택을 ~/.co-scientist/config.toml에 기록한 후 계속 진행합니다. 기존 provider = 줄은 절대 건드리지 않으므로, 직접 구성한 설정은 그대로 유지됩니다. 전체 기능을 끄려면 COSCI_AUTO_BACKEND=0을 설정하세요.

doctor가 여전히 백엔드가 없다고 보고하면, 키를 찾는 대신 CLI에 로그인하세요 (claude 또는 codex login). 또한 로컬 해시 임베더를 보고할 텐데, 이는 예상되는 키 없는 상태입니다: 중복 제거는 반복된 표현은 잡지만 같은 내용을 다르게 말하는 두 가설은 잡지 못합니다.

모든 것이 사용자 머신에 유지됩니다: ./data 아래의 SQLite, 계정 없음, 가입할 서비스 없음, 그리고 CLI가 이미 만들고 있던 모델 호출 외의 트래픽 없음.

config/subscription.toml은 동일한 선택을 손으로 작성한 것이며, CLI가 해석하는 별칭에 맡기는 대신 모델 ID를 고정합니다. export COSCI_CONFIG=/path/to/config/subscription.toml로 엔진을 지정하세요.

종량제 API도 작동합니다: 첫 실행 전에 ~/.co-scientist/config.toml에 프로바이더와 키를 설정하면 자동 선택이 개입하지 않습니다. 그러면 estimate_cost가 예산에 따라 실행 비용을 산정하고, 스킬은 시간이 아닌 지출에 대한 진행 승인을 요청합니다. 엔진의 백엔드 가이드를 참조하세요.

Codex CLI

codex plugins install ./co-scientist-plugin

Claude Code

ln -s "$PWD/skills/"* ~/.claude/skills/
claude mcp add co-scientist -- co-scientist-mcp

그 외

Agent Plugins 1.0을 읽는 모든 클라이언트는 디렉토리를 그대로 로드합니다. SKILL.md와 MCP 구성을 별도로 읽는 모든 클라이언트는 skills/와 mcp.json을 각각 가져갈 수 있습니다.

구성

서버는 엔진의 구성을 읽습니다. 필요하다면 mcp.json의 env 블록에 다음을 설정하세요:

변수

효과

COSCI_CONFIG

오버레이할 추가 TOML 구성의 경로

COSCI_ALLOW_START

0은 session_start와 session_resume을 거부합니다

COSCI_START_TIMEOUT

생성된 실행이 등록될 때까지 기다리는 초, 기본값 120

COSCI_AUTO_BACKEND

0은 아무것도 구성되지 않았을 때 로그인된 CLI 선택을 끕니다

읽기 전용 설치

세션은 수백 번의 모델 호출을 만들고 대화가 끝난 후에도 계속 실행됩니다. 공유 머신이나 에이전트가 스스로 세션을 시작할 수 없어야 하는 곳에서는:

co-scientist-mcp --read-only

읽기는 계속 작동합니다. session_start와 session_resume은 설명과 함께 거부합니다.

Virtualenv 경로

mcp.json은 co-scientist-mcp를 호출하며, 콘솔 스크립트가 PATH에 있다고 가정합니다. 에이전트가 virtualenv를 활성화하지 않으면 절대 경로를 사용하세요:

{
  "command": "/path/to/.venv/bin/co-scientist-mcp",
  "args": []
}

개발

pip install -e ".[dev]"
ruff check coscientist_plugin tests
pytest -q
co-scientist-plugin-validate

모든 테스트는 일회용 데이터베이스에 대해 오프라인으로 실행됩니다. 키 없음, 네트워크 없음, 모델 호출 없음.

이 패키지를 지키는 세 가지 검사가 있습니다:

  • **co-scientist-plugin-validate**는 사양 적합성을 검사합니다: 허용된 열 개의 매니페스트 필드, 전송 유형, 스킬 frontmatter, 이름과 디렉토리 일치, 본문 길이, 그리고 모든 상대 링크가 해석되고 한 단계 깊이를 유지하는지.

  • **tests/test_plugin.py**는 검증기가 할 수 없는 것을 검사합니다: 어떤 스킬도 에이전트에게 존재하지 않는 MCP 도구나 엔진 명령을 호출하라고 지시하지 않는지, 그리고 기록 규율이 쓰기 스킬에 실제로 명시되어 있는지.

  • **tests/test_server.py**는 설계가 의존하는 불변식을 다룹니다: 제로섬 Elo, 라운드별 멱등성, 교차 세션 거부, 발췌문 없는 증거 거부, 그리고 순위가 매겨진 가설을 뒤로 끌어내리지 않는 상태 전이.

엔진과의 관계

이 저장소는 플러그인 레이어일 뿐입니다. 구동하는 엔진은 Kaimen-Inc/Co-Scientist에 있으며 동일한 라이선스 하의 별도 프로젝트입니다. NOTICE를 참조하세요.

두 프로젝트 모두 Google이나 논문 저자와 제휴하지 않습니다. 둘 중 하나가 생성하는 가설은 과학자의 출발점이지, 발견이 아닙니다.

라이선스

Apache-2.0. LICENSE 및 NOTICE를 참조하세요.

Available Tools

15 tools
doctorA

Check the install: which LLM backend is configured, whether its credentials resolve, whether embeddings are real or the hash fallback, and where the database lives. Run this first when anything fails.

Inputs: no named parameters.

estimate_costA

Pre-flight size of a session under the current config: calls and tokens per agent, and how long it may run. On a metered API backend it also prices it. Run this before session_start and show the user.

Inputs: no named parameters.

feedback_addA

Inject researcher feedback into a session. A running session picks it up on its next planning step; a paused one picks it up on resume. kind='pin' or 'rejection' with a target also moves that hypothesis's state.

Inputs: text (required), session_id (required), kind, target.

hypotheses_listA

List a session's hypotheses ranked by Elo, with title, summary, state, matches played and dedup cluster. Bodies are omitted; use hypothesis_get.

Inputs: session_id (required), limit, state, offset.

hypothesis_getA

One hypothesis in full: statement, detailed text, citations, Elo history, every review recorded against it, and its tournament matches. Read this before reviewing or ranking it.

Inputs: hypothesis_id (required), include_matches.

hypothesis_recordA

Add a hypothesis to a session, in the same table Generation and Evolution write to. It enters as a draft, gets reviewed, and then competes in the tournament like any other. Set parent_ids when it derives from existing hypotheses, which is what makes it an Evolution result rather than a fresh idea. Recording is what makes a hypothesis real: an idea only described in chat is never reviewed, ranked, or seen by the meta-review.

Inputs: title (required), summary (required), strategy (required), full_text (required), +3 more.

match_recordA

Record the outcome of a head-to-head comparison between two hypotheses and apply the Elo update. Compare them on the paper's criteria (correctness, novelty, testability, and how well each survives its reviews) and give the rationale. Idempotent per (pair, round_id): recording the same pair twice under the same round moves no Elo.

Inputs: hyp_a (required), hyp_b (required), winner (required), rationale (required), +2 more.

overview_getA

The final research overview for a session: the meta-review synthesis of the ranked hypotheses. Only exists once the session has finalized.

Inputs: session_id (required).

review_recordA

Record a review against a hypothesis, in the same table and format the Reflection agent writes. Every factual claim in evidence needs a url and an excerpt you actually read. A 'full' review on a draft hypothesis also promotes it to reviewed. Do not report a review to the user without recording it first, or the tournament and meta-review will never see it.

Inputs: body (required), kind (required), hypothesis_id (required), scores, +4 more.

session_abortA

Abort a session for good. The main loop exits at its next check.

Inputs: session_id (required).

session_listA

List sessions newest first, with status, hypothesis count, top Elo and budget spent. Use this to find a session id the user refers to by topic.

Inputs: limit.

session_pauseA

Pause a running session. Workers drain and the loop sleeps until resumed.

Inputs: session_id (required).

session_resumeA

Resume a paused or interrupted session. The engine reclaims expired task leases and continues where it stopped. Returns immediately; poll session_status.

Inputs: session_id (required).

session_startA

Start a new research session from a natural-language goal. The engine runs the full Generation, Reflection, Elo tournament, Evolution and Meta-review loop in a detached process; this returns as soon as the session id exists. Poll session_status for progress. It runs for minutes to hours, so agree the scale with the user first: call estimate_cost.

Inputs: goal (required), n_initial, budget_usd, concurrency, +2 more.

session_statusA

Progress for one session: status, task counts by state, hypothesis counts by state, matches played, Elo spread, budget spent, and whether the final overview exists yet. This is the polling tool.

Inputs: session_id (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

    TDQS

    A4.1/5.0

    Scored across 15 tools

    Disambiguation4/5

    Tools are mostly distinct by resource and action (sessions vs hypotheses vs reviews vs matches). Minor overlap between session_pause/session_abort and hypothesis_record/review_record, but descriptions are detailed enough to avoid misselection.

    Naming Consistency4/5

    Most tools follow a noun_verb pattern (session_list, hypotheses_list, hypothesis_get, review_record), but session_resume, session_start, session_pause, session_abort are verb-first. doctor breaks the pattern entirely. Consistent within each resource group, mixed across groups.

    Tool Count5/5

    15 tools for a complex scientific research orchestration server. Each tool maps to a distinct lifecycle step: session management (7), hypothesis operations (4), review/match/feedback (3), overview (1), cost estimation (1), diagnostics (1). Well-scoped for the complexity.

    Completeness4/5

    Covers the full session lifecycle (start, poll, pause, resume, abort), hypothesis CRUD (list, get, record), review and tournament operations. Missing explicit update/delete for hypotheses or sessions, but the domain (adding to a persistent tournament) doesn't require them. Overview_get exists only after finalization; no explicit wait/finalize tool but polling covers it.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers