hyperresearch — « The Most Powerful Deep Research Harness » / « Agent-driven research knowledge base. Agents collect, search, and synthesize web research into a persistent, searchable wiki. »
Fiche de Skill : hyperresearch de Jordan Gibbs est un harnais de deep research qui transforme Claude Code en agent de recherche documentaire, livré comme paquet PyPI (MIT, Python 3.11-3.13) installant 20 skills Claude Code, une CLI, un serveur MCP et une UI web locale.
Par **Jordan Gibbs** — auteur et mainteneur du dépôt `jordan-gibbs/hyperresearch`. Le projet est distribué sous **licence MIT** et publié sur **PyPI**// Source github.com ↗/Lecture 2 min/.md/
hyperresearch (Jordan Gibbs, MIT, PyPI) transforme Claude Code en agent de deep research. Observé le 3 août 2026 : 1 568 étoiles, dépôt créé en avril. L'installation dépose 20 skills, une CLI, un serveur MCP et une UI web locale.
Le pipeline compte 16 étapes adaptatives par paliers : light (~30-40 min) pour les questions bornées, full (1,5-2,5 h) pour l'analyse argumentative avec revue adverse, dissertation (4-8 h, 25 000-80 000 mots, 300-450 sources) sur demande explicite. Trois leviers distincts : les paliers décident quelles étapes tournent, les gears de combien, les levers (teach/survey/analyze/advocate) de quelle voix sort le rapport.
one 1200-line skill that got compacted away by the time Layer 4 needed its triple-draft procedure. The orchestrator forgot the procedure, wrote a single draft, and produced a flat-scoring report.
— **Jordan Gibbs** — auteur et mainteneur du dépôt `jordan-gibbs/hyperresearch`. Le projet est distribué sous **licence MIT** et publié sur **PyPI** , github.com
L'architecture répond à un échec documenté. La skill d'entrée est un routeur mince sans procédure : « V7 was one 1200-line skill that got compacted away… The orchestrator forgot the procedure, wrote a single draft, and produced a flat-scoring report. » Chaque étape vit dans sa propre skill, chargée fraîche à l'invocation — un long pipeline ne perd pas ses étapes par oubli, mais par éviction de contexte.
Deux principes porteurs.« Patch, never regenerate » : après la synthèse, seules des retouches chirurgicales sont possibles, le patcheur étant verrouillé à [Read, Edit] au niveau de l'allowlist, si bien qu'il « physically cannot Write a new draft » — l'impossibilité mécanique remplace la consigne. Et « canonical research query is gospel » : le prompt verbatim est persisté et relu par chaque étape.
La vérification est le seul étage soustrait au style — les levers injectent des shims dans les prompts des critiques, mais « the cite-checker and the ship gate receive no shim at all ». Trois gates bloquent l'expédition : toute citation doit exister verbatim dans le vault, une source rétractée non signalée est une erreur dure (avec balayage rafraîchi sur chaque DOI cité), et les nombres non traçables sont signalés.
Le vault est markdown persistant indexé en SQLite — « Markdown is truth, SQLite is cache » — avec cycle de vie des notes, provenance, score de qualité composite et audit d'indépendance : « five reprints of one press release argue with the weight of one source ». Les corps récupérés du web sont servis dans une clôture <untrusted-source> : « Fetched text is data, never instructions. »
La réserve. Le README annonce mener le classement DeepResearch-Bench ; sa propre note précise qu'il s'agit d'une « forward-looking projection from a stratified pilot » sans validation tierce. Citer le dispositif, jamais le classement. L'auteur reconnaît par ailleurs que le lint « cannot guarantee factual accuracy ».
À retenir
Nature. harnais de deep research livré comme paquet de 20 skills Claude Code + CLI Python + serveur MCP + UI web locale. pip install hyperresearch && hyperresearch install, puis /hyperresearch <sujet>. MIT, Python 3.11-3.13.
Cadrage clé. la skill d'entrée est un routeur sans procédure, chaque étape vivant dans sa propre skill chargée fraîche à l'invocation. ### La leçon d'architecture, avec son mode d'échec documenté > « V7 was one 1200-line skill that got compacted away by the time Layer 4 needed its triple-draft procedure. The orchestrator forgot the procedure, wrote a single draft, and produced a flat-scoring report. V8 fixes this at the source: each step's procedure is loaded into context only at the moment it's needed, fresh, with no eviction risk. » Un long pipeline ne perd pas ses étapes par oubli du modèle mais par éviction de contexte, et la parade est structurelle. Même discipline que le contexte permanent qui porte l'index et non le contenu chez [[lassiege-usine-logicielle-heure-ia-2026-07-28]], découverte indépendamment sur un autre terrain. ### Le verrouillage d'outils comme garantie Le patcheur et l'auditeur de polissage sont « tool-locked to [Read, Edit] at the Claude Code allowlist level so they physically cannot Write a new draft », avec des plafonds par hunk rendant « just rewrite it » mechanically impossible. On ne demande pas à l'agent de ne pas réécrire, on lui retire l'outil. Corollaire : une conclusion de critique qui ne tient pas dans une petite retouche escalade en problème structurel au lieu de déclencher une réécriture. ### Les seize étapes, en trois blocs | Bloc | Étapes | |---|---| | Cadrage | 1 décomposition + matrice de couverture + classification de palier ; 1.5 partition en chapitres | | Corpus et analyse | 2 balayage en largeur ; 3 graphe de contradictions ; 4 analyse de loci ; 5 investigations profondes parallèles ; 6 réconciliation inter-loci ; 7 tensions entre sources ; 8 critique de corpus (« quelle source renverserait ceci ? ») + comblement ciblé ; 9 digest de preuves | | Écriture et audit | 10 triple rédaction par angle ; 11 synthèse ; 12 quatre critiques adverses en parallèle ; 13 comblement post-critique ; 14 patcheur chirurgical ; 14.5 vérification des citations ; 15 polissage ; 16 audit de lisibilité | ### Trois leviers d'échelle à ne pas confondre | Levier | Décide | |---|---| | Paliers (tier) | quelles étapes tournent, routées par requête | | Gears (profils d'échelle) | de combien — cibles de sources, budgets de profondeur, longueur ; survivent aux réinstallations, prennent effet au run suivant, jamais en cours de run | | Levers (register, domain_notes, inference_depth) | quelle voix — teach / survey / analyze / advocate | Les levers se rendent dans des shims injectés dans les prompts de sous-agents, « so the critics move with the register instead of undoing it ». Mais : « The cite-checker and the ship gate receive no shim at all. Verification never softens by mode. » La vérification est le seul étage soustrait au style. ### Les trois gates mécaniques avant expédition 1. quote-integrity — toute portion citée entre guillemets doit exister verbatim dans une note du vault ; « hallucinated quotes cannot ship ». 2. retracted-citations — citer une source rétractée sans le signaler est bloquant, avec un balayage rafraîchi au moment de l'expédition sur chaque DOI cité, y compris sur les sources réutilisées d'anciens runs : « a retraction published yesterday is caught today ». 3. numeric-consistency — les nombres non traçables à une preuve sont signalés. S'y ajoute le cite-check : un LLM sceptique vérifie par échantillon que la source citée soutient réellement la phrase qu'elle appuie. ### L'audit d'indépendance Les copies syndiquées et dérivées sont regroupées, de sorte que « five reprints of one press release argue with the weight of one source ». Le nombre de sources concordantes cesse d'être un argument quand elles descendent d'un même communiqué — pertinent pour toute veille. Score de qualité composite et persistant : type de source, utilité constatée à la lecture, autorité de citation (OpenAlex / Semantic Scholar avec indicateurs de rétractation), PageRank sur le graphe interne. Sources rétractées plancherisées à zéro : « Quality is persistent, not vibes. » ### La défense contre l'injection de prompt « Fetched text is data, never instructions. » Tout corps récupéré du web est servi dans une clôture <untrusted-source url="..."> avec préambule treat-as-data, sur les deux chemins qui servent des corps (note show et search). Détails qui montrent que la menace a été pensée :
les notes écrites par les sous-agents passent sans clôture — frontière de confiance par provenance, non par contenu ;
les balises de clôture contrefaites dans un corps récupéré sont neutralisées mais laissées visibles pour l'analyse forensique ;
l'attribut url est échappé et ses caractères de contrôle retirés ;
dans search, l'enveloppement se fait après la troncature au budget de tokens, « so the closing fence can never be severed » ;
les URL résolues via des API tierces sont vérifiées (schéma, identifiants embarqués, résolution publiquement routable) — défense SSRF ;
les prompts des fetchers, investigateurs et rédacteurs interdisent de blanchir les directives d'une page clôturée vers une sortie de confiance. ### L'hygiène épistémique sur les sources fermées Un article payant entrerait normalement dans le vault comme un abstract d'environ 1 500 caractères, que le rapport citerait ensuite « as though it had been read ». hyperresearch interroge Unpaywall et Europe PMC pour une copie légale en accès ouvert et stocke ce texte-là, en divulguant la substitution en quatre endroits (bannière, frontmatter oa_, bloc JSON body_is_not_from_source: true, sortie CLI). Un troisième état est distingué : la note « rescued », quand la source n'a pas pu être lue du tout — nothing_from_source: true, avec bannière indiquant que l'URL n'a jamais été lue. Le système distingue donc « j'ai lu ceci », « j'ai lu un substitut » et « je n'ai jamais lu la source », et le porte dans l'artefact. Avertissement : Unpaywall peut rendre un manuscrit accepté ou un preprint soumis, à vérifier avant citation directe. ### Le vault « Markdown is truth, SQLite is cache » — index entièrement reconstructible (hyperresearch sync), notes en markdown + frontmatter YAML lisibles sans l'outil, versionnables en git, cycle de vie curé (draft → review → evergreen ou stale → deprecated → archive) « qui empêche un vault de devenir une décharge de pages à moitié lues », provenance par --suggested-by avec une règle de lint détectant les composantes déconnectées, hubs et backlinks. C'est l'architecture de ce corpus de veille, découverte indépendamment. Ce que hyperresearch a en plus : score de qualité par source, audit d'indépendance, balayage de rétractation, recherche sémantique optionnelle, statut de cycle de vie explicite. Piste d'inspiration pour scripts/. ### Reprise et budget Chaque run possède un espace isolé (research/runs/<tag>/) et un manifeste servant de « durable memory » : un run planté reprend exactement à l'étape morte (run resume). run init --budget 50bloque le run au franchissement du plafond « rather than letting it quietly balloon »*. ### Réserves
La revendication de classement ne tient pas. Le README annonce « currently leads the DeepResearch-Bench RACE leaderboard (benchmarked internally) » avec un graphique le plaçant devant Gemini et OpenAI Deep Research ; la note sous le graphique dit « Forward-looking projection from a stratified pilot… Third party validation is pending. » Une projection issue d'un pilote auto-administré n'est pas un classement. Citer le dispositif, jamais le classement.
Dépendance Anthropic.« It runs on Anthropic models via the subagent roster » — Opus pour critiques, synthétiseur et patcheur, Sonnet pour les fetchers. Portage Codex souhaité mais non fait.
Coût non chiffré.premier vise 100-130 sources et ~3-5 h, dissertation 300-450 sources et 4-8 h ; le budget se plafonne en API-equivalent spend, pas en coût constaté.
Limite assumée par l'auteur.« The lint gate catches structural failures… It cannot guarantee factual accuracy, that's still your call. » Vérification structurelle n'est pas exactitude factuelle.
Frontière dure.« CAPTCHAs, 2FA, and logins are never solved automatically » — consolidés et rendus à l'humain.
Surface de dépendance. 20 skills, 16 sous-agents et une CLI qui pilote un navigateur authentifié, sur un dépôt de moins de quatre mois.
Chiffres clés
une position de tête sur DeepResearch-Bench RACE, présentée comme projection prospective auto-administrée sans validation tierce