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 (et non d'article) : 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 + 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. Installation pip install hyperresearch && hyperresearch install, puis /hyperresearch <sujet>. MIT, Python 3.11-3.13.
⭐⭐ La leçon d'architecture, avec son mode d'échec documenté. — la partie la plus transposable, indépendamment de l'outil : la skill d'entrée est un routeur qui ne contient aucune procédure, seulement l'ordre d'invocation. Justification textuelle : « 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 : une skill par étape, chargée à l'invocation. C'est exactement la discipline de [[lassiege-usine-logicielle-heure-ia-2026-07-28]] (« le contexte permanent porte l'index, pas le contenu ») découverte indépendamment sur un autre terrain. Convergence à noter.
⭐ Le verrouillage d'outils comme garantie physique. 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 qui rendent « just rewrite it » mechanically impossible. → On ne demande pas à l'agent de ne pas réécrire, on lui retire l'outil d'écriture. Même famille que « un hook ou un test est suivi tout le temps » ([[lassiege-usine-logicielle-heure-ia-2026-07-28]]) et que l'anneau de contraintes de [[sfeir-code-review-anneau-contraintes-2026-07-30]] : l'impossibilité mécanique bat la consigne. Corollaire opérationnel : 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. (le détail importe moins que la structure) : 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 en profondeur 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. — la distinction est propre et réutilisable : les paliers (tier) routent par requête et décident quelles étapes tournent ; les gears (profils d'échelle) décident de combien — cibles de sources, budgets de profondeur, longueur — et « survivent aux réinstallations », prenant effet au run suivant, jamais en cours de run ; les levers (register, domain_notes, inference_depth) décident quelle voix sort — teach / survey / analyze / advocate. ⭐ Détail fin : 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 » — en registre survey, le critique dialectique reproche une représentation inéquitable au lieu d'un manque d'engagement. 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. Excellente règle de conception.
⭐ Les trois gates mécaniques avant expédition. (le meilleur du dispositif, directement transposable à n'importe quel corpus documentaire) : 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 une erreur bloquante, avec un balayage de rétractation 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. Plus 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 — l'idée la plus immédiatement volable. 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 : la redondance de reprise se déguise en consensus.
Score de qualité composite, 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 du vault. Les sources rétractées sont plancherisées à zéro. « Quality is persistent, not vibes. »
⭐⭐ La défense contre l'injection de prompt — la plus sérieuse vue dans un harnais ouvert.« 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 sérieusement :
les notes écrites par les sous-agents du pipeline passent sans clôture → frontière de confiance par provenance, pas 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 » — le détail qui trahit qu'on a cherché le contournement ;
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 portent une clause interdisant de blanchir les directives d'une page clôturée vers une sortie de confiance. → À rapprocher de « un périmètre de sécurité qui repose sur une consigne dans un prompt n'est pas un périmètre » ([[sfeir-anthropic-sdlc-ai-native-securise-2026-07-26]]) : ici la clôture est mécanique et la consigne ne fait que la doubler. Même logique de traitement du contenu observé comme donnée que [[valente-zalewski-beyond-zero-enterprise-security-ai-era-2026-07-20]].
⭐ L'hygiène épistémique sur les sources fermées — remarquable et rare. un article payant entrerait normalement dans le vault comme un abstract de ~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 dans le corps, frontmatter oa_, bloc JSON body_is_not_from_source: true, sortie CLI). Et surtout, un troisième état est distingué : la note « rescued », quand la source n'a pas pu être lue du tout — nothing_from_source: true, bannière disant que l'URL n'a jamais été lue, « the title, the authors, and every word of the body are the open-access copy's »*. Avertissement sur les versions : Unpaywall peut rendre un manuscrit accepté ou un preprint soumis, à vérifier avant toute citation directe. → Le système distingue « j'ai lu ceci » de « j'ai lu un substitut » de « je n'ai jamais lu la source », et le porte dans l'artefact. Directement transposable à une veille.
Le vault, et sa proximité troublante avec ce dépôt.« Markdown is truth, SQLite is cache » — index entièrement reconstructible (hyperresearch sync), notes en markdown + frontmatter YAML lisibles sans l'outil, versionnables en git, exportables/importables, 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 qui détecte les composantes déconnectées, hubs et backlinks, wikilinks. ⭐ C'est l'architecture de ce corpus de veille, découverte indépendamment : source markdown, index généré comme cache, gate de lint, doctor, wikilinks. Ce que hyperresearch a en plus et qui manque ici : 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 sérieuse pour scripts/.
Reprise et budget. chaque run possède un espace isolé (research/runs/<tag>/) et un manifeste qui sert 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 ». Les runs concurrents ne se télescopent pas.
⚠️⚠️ La réserve à porter systématiquement — la revendication de benchmark. le README annonce en tête que l'outil « currently leads the DeepResearch-Bench RACE leaderboard (benchmarked internally) », graphique à l'appui le plaçant devant Grep Deep Research, Cellcog Max, nvidia-aiq, Gemini Deep Research et OpenAI Deep Research. La note sous le graphique dit autre chose : « Forward-looking projection from a stratified pilot against the DeepResearch-Bench leaderboard snapshot. Third party validation is pending. » → Une projection prospective issue d'un pilote stratifié, auto-administrée, sans validation tierce, n'est pas un classement. Les deux énoncés ne sont pas compatibles, et c'est le seul endroit du dépôt où la rigueur affichée partout ailleurs fléchit. Ne jamais citer le classement ; citer le dispositif.
⚠️ Autres limites, dont certaines assumées par l'auteur.
Dépendance Anthropic.« It runs on Anthropic models via the subagent roster » — Opus pour les critiques, le synthétiseur et le patcheur, Sonnet pour les fetchers. Portage Codex explicitement souhaité mais non fait (« If anyone wants to port this to Codex, put up a PR! »).
Coût réel non chiffré en euros.premier vise 100-130 sources en balayage seul 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é.
La limite honnête, à citer.« The lint gate catches structural failures… It cannot guarantee factual accuracy, that's still your call. » → Vérification structurelle ≠ exactitude factuelle. Tout le dispositif garantit qu'une citation existe, pas qu'elle soit vraie.
Frontière dure et bienvenue.« CAPTCHAs, 2FA, and logins are never solved automatically » — consolidés et rendus à l'humain.
Surface de dépendance. 20 skills + 16 sous-agents + une CLI qui pilote un navigateur authentifié, sur un dépôt de moins de quatre mois. L'avertissement de [[lassiege-usine-logicielle-heure-ia-2026-07-28]] s'applique pleinement (« tout skill, MCP, code repris depuis l'extérieur doit être scruté »).
Méta / à relier. instance la plus aboutie du harness engineering d'[[osmani-agent-harness-engineering-2026-04-19]] ; converge indépendamment avec [[lassiege-usine-logicielle-heure-ia-2026-07-28]] sur le chargement différé du contexte et sur l'exécutable qui bat la consigne ; même doctrine de frontière mécanique que [[sfeir-anthropic-sdlc-ai-native-securise-2026-07-26]] et [[valente-zalewski-beyond-zero-enterprise-security-ai-era-2026-07-20]] ; parenté de forme avec les autres fiches de skill du corpus, [[skill-pocock-grill-with-docs-2026-06]] et [[akhouri-adhd-ideation-divergente-parallele-2026-07-20]] ; à lire avec [[agent-skills-anthropic-2025-10-16]], [[shihipar-claude-code-lessons-building-skills-2026-06-03]] et [[vincent-superpowers-agentic-skills-framework-github-2026-04-02]] sur la mécanique des skills ; la critique adverse en parallèle rejoint la question posée par [[monperrus-end-of-code-review-agents-supersede-2026-06-11]] sur ce qu'une revue automatisée peut porter.
Chiffres clés
une position de tête sur DeepResearch-Bench RACE, présentée comme projection prospective auto-administrée sans validation tierce