Loading...
Loading...
Persistent research knowledge base that accumulates papers, ideas, experiments, claims, and their relationships across the entire research lifecycle. Inspired by Karpathy's LLM Wiki pattern. Use when user says "知识库", "research wiki", "add paper", "wiki query", "查知识库", or wants to build/query a persistent field map.
npx skill4agent add wanshuiyin/auto-claude-code-research-in-sleep research-wiki| Entity | Directory | Node ID format | What it represents |
|---|---|---|---|
| Paper | | | A published or preprint research paper |
| Idea | | | A research idea (proposed, tested, or failed) |
| Experiment | | | A concrete experiment run with results |
| Claim | | | A testable scientific claim with evidence status |
graph/edges.jsonl| Edge type | From → To | Meaning |
|---|---|---|
| paper → paper | Builds on prior work |
| paper → paper | Disagrees with results/claims |
| paper|idea → gap | Targets a known field gap |
| idea → paper | Idea sourced from this paper |
| idea|claim → exp | Tested in this experiment |
| exp → claim|idea | Experiment confirms claim |
| exp → claim|idea | Experiment disproves claim |
| paper → paper | Newer work replaces older |
graph/edges.jsonl## Connectionsresearch-wiki/
index.md # categorical index (auto-generated)
log.md # append-only timeline
gap_map.md # field gaps with stable IDs (G1, G2, ...)
query_pack.md # compressed summary for /idea-creator (auto-generated, max 8000 chars)
papers/
<slug>.md # one page per paper
ideas/
<idea_id>.md # one page per idea
experiments/
<exp_id>.md # one page per experiment
claims/
<claim_id>.md # one page per testable claim
graph/
edges.jsonl # materialized current relationship graph/research-wiki initresearch-wiki/index.mdlog.mdgap_map.mdgraph/edges.jsonl/research-wiki ingest "<paper title>" — arxiv: <id>python3 tools/research_wiki.py ingest_paper …shared-references/integration-contract.md--arxiv-id<first_author_last_name><year>_<keyword>--update-on-existpapers/<slug>.mdindex.mdquery_pack.mdlog.mdingest_paperadd_edge# arXiv-known paper
python3 tools/research_wiki.py ingest_paper research-wiki/ \
--arxiv-id 2501.12345 --thesis "One-line claim from abstract."
# Venue paper with no arXiv mirror
python3 tools/research_wiki.py ingest_paper research-wiki/ \
--title "Attention Is All You Need" \
--authors "Ashish Vaswani, Noam Shazeer, …" --year 2017 --venue "NeurIPS"
# Manual edge after ingest
python3 tools/research_wiki.py add_edge research-wiki/ \
--from "paper:vaswani2017_attention_all_you" \
--to "paper:chen2025_factorized_gap" \
--type "extends" --evidence "Section 3.2: adapts the encoder block …"/research-lit/arxiv/alphaxiv/deepxiv/semantic-scholar/exa-search/research-wiki ingest/research-wiki sync — arxiv-ids <id1>,<id2>,...research-wiki/# Explicit list
python3 tools/research_wiki.py sync research-wiki/ \
--arxiv-ids 2310.06770,1706.03762
# From a file (one id per line, # comments ok)
python3 tools/research_wiki.py sync research-wiki/ --from-file ids.txtsyncingest_paperlint---
type: paper
node_id: paper:<slug>
title: "<full title>"
authors: ["First A. Author", "Second B. Author"]
year: 2025
venue: "arXiv"
external_ids:
arxiv: "2501.12345"
doi: null
s2: null
tags: ["tag1", "tag2"]
added: 2026-04-07T10:12:00Z
---
# <full title>
## One-line thesis
[Single sentence capturing the paper's core contribution]
## Problem / Gap
## Method
## Key Results
## Assumptions
## Limitations / Failure Modes
## Reusable Ingredients
[Techniques, datasets, or insights that could be repurposed]
## Open Questions
## Claims
[Reference claim pages: claim:C1, claim:C2, etc.]
## Connections
[AUTO-GENERATED from graph/edges.jsonl — do not edit manually]
## Relevance to This Project
[Why this paper matters for our specific research direction]--arxiv-id## Abstract (original)Relevance to This Project--arxiv-id/research-wiki query "<topic>"query_pack.md| Section | Budget | Content |
|---|---|---|
| Project direction | 300 chars | From CLAUDE.md or RESEARCH_BRIEF.md |
| Top 5 gaps | 1200 chars | From gap_map.md, ranked by: unresolved + linked ideas + failed experiments |
| Paper clusters | 1600 chars | 3-5 clusters by tag overlap, 2-3 sentences each |
| Failed ideas | 1400 chars | Always included — highest anti-repetition value |
| Top papers | 1800 chars | 8-12 pages ranked by: linked gaps, linked ideas, centrality, relevance flag |
| Active chains | 900 chars | limitation → opportunity relationship chains |
| Open unknowns | 500 chars | Unresolved questions across the wiki |
/research-wiki update <node_id> — <field>: <value>/research-wiki update paper:chen2025 — relevance: core
/research-wiki update idea:001 — outcome: negative
/research-wiki update claim:C1 — status: invalidatedquery_pack.mdlog.md/research-wiki lintstatus: reportedsupportsinvalidatesstage: proposedLINT_REPORT.md/research-wiki stats📚 Research Wiki Stats
Papers: 28 (12 core, 10 related, 6 peripheral)
Ideas: 7 (2 active, 3 failed, 1 partial, 1 succeeded)
Experiments: 12
Claims: 15 (5 supported, 3 invalidated, 7 reported)
Edges: 64
Gaps: 8 (3 unresolved)
Last updated: 2026-04-07T10:12:00Zshared-references/integration-contract.md[ -d research-wiki/ ]python3 tools/research_wiki.py ingest_paper …papers/<slug>.mdlog.mdsync --arxiv-ids …tools/verify_wiki_coverage.sh/research-lit# At end of research-lit, after synthesis:
if research-wiki/ exists:
for paper in top_relevant_papers (limit 8-12):
python3 tools/research_wiki.py ingest_paper research-wiki/ \
--arxiv-id <id> [--thesis "..."] [--tags "..."]
for each explicit relation to existing wiki paper:
python3 tools/research_wiki.py add_edge research-wiki/ \
--from "paper:<slug>" --to "<target>" \
--type <extends|contradicts|addresses_gap|...> \
--evidence "..."
log "research-lit ingested N papers"/idea-creatorif research-wiki/query_pack.md exists (and < 7 days old):
prepend query_pack to landscape context
treat failed ideas as banlist
treat top gaps as search seeds
still run fresh literature search for last 3-6 monthsfor idea in all_generated_ideas (recommended + killed):
/research-wiki upsert_idea(idea)
for paper_id in idea.based_on:
add_edge(idea.node_id, paper_id, "inspired_by")
for gap_id in idea.target_gaps:
add_edge(idea.node_id, gap_id, "addresses_gap")
rebuild query_pack
log "idea-creator wrote N ideas to wiki"/result-to-claim# Create experiment page
exp_id = upsert_experiment(experiment_data)
# Update each claim's status
for claim_id in resolved_claims:
if verdict == "yes":
set_claim_status(claim_id, "supported")
add_edge(exp_id, claim_id, "supports")
elif verdict == "partial":
set_claim_status(claim_id, "partial")
add_edge(exp_id, claim_id, "supports") # partial
else:
set_claim_status(claim_id, "invalidated")
add_edge(exp_id, claim_id, "invalidates")
# Update idea outcome
update_idea(active_idea_id, outcome=verdict)
# If failed, record WHY for future ideation
if verdict in ("no", "partial"):
update_idea failure_notes with specific metrics and reasons
rebuild query_pack
log "result-to-claim: exp_id updated, verdict=..."/idea-creatorgraph/edges.jsonlConnectionspaper:<slug>idea:<id>exp:<id>claim:<id>gap:<id>