@dogfood-lab/study-swarm 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.es.md +15 -0
- package/README.fr.md +42 -27
- package/README.hi.md +34 -19
- package/README.it.md +15 -0
- package/README.ja.md +15 -0
- package/README.md +14 -0
- package/README.pt-BR.md +15 -0
- package/README.zh.md +38 -23
- package/bin/study-swarm.mjs +152 -0
- package/package.json +13 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
4
4
|
|
|
5
|
+
## [0.6.0] — 2026-06-02
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **Thin CLI** (`study-swarm`) — zero runtime dependencies, ships in the package:
|
|
10
|
+
- `study-swarm protocol` — print the locked protocol.
|
|
11
|
+
- `study-swarm new <slug>` — scaffold a `<slug>.dispatch.md` to fill in.
|
|
12
|
+
- `study-swarm lint <file>` — deterministically check a dispatch's *Research grounding* against the sourcing standard (every finding needs author + year + a resolvable arXiv/DOI/URL; vague "studies show…" claims are rejected). Exit `1` on violations, so it gates CI.
|
|
13
|
+
- `npm run verify` smoke test; CI smoke-tests the CLI before publishing.
|
|
14
|
+
|
|
5
15
|
## [0.5.0] — 2026-06-02
|
|
6
16
|
|
|
7
17
|
### Added
|
|
@@ -12,4 +22,5 @@ All notable changes to this project are documented here. The format is based on
|
|
|
12
22
|
- `SECURITY.md`, MIT `LICENSE`, project logo.
|
|
13
23
|
- Landing page + Starlight handbook at <https://dogfood-lab.github.io/study-swarm/>.
|
|
14
24
|
|
|
25
|
+
[0.6.0]: https://github.com/dogfood-lab/study-swarm/releases/tag/v0.6.0
|
|
15
26
|
[0.5.0]: https://github.com/dogfood-lab/study-swarm/releases/tag/v0.5.0
|
package/README.es.md
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/@dogfood-lab/study-swarm"><img src="https://img.shields.io/npm/v/@dogfood-lab/study-swarm" alt="npm"></a>
|
|
10
11
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
|
|
11
12
|
<a href="https://dogfood-lab.github.io/study-swarm/"><img src="https://img.shields.io/badge/handbook-live-purple" alt="Handbook"></a>
|
|
12
13
|
<img src="https://img.shields.io/badge/cited%20research-verified-1f6feb" alt="Cited research, verified">
|
|
@@ -58,6 +59,20 @@ Puede ejecutar el protocolo manualmente: cualquier modelo de una familia diferen
|
|
|
58
59
|
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — el verificador en tiempo de ejecución: enrutamiento diferenciado por familia, sin razonamiento superfluo, adjudicación con múltiples lentes, un umbral determinista para la existencia de referencias (arXiv → Crossref) y comprobantes firmados.
|
|
59
60
|
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — proporciona `roleos verify-citations <dispatch>`, el programa que extrae las citas de un documento y las valida a través de prism.
|
|
60
61
|
|
|
62
|
+
## CLI
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
| Comando | Función |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `study-swarm protocol` | Imprime el protocolo completo: los cinco pasos, la tabla de control y el estándar de búsqueda de fuentes. |
|
|
71
|
+
| `study-swarm new <slug>` | Crea un archivo `<slug>.dispatch.md` con la estructura de los cinco pasos para que se complete. |
|
|
72
|
+
| `study-swarm lint <file>` | Comprueba la *base de investigación* de un documento en relación con el estándar de búsqueda de fuentes; cada hallazgo debe tener un autor, un año y un identificador que se pueda resolver (arXiv / DOI / URL); se rechazan las afirmaciones vagas como "los estudios demuestran...". Si se detectan infracciones, el programa finaliza con el código `1`, lo que impide que se ejecute en el entorno de integración continua (CI). |
|
|
73
|
+
|
|
74
|
+
`lint` es determinista (no realiza llamadas al modelo), por lo que es seguro para usar en el entorno de integración continua (CI). Aplica el **estándar de búsqueda de fuentes del paso 3** a nivel local; la verificación basada en el modelo del **paso 4** sigue dependiendo de [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
|
|
75
|
+
|
|
61
76
|
## Por qué funciona, en pocas palabras
|
|
62
77
|
|
|
63
78
|
**Eficiencia:** el campo avanza rápidamente; exigir estudios específicos y exhaustivos retrasa el lanzamiento de los diseños en 18 meses. **Funcionalidad:** la evidencia muestra lo que *falla*, no solo lo que funciona (las explicaciones pueden aumentar la dependencia excesiva de una IA *incorrecta* — Bansal et al. 2021). **Seguridad:** el entorno protegido por el verificador es la arquitectura que respalda la evidencia, y el protocolo la aplica a su propia salida. La verificación no es un ejercicio académico; es el rastro de la evidencia.
|
package/README.fr.md
CHANGED
|
@@ -7,68 +7,83 @@
|
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/@dogfood-lab/study-swarm"><img src="https://img.shields.io/npm/v/@dogfood-lab/study-swarm" alt="npm"></a>
|
|
10
11
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
|
|
11
12
|
<a href="https://dogfood-lab.github.io/study-swarm/"><img src="https://img.shields.io/badge/handbook-live-purple" alt="Handbook"></a>
|
|
12
13
|
<img src="https://img.shields.io/badge/cited%20research-verified-1f6feb" alt="Cited research, verified">
|
|
13
14
|
</p>
|
|
14
15
|
|
|
15
|
-
**Ancrez les décisions de conception dans les recherches citées, puis vérifiez les citations à l’aide d’un *modèle* différent avant que quoi que ce soit ne devienne
|
|
16
|
+
**Ancrez les décisions de conception dans les recherches citées, puis vérifiez les citations à l’aide d’un *modèle* différent avant que quoi que ce soit ne devienne un élément canonique.**
|
|
16
17
|
|
|
17
|
-
`study-swarm` est un protocole, pas un outil. Lorsque vous prenez une décision de conception importante avec un LLM (un nouveau niveau de produit, un choix d’architecture, une question du type « devons-nous faire confiance au modèle ici »), improviser à partir de principes de base conduit à des conceptions obsolètes, et citer des articles de mémoire conduit à des conceptions
|
|
18
|
+
`study-swarm` est un protocole, pas un outil. Lorsque vous prenez une décision de conception importante avec un LLM (un nouveau niveau de produit, un choix d’architecture, une question du type « devons-nous faire confiance au modèle ici »), improviser à partir de principes de base conduit à des conceptions obsolètes, et citer des articles de mémoire conduit à des conceptions qui reposent sur des sources qui n’existent pas ou qui ne disent pas ce que vous pensez. `study-swarm` remplace les deux : il lance des agents de recherche parallèles, exige des résultats spécifiques cités et soumet chaque citation à un **vérificateur externe d’une famille de modèles différente** avant qu’elle n’influence la conception.
|
|
18
19
|
|
|
19
20
|
Il applique sa propre méthode. Le protocole prescrit des enveloppes protégées par un vérificateur pour les systèmes qu’il aide à concevoir, il l’applique donc à lui-même. **Aucun modèle n’évalue son propre travail, y compris celui qui exécute le protocole.**
|
|
20
21
|
|
|
21
22
|
## Le protocole en cinq étapes
|
|
22
23
|
|
|
23
24
|
1. **Identifiez** 3 à 5 questions de conception essentielles auxquelles des preuves empiriques permettraient de modifier la réponse.
|
|
24
|
-
2. **Lancez** un agent de recherche par question, en parallèle. Chacun doit renvoyer les titres des articles + les auteurs + les années + les URL + un résultat en une phrase
|
|
25
|
-
3. **Synthétisez** les résultats dans une section
|
|
26
|
-
4. **Vérifiez de manière externe** — une *famille de modèles différente*, sans raisonnement, vérifie chaque citation en deux étapes
|
|
25
|
+
2. **Lancez** un agent de recherche par question, en parallèle. Chacun doit renvoyer les titres des articles + les auteurs + les années + les URL + un résultat en une phrase (la spécificité prime sur l’étendue : « 6 à 8 résultats bien documentés sont plus efficaces que 20 observations vagues »).
|
|
26
|
+
3. **Synthétisez** les résultats dans une section « Justification par la recherche » : `N. **<résultat>.** <Auteurs> <année> (<arXiv/DOI>). <implication pour la conception>.`
|
|
27
|
+
4. **Vérifiez de manière externe** — une *famille de modèles différente*, sans raisonnement, vérifie chaque citation en deux étapes : un **oracle de récupération** confirme que l’article existe (jamais la mémoire du modèle), puis une **lentille de pertinence** confirme que le résultat correspond à la source. **Arrêtez** en cas de fabrication/d’attribution incorrecte ; **arrêtez et escaladez** si le vérificateur ou l’oracle de récupération n’est pas disponible (ne considérez jamais l’absence comme « les citations sont correctes »).
|
|
27
28
|
5. **Reliez** chaque choix architectural à un résultat par numéro. Les citations sans implication pour la conception sont du bruit.
|
|
28
29
|
|
|
29
|
-
Les détails
|
|
30
|
+
Les détails exécutables complets (le tableau d’arrêt, la norme de référencement, la règle d’ensemble) se trouvent dans **[PROTOCOL.md](PROTOCOL.md)**.
|
|
30
31
|
|
|
31
|
-
## Pourquoi une *famille différente*, sans raisonnement
|
|
32
|
+
## Pourquoi une *famille différente*, sans raisonnement ?
|
|
32
33
|
|
|
33
|
-
Parce que les modes d’échec sont documentés, et non hypothétiques
|
|
34
|
+
Parce que les modes d’échec sont documentés, et non hypothétiques :
|
|
34
35
|
|
|
35
|
-
- **Les LLM ne peuvent pas vérifier de manière fiable leurs propres résultats.** Huang et al. 2023 ([arXiv:2310.01798](https://arxiv.org/abs/2310.01798))
|
|
36
|
-
- **Les juges de la même famille ont une préférence pour eux-mêmes.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — l’auto-reconnaissance est corrélée *linéairement* avec l’auto-préférence, de sorte qu’un aveuglement partiel
|
|
37
|
-
- **Les citations sont les
|
|
38
|
-
- **Masquez le raisonnement du générateur.** Khalifa et al. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), «
|
|
39
|
-
- **La diversité est plus importante que
|
|
36
|
+
- **Les LLM ne peuvent pas vérifier de manière fiable leurs propres résultats.** Huang et al. 2023 ([arXiv:2310.01798](https://arxiv.org/abs/2310.01798)) ; Kambhampati et al. 2024 ([arXiv:2402.01817](https://arxiv.org/abs/2402.01817), LLM-Modulo) ; Stechly et al. 2024 ([arXiv:2402.08115](https://arxiv.org/abs/2402.08115)) — le vérificateur externe apporte les avantages ; le contenu d’auto-critique est inerte.
|
|
37
|
+
- **Les juges de la même famille ont une préférence pour eux-mêmes.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — l’auto-reconnaissance est corrélée *linéairement* avec l’auto-préférence, de sorte qu’un aveuglement partiel n’aide pas. Verga et al. 2024 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796), PoLL) — un groupe de juges issus de familles distinctes est moins biaisé, pour un coût environ 7 fois inférieur.
|
|
38
|
+
- **Les citations sont les endroits où les LLM mentent.** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — 55 % des citations de GPT-3.5 / 18 % des citations de GPT-4 sont fabriquées. Onweller et al. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) — les liens résolvent > 94 % du temps, mais seulement 39 à 77 % du contenu cité soutiennent réellement l’affirmation. Par conséquent, l’existence doit être vérifiée par **la récupération, et non par la mémorisation**.
|
|
39
|
+
- **Masquez le raisonnement du générateur.** Khalifa et al. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), « Gaming the Judge ») — la manipulation du raisonnement en chaîne seule augmente les faux positifs d’un juge jusqu’à 90 %, les actions étant maintenues fixes. Turpin et al. 2023 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388)) — le raisonnement en chaîne est une rationalisation a posteriori. Le vérificateur voit la revendication de citation brute, jamais le « pourquoi je l’ai incluse ».
|
|
40
|
+
- **La diversité est plus importante que le nombre.** Rajan 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — quatre vérificateurs avec une corrélation par paires ρ ∈ [0,05, 0,25] sont plus efficaces qu’un seul, grâce à une couverture sous-modulaire. Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — les erreurs des LLM sont *corrélées*, de sorte que la variable essentielle est la diversité des lentilles, et non le nombre brut.
|
|
40
41
|
|
|
41
|
-
## Est-ce que cela fonctionne réellement
|
|
42
|
+
## Est-ce que cela fonctionne réellement ? (preuve)
|
|
42
43
|
|
|
43
|
-
À titre de test, le protocole a été appliqué à ses propres citations. Deux familles non-Claude non corrélées — **Mistral** (`mistral-small:24b`) et **IBM Granite** (`granite4.1:30b`) — ont vérifié un ensemble de citations, sans raisonnement, en
|
|
44
|
+
À titre de test, le protocole a été appliqué à ses propres citations. Deux familles non-Claude non corrélées — **Mistral** (`mistral-small:24b`) et **IBM Granite** (`granite4.1:30b`) — ont vérifié un ensemble de citations, sans raisonnement, en utilisant deux pièges aveugles :
|
|
44
45
|
|
|
45
|
-
| Piège
|
|
46
|
+
| Piège planté | Mistral | IBM Granite | Vérité terrain |
|
|
46
47
|
|---|---|---|---|
|
|
47
|
-
|
|
|
48
|
-
| un article fabriqué
|
|
48
|
+
| Le raisonnement en chaîne attribué à « Nakamura & Olsen » | manqué | **détecté** (attribution incorrecte → en réalité Wei et al. 2022) | attribution incorrecte |
|
|
49
|
+
| un article fabriqué « 98 % des erreurs éliminées, aucun oracle n’est nécessaire » | **caught** (fabricated) | **caught** (fabricated) | fabriqué |
|
|
49
50
|
|
|
50
|
-
Aucune des deux familles n’a détecté les deux pièges
|
|
51
|
+
Aucune des deux familles n’a détecté les deux pièges seule, mais leur **union a détecté 2/2**. Un seul juge aurait validé l’attribution incorrecte. Par ailleurs, l’oracle de récupération a détecté deux *véritables* attributions incorrectes dans nos propres documents de conception (articles cités sous le mauvais premier auteur) que aucun LLM paramétrique n’aurait pu signaler, et il a correctement confirmé les articles authentiques de 2026 que les deux LLM ont faussement signalés comme étant fabriqués simplement parce que les articles sont postérieurs à leur date d’entraînement. Ce dernier point est la raison pour laquelle la vérification de l’existence à l’étape 4 **doit** être effectuée par un oracle de récupération, et non par un LLM.
|
|
51
52
|
|
|
52
|
-
Cette seule
|
|
53
|
+
Cette seule exécution est la thèse en miniature : **des lentilles non corrélées + un oracle de récupération pour l’existence sont plus efficaces qu’un seul juge intelligent.**
|
|
53
54
|
|
|
54
55
|
## Comment cela fonctionne
|
|
55
56
|
|
|
56
|
-
Vous pouvez exécuter le protocole manuellement — tout modèle d’une famille différente,
|
|
57
|
+
Vous pouvez exécuter le protocole manuellement — tout modèle d’une famille différente, ainsi que la résolution de l’arXiv/DOI vous-même, satisfont aux exigences de l’étape 4. Deux outils frères permettent de le faire en une seule commande :
|
|
57
58
|
|
|
58
|
-
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — le vérificateur d’exécution : routage différencié
|
|
59
|
-
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — fournit `roleos verify-citations <dispatch>`, l’
|
|
59
|
+
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — le vérificateur d’exécution : routage différencié par famille, suppression du raisonnement, adjudication multi-lentilles, seuil d’existence de récupération déterministe (arXiv → Crossref) et reçus signés.
|
|
60
|
+
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — fournit `roleos verify-citations <dispatch>`, l’exécutant qui extrait les citations d’un document et les soumet à prism pour vérification.
|
|
60
61
|
|
|
61
|
-
##
|
|
62
|
+
## Interface en ligne de commande
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
```bash
|
|
65
|
+
npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
| Commande | Fonctionnement |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `study-swarm protocol` | Affiche le protocole complet : les cinq étapes, la table d’arrêt, la norme de référencement. |
|
|
71
|
+
| `study-swarm new <slug>` | Crée un fichier `<slug>.dispatch.md` avec le squelette des cinq étapes à compléter. |
|
|
72
|
+
| `study-swarm lint <file>` | Vérifie le *fondement de la recherche* d’un document par rapport à la norme de référencement : chaque élément doit avoir un auteur, une année et un identifiant résolvable (arXiv / DOI / URL) ; les affirmations vagues du type « des études montrent… » sont rejetées. En cas de violation, le programme se termine avec le code `1`, ce qui empêche l’exécution dans l’environnement CI. |
|
|
73
|
+
|
|
74
|
+
`lint` est déterministe — il n’effectue aucun appel de modèle — il est donc sûr à utiliser dans l’environnement CI. Il applique localement la **norme de référencement de l’étape 3** ; la vérification basée sur un modèle de l’**étape 4** est toujours déléguée à [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
|
|
75
|
+
|
|
76
|
+
## Pourquoi cela fonctionne, en quelques mots
|
|
77
|
+
|
|
78
|
+
**Actuel** — le domaine évolue rapidement ; exiger des études spécifiques avec des dates permet d’éviter que les conceptions ne soient mises en œuvre avec 18 mois de retard. **Fonctionnel** — les données montrent ce qui *ne fonctionne pas*, et pas seulement ce qui fonctionne (les explications peuvent entraîner une dépendance excessive à l’égard d’une IA *incorrecte* — Bansal et al. 2021). **Sûr** — l’enveloppe protégée par le vérificateur est l’architecture que les données étayent, et le protocole l’applique à ses propres résultats. Le référencement n’est pas un exercice académique ; c’est la chaîne de preuves.
|
|
64
79
|
|
|
65
80
|
## Sécurité
|
|
66
81
|
|
|
67
|
-
`study-swarm` est un dépôt de documentation : Markdown et un logo. Il ne contient aucun code exécutable et n’installe rien à partir de ce dépôt. Il n’accède à aucune donnée, ne nécessite aucune autorisation et ne collecte aucune télémétrie ; il n’y a pas de secrets ou d’identifiants dans le code source. La méthodologie *décrit* un flux de travail qui utilise la récupération sur le web et la vérification basée sur
|
|
82
|
+
`study-swarm` est un dépôt de documentation : Markdown et un logo. Il ne contient aucun code exécutable et n’installe rien à partir de ce dépôt. Il n’accède à aucune donnée, ne nécessite aucune autorisation et ne collecte aucune télémétrie ; il n’y a pas de secrets ou d’identifiants dans le code source. La méthodologie *décrit* un flux de travail qui utilise la récupération sur le web et la vérification basée sur un modèle, mais ce dépôt ne l’implémente ni ne l’exécute. Voir [SECURITY.md](SECURITY.md).
|
|
68
83
|
|
|
69
84
|
## État
|
|
70
85
|
|
|
71
|
-
Un protocole fonctionnel, vérifié
|
|
86
|
+
Un protocole fonctionnel, vérifié de manière externe par ses propres mécanismes : une famille de modèles différente vérifie ses citations (voir la preuve ci-dessus). Ce dépôt est la référence publique ; [PROTOCOL.md](PROTOCOL.md) est la forme exécutable. Fait partie de la famille [dogfood-lab](https://github.com/dogfood-lab) : méthodes et exemples pour construire dans l’ère de l’IA.
|
|
72
87
|
|
|
73
88
|
Licence MIT.
|
|
74
89
|
|
package/README.hi.md
CHANGED
|
@@ -7,23 +7,24 @@
|
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/@dogfood-lab/study-swarm"><img src="https://img.shields.io/npm/v/@dogfood-lab/study-swarm" alt="npm"></a>
|
|
10
11
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
|
|
11
12
|
<a href="https://dogfood-lab.github.io/study-swarm/"><img src="https://img.shields.io/badge/handbook-live-purple" alt="Handbook"></a>
|
|
12
13
|
<img src="https://img.shields.io/badge/cited%20research-verified-1f6feb" alt="Cited research, verified">
|
|
13
14
|
</p>
|
|
14
15
|
|
|
15
|
-
**आधारभूत
|
|
16
|
+
**आधारभूत अनुसंधान में डिज़ाइन संबंधी निर्णयों को स्थापित करें — फिर किसी भी चीज़ को आधिकारिक बनाने से पहले एक *अलग* मॉडल परिवार के साथ उद्धरणों को सत्यापित करें।**
|
|
16
17
|
|
|
17
|
-
`study-swarm` एक प्रोटोकॉल है, उपकरण नहीं। जब आप किसी एलएलएम के साथ एक महत्वपूर्ण डिज़ाइन निर्णय ले रहे हों — एक नया उत्पाद परत, एक आर्किटेक्चर विकल्प, एक "क्या हमें यहां मॉडल पर भरोसा करना चाहिए" — तो बुनियादी सिद्धांतों से तात्कालिक रूप से काम करने से ऐसे डिज़ाइन सामने आते हैं जो पुराने हैं, और स्मृति से कागजात का हवाला देने से ऐसे डिज़ाइन सामने आते हैं जो उन स्रोतों पर
|
|
18
|
+
`study-swarm` एक प्रोटोकॉल है, उपकरण नहीं। जब आप किसी एलएलएम के साथ एक महत्वपूर्ण डिज़ाइन निर्णय ले रहे हों — एक नया उत्पाद परत, एक आर्किटेक्चर विकल्प, एक "क्या हमें यहां मॉडल पर भरोसा करना चाहिए" — तो बुनियादी सिद्धांतों से तात्कालिक रूप से काम करने से ऐसे डिज़ाइन सामने आते हैं जो पुराने हैं, और स्मृति से कागजात का हवाला देने से ऐसे डिज़ाइन सामने आते हैं जो उन स्रोतों पर निर्भर करते हैं जो मौजूद नहीं हैं या जो कुछ ऐसा नहीं कहते हैं जो आप सोचते हैं। study-swarm दोनों को बदल देता है: समानांतर अनुसंधान एजेंटों को भेजें, विशिष्ट उद्धृत निष्कर्षों की मांग करें, और डिज़ाइन को सूचित करने से पहले एक **एक अलग मॉडल परिवार के बाहरी सत्यापनकर्ता** के माध्यम से प्रत्येक उद्धरण को जांचें।
|
|
18
19
|
|
|
19
20
|
यह अपनी ही दवा का उपयोग करता है। प्रोटोकॉल उन प्रणालियों के लिए सत्यापनकर्ता-संरक्षित एन्वलप निर्धारित करता है जिन्हें यह डिज़ाइन करने में मदद करता है — इसलिए यह स्वयं पर भी इसे चलाता है। **कोई भी मॉडल अपने स्वयं के गृहकार्य का मूल्यांकन नहीं करता है, जिसमें प्रोटोकॉल चलाने वाला मॉडल भी शामिल है।**
|
|
20
21
|
|
|
21
22
|
## प्रोटोकॉल पाँच चरणों में
|
|
22
23
|
|
|
23
|
-
1. **पहचानें** 3-5 भार-असर वाले डिज़ाइन प्रश्न
|
|
24
|
-
2. **भेजें** प्रत्येक प्रश्न के लिए एक अनुसंधान एजेंट, समानांतर में। प्रत्येक को पेपर शीर्षक + लेखक + वर्ष + यूआरएल +
|
|
24
|
+
1. **पहचानें** 3-5 भार-असर वाले डिज़ाइन प्रश्न जहां अनुभवजन्य प्रमाण उत्तर को बदल देंगे।
|
|
25
|
+
2. **भेजें** प्रत्येक प्रश्न के लिए एक अनुसंधान एजेंट, समानांतर में। प्रत्येक को पेपर शीर्षक + लेखक + वर्ष + यूआरएल + एक-वाक्य निष्कर्ष लौटाना चाहिए — व्यापकता से अधिक विशिष्टता ("6-8 अच्छी तरह से संदर्भित निष्कर्ष 20 अस्पष्ट संकेतों से बेहतर हैं")।
|
|
25
26
|
3. **संश्लेषित करें** निष्कर्षों को एक *अनुसंधान आधार* अनुभाग में: `N. **<निष्कर्ष>.** <लेखक> <वर्ष> (<arXiv/DOI>). <डिज़ाइन निहितार्थ>.`
|
|
26
|
-
4.
|
|
27
|
+
4. **बाह्य रूप से सत्यापित करें** — एक *अलग मॉडल परिवार*, तर्क-मुक्त, दो चरणों में प्रत्येक उद्धरण की जांच करता है: एक **पुनर्प्राप्ति ओरेकल** पुष्टि करता है कि पेपर मौजूद है (कभी भी मॉडल की स्मृति नहीं), फिर एक **आधारितता** लेंस पुष्टि करता है कि निष्कर्ष स्रोत से मेल खाता है। **गढ़े हुए/गलत रूप से बताए गए उद्धरणों पर रोक लगाएं; यदि सत्यापनकर्ता या पुनर्प्राप्ति ओरेकल अनुपलब्ध है तो रोकें और आगे बढ़ाएं** (कभी भी अनुपस्थिति को "उद्धरण ठीक हैं" के रूप में न मानें)।
|
|
27
28
|
5. **प्रत्येक वास्तुशिल्प विकल्प को संख्या द्वारा एक निष्कर्ष से जोड़ें।** डिज़ाइन निहितार्थ के बिना उद्धरण शोर हैं।
|
|
28
29
|
|
|
29
30
|
पूरी निष्पादन योग्य जानकारी — रोक तालिका, सोर्सिंग मानक, एन्सेम्बल नियम — **[PROTOCOL.md](PROTOCOL.md)** में है।
|
|
@@ -33,42 +34,56 @@
|
|
|
33
34
|
क्योंकि विफलता के तरीके प्रलेखित हैं, काल्पनिक नहीं:
|
|
34
35
|
|
|
35
36
|
- **एलएलएम अपने स्वयं के आउटपुट को विश्वसनीय रूप से सत्यापित नहीं कर सकते हैं।** हुआंग एट अल. 2023 ([arXiv:2310.01798](https://arxiv.org/abs/2310.01798)); कंबंपती एट अल. 2024 ([arXiv:2402.01817](https://arxiv.org/abs/2402.01817), एलएलएम-मॉड्यूलो); स्टेचली एट अल. 2024 ([arXiv:2402.08115](https://arxiv.org/abs/2402.08115)) — बाहरी सत्यापनकर्ता लाभ प्रदान करता है; आत्म-आलोचना सामग्री निष्क्रिय है।
|
|
36
|
-
- **समान-परिवार के न्यायाधीश स्वयं को
|
|
37
|
-
- **उद्धरण वे स्थान हैं
|
|
37
|
+
- **समान-परिवार के न्यायाधीश स्वयं को प्राथमिकता देते हैं।** पैनिकसेरी, बोमन और फेंग 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — आत्म-पहचान *रैखिक रूप से* आत्म-वरीयता से संबंधित है, इसलिए आंशिक अंधापन मदद नहीं करता है। वर्गा एट अल. 2024 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796), पोएलएल) — अलग-अलग परिवारों में एक पैनल लगभग 7 गुना कम लागत पर कम पक्षपाती है।
|
|
38
|
+
- **उद्धरण वे स्थान हैं जहां एलएलएम झूठ बोलते हैं।** वाल्टर्स और वाइल्डर 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — जीपीटी-3.5 के 55% / जीपीटी-4 के 18% उद्धरण गढ़ते हैं। ऑनवेलेर एट अल. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) — लिंक >94% समय तक हल होते हैं, फिर भी केवल 39-77% उद्धृत सामग्री वास्तव में दावे का समर्थन करती है। इसलिए अस्तित्व की जांच **पुनर्प्राप्ति द्वारा की जानी चाहिए, न कि स्मरण द्वारा।**
|
|
38
39
|
- **जनरेटर के तर्क को छिपाएं।** खलीफा एट अल. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), "जज को धोखा देना") — अकेले हेरफेर किए गए चेन-ऑफ-थॉट एक न्यायाधीश के झूठे-सकारात्मकों को 90% तक बढ़ा देते हैं, जबकि क्रियाएं स्थिर रहती हैं। टर्पिन एट अल. 2023 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388)) — सीओटी पोस्ट-हॉक तर्कसंगतता है। सत्यापनकर्ता केवल नंगे उद्धरण दावे को देखता है, कभी भी "मैंने इसे क्यों शामिल किया" नहीं।
|
|
39
|
-
- **विविधता
|
|
40
|
+
- **विविधता गिनती से बेहतर है।** राजन 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — जोड़ीदार सहसंबंध ρ ∈ [0.05, 0.25] पर चार सत्यापनकर्ता उपमॉड्यूलर कवरेज के माध्यम से किसी भी एक स्मार्ट न्यायाधीश से बेहतर हैं। किम एट अल. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — एलएलएम त्रुटियां *संबंधित* हैं, इसलिए भार-असर चर लेंस विविधता है, न कि कच्ची गिनती।
|
|
40
41
|
|
|
41
42
|
## क्या यह वास्तव में काम करता है? (प्रमाण)
|
|
42
43
|
|
|
43
44
|
एक परीक्षण के रूप में, प्रोटोकॉल को अपने स्वयं के उद्धरणों के विरुद्ध चलाया गया था। दो असंबंधित गैर-क्लाउड परिवार — **मिस्ट्रल** (`mistral-small:24b`) और **आईबीएम ग्रेनाइट** (`granite4.1:30b`) — ने एक उद्धरण सेट की जांच की, तर्क-मुक्त, दो अंधे जाल के साथ:
|
|
44
45
|
|
|
45
|
-
| रोपा गया जाल | मिस्ट्रल | आईबीएम ग्रेनाइट |
|
|
46
|
+
| रोपा गया जाल | मिस्ट्रल | आईबीएम ग्रेनाइट | वास्तविक स्थिति |
|
|
46
47
|
|---|---|---|---|
|
|
47
|
-
| "नकामुरा और ओल्सन" को जिम्मेदार चेन-ऑफ-थॉट प्रॉम्प्टिंग | छोड़ दिया | **पकड़ा गया** (गलत रूप से
|
|
48
|
-
| एक
|
|
48
|
+
| "नकामुरा और ओल्सन" को जिम्मेदार चेन-ऑफ-थॉट प्रॉम्प्टिंग | छोड़ दिया | **पकड़ा गया** (गलत रूप से बताया गया → वास्तव में वेई एट अल. 2022) | गलत रूप से बताया गया |
|
|
49
|
+
| एक गढ़ित "98% त्रुटियों को हटा दिया गया, ओरेकल की आवश्यकता नहीं है" पेपर | **caught** (fabricated) | **caught** (fabricated) | गढ़ा हुआ |
|
|
49
50
|
|
|
50
|
-
किसी भी परिवार ने अकेले दोनों जाल नहीं पकड़े — लेकिन उनके **संघ ने 2/2
|
|
51
|
+
किसी भी परिवार ने अकेले दोनों जाल नहीं पकड़े — लेकिन उनके **संघ ने 2/2 पकड़ा।** एक न्यायाधीश ने गलत आरोप को जारी कर दिया होता। अलग से, पुनर्प्राप्ति ओरेकल ने हमारे अपने डिज़ाइन दस्तावेज़ों में दो *वास्तविक* गलत आरोपों को पकड़ा (गलत पहले लेखक के तहत उद्धृत पेपर) जिन्हें किसी भी पैरामीट्रिक एलएलएम द्वारा चिह्नित नहीं किया जा सकता था — और इसने सही ढंग से वास्तविक 2026 पेपरों की पुष्टि की, जिन्हें दोनों एलएलएम ने केवल इसलिए गढ़ित के रूप में गलत चिह्नित किया क्योंकि पेपर उनके प्रशिक्षण के बाद के हैं। वह अंतिम बिंदु पूरी तरह से कारण है कि चरण 4 में अस्तित्व की जांच **एक पुनर्प्राप्ति ओरेकल होनी चाहिए, कभी भी एलएलएम नहीं।**
|
|
51
52
|
|
|
52
53
|
यह एकल रन लघु रूप में थीसिस है: **असंबंधित लेंस + अस्तित्व के लिए एक पुनर्प्राप्ति ओरेकल किसी भी एक स्मार्ट न्यायाधीश से बेहतर है।**
|
|
53
54
|
|
|
54
55
|
## यह कैसे जुड़ा हुआ है
|
|
55
56
|
|
|
56
|
-
आप प्रोटोकॉल को मैन्युअल रूप से चला सकते हैं —
|
|
57
|
+
आप प्रोटोकॉल को मैन्युअल रूप से चला सकते हैं — किसी भी अलग-परिवार मॉडल के साथ और स्वयं द्वारा arXiv/DOI को हल करने से चरण 4 पूरा हो जाता है। दो संबंधित उपकरण इसे एक कमांड बनाते हैं:
|
|
57
58
|
|
|
58
|
-
- **[
|
|
59
|
-
- **[
|
|
59
|
+
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — रनटाइम सत्यापनकर्ता: परिवार-विशिष्ट रूटिंग, तर्क-मुक्त, बहु-लेंस निर्णय, एक नियतात्मक पुनर्प्राप्ति अस्तित्व तल (arXiv → Crossref), और हस्ताक्षरित रसीदें।
|
|
60
|
+
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — `roleos verify-citations <dispatch>` प्रदान करता है, जो एक ऐसा रनर है जो एक डिस्पैच के उद्धरणों को निकालता है और उन्हें प्रिज्म के माध्यम से संसाधित करता है।
|
|
60
61
|
|
|
61
|
-
##
|
|
62
|
+
## सीएलआई
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
```bash
|
|
65
|
+
npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
| कमांड | यह क्या करता है |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `study-swarm protocol` | पूरे प्रोटोकॉल को प्रिंट करें — पाँच चरण, हॉल्ट तालिका, सोर्सिंग मानक। |
|
|
71
|
+
| `study-swarm new <slug>` | पाँच-चरणीय ढाँचे के साथ `<slug>.dispatch.md` बनाएं ताकि इसे भरा जा सके। |
|
|
72
|
+
| `study-swarm lint <file>` | किसी डिस्पैच के *अनुसंधान आधार* की सोर्सिंग मानक के विरुद्ध जाँच करें — प्रत्येक निष्कर्ष के लिए एक लेखक, एक वर्ष और एक पहचानने योग्य पहचानकर्ता (arXiv / DOI / URL) की आवश्यकता होती है; "अध्ययनों से पता चलता है…" जैसे अस्पष्ट दावे अस्वीकार किए जाते हैं। उल्लंघन होने पर `1` के साथ बाहर निकलें, ताकि यह सीआई को नियंत्रित करे। |
|
|
73
|
+
|
|
74
|
+
`lint` नियतात्मक है — शून्य मॉडल कॉल — इसलिए यह सीआई में सुरक्षित है। यह स्थानीय रूप से **चरण 3 के सोर्सिंग मानक** को लागू करता है; मॉडल-आधारित **चरण 4** सत्यापन अभी भी [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → प्रिज्म पर निर्भर करता है।
|
|
75
|
+
|
|
76
|
+
## यह कैसे काम करता है, एक वाक्य में
|
|
77
|
+
|
|
78
|
+
**वर्तमान** — यह क्षेत्र तेजी से आगे बढ़ रहा है; विशिष्ट अध्ययनों-के-साथ-वर्षों की मांग करने से डिज़ाइन 18 महीने पीछे नहीं रहते हैं। **कार्यात्मक** — सबूत दिखाते हैं कि *क्या विफल होता है*, न कि केवल यह कि क्या काम करता है (व्याख्याएँ *गलत* एआई पर अत्यधिक निर्भरता बढ़ा सकती हैं — बंसल एट अल। 2021)। **सुरक्षित** — सत्यापनकर्ता-संरक्षित क्षेत्र वह आर्किटेक्चर है जिसका सबूत समर्थन करता है, और प्रोटोकॉल इसे अपने आउटपुट पर लागू करता है। सोर्सिंग अकादमिक प्रदर्शन नहीं है; यह सबूत का निशान है।
|
|
64
79
|
|
|
65
80
|
## सुरक्षा
|
|
66
81
|
|
|
67
|
-
|
|
82
|
+
`study-swarm` एक दस्तावेज़ भंडार है — मार्कडाउन और एक लोगो। यह कोई निष्पादन योग्य कोड शिप नहीं करता है और इस भंडार से कुछ भी स्थापित नहीं करता है। यह किसी भी डेटा को नहीं छूता है, किसी भी अनुमति की आवश्यकता नहीं है, और कोई टेलीमेट्री एकत्र नहीं करता है; स्रोत में कोई गुप्त जानकारी या क्रेडेंशियल नहीं हैं। कार्यप्रणाली *एक ऐसे वर्कफ़्लो का वर्णन करती है* जो वेब पुनर्प्राप्ति और मॉडल-आधारित सत्यापन का उपयोग करता है, लेकिन यह भंडार इसे लागू या निष्पादित नहीं करता है। [SECURITY.md](SECURITY.md) देखें।
|
|
68
83
|
|
|
69
84
|
## स्थिति
|
|
70
85
|
|
|
71
|
-
एक
|
|
86
|
+
एक कार्यशील प्रोटोकॉल, जिसकी अपनी मशीनरी द्वारा बाहरी रूप से जाँच की जाती है — एक अलग मॉडल परिवार इसके उद्धरणों की जाँच करता है (ऊपर प्रमाण देखें)। यह भंडार सार्वजनिक संदर्भ है; [PROTOCOL.md](PROTOCOL.md) निष्पादन योग्य रूप है। [dogfood-lab](https://github.com/dogfood-lab) परिवार का हिस्सा — एआई युग में निर्माण के लिए विधियाँ और प्रदर्शन।
|
|
72
87
|
|
|
73
88
|
एमआईटी लाइसेंस प्राप्त।
|
|
74
89
|
|
package/README.it.md
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/@dogfood-lab/study-swarm"><img src="https://img.shields.io/npm/v/@dogfood-lab/study-swarm" alt="npm"></a>
|
|
10
11
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
|
|
11
12
|
<a href="https://dogfood-lab.github.io/study-swarm/"><img src="https://img.shields.io/badge/handbook-live-purple" alt="Handbook"></a>
|
|
12
13
|
<img src="https://img.shields.io/badge/cited%20research-verified-1f6feb" alt="Cited research, verified">
|
|
@@ -58,6 +59,20 @@ Questa singola esecuzione è la tesi in miniatura: **"lenti" non correlate + un
|
|
|
58
59
|
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — il verificatore in fase di esecuzione: instradamento differenziato per famiglia, ragionamento semplificato, arbitraggio multi-lente, un limite inferiore deterministico per il recupero dell'esistenza (arXiv → Crossref) e ricevute firmate.
|
|
59
60
|
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — fornisce `roleos verify-citations <dispatch>`, lo strumento che estrae le citazioni di un documento e le elabora tramite prism.
|
|
60
61
|
|
|
62
|
+
## CLI
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
| Comando | Funzione |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `study-swarm protocol` | Stampa l’intero protocollo: le cinque fasi, la tabella di controllo e lo standard di riferimento. |
|
|
71
|
+
| `study-swarm new <slug>` | Crea un file `<slug>.dispatch.md` con la struttura delle cinque fasi, da completare. |
|
|
72
|
+
| `study-swarm lint <file>` | Verifica la sezione *Base di ricerca* di un documento rispetto allo standard di riferimento: ogni dato deve avere un autore, un anno e un identificatore univoco (arXiv / DOI / URL); le affermazioni generiche del tipo "gli studi dimostrano..." non sono accettate. In caso di violazioni, il comando termina con codice di uscita `1`, bloccando quindi il processo di CI. |
|
|
73
|
+
|
|
74
|
+
`lint` è deterministico (non effettua chiamate al modello), quindi è sicuro da utilizzare in CI. Applica localmente lo **standard di riferimento della fase 3**; la verifica basata sul modello della **fase 4** viene comunque eseguita tramite [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
|
|
75
|
+
|
|
61
76
|
## In sintesi, perché funziona
|
|
62
77
|
|
|
63
78
|
**Efficienza** — il settore è in rapida evoluzione; richiedere studi specifici e approfonditi rallenta lo sviluppo dei progetti di 18 mesi. **Funzionalità** — i dati mostrano cosa *non* funziona, non solo cosa funziona (le spiegazioni possono portare a un'eccessiva dipendenza da un'IA *errata* — Bansal et al. 2021). **Sicurezza** — l'ambiente protetto dal verificatore è l'architettura supportata dai dati, e il protocollo la applica ai propri risultati. La verifica non è un esercizio accademico; è la traccia dei dati.
|
package/README.ja.md
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/@dogfood-lab/study-swarm"><img src="https://img.shields.io/npm/v/@dogfood-lab/study-swarm" alt="npm"></a>
|
|
10
11
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
|
|
11
12
|
<a href="https://dogfood-lab.github.io/study-swarm/"><img src="https://img.shields.io/badge/handbook-live-purple" alt="Handbook"></a>
|
|
12
13
|
<img src="https://img.shields.io/badge/cited%20research-verified-1f6feb" alt="Cited research, verified">
|
|
@@ -58,6 +59,20 @@
|
|
|
58
59
|
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — 実行時検証ツール:異なるモデルファミリー間でのルーティング、推論の簡略化、多角的な判断、決定的な検索による存在確認(arXiv → Crossref)、および署名されたレシートを提供。
|
|
59
60
|
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — `roleos verify-citations <dispatch>` を提供。このツールは、特定のドキュメントの引用を抽出し、それを prism を介して検証する。
|
|
60
61
|
|
|
62
|
+
## CLI
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
| コマンド | 機能 |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `study-swarm protocol` | 完全なプロトコル(5つのステップ、停止テーブル、情報源の基準)を出力します。 |
|
|
71
|
+
| `study-swarm new <slug>` | 5つのステップのテンプレートを含む`<slug>.dispatch.md`を作成し、内容を記述できるようにします。 |
|
|
72
|
+
| `study-swarm lint <file>` | ディスパッチの「調査根拠」を情報源の基準と照合し、すべての調査結果について、著者、年、および解決可能な識別子(arXiv / DOI / URL)が必要です。「研究によると…」といった曖昧な表現は認められません。違反があった場合は、エラーコード`1`を返し、CIの実行を停止します。 |
|
|
73
|
+
|
|
74
|
+
`lint`は決定的な処理であり、モデルへの呼び出しは行われないため、CI環境で安全に使用できます。ローカルで**ステップ3の情報源の基準**を適用します。モデルベースの**ステップ4**の検証は、引き続き[`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prismに委ねられます。
|
|
75
|
+
|
|
61
76
|
## なぜ機能するのか(簡潔に)
|
|
62
77
|
|
|
63
78
|
**現状** — この分野は急速に進展しており、特定の研究を数年かけて行うと、設計が18か月遅れてリリースされることになる。**機能性** — 証拠は、何が「機能する」かだけでなく、何が「機能しない」かを示す(説明が、誤ったAIへの過度な依存を招く可能性がある — Bansal et al. 2021)。**安全性** — 検証ツールによって保護された範囲は、証拠によって裏付けられるアーキテクチャであり、プロトコルはそれを自身の出力に適用する。情報源の提示は、学術的なパフォーマンスではなく、証拠の追跡である。
|
package/README.md
CHANGED
|
@@ -59,6 +59,20 @@ You can run the protocol by hand — any different-family model plus resolving t
|
|
|
59
59
|
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — the runtime verifier: family-different routing, reasoning-stripped, multi-lens adjudication, a deterministic retrieval existence floor (arXiv → Crossref), and signed receipts.
|
|
60
60
|
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — provides `roleos verify-citations <dispatch>`, the runner that extracts a dispatch's citations and gates them through prism.
|
|
61
61
|
|
|
62
|
+
## CLI
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
| Command | What it does |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `study-swarm protocol` | Print the full protocol — the five steps, the halt table, the sourcing standard. |
|
|
71
|
+
| `study-swarm new <slug>` | Scaffold a `<slug>.dispatch.md` with the five-step skeleton to fill in. |
|
|
72
|
+
| `study-swarm lint <file>` | Check a dispatch's *Research grounding* against the sourcing standard — every finding needs an author, a year, and a resolvable identifier (arXiv / DOI / URL); "studies show…" hand-waving is rejected. Exit `1` on violations, so it gates CI. |
|
|
73
|
+
|
|
74
|
+
`lint` is deterministic — zero model calls — so it's safe in CI. It enforces **Step 3's sourcing standard** locally; the model-based **Step 4** verification still defers to [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
|
|
75
|
+
|
|
62
76
|
## Why it works, in one breath
|
|
63
77
|
|
|
64
78
|
**Current** — the field moves fast; demanding specific studies-with-years keeps designs from shipping 18 months behind. **Functional** — evidence shows what *fails*, not just what works (explanations can increase over-reliance on *wrong* AI — Bansal et al. 2021). **Safe** — the verifier-protected envelope is the architecture the evidence supports, and the protocol enforces it on its own output. Sourcing isn't academic theater; it's the evidence trail.
|
package/README.pt-BR.md
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/@dogfood-lab/study-swarm"><img src="https://img.shields.io/npm/v/@dogfood-lab/study-swarm" alt="npm"></a>
|
|
10
11
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
|
|
11
12
|
<a href="https://dogfood-lab.github.io/study-swarm/"><img src="https://img.shields.io/badge/handbook-live-purple" alt="Handbook"></a>
|
|
12
13
|
<img src="https://img.shields.io/badge/cited%20research-verified-1f6feb" alt="Cited research, verified">
|
|
@@ -58,6 +59,20 @@ Você pode executar o protocolo manualmente — qualquer modelo de família dife
|
|
|
58
59
|
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — o verificador em tempo de execução: roteamento diferenciado por família, sem inferências, adjudicação multi-lente, um limite determinístico de existência de recuperação (arXiv → Crossref) e recibos assinados.
|
|
59
60
|
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — fornece `roleos verify-citations <dispatch>`, o executor que extrai as citações de um documento e as valida através do prism.
|
|
60
61
|
|
|
62
|
+
## CLI
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
| Comando | O que faz |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `study-swarm protocol` | Imprime o protocolo completo — as cinco etapas, a tabela de interrupção, o padrão de pesquisa. |
|
|
71
|
+
| `study-swarm new <slug>` | Cria um arquivo `<slug>.dispatch.md` com a estrutura básica das cinco etapas para ser preenchido. |
|
|
72
|
+
| `study-swarm lint <file>` | Verifica a *base de pesquisa* de um relatório em relação ao padrão de pesquisa — cada descoberta precisa de um autor, um ano e um identificador que possa ser resolvido (arXiv / DOI / URL); afirmações vagas do tipo "estudos mostram…" são rejeitadas. Sai com o código `1` em caso de violações, o que impede a execução no CI. |
|
|
73
|
+
|
|
74
|
+
`lint` é determinístico — não faz chamadas ao modelo — portanto, é seguro para uso no CI. Ele aplica o **padrão de pesquisa da Etapa 3** localmente; a verificação baseada em modelo da **Etapa 4** ainda depende de [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
|
|
75
|
+
|
|
61
76
|
## Por que funciona, em poucas palavras
|
|
62
77
|
|
|
63
78
|
**Atual** — o campo evolui rapidamente; exigir estudos específicos com anos de duração impede que os projetos sejam lançados com 18 meses de atraso. **Funcional** — a evidência mostra o que *falha*, não apenas o que funciona (as explicações podem aumentar a dependência excessiva de uma IA *incorreta* — Bansal et al. 2021). **Seguro** — o envelope protegido pelo verificador é a arquitetura que a evidência suporta, e o protocolo a impõe em sua própria saída. A obtenção de fontes não é um exercício acadêmico; é o rastro da evidência.
|
package/README.zh.md
CHANGED
|
@@ -7,68 +7,83 @@
|
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/@dogfood-lab/study-swarm"><img src="https://img.shields.io/npm/v/@dogfood-lab/study-swarm" alt="npm"></a>
|
|
10
11
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
|
|
11
12
|
<a href="https://dogfood-lab.github.io/study-swarm/"><img src="https://img.shields.io/badge/handbook-live-purple" alt="Handbook"></a>
|
|
12
13
|
<img src="https://img.shields.io/badge/cited%20research-verified-1f6feb" alt="Cited research, verified">
|
|
13
14
|
</p>
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
**将设计决策建立在引用的研究基础上——然后在将任何内容确立为标准之前,使用*不同的*模型系列来验证这些引用。**
|
|
16
17
|
|
|
17
|
-
`study-swarm` 是一种协议,而不是一种工具。当您使用大型语言模型 (LLM)
|
|
18
|
+
`study-swarm` 是一种协议,而不是一种工具。当您使用大型语言模型 (LLM) 做出重大的设计决策时——例如,创建一个新的产品层、选择一种架构,或者决定“我们是否应该在这里信任该模型”——如果仅凭经验进行设计,会导致设计陈旧;如果仅凭记忆引用论文,会导致设计依赖于不存在或与您认为的内容不符的来源。`study-swarm` 替代了这两种方法:同时启动多个研究代理,要求提供具体的引用结果,并在每个引用被用于指导设计之前,通过一个**来自不同模型系列的外部验证器**进行验证。
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
它也适用于自身。该协议规定,对于它所帮助设计的系统,应使用经过验证器保护的机制——因此,它也将其应用于自身。**没有模型会自己批改作业,包括运行该协议的模型。**
|
|
20
21
|
|
|
21
22
|
## 该协议包含五个步骤
|
|
22
23
|
|
|
23
24
|
1. **确定** 3-5 个关键的设计问题,如果存在经验证据,这些证据可能会改变答案。
|
|
24
|
-
2.
|
|
25
|
+
2. **同时启动**每个问题的研究代理。每个代理必须返回论文标题 + 作者 + 年份 + URL + 一句话的结论——强调具体性而非广泛性(“6-8 个来源可靠的结论胜过 20 个模糊的描述”)。
|
|
25
26
|
3. **将结论综合**到“研究依据”部分:`N. **<结论>.** <作者> <年份> (<arXiv/DOI>). <设计意义>.`
|
|
26
|
-
4.
|
|
27
|
-
5.
|
|
27
|
+
4. **进行外部验证**——一个*不同的模型系列*,不带推理能力,以两个阶段检查每个引用:一个**检索预言机**确认论文是否存在(永远不是模型的记忆),然后一个**可靠性**过滤器确认结论与来源是否匹配。如果发现捏造或错误引用,则**停止**;如果验证器或检索预言机不可用,则**停止并升级**(永远不要将无法找到的情况视为“引用没问题”)。
|
|
28
|
+
5. **将每个架构选择与一个结论联系起来**,通过编号进行关联。没有设计意义的引用是噪音。
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
完整的可执行细节——停止表、来源标准、集成规则——位于 **[PROTOCOL.md](PROTOCOL.md)** 中。
|
|
30
31
|
|
|
31
|
-
##
|
|
32
|
+
## 为什么使用*不同的*模型系列,并且不带推理能力?
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
因为失败模式是已知的,而不是假设的:
|
|
34
35
|
|
|
35
|
-
-
|
|
36
|
+
- **大型语言模型无法可靠地验证其自身的输出。** Huang 等人,2023 年 ([arXiv:2310.01798](https://arxiv.org/abs/2310.01798));Kambhampati 等人,2024 年 ([arXiv:2402.01817](https://arxiv.org/abs/2402.01817),LLM-Modulo);Stechly 等人,2024 年 ([arXiv:2402.08115](https://arxiv.org/abs/2402.08115))——外部验证器可以带来收益;自我批评的内容是无效的。
|
|
36
37
|
- **同一系列的评估者会偏向于自我。** Panickssery、Bowman 和 Feng,2024 年 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076))——自我识别与自我偏好呈*线性*相关,因此部分隐藏并不能提供帮助。Verga 等人,2024 年 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796),PoLL))——来自不同系列的评估小组的偏见更小,成本约为原来的 1/7。
|
|
37
38
|
- **大型语言模型最容易在引用方面撒谎。** Walters 和 Wilder,2023 年 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5))——55% 的 GPT-3.5 / 18% 的 GPT-4 引用是捏造的。Onweller 等人,2026 年 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635))——链接可以解决超过 94% 的问题,但只有 39-77% 的引用内容实际上支持该主张。因此,必须通过**检索**来检查是否存在,而不是通过**回忆**。
|
|
38
|
-
- **隐藏生成器的推理过程。** Khalifa 等人,2026 年 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691),“欺骗评估者”)——仅通过操纵思维链,就可以使评估者的假阳性率提高高达 90%,而操作保持不变。Turpin 等人,2023 年 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388))
|
|
39
|
-
- **多样性胜过数量。** Rajan,2025 年 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708))——四个验证器,成对相关性 ρ ∈ [0.05, 0.25],通过亚模覆盖胜过任何一个智能评估者。Kim 等人,2025 年 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962))
|
|
39
|
+
- **隐藏生成器的推理过程。** Khalifa 等人,2026 年 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691),“欺骗评估者”)——仅通过操纵思维链,就可以使评估者的假阳性率提高高达 90%,而操作保持不变。Turpin 等人,2023 年 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388))——思维链是一种事后合理化。验证器看到的是裸露的引用主张,而不是“我为什么包含这个”。
|
|
40
|
+
- **多样性胜过数量。** Rajan,2025 年 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708))——四个验证器,成对相关性 ρ ∈ [0.05, 0.25],通过亚模覆盖胜过任何一个智能评估者。Kim 等人,2025 年 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962))——大型语言模型的错误是*相关的*,因此关键变量是视角多样性,而不是原始数量。
|
|
40
41
|
|
|
41
42
|
## 它真的有效吗?(证明)
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
作为一项测试,该协议被应用于其自身的引用。两个不相关的非 Claude 系列——**Mistral** (`mistral-small:24b`) 和 **IBM Granite** (`granite4.1:30b`)——检查了一组引用,并且不带推理能力,并设置了两个盲目陷阱:
|
|
44
45
|
|
|
45
46
|
| 设置的陷阱 | Mistral | IBM Granite | 真实情况 |
|
|
46
47
|
|---|---|---|---|
|
|
47
48
|
| 思维链提示归因于“Nakamura & Olsen” | 未发现 | **发现**(错误归因 → 实际上是 Wei 等人,2022 年) | 错误归因 |
|
|
48
49
|
| 一个捏造的“98% 的错误已消除,不需要预言机”论文 | **caught** (fabricated) | **caught** (fabricated) | 捏造 |
|
|
49
50
|
|
|
50
|
-
两个模型单独都没有发现这两个陷阱——但它们的**组合发现了 2/2
|
|
51
|
+
两个模型单独都没有发现这两个陷阱——但它们的**组合发现了 2/2 个**。如果只有一个评估者,它会忽略错误归因。此外,检索预言机发现了我们自己设计文档中的两个*真实*的错误归因(引用了错误的作者),而任何参数化的大型语言模型都无法标记——并且它正确地确认了 2026 年的真实论文,而这两个大型语言模型都错误地将其标记为捏造,仅仅是因为这些论文的发布时间晚于它们的训练时间。最后一点是,步骤 4 的存在性检查**必须**是一个检索预言机,而不是大型语言模型。
|
|
51
52
|
|
|
52
|
-
|
|
53
|
+
这一个测试就是缩影:**不相关的视角 + 用于验证存在性的检索预言机,胜过任何一个智能评估者。**
|
|
53
54
|
|
|
54
|
-
##
|
|
55
|
+
## 它的工作方式
|
|
55
56
|
|
|
56
|
-
|
|
57
|
+
您可以手动运行该协议——任何不同的模型系列,加上您自己解析 arXiv/DOI,就可以满足步骤 4 的要求。两个辅助工具可以将其简化为一个命令:
|
|
57
58
|
|
|
58
|
-
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** —
|
|
59
|
-
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — 提供 `roleos verify-citations <dispatch>`
|
|
59
|
+
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — 运行时验证器:不同类型的路由、去除推理过程、多角度仲裁、确定性的检索存在性验证(arXiv → Crossref)以及带签名的收据。
|
|
60
|
+
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — 提供 `roleos verify-citations <dispatch>` 命令,该命令提取某个任务的引用,并通过 prism 进行验证。
|
|
60
61
|
|
|
61
|
-
##
|
|
62
|
+
## 命令行界面
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
```bash
|
|
65
|
+
npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
| 命令 | 功能 |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `study-swarm protocol` | 打印完整的协议——五个步骤、终止表、来源标准。 |
|
|
71
|
+
| `study-swarm new <slug>` | 生成一个 `<slug>.dispatch.md` 文件,其中包含五个步骤的框架,以便进行填充。 |
|
|
72
|
+
| `study-swarm lint <file>` | 检查某个任务的*研究依据*是否符合来源标准——每个发现都需要有作者、年份和可解析的标识符(arXiv / DOI / URL);“研究表明……”这种含糊的说法将被拒绝。如果存在违规,则返回 `1`,从而阻止 CI。 |
|
|
73
|
+
|
|
74
|
+
`lint` 命令是确定性的——不调用任何模型——因此可以在 CI 中安全地使用。它在本地强制执行**第三步的来源标准**;基于模型的**第四步**验证仍然依赖于 [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism。
|
|
75
|
+
|
|
76
|
+
## 为什么它有效,一句话概括
|
|
77
|
+
|
|
78
|
+
**及时性**——该领域发展迅速;要求提供具体的、带有年份的研究,可以防止设计落后 18 个月。**实用性**——证据表明哪些*失败*,而不仅仅是哪些有效(解释可能会增加对*错误*人工智能的过度依赖——Bansal 等人,2021 年)。**安全性**——由验证器保护的范围是证据支持的架构,并且协议对其自身的输出进行强制执行。来源不是学术表演;它是证据链。
|
|
64
79
|
|
|
65
80
|
## 安全性
|
|
66
81
|
|
|
67
|
-
`study-swarm` 是一个文档仓库——包含 Markdown
|
|
82
|
+
`study-swarm` 是一个文档仓库——包含 Markdown 文件和徽标。它不包含任何可执行代码,也不从该仓库安装任何内容。它不涉及任何数据,不需要任何权限,也不收集任何遥测数据;源代码中没有秘密或凭据。该方法*描述*了一种使用网络检索和基于模型的验证的工作流程,但此仓库不实现或运行该工作流程。请参阅 [SECURITY.md](SECURITY.md)。
|
|
68
83
|
|
|
69
84
|
## 状态
|
|
70
85
|
|
|
71
|
-
|
|
86
|
+
一个可行的协议,由其自身的机制进行外部验证——不同的模型家族检查其引用(参见上面的证明)。此仓库是公共参考;[PROTOCOL.md](PROTOCOL.md) 是可执行的形式。它是 [dogfood-lab](https://github.com/dogfood-lab) 系列的一部分——用于在人工智能时代构建的方法和示例。
|
|
72
87
|
|
|
73
88
|
采用 MIT 许可。
|
|
74
89
|
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// study-swarm — thin CLI for the research-grounded design protocol.
|
|
3
|
+
// Zero runtime dependencies. Commands: protocol | new | lint | help | version.
|
|
4
|
+
import { readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { dirname, resolve } from 'node:path';
|
|
7
|
+
|
|
8
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const PKG = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf8'));
|
|
10
|
+
const VERSION = PKG.version;
|
|
11
|
+
|
|
12
|
+
const HELP = `study-swarm v${VERSION} — ground design decisions in cited research, then verify.
|
|
13
|
+
|
|
14
|
+
USAGE
|
|
15
|
+
study-swarm <command> [args]
|
|
16
|
+
|
|
17
|
+
COMMANDS
|
|
18
|
+
protocol Print the locked protocol (the five steps + halt rules).
|
|
19
|
+
new <slug> Scaffold a dispatch file <slug>.dispatch.md to fill in.
|
|
20
|
+
lint <file> Check a dispatch's citations against the sourcing standard.
|
|
21
|
+
help Show this help.
|
|
22
|
+
version Print the version.
|
|
23
|
+
|
|
24
|
+
EXIT CODES
|
|
25
|
+
0 ok / lint clean
|
|
26
|
+
1 lint found sourcing violations
|
|
27
|
+
2 usage or runtime error
|
|
28
|
+
|
|
29
|
+
Run a dispatch's model-based verification with: roleos verify-citations <file>
|
|
30
|
+
Docs: https://dogfood-lab.github.io/study-swarm/
|
|
31
|
+
`;
|
|
32
|
+
|
|
33
|
+
function fail(code, msg) {
|
|
34
|
+
process.stderr.write(`study-swarm: ${msg}\n`);
|
|
35
|
+
process.exit(code);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function cmdProtocol() {
|
|
39
|
+
const p = resolve(__dirname, '../PROTOCOL.md');
|
|
40
|
+
if (!existsSync(p)) fail(2, 'PROTOCOL.md not found in package');
|
|
41
|
+
process.stdout.write(readFileSync(p, 'utf8'));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const template = (slug) => `# Study-swarm dispatch: ${slug}
|
|
45
|
+
|
|
46
|
+
> Fill in each section. Verify citations (Step 4) BEFORE connecting findings to the design (Step 5).
|
|
47
|
+
> Lint the sourcing with: study-swarm lint ${slug}.dispatch.md
|
|
48
|
+
|
|
49
|
+
## Step 1 — Load-bearing questions
|
|
50
|
+
<!-- 3-5 questions where empirical evidence would change the answer. Fewer is fine if the decision is substantial. -->
|
|
51
|
+
1.
|
|
52
|
+
2.
|
|
53
|
+
3.
|
|
54
|
+
|
|
55
|
+
## Step 2 — Research dispatch
|
|
56
|
+
<!-- One research agent per question, in parallel. Each returns: title, authors, year, URL, one-sentence finding. -->
|
|
57
|
+
|
|
58
|
+
## Step 3 — Research grounding
|
|
59
|
+
<!-- One entry per finding (this is what 'lint' checks):
|
|
60
|
+
N. **<finding>.** <Authors> <year> (<arXiv:NNNN.NNNNN | DOI>). <design implication>. -->
|
|
61
|
+
1. **<finding>.** <Authors> <year> (arXiv:____.____). <implication>.
|
|
62
|
+
|
|
63
|
+
## Step 4 — External verification
|
|
64
|
+
<!-- Different model family, reasoning-stripped. Run: roleos verify-citations ${slug}.dispatch.md
|
|
65
|
+
HALT on fabricated/misattributed; halt-and-escalate if the verifier or oracle is unavailable. -->
|
|
66
|
+
- [ ] every citation resolved by retrieval (arXiv/DOI), not model memory
|
|
67
|
+
- [ ] every finding matches what its source actually claims (groundedness)
|
|
68
|
+
- [ ] >= 3 decorrelated lenses (retrieval oracle + >= 2 different model families)
|
|
69
|
+
|
|
70
|
+
## Step 5 — Architecture
|
|
71
|
+
<!-- Each load-bearing choice references a finding by number. Citations without a connection are noise. -->
|
|
72
|
+
`;
|
|
73
|
+
|
|
74
|
+
function cmdNew(slug) {
|
|
75
|
+
if (!slug) fail(2, 'usage: study-swarm new <slug>');
|
|
76
|
+
const safe = String(slug).replace(/\.dispatch\.md$/i, '').replace(/[^\w.\-/]/g, '-');
|
|
77
|
+
const out = `${safe}.dispatch.md`;
|
|
78
|
+
if (existsSync(out)) fail(2, `refusing to overwrite existing ${out}`);
|
|
79
|
+
writeFileSync(out, template(safe), 'utf8');
|
|
80
|
+
process.stdout.write(`Created ${out}\nFill it in, then: study-swarm lint ${out}\n`);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function cmdLint(file) {
|
|
84
|
+
if (!file) fail(2, 'usage: study-swarm lint <file>');
|
|
85
|
+
if (!existsSync(file)) fail(2, `file not found: ${file}`);
|
|
86
|
+
const lines = readFileSync(file, 'utf8').split(/\r?\n/);
|
|
87
|
+
|
|
88
|
+
const start = lines.findIndex((l) => /^#{1,6}\s.*research grounding/i.test(l));
|
|
89
|
+
if (start === -1) fail(1, 'no "Research grounding" section found — every dispatch needs one (Step 3).');
|
|
90
|
+
let end = lines.length;
|
|
91
|
+
for (let i = start + 1; i < lines.length; i++) {
|
|
92
|
+
if (/^#{1,6}\s/.test(lines[i])) { end = i; break; }
|
|
93
|
+
}
|
|
94
|
+
const section = lines.slice(start + 1, end);
|
|
95
|
+
|
|
96
|
+
const YEAR = /\b(19|20)\d{2}\b/;
|
|
97
|
+
const ID = /(arxiv:\s*\d{4}\.\d{4,5}|10\.\d{4,9}\/\S+|https?:\/\/\S+)/i;
|
|
98
|
+
const PLACEHOLDER = /arXiv:_{2,}|<finding>|<authors>|<year>|<implication>/i;
|
|
99
|
+
const BANNED = /\b(studies show|research suggests|it'?s well[- ]established|well[- ]established that)\b/i;
|
|
100
|
+
|
|
101
|
+
// Each numbered list item (with its continuation lines) is one finding.
|
|
102
|
+
const findings = [];
|
|
103
|
+
let cur = null;
|
|
104
|
+
for (const l of section) {
|
|
105
|
+
if (/^\s*\d+\.\s/.test(l)) { if (cur !== null) findings.push(cur); cur = l; }
|
|
106
|
+
else if (cur !== null && l.trim()) cur += ' ' + l.trim();
|
|
107
|
+
}
|
|
108
|
+
if (cur !== null) findings.push(cur);
|
|
109
|
+
|
|
110
|
+
const problems = [];
|
|
111
|
+
if (findings.length === 0) problems.push('Research grounding has no numbered findings.');
|
|
112
|
+
findings.forEach((f, i) => {
|
|
113
|
+
const n = i + 1;
|
|
114
|
+
if (PLACEHOLDER.test(f)) problems.push(`finding ${n}: still has template placeholders — fill it in.`);
|
|
115
|
+
if (!YEAR.test(f)) problems.push(`finding ${n}: missing a year.`);
|
|
116
|
+
if (!ID.test(f)) problems.push(`finding ${n}: missing an identifier (arXiv:NNNN.NNNNN, DOI, or URL).`);
|
|
117
|
+
});
|
|
118
|
+
lines.forEach((l, i) => {
|
|
119
|
+
if (BANNED.test(l) && !ID.test(l)) {
|
|
120
|
+
problems.push(`line ${i + 1}: name the study (author + year + identifier), don't gesture: "${l.trim().slice(0, 56)}"`);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
if (problems.length) {
|
|
125
|
+
process.stderr.write(`x ${file}: ${problems.length} sourcing issue(s)\n`);
|
|
126
|
+
for (const p of problems) process.stderr.write(` - ${p}\n`);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
process.stdout.write(`ok ${file}: ${findings.length} finding(s), all sourced.\n`);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function main(argv) {
|
|
133
|
+
const [cmd, ...rest] = argv;
|
|
134
|
+
switch (cmd) {
|
|
135
|
+
case 'protocol': return cmdProtocol();
|
|
136
|
+
case 'new': return cmdNew(rest[0]);
|
|
137
|
+
case 'lint': return cmdLint(rest[0]);
|
|
138
|
+
case 'version': case '--version': case '-v':
|
|
139
|
+
return void process.stdout.write(VERSION + '\n');
|
|
140
|
+
case 'help': case '--help': case '-h': case undefined:
|
|
141
|
+
return void process.stdout.write(HELP);
|
|
142
|
+
default:
|
|
143
|
+
fail(2, `unknown command "${cmd}". Run "study-swarm help".`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
try {
|
|
148
|
+
main(process.argv.slice(2).filter((a) => a !== '--debug'));
|
|
149
|
+
} catch (err) {
|
|
150
|
+
if (process.argv.includes('--debug')) throw err;
|
|
151
|
+
fail(2, err && err.message ? err.message : String(err));
|
|
152
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dogfood-lab/study-swarm",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Ground design decisions in cited research, then verify every citation with a different model family before it becomes canon — a research-grounded design protocol.",
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"description": "Ground design decisions in cited research, then verify every citation with a different model family before it becomes canon — a research-grounded design protocol, with a thin CLI.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"methodology",
|
|
7
7
|
"llm",
|
|
@@ -22,7 +22,18 @@
|
|
|
22
22
|
"bugs": {
|
|
23
23
|
"url": "https://github.com/dogfood-lab/study-swarm/issues"
|
|
24
24
|
},
|
|
25
|
+
"type": "module",
|
|
26
|
+
"bin": {
|
|
27
|
+
"study-swarm": "bin/study-swarm.mjs"
|
|
28
|
+
},
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=18"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"verify": "node scripts/smoke.mjs"
|
|
34
|
+
},
|
|
25
35
|
"files": [
|
|
36
|
+
"bin/",
|
|
26
37
|
"README.md",
|
|
27
38
|
"README.ja.md",
|
|
28
39
|
"README.zh.md",
|