research-agent · v0.2.0 · 2026-08-23 · sha256 e74f1bcd5fddbcf7

research-agent v0.2.0A

Immutable. This exact content is served forever at /api/v1/blob/e74f1bcd5fddbcf7.

---
name: research-agent
version: 0.2.0
type: tool
author: BACH Team
created: 2026-02-21
updated: 2026-08-22
description: Project-first Research pipeline with live gates, source/PDF evidence, claim boundaries, compute and publication controls; includes an optional PubMed/arXiv standard-library helper.

standalone: true
anthropic_compatible: true
bach_compatible: true
bach_origin: true
category: research
tags: [research-pipeline, evidence, pdf-validation, publication-gates, pubmed, arxiv, literature-review, science]
language: de
status: active
visibility: public
dependencies: {'tools': [], 'services': [], 'protocols': [], 'python': []}
provenance: {'origin': 'bach', 'origin_path': 'MODULAR_AGENTS/ResearchAgent', 'origin_version': '0.1.0', 'origin_repo': 'github.com/ellmos-ai/bach', 'last_sync_from_origin': '2026-03-12', 'last_sync_to_origin': None, 'local_changes_since_sync': True}
---

<img src="banner.png" width="100%" alt="research-agent banner">

> **Deutsch** — Offizielle Deutsch-Version / Documento Oficial en Deutsch.


# Research Agent (Deutsch)

Diese Fassung ist der zentrale Paketursprung. Innerhalb von
`<OneDrive>/.TOPICS/.RESEARCH` gilt die aktuelle Projekt- und
Research-Pipeline als Autorität; der mitgelieferte PubMed/arXiv-Code ist nur
ein optionales Recherchewerkzeug.

## Verbindliche Autoritätskette

1. Aktueller Nutzerauftrag und globale `AGENTS.md`-/`GPT.md`-/`CLAUDE.md`-
   Regeln.
2. Projektlokale aktuelle Dateien, Livezustand, Locks, Entscheidungen und
   Register. Nummerierte Fortsetzungen und explizite Current-Pointer gehen
   ihren Vorläufern vor; Archive und Konfliktkopien werden nicht stillschweigend
   zur Ersatzautorität.
3. Live-Pipeline im Research-Root: insbesondere `CLAUDE.md`, `START*`,
   `MASTER*`, `POLICY*`, `PUBLIKATIONSVERFAHREN.md`, `QUALITY_RULES*`, aktuelle
   Status-/TODO-Pointer sowie `CHECKS-LOG.txt` und `CHECKS-REG.md`.
4. Dieser Skill und seine generischen Suchskripte.

Zu Beginn sind `~/.codex/GPT.md`, die beiden globalen
`CLAUDE.md`-Dateien, die Research-Regeln und die aktuellen projektlokalen
`KONZEPT*`, Plan-, `TODO*`, `BEWEISNOTIZ*`, Entscheidungs-, Publikations- und
Bibliografiedateien zu lesen. Bei Widersprüchen gilt fail-closed.

## Live-Gates und Mutationen

- Ein aktuelles unlesbares `CHECKS-LOG.txt` ist ein hartes Read-only-Gate.
- Vor Auswahl oder Änderung: `CHECKS-REG.md`, Projektregister,
  Entscheidungen, gegebenenfalls Fable-Plan, Locks, Konfliktkopien und
  Livezustand prüfen.
- BACH/BYUM-Holds und Ablauf ausschließlich mit `fc_get_time` belegen.
- In OneDrive FileCommander für Navigation, Reads, Metadaten, Checksums,
  Cloud-Locks und Ausführung verwenden. Vor Writes eng locken, fremde Locks
  und Änderungen bewahren, am Ende nur den eigenen Lock entfernen.
- Produkt-/Fachentscheidungen, Cooldowns, fehlende kanonische Klone,
  Reproduktionsgates und verbrauchte Einmalfreigaben nicht autonom umgehen.

## Evidenz-, Claim-, Compute- und Publikationsregeln

- Lokale `.WISSEN`-Funde früh nutzen, wissenschaftliche Aussagen danach an
  Primärquellen verifizieren. Satz/Abschnitt/Seite, Voraussetzungen,
  Normalisierung und Objekttyp exakt binden; volatile Abfragen datieren.
- PDFs nur nach `%PDF-`, lesbarer Seitenzahl/Text-Extraktion und SHA-256 als
  Quellen führen. HTML-, CAPTCHA-, 404- und Platzhalterdateien zählen nicht.
- Messung, Langzeitevidenz, Unsicherheit und Forschungsoption trennen; keinen
  Proxy, Preflight, Review oder Teillauf zum wissenschaftlichen Claim
  hochstufen.
- Deutsche End-User-Artefakte verwenden echte Umlaute. EN/DE und nur dann ein
  Kombi-Artefakt prüfen, wenn die aktuelle Pipeline es zulässt: Struktur,
  Bibliografie, Build, Extraktion und Encoding.
- Compute ausschließlich nach live `.COMPUTE`-/Projektvertrag und
  Placement-Regeln. Keine langen Laptopläufe, Retries, Fortsetzungen,
  Queueänderungen oder verbrauchten Einmalläufe ohne ausdrückliche Autorität.
  Timeout/Infrafehler sind kein mathematisches Negativergebnis.
- Upload, Public-Switch, Submit, Registry-Buchung und Release sind getrennte
  User-Gates. Vorbereitung und Dry-Run sind keine Publikation.
- Abschluss erst nach erforderlichen Tests/Builds, Artefakt-Readback,
  Projekt- und Root-Registern, gegebenenfalls Automationsgedächtnis/Handoff
  und Entfernung eigener temporärer Locks. Restgates ausdrücklich nennen.

## Optionaler Literaturhelfer

Die folgenden Python-Module nutzen ausschließlich die Standardbibliothek
(`urllib`, `xml`, `json`). Sie unterstützen Suche und Review, ersetzen aber
keine der obigen Autoritäts- oder Evidenzprüfungen.

## Architecture

```
ResearchAgent (Orchestrator)
  sources/          Data sources (PubMed, arXiv)
    base.py         Article/SearchResult dataclasses, Source ABC
    pubmed.py       NCBI E-utilities (esearch + efetch)
    arxiv.py        arXiv Atom API
  workflows/        Research workflows
    quick_search.py Quick search across multiple sources
    literature_review.py  4-phase literature review
```

## Usage as Python Library

```python
from scripts.agent import ResearchAgent

agent = ResearchAgent()

# Quick search (Deutsch)
result = agent.search("machine learning diagnostics", max_results=10)
print(result)

# Structured literature review (Deutsch)
plan = agent.create_review_plan("transformer architectures", years=3)
print(plan.total_articles, "articles found")

# Save result (Deutsch)
agent.save_result(result, "research_ml.md", fmt="markdown")
```

## Usage as CLI

```bash
cd scripts
python -m ResearchAgent search "quantum computing" --max 20
python -m ResearchAgent review "CRISPR gene editing" --years 5
```

## Data Sources

| Source | API | Rate Limit | Access |
|--------|-----|------------|--------|
| PubMed | NCBI E-utilities | 3/s (without key), 10/s (with key) | Free |
| arXiv | Atom REST API | None documented | Free |

Extensible: New sources implement the `Source` ABC from `sources/base.py`.

## Extension

```python
from scripts.sources.base import Source, SearchResult

class MySource(Source):
    @property
    def name(self) -> str:
        return "my-source"

    def search(self, query, max_results=10, **kwargs):
        # Implement API query
        ...

    def get_article(self, article_id):
        ...

    def is_available(self) -> bool:
        return True
```

## BACH Notes

> Only relevant when used within BACH.

```python
from scripts.agent import ResearchAgent
agent = ResearchAgent(use_bach=True)  # Optional BACH integration
```

## Änderungsprotokoll

### 0.2.0 (2026-08-22)
- Projekt- und Pipeline-Autorität vor generischen Suchskripten verankert
- Live-Gates, OneDrive-/Lock-Regeln und Current-Pointer aufgenommen
- Primärquellen-/PDF-Nachweise, Claim-Grenzen und bilinguale Prüfungen ergänzt
- Compute-, Upload-, Register- und Closeout-Gates fail-closed festgeschrieben

### 0.1.0 (2026-03-12)
- Migration from MODULAR_AGENTS/ResearchAgent to skill library
- PubMed + arXiv sources
- QuickSearch + LiteratureReview workflows