lasso-mcp 1.16.0 → 1.17.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.
Files changed (148) hide show
  1. package/README.de.md +24 -10
  2. package/README.en.md +31 -20
  3. package/README.es.md +24 -10
  4. package/README.fr.md +24 -10
  5. package/README.ja.md +24 -10
  6. package/README.md +29 -20
  7. package/README.pt.md +24 -10
  8. package/README.ru.md +24 -10
  9. package/dist/browse/HighRiskGate.d.ts +16 -1
  10. package/dist/browse/HighRiskGate.d.ts.map +1 -1
  11. package/dist/browse/HighRiskGate.js +40 -1
  12. package/dist/browse/HighRiskGate.js.map +1 -1
  13. package/dist/browse/extract-refs.d.ts +84 -0
  14. package/dist/browse/extract-refs.d.ts.map +1 -0
  15. package/dist/browse/extract-refs.js +209 -0
  16. package/dist/browse/extract-refs.js.map +1 -0
  17. package/dist/channels/BaseChannel.d.ts +1 -1
  18. package/dist/channels/BaseChannel.d.ts.map +1 -1
  19. package/dist/channels/BrowseChannel.d.ts +10 -0
  20. package/dist/channels/BrowseChannel.d.ts.map +1 -1
  21. package/dist/channels/BrowseChannel.js +113 -6
  22. package/dist/channels/BrowseChannel.js.map +1 -1
  23. package/dist/channels/LoggedInChannel.d.ts +17 -0
  24. package/dist/channels/LoggedInChannel.d.ts.map +1 -1
  25. package/dist/channels/LoggedInChannel.js +19 -1
  26. package/dist/channels/LoggedInChannel.js.map +1 -1
  27. package/dist/channels/MachineMcpSearchChannel.d.ts +29 -11
  28. package/dist/channels/MachineMcpSearchChannel.d.ts.map +1 -1
  29. package/dist/channels/MachineMcpSearchChannel.js +52 -21
  30. package/dist/channels/MachineMcpSearchChannel.js.map +1 -1
  31. package/dist/config/config.d.ts +0 -2
  32. package/dist/config/config.d.ts.map +1 -1
  33. package/dist/config/config.js +16 -13
  34. package/dist/config/config.js.map +1 -1
  35. package/dist/config/provider-registry.d.ts +1 -1
  36. package/dist/config/provider-registry.js +1 -1
  37. package/dist/config/providers.d.ts +6 -6
  38. package/dist/config/providers.d.ts.map +1 -1
  39. package/dist/config/providers.js +22 -25
  40. package/dist/config/providers.js.map +1 -1
  41. package/dist/doctor/doctor.d.ts +7 -5
  42. package/dist/doctor/doctor.d.ts.map +1 -1
  43. package/dist/doctor/doctor.js +61 -66
  44. package/dist/doctor/doctor.js.map +1 -1
  45. package/dist/fallback/BudgetTracker.d.ts +1 -1
  46. package/dist/fallback/PartialFailures.d.ts +2 -2
  47. package/dist/fallback/PartialFailures.d.ts.map +1 -1
  48. package/dist/index.js +62 -21
  49. package/dist/index.js.map +1 -1
  50. package/dist/interact/ElicitationPort.d.ts +64 -0
  51. package/dist/interact/ElicitationPort.d.ts.map +1 -0
  52. package/dist/interact/ElicitationPort.js +113 -0
  53. package/dist/interact/ElicitationPort.js.map +1 -0
  54. package/dist/observ/MetricsCollector.js +1 -1
  55. package/dist/search/AttributedSearch.d.ts +3 -3
  56. package/dist/search/AttributedSearch.js +1 -1
  57. package/dist/search/ContentSecondHop.d.ts +149 -0
  58. package/dist/search/ContentSecondHop.d.ts.map +1 -0
  59. package/dist/search/ContentSecondHop.js +411 -0
  60. package/dist/search/ContentSecondHop.js.map +1 -0
  61. package/dist/search/FallbackChain.d.ts +12 -10
  62. package/dist/search/FallbackChain.d.ts.map +1 -1
  63. package/dist/search/FallbackChain.js +7 -7
  64. package/dist/search/FallbackChain.js.map +1 -1
  65. package/dist/search/MachineMcpDetector.d.ts.map +1 -1
  66. package/dist/search/MachineMcpDetector.js +4 -3
  67. package/dist/search/MachineMcpDetector.js.map +1 -1
  68. package/dist/search/MultiSourceFanout.d.ts +4 -2
  69. package/dist/search/MultiSourceFanout.d.ts.map +1 -1
  70. package/dist/search/MultiSourceFanout.js +4 -2
  71. package/dist/search/MultiSourceFanout.js.map +1 -1
  72. package/dist/search/QualityTag.d.ts +40 -0
  73. package/dist/search/QualityTag.d.ts.map +1 -0
  74. package/dist/search/QualityTag.js +66 -0
  75. package/dist/search/QualityTag.js.map +1 -0
  76. package/dist/search-local/chrome-history.d.ts +85 -0
  77. package/dist/search-local/chrome-history.d.ts.map +1 -0
  78. package/dist/search-local/chrome-history.js +293 -0
  79. package/dist/search-local/chrome-history.js.map +1 -0
  80. package/dist/search-local/mdfind.d.ts +34 -0
  81. package/dist/search-local/mdfind.d.ts.map +1 -0
  82. package/dist/search-local/mdfind.js +88 -0
  83. package/dist/search-local/mdfind.js.map +1 -0
  84. package/dist/search-local/register-search-local-tool.d.ts +48 -0
  85. package/dist/search-local/register-search-local-tool.d.ts.map +1 -0
  86. package/dist/search-local/register-search-local-tool.js +76 -0
  87. package/dist/search-local/register-search-local-tool.js.map +1 -0
  88. package/dist/serp/RecordingStore.d.ts +1 -1
  89. package/dist/serp/RecordingStore.js +1 -1
  90. package/dist/serp/http-serp.d.ts +2 -1
  91. package/dist/serp/http-serp.d.ts.map +1 -1
  92. package/dist/serp/http-serp.js.map +1 -1
  93. package/dist/tools/annotations.d.ts +15 -0
  94. package/dist/tools/annotations.d.ts.map +1 -1
  95. package/dist/tools/annotations.js +21 -0
  96. package/dist/tools/annotations.js.map +1 -1
  97. package/dist/tools/browse.d.ts.map +1 -1
  98. package/dist/tools/browse.js +4 -0
  99. package/dist/tools/browse.js.map +1 -1
  100. package/dist/tools/descriptions.d.ts +10 -0
  101. package/dist/tools/descriptions.d.ts.map +1 -1
  102. package/dist/tools/descriptions.js +100 -17
  103. package/dist/tools/descriptions.js.map +1 -1
  104. package/dist/tools/screenshot.d.ts +2 -2
  105. package/dist/tools/search.d.ts +65 -35
  106. package/dist/tools/search.d.ts.map +1 -1
  107. package/dist/tools/search.js +179 -86
  108. package/dist/tools/search.js.map +1 -1
  109. package/dist/types.d.ts +62 -10
  110. package/dist/types.d.ts.map +1 -1
  111. package/doc/25-/344/272/224/351/241/271/350/243/201/345/206/263/345/256/236/346/226/275/c1-/347/234/237/346/234/272/346/211/213/346/265/213.md +56 -0
  112. package/doc/25-/344/272/224/351/241/271/350/243/201/345/206/263/345/256/236/346/226/275/parse24.md +318 -0
  113. package/doc/25-/344/272/224/351/241/271/350/243/201/345/206/263/345/256/236/346/226/275/verify.md +143 -0
  114. package/doc/KEY-GUIDE.md +23 -53
  115. package/package.json +1 -1
  116. package/src/browse/HighRiskGate.ts +51 -0
  117. package/src/browse/extract-refs.ts +239 -0
  118. package/src/channels/BaseChannel.ts +1 -1
  119. package/src/channels/BrowseChannel.ts +133 -6
  120. package/src/channels/LoggedInChannel.ts +22 -1
  121. package/src/channels/MachineMcpSearchChannel.ts +54 -25
  122. package/src/config/config.ts +18 -16
  123. package/src/config/provider-registry.ts +1 -1
  124. package/src/config/providers.ts +23 -26
  125. package/src/doctor/doctor.ts +73 -76
  126. package/src/fallback/BudgetTracker.ts +1 -1
  127. package/src/fallback/PartialFailures.ts +2 -2
  128. package/src/index.ts +66 -23
  129. package/src/interact/ElicitationPort.ts +165 -0
  130. package/src/invariants/check-invariants.mjs +241 -3
  131. package/src/observ/MetricsCollector.ts +1 -1
  132. package/src/search/AttributedSearch.ts +3 -3
  133. package/src/search/ContentSecondHop.ts +557 -0
  134. package/src/search/FallbackChain.ts +13 -11
  135. package/src/search/MachineMcpDetector.ts +4 -3
  136. package/src/search/MultiSourceFanout.ts +5 -3
  137. package/src/search/QualityTag.ts +91 -0
  138. package/src/search-local/chrome-history.ts +429 -0
  139. package/src/search-local/mdfind.ts +141 -0
  140. package/src/search-local/register-search-local-tool.ts +140 -0
  141. package/src/serp/RecordingStore.ts +1 -1
  142. package/src/serp/http-serp.ts +2 -1
  143. package/src/tools/annotations.ts +22 -0
  144. package/src/tools/browse.ts +4 -0
  145. package/src/tools/descriptions.ts +101 -17
  146. package/src/tools/search.ts +206 -100
  147. package/src/types.ts +66 -11
  148. package/src/channels/SearchChannel.ts +0 -265
package/README.de.md CHANGED
@@ -66,8 +66,8 @@ Lasso selbst ist **komplett kostenlos + MIT-Open-Source**. Hier ist, was jede F
66
66
  | Fähigkeit | Kosten | Hinweise |
67
67
  |---|---|---|
68
68
  | Lasso selbst (MCP-Server + alle Kernfähigkeiten) | ✅ Kostenlos | MIT-Open-Source, für immer kostenlos |
69
- | Suche (Zhipu + Brave) | ✅ Kostenloser Start mit Zhipu | Zhipu wird pro Token abgerechnet (Neukunden erhalten Startguthaben); ist auf der Maschine schon das Zhipu-MCP konfiguriert, ist es ohne jede Konfiguration nutzbar. Brave ist inzwischen ein bezahlter Plan mit \$5/Monat Guthaben (das kostenlose Kontingent entfiel ab 2026-02); Lasso bringt außerdem einen kostenlosen Live-Such-Fallback mit — auch ganz ohne konfigurierten Anbieter hast du Suche |
70
- | Öffentliche Seiten scrapen / Screenshots / PDF / Netzwerk-Audit / rohe Bytes | ✅ Kostenlos | Läuft lokal, kein Key, keine Zahlung |
69
+ | Suche (Wiederverwendung des Zhipu-MCP der Maschine + Brave) | ✅ In der Regel Null-Konfiguration | Ist auf der Maschine schon das Zhipu-`web-search-prime`-MCP konfiguriert, nutzt Lasso es automatisch (Hauptpfad ganz ohne Such-Key); Brave ist ein optionaler bezahlter Plan mit \$5/Monat Guthaben (das kostenlose Kontingent entfiel ab 2026-02); Lasso bringt außerdem einen kostenlosen Live-Such-Fallback mit — auch ganz ohne konfigurierten Anbieter hast du Suche. Seit v1.17 unterstützt Lasso keinen eigenen Zhipu-Direct-Key mehr (`ZHIPU_API_KEY` ist eingestellt) |
70
+ | Öffentliche Seiten scrapen / Screenshots / PDF / Netzwerk-Audit / rohe Bytes / lokale Privatsuche (v1.17: Verlauf+Dateien) | ✅ Kostenlos | Läuft lokal, kein Key, keine Zahlung |
71
71
  | Eingeloggte Seiten scrapen (lokales Chrome wiederverwenden) | ✅ Kostenlos | Läuft lokal, kein Key, keine Zahlung |
72
72
  | Desktop steuern (macOS / Windows / Linux) | ✅ Kostenlos | Lokal gebaut und ausgeführt, nur OS-Autorisierung nötig; **optionaler** Apple Developer Account 99 $/Jahr für signierte dauerhafte Autorisierung (funktioniert auch ohne Signierung — dann einfach jedes Mal neu autorisieren) |
73
73
  | Cloud-Browser · selbst gehostetes Steel (v1.6 neu) | ✅ Kostenlos | Steel (Apache-2.0 Open Source) im lokalen Docker betreiben — **null Kosten pro Session + Cookies verlassen nie deine Maschine**; benötigt `LASSO_ALLOW_CLOUD_BROWSER=true` + `STEEL_ENDPOINT=http://localhost:3000` |
@@ -98,7 +98,7 @@ Direkt nach der Installation brauchst du keine Keys (das ist **Stufe 1: Zero Con
98
98
  - Rohe Bytes direkt von einer JSON-API oder Datei holen
99
99
  - Native macOS-Apps steuern (Finder / Mail / Systemeinstellungen usw. — erfordert einmaligen Haken in den Systemeinstellungen)
100
100
 
101
- > 💡 **Auch die Suche kann ohne Konfiguration funktionieren**: Wenn in deinem `~/.claude.json` bereits Zhipus `web-search-prime` MCP eingetragen ist, erkennt und nutzt Lasso es beim Start automatisch — du musst nicht mal einen separaten `ZHIPU_API_KEY` anlegen, die Suche funktioniert einfach. Führ `lasso doctor` aus und schau, ob `#36 machine_search_mcp` auf `pass` steht.
101
+ > 💡 **Die Suche ist standardmäßig Null-Konfiguration**: Wenn in deinem `~/.claude.json` bereits Zhipus `web-search-prime` MCP eingetragen ist, erkennt und nutzt Lasso es beim Start automatisch — die Suche funktioniert einfach, ganz ohne eigenen Such-Key (seit v1.17 der einzige unterstützte Weg, Zhipu zu nutzen). Führ `lasso doctor` aus und schau, ob `#36 machine_search_mcp` auf `pass` steht.
102
102
 
103
103
  Deine erste Ausgabe — sag einfach zu Claude:
104
104
 
@@ -106,7 +106,7 @@ Deine erste Ausgabe — sag einfach zu Claude:
106
106
 
107
107
  ### Mehr gewollt? Füg es in die Config-Datei ein (Stufe 2)
108
108
 
109
- - **Suche** → führ `lasso config init` aus, um `~/.lasso/config.json` zu erstellen, dann fülle einen Zhipu-Key ein (siehe [Konfigurieren](#konfigurieren))
109
+ - **Suche** → in der Regel Null-Konfiguration (Wiederverwendung des Zhipu-MCP der Maschine); optional einen Brave-Key als zweite Quelle (siehe [Konfigurieren](#konfigurieren))
110
110
  - **Eingeloggte Seiten scrapen** (Jira / privates GitHub / Firmen-Intranet) → führ einmal `lasso launch-chrome` aus
111
111
  - **Den macOS-Desktop steuern** → führ einmal `lasso doctor` aus, um durch die Autorisierung geführt zu werden
112
112
 
@@ -122,16 +122,26 @@ Gruppiert nach **dem, was du tun willst**, nicht nach Werkzeugname. Jedes ist ei
122
122
 
123
123
  > Du: „Suche nach X" → strukturierte Suchergebnisse
124
124
 
125
- Standard ist Zhipu (stark für Chinesisch); für Multiple-Quellen kannst du zusätzlich Brave konfigurieren (der Bing-Upstream ist eingestellt und die tote Schicht entfernt; der Konfigurationsschlüssel wird toleriert, aber stillschweigend ignoriert). **Wenn eine einzelne Quelle rate-limitiert oder down ist, wird automatisch zur nächsten gewechselt — du merkst nichts davon.** Das Ausschöpfen des kostenlosen Kontingents eines Anbieters bringt nicht das Ganze zum Absturz.
125
+ Standard ist die Wiederverwendung des Zhipu-MCP der Maschine (stark für Chinesisch, Null-Konfiguration); optional kannst du zusätzlich Brave konfigurieren (die toten Schichten von Bing und Zhipu-Direct sind entfernt; übrig gebliebene Konfigurationsschlüssel werden toleriert, aber stillschweigend ignoriert). **Wenn eine einzelne Quelle rate-limitiert oder down ist, wird automatisch zur nächsten gewechselt — du merkst nichts davon.** Das Ausschöpfen des kostenlosen Kontingents eines Anbieters bringt nicht das Ganze zum Absturz.
126
126
 
127
127
  Für zeitkritisches Material wie **Nachrichten und Release-Tracking** sag einfach „suche nach X der letzten Woche / des letzten Monats" — der Zeitfilter (day / week / month / year, v1.11) wird automatisch mitgegeben, ohne handgeschriebene Daten in der Anfrage.
128
128
 
129
+ > Willst du nach der Suche **gleich den Volltext mitnehmen**? Sag „suche und liefere 3 Volltexte mit“ (`content_blocks: 1-5`, v1.17) — nach den Blue-Links werden die Top-N-Seiten parallel abgerufen und auf ~6k Zeichen **auf deine Suchanfrage zugeschnitten** (Lead-Absatz bleibt, Keyword-Absätze zuerst): ein Schritt zu „Links + direkt lesbarer Inhalt“. Nicht abrufbare Treffer werden **ehrlich markiert** (`fetch_failed` / `not_html`), der Blue-Link bleibt — ob ein Browser nachgeschickt wird, entscheidest du. Keine bezahlte Abhängigkeit, kein Browser.
130
+
131
+ ### Auf deinem Rechner suchen (neu in v1.17)
132
+
133
+ > Du: „Welche Seiten zu X habe ich zuletzt angesehen?“ / „Welche lokalen Dateien erwähnen X?“ → lokale Privatsuche
134
+
135
+ `search_local` durchsucht direkt den **Chrome-Verlauf** (alle Profile) und den **Spotlight-Dateiindex** (mdfind) deiner Maschine — ohne Netz, ohne Cloud. Datenschutz eingebaut: **nur Titel / URL / Zeit / Titel-Schnipsel, nie ein vollständiger Seitenexport**, maximal 50 Treffer, die Quelldatenbank wird nur gelesen. Apples Notizen-Volltextsuche ist noch nicht offen (ehrliches „noch nicht implementiert“ statt so getan, als wäre gesucht worden).
136
+
129
137
  ### Öffentliche Seiten scrapen (ohne Login)
130
138
 
131
139
  > Du: „Hol mir den Text von example.com" → sauberer Artikeltext, drei Granularitäten verfügbar
132
140
 
133
141
  Entfernt automatisch Navigationsleisten, Werbung, Sidebars und anderen Schnickschnack — **spart 30–70 % Tokens** (und Geld). GitHub / Reddit / Hacker News / Wikipedia / Substack / Medium und weitere **stark frequentierte Sites — insgesamt 20+ — bekommen dedizierte Extraktoren**, sodass auch Tabellen und Mathe-Formeln ihre Struktur behalten (v1.12) — und jeder Link im Text ist eine vollständig klickbare absolute Adresse. Brauchst du Zitatmarker (top für Recherche, zum Füttern von RAG)? Ein Satz schaltet den Modus um.
134
142
 
143
+ > Nach dem Lesen **direkt weiterinteragieren** wollen (Button klicken, Formular füllen)? Sag „Extraktion mit interaktiven Handles" (`include_refs`, v1.17) — ans Ende des Markdown wird eine Handle-Tabelle im Stil `[r1] button "Absenden"` angehängt (der Haupttext bleibt marker-frei), danach lokalisieren „klicke r1" / „fülle r2 mit X" direkt über das Handle, ohne erneuten Ganzseiten-Snapshot. Hat sich die Seite geändert, **schlägt das Handle ehrlich fehl** (liefert didnt + Hinweis neu zu extrahieren — kein Raten, kein Auto-Retry).
144
+
135
145
  > **Seit v1.5 hat `browse_headless` standardmäßig Anti-Erkennung aktiv** (getarnter UA / `navigator.webdriver` entfernt / gefälschte webgl-, plugins- und codecs-Werte sowie gut ein Dutzend weitere Schichten). **Keine Konfiguration — automatisch.** Viele „erkennen Headless"-Sites lassen sich jetzt direkt scrapen (v1.8 behob einen Defekt, bei dem die Injektion stumm wirkungslos blieb — sie greift jetzt wirklich, und fehlgeschlagene Injektionen werden ehrlich im Log gemeldet). Seit v1.11 greift die Anti-Erkennung **bereits auf Browser-Startebene**: UA, Viewport und Sprache werden einheitlich aus dem Profil bezogen — der HTTP-Header der Netzwerkschicht und das Seiten-JS sehen dieselben Werte, kein Widerspruch mehr. Seit v1.12 passt der Standard-Fingerabdruck unter macOS **zu deinem System** (kein „UA sagt Windows, Maschinen-Merkmale verraten macOS" mehr). Nur Cloudflare-schwerer Anti-Bot braucht den Cloud-Browser (siehe „Anti-Bot-Bypass" unten). Willst du die Wirkung der Anti-Erkennung prüfen? Führ `lasso doctor --stealth-check` für einen creepjs-Erkennungsvergleich aus.
136
146
 
137
147
  ### Eingeloggte Seiten scrapen (auch mit 2FA)
@@ -142,6 +152,8 @@ Nutzt **dein lokal eingeloggt Chrome** — du machst die 2FA einmal; Lasso über
142
152
 
143
153
  > 🔴 **Rote Linie**: Lasso **löst niemals 2FA / SMS-Codes / CAPTCHA / Magic Links für dich**. Du musst diese einmal manuell in deinem lokalen Chrome bestehen.
144
154
 
155
+ > 🛡️ **Bestätigung hochriskanter Aktionen innerhalb der Runde** (v1.17): Trifft eine automatische Aktion auf ein Hochrisiko-Muster (Rich-Text-Editoren, Drag-and-Drop, flüchtige Toasts…), bekommt ein Client mit Elicitation-Support (Claude Code ≥ 2.1.76) eine Rückfrage in derselben Runde — „Weiter / Überspringen / Abbrechen" — und der Schritt läuft nur bei „Weiter", statt den ganzen Lauf abzubrechen. Ältere Clients verhalten sich exakt wie bisher (sicherer Block). **Die Bestätigung gilt nur für den einzelnen Treffer**: du wirst jedes Mal erneut gefragt; nichts wird gemerkt.
156
+
145
157
  ### Rohe Bytes holen (am schnellsten, am günstigsten)
146
158
 
147
159
  > Du: „GET diesen JSON-Endpoint" → rohe Bytes
@@ -194,7 +206,7 @@ Geht zum Internet Archive (Wayback Machine), um die zuletzt archivierte Kopie di
194
206
 
195
207
  ## Installation
196
208
 
197
- **Aktuelle Version v1.15.0** (Changelog im eingeklappten Block am Ende dieses Abschnitts).
209
+ **Aktuelle Version v1.17.0** (Changelog im eingeklappten Block am Ende dieses Abschnitts).
198
210
 
199
211
  Voraussetzungen: Node.js ≥ 20 + Claude Code (oder jeder MCP-fähige Client).
200
212
 
@@ -207,7 +219,9 @@ Claude Code neu starten → `/mcp` → `lasso ✓ Connected`. **Genau diese eine
207
219
  **macOS-Nutzer, die den Desktop steuern wollen**: führ einmal `lasso doctor` aus und setze `lasso-rust-helper` nach Anweisung die Haken bei „Bedienungshilfen" und „Bildschirmaufnahme" — `doctor` führt dich Schritt für Schritt.
208
220
 
209
221
  <details>
210
- <summary>📋 Changelog (v1.8 → v1.15 — aufklappen, um zu sehen, was jede Version geändert hat)</summary>
222
+ <summary>📋 Changelog (v1.8 → v1.17 — aufklappen, um zu sehen, was jede Version geändert hat)</summary>
223
+
224
+ - **v1.17**: fünf Upgrades — ① Zhipu-Direct-Key eingestellt (`ZHIPU_API_KEY` wird nicht mehr konsumiert; Zhipu-Fähigkeit läuft allein über die Wiederverwendung des Maschinen-MCP web-search-prime, Suche standardmäßig Null-Konfiguration) ② `search` mit `content_blocks`-Zweitsprung (nach der Suche parallel Top-N-Volltexte abrufen, auf ~6k Zeichen anfragebezogen trimmen, Fehlschläge ehrlich markieren, keine bezahlte Abhängigkeit) ③ neues Tool `search_local` (Chrome-Verlauf + Spotlight, lokal und privat; nur Titel/URL/Zeit, kein Volltextexport) ④ In-Turn-Bestätigung per elicitation für Hochrisiko-Aktionen (alte Clients unberührt) ⑤ `browse extract` mit `include_refs`-Interaktionshandles (`[r1]`-Anhang + Klick/Ausfüllen per Handle, ehrliches Verfallen bei Seitenwechsel). Suchergebnisse tragen einheitlich die `quality`-Achse (api / scrape / stale).
211
225
 
212
226
  - **v1.15**: Bing-Totschicht komplett entfernt (Bing Search APIs zum 2025-08-11 vollständig eingestellt — Code gelöscht, nicht nur dokumentiert; restliches `BING_API_KEYS` wird stillschweigend ignoriert, `lasso doctor` rät zum Entfernen) + **bare-HTTP-Schnellsonde** vor dem Headless-Browser (fallen alle API-Ebenen aus, wird zuerst ~1s lang ohne Browser die Ergebnisseite geholt; erst bei Leerfund startet der langsame Headless-Pfad — Realmaschine: 20 Treffer in 1,9s gegenüber 5,3s im Headless-Pfad mit Captcha und null Treffern; weiche Blockseiten wie Baidus Captcha/Homepage-Hülle fälschen keinen Erfolg und eskalieren zum Browser).
213
227
 
@@ -230,7 +244,7 @@ Claude Code neu starten → `/mcp` → `lasso ✓ Connected`. **Genau diese eine
230
244
  | Was du tun willst | Was zu konfigurieren ist |
231
245
  |---|---|
232
246
  | Öffentliche Seiten scrapen / Screenshots / PDF / Drittanbieter-Ressourcen ansehen / rohe Bytes holen / Desktop steuern | **Gar nichts** |
233
- | Suchen | Ein Zhipu-Key (kostenlos zu beantragen; hat die Maschine das Zhipu-MCP schon, nicht einmal das) |
247
+ | Suchen | In der Regel Null-Konfiguration (Wiederverwendung des Zhipu-MCP); optionaler Brave-Key (bezahlter Plan) |
234
248
  | Suche fällt fast nie aus | Zusätzlich einen Brave-Key (bezahlter Plan mit \$5/Monat Guthaben; auch ohne ihn gibt es einen kostenlosen Live-Such-Fallback) |
235
249
  | Eingeloggte Seiten scrapen | Einmal `lasso launch-chrome` ausführen |
236
250
  | Den macOS-Desktop steuern | Einmal `lasso doctor` zur Autorisierung ausführen |
@@ -261,7 +275,7 @@ Speichern genügt, dann greift es. **Stabiler gewollt**: füge zusätzlich Brave
261
275
  }
262
276
  ```
263
277
 
264
- > Degradationsreihenfolge: Maschinen-MCP-Wiederverwendung → Zhipu Brave → Live-Suche im Headless-Browser als Schluss-Fallback (v1.14: zweimotoriger englischer Fallback — bei DDG-Fehler/Leertreffer wird automatisch einmal per Brave-Live-Suche erneut versucht; v1.15 schaltet davor eine **bare-HTTP-Schnellsonde** (~1s, holt die Ergebnisseite ganz ohne Browser — in Realmaschine-Tests sind manche Engines gegenüber browserlosen Clients weniger misstrauisch); erst wenn sie nichts liefert, startet der langsame Headless-Pfad). Fällt der vordere aus, wird automatisch zum nächsten gewechselt. (Die Bing-Quelle wurde nach der Upstream-Einstellung am 2025-08-11 komplett entfernt; ein restliches `BING_API_KEYS` wird stillschweigend ignoriert, `lasso doctor` schlägt das Entfernen vor.)
278
+ > Degradationsreihenfolge: Maschinen-MCP-Wiederverwendung → Brave (sofern Key gesetzt) → Live-Suche im Headless-Browser als Schluss-Fallback (v1.14: zweimotoriger englischer Fallback — bei DDG-Fehler/Leertreffer wird automatisch einmal per Brave-Live-Suche erneut versucht; v1.15 schaltet davor eine **bare-HTTP-Schnellsonde** (~1s, holt die Ergebnisseite ganz ohne Browser — in Realmaschine-Tests sind manche Engines gegenüber browserlosen Clients weniger misstrauisch); erst wenn sie nichts liefert, startet der langsame Headless-Pfad). Fällt der vordere aus, wird automatisch zum nächsten gewechselt. (Die Bing-Quelle wurde nach der Upstream-Einstellung am 2025-08-11 komplett entfernt, und die Zhipu-Direct-Stufe wurde in v1.17 gelöscht; restlose `BING_API_KEYS` / `ZHIPU_API_KEY` werden stillschweigend ignoriert, `lasso doctor` schlägt das Entfernen vor.)
265
279
 
266
280
  Wie du Keys beantragst, wie hoch die kostenlosen Kontingente sind → [Key-Konfigurationsleitfaden · Suche](./doc/KEY-GUIDE.md#a-搜索). Häufige Befehle: `lasso --version` / `lasso --help` (seit v1.8 drucken unbekannte Befehle die Nutzung und beenden mit Nonzero-Code, statt stumm zu hängen).
267
281
 
@@ -366,7 +380,7 @@ Deine Daten gehören dir.
366
380
  | macOS-Desktop-Steuerung funktioniert nicht | Setze einen Haken bei `lasso-rust-helper` unter „Systemeinstellungen → Datenschutz & Sicherheit → Bedienungshilfen / Bildschirmaufnahme" (`lasso doctor` führt dich) |
367
381
  | Scrapen der eingeloggten Seite schlägt fehl | Einmal manuell in deinem lokalen Chrome einloggen (auch 2FA machen), dann „öffne mein eingeloggt X" sagen |
368
382
  | Als-PDF-speichern schlägt fehl | Sag stattdessen „mach einen Ganzseiten-Screenshot von dieser Seite" |
369
- | Suche liefert immer wieder nichts | Prüfe, ob der Key abgelaufen / das Kontingent erschöpft ist; mehrere Anbieter hinzufügen (Zhipu + Brave) senkt die Fehlerrate drastisch |
383
+ | Suche liefert immer wieder nichts | Führ `lasso doctor` aus und prüf `machine_search_mcp` / `brave_keys`; ob der Brave-Key abgelaufen / das Kontingent erschöpft ist; Maschinen-MCP-Wiederverwendung + der kostenlose Live-Such-Fallback funktionieren ohne Konfiguration |
370
384
  | Ein Link lässt sich nicht öffnen | Sag „dieser Link ist tot, find ein Archiv", um das Internet Archive zu prüfen |
371
385
  | Meldung, dass der Zugriff auf das interne Netzwerk blockiert wurde | URL doppelt prüfen; TUN-Proxy-Netzwerke sind standardmäßig erlaubt, andere interne Netzwerke brauchen explizite Erlaubnis |
372
386
  | Die Wirkung der Anti-Erkennung verifizieren | `lasso doctor --stealth-check` ausführen — treibt die creepjs-Erkennungsseite an und vergleicht mit einer Baseline (optional, beeinflusst den Alltag nicht) |
package/README.en.md CHANGED
@@ -66,8 +66,8 @@ Lasso itself is **completely free + MIT open source**. Here's what each capabili
66
66
  | Capability | Cost | Notes |
67
67
  |---|---|---|
68
68
  | Lasso itself (MCP server + all core capabilities) | ✅ Free | MIT open source, free forever |
69
- | Search (Zhipu + Brave) | ✅ Free to start with Zhipu | Zhipu is billed by token (new users get free credits), and if the Zhipu MCP is already configured on the machine it works with zero setup; Brave is now a paid plan that includes a \$5/month credit (the free tier was discontinued as of 2026-02); Lasso also ships a free live-search fallback, so you still have search even without configuring any provider |
70
- | Scrape public pages / screenshots / PDF / network audit / raw bytes | ✅ Free | Runs locally, no key, no payment |
69
+ | Search (machine Zhipu MCP reuse + Brave) | ✅ Usually zero-config | If the machine already has the Zhipu web-search-prime MCP configured, Lasso reuses it automatically (the main path no search key needed at all); Brave is an optional paid plan that includes a \$5/month credit (the free tier was discontinued as of 2026-02); Lasso also ships a free live-search fallback, so you still have search even without configuring any provider. As of v1.17 Lasso no longer supports its own Zhipu direct key (`ZHIPU_API_KEY` is retired) |
70
+ | Scrape public pages / screenshots / PDF / network audit / raw bytes / local private search (v1.17: history+files) | ✅ Free | Runs locally, no key, no payment |
71
71
  | Scrape logged-in pages (reuse local Chrome) | ✅ Free | Runs locally, no key, no payment |
72
72
  | Drive desktop (macOS / Windows / Linux) | ✅ Free | Built and run locally, only OS authorization needed; **optional** Apple Developer account \$99/yr for signed persistent authorization (works without signing too — just re-authorize each time) |
73
73
  | Cloud browser · self-hosted Steel (v1.6 new) | ✅ Free | Run Steel (Apache-2.0 open source) in local Docker — **zero per-session cost + cookies never leave your machine**; needs `LASSO_ALLOW_CLOUD_BROWSER=true` + `STEEL_ENDPOINT=http://localhost:3000` |
@@ -98,7 +98,7 @@ No keys needed right after install (this is **Tier 1: zero config**):
98
98
  - Fetch raw bytes from a JSON API or file directly
99
99
  - Control native macOS apps (Finder / Mail / System Settings, etc. — requires a one-time tick in System Settings)
100
100
 
101
- > 💡 **Search may be zero-config too**: if your machine's `~/.claude.json` already has the Zhipu `web-search-prime` MCP configured, Lasso auto-detects and reuses it at startup — no need to set a separate `ZHIPU_API_KEY`, search just works. Run `lasso doctor` and check whether `#36 machine_search_mcp` is `pass`.
101
+ > 💡 **Search is zero-config by default**: if your machine's `~/.claude.json` already has the Zhipu `web-search-prime` MCP configured, Lasso auto-detects and reuses it at startup — search just works, no search key needed at all (as of v1.17 this is the only supported way to use Zhipu). Run `lasso doctor` and check whether `#36 machine_search_mcp` is `pass`.
102
102
 
103
103
  Your first output — just say to Claude:
104
104
 
@@ -106,7 +106,7 @@ Your first output — just say to Claude:
106
106
 
107
107
  ### Want more? Add it in the config file (Tier 2)
108
108
 
109
- - **Search** → run `lasso config init` to create `~/.lasso/config.json`, then fill in a Zhipu key (see [Configure](#configure))
109
+ - **Search** → usually zero-config (machine Zhipu MCP reuse); optionally add a Brave key for a second source (see [Configure](#configure))
110
110
  - **Scrape logged-in pages** (Jira / private GitHub / company intranet) → run `lasso launch-chrome` once
111
111
  - **Control the macOS desktop** → run `lasso doctor` once to be guided through authorization
112
112
 
@@ -122,16 +122,26 @@ Grouped by **what you want to do**, not by tool name. Each is one sentence in, o
122
122
 
123
123
  > You: "Search for X" → structured search results
124
124
 
125
- Defaults to Zhipu (strong for Chinese); you can add Brave as a second source (the Bing upstream has been shut down and its dead layer removed; the config key is tolerated but silently ignored). **If any single source is rate-limited or down, it auto-switches to the next — you don't feel a thing.** Hitting one provider's free quota doesn't break the whole.
125
+ Defaults to reusing the machine's Zhipu MCP (strong for Chinese, zero-config); you can optionally add Brave as a second source (both the Bing and the Zhipu-direct dead layers have been removed; leftover config keys are tolerated but silently ignored). **If any single source is rate-limited or down, it auto-switches to the next — you don't feel a thing.** Hitting one provider's free quota doesn't break the whole.
126
126
 
127
127
  For time-sensitive content like **news and release tracking**, just say "search for X from the last week / last month" — a time filter is applied automatically (day / week / month / year, v1.11), no hand-written dates in your query.
128
128
 
129
+ > Want the **page bodies along with the results**? Say "search and include 3 content blocks" (`content_blocks: 1-5`, v1.17) — after the blue links come back, Lasso concurrently fetches the top N pages and trims each body to ~6k chars **relevant to your query** (lead paragraph always kept, keyword-heavy sections first): one step to "links + immediately readable content". Items that can't be fetched are **honestly annotated** (`fetch_failed` / `not_html`) with the blue link intact — you (or the AI) decide whether a browser follow-up is worth it. Zero paid dependencies, no browser launched.
130
+
131
+ ### Search Your Own Machine (new in v1.17)
132
+
133
+ > You: "which pages about X did I read recently?" / "which local files mention X?" → local private search
134
+
135
+ `search_local` queries your machine's **Chrome history** (all profiles) and **Spotlight file index** (mdfind) directly — no network, no cloud. Privacy is built in: **only title / URL / time / title-match snippet are returned, never a full page-content export**, capped at 50 results, source databases opened read-only. Apple Notes full-text search is not open yet (an honest "not implemented yet" instead of pretending to have searched).
136
+
129
137
  ### Scrape Public Pages (no login)
130
138
 
131
139
  > You: "Grab the text of example.com" → clean article text, three granularities available
132
140
 
133
141
  Auto-strips nav bars, ads, sidebars and other clutter — **saves 30–70% on tokens** (and money). GitHub / Reddit / Hacker News / Wikipedia / Substack / Medium and other **high-traffic sites — 20+ in all — get dedicated extractors**, so tables and math formulas keep their structure too (v1.12), and every link in the body text is a fully clickable absolute URL. Need citation markers (great for research, feeding RAG)? One sentence switches modes.
134
142
 
143
+ > Want to **keep interacting right after reading** (click a button, fill a form)? Say "include interactive refs with the extract" (`include_refs`, v1.17) — a `[r1] button "Submit"`-style handle table is appended at the end of the markdown (the body itself stays marker-free), and then "click r1" / "fill r2 with X" locates by handle directly, no full-page snapshot needed. If the page has changed, the handle **fails honestly** (returns didnt + tells you to re-extract — no guessing, no auto-retry).
144
+
135
145
  > **As of v1.5, `browse_headless` has anti-detection on by default** (spoofed UA / `navigator.webdriver` removed / faked webgl, plugins, codecs, and a dozen more layers). **Zero config — automatic.** Many "detect headless" sites now scrape directly (v1.8 fixed a defect where the injection silently failed to apply — it really takes effect now, and injection failures are reported honestly in the logs). As of v1.11 anti-detection is applied **at browser-launch level**: UA, viewport and language are issued together from the profile, so the network-layer HTTP headers and the page's JS see the same values — no more self-contradiction. As of v1.12 the default fingerprint on macOS **matches your system** (no more "UA says Windows while machine traits give away macOS"). Only Cloudflare-grade heavy anti-bot needs the cloud browser (see "Anti-Bot Bypass" below). Want to verify the anti-detection effect? Run `lasso doctor --stealth-check` for a creepjs detection comparison.
136
146
 
137
147
  ### Scrape Logged-in Pages (even with 2FA)
@@ -142,6 +152,8 @@ Reuses **your locally-logged-in Chrome** — you handle 2FA once; Lasso takes ov
142
152
 
143
153
  > 🔴 **Red line**: Lasso **never solves 2FA / SMS codes / CAPTCHA / magic links for you**. You must manually pass these once in your local Chrome.
144
154
 
155
+ > 🛡️ **In-turn confirmation for high-risk actions** (v1.17): when an automated action hits a high-risk pattern (rich-text editors, drag-and-drop, transient toasts…), clients that support elicitation (Claude Code ≥ 2.1.76) get an in-turn prompt — "continue / skip / abort" — and the step only runs if you choose continue, instead of aborting the whole run. Older clients keep the exact current behavior (safe block). **Confirmation is per-hit only**: you'll be asked again every time; nothing is remembered.
156
+
145
157
  ### Fetch Raw Bytes (fastest, cheapest)
146
158
 
147
159
  > You: "GET this JSON endpoint" → raw bytes
@@ -194,7 +206,7 @@ Goes to the Internet Archive (Wayback Machine) to find the last archived copy of
194
206
 
195
207
  ## Install
196
208
 
197
- **Current version v1.15.0** (changelog in the collapsed block at the end of this section).
209
+ **Current version v1.17.0** (changelog in the collapsed block at the end of this section).
198
210
 
199
211
  Prerequisites: Node.js ≥ 20 + Claude Code (or any MCP-capable client).
200
212
 
@@ -207,7 +219,9 @@ Restart Claude Code → `/mcp` → `lasso ✓ Connected`. **That's the one line
207
219
  **macOS users wanting desktop control**: run `lasso doctor` once and tick `lasso-rust-helper` for "Accessibility" and "Screen Recording" as prompted — `doctor` walks you through it step by step.
208
220
 
209
221
  <details>
210
- <summary>📋 Changelog (v1.8 → v1.15 — click to see what each version changed)</summary>
222
+ <summary>📋 Changelog (v1.8 → v1.17 — click to see what each version changed)</summary>
223
+
224
+ - **v1.17**: five upgrades — ① Zhipu direct key retired (`ZHIPU_API_KEY` is no longer consumed; Zhipu capability is carried solely by machine web-search-prime MCP reuse, search is zero-config by default) ② `search` gains the `content_blocks` second hop (after the blue links, concurrently fetch top-N bodies trimmed query-relevantly to ~6k chars, failures honestly annotated, zero paid dependencies) ③ new tool `search_local` (Chrome history + Spotlight local private search; title/URL/time only, no full-text export) ④ in-turn elicitation confirmation for high-risk actions (older clients unaffected) ⑤ `browse extract` gains `include_refs` interactive handles (`[r1]`-style appendix + click/fill by handle, honest staleness on page change). Search results now carry a uniform `quality` axis (api / scrape / stale).
211
225
 
212
226
  - **v1.15**: Bing dead layer removed outright (Bing Search APIs fully retired 2025-08-11 — code deleted, not just documented; leftover `BING_API_KEYS` silently ignored, `lasso doctor` suggests removal) + a **bare-HTTP quick probe** before the headless browser (when all API layers are down, a browserless fetch of the results page runs first in ~1s; only if it comes up empty does the slow headless path start — real-machine test: 20 results in 1.9s vs the headless path's 5.3s with a captcha and zero results; soft-block pages such as Baidu's captcha/homepage shell never fake success and escalate to the browser).
213
227
 
@@ -230,7 +244,7 @@ Restart Claude Code → `/mcp` → `lasso ✓ Connected`. **That's the one line
230
244
  | What you want to do | What to configure |
231
245
  |---|---|
232
246
  | Scrape public pages / screenshots / PDF / see third-party resources / fetch raw bytes / drive the desktop | **Nothing at all** |
233
- | Search | One Zhipu key (free to apply; not even that if the machine already has the Zhipu MCP) |
247
+ | Search | Usually zero-config (machine Zhipu MCP reuse); optional Brave key (paid plan) |
234
248
  | Near-zero search failures | Add a Brave key (paid plan that includes a \$5/month credit; even without it there's a free live-search fallback) |
235
249
  | Scrape logged-in pages | Run `lasso launch-chrome` once |
236
250
  | Drive the macOS desktop | Run `lasso doctor` once to authorize |
@@ -238,30 +252,27 @@ Restart Claude Code → `/mcp` → `lasso ✓ Connected`. **That's the one line
238
252
 
239
253
  The four modules below each give the shortest path to "it just runs"; details are collapsed and expandable.
240
254
 
241
- ### 1. Search (✅ Free · the only module that needs a key)
255
+ ### 1. Search (✅ Usually zero-config · key optional)
242
256
 
243
- **First check whether you need to configure it**: if your machine already has the Zhipu `web-search-prime` MCP configured, Lasso **auto-detects and reuses its key** — nothing to fill in. Run `lasso doctor`: if `#36 machine_search_mcp` is `pass`, that's this case.
257
+ **First check whether you need to configure it**: if your machine already has the Zhipu `web-search-prime` MCP configured, Lasso **auto-detects and reuses its key** — nothing to fill in (as of v1.17 this is the default main path). Run `lasso doctor`: if `#36 machine_search_mcp` is `pass`, that's this case.
244
258
 
245
- **To configure, three steps**:
259
+ **To add a second source (optional), three steps**:
246
260
 
247
261
  ```bash
248
262
  lasso config init # creates ~/.lasso/config.json
249
263
  ```
250
264
 
251
- ```json
252
- { "ZHIPU_API_KEY": "your_zhipu_key" }
253
- ```
254
-
255
- Takes effect on save. **For more stability**, add Brave too (a paid plan that includes a \$5/month credit ≈ 1,000 queries, credit card required — the free tier was discontinued as of 2026-02; if any configured provider goes down it auto-switches to the next; multiple keys comma-separated, each with its own quota):
256
-
257
265
  ```json
258
266
  {
259
- "ZHIPU_API_KEY": "your_zhipu_key",
260
267
  "BRAVE_API_KEYS": "bravekey1,bravekey2"
261
268
  }
262
269
  ```
263
270
 
264
- > Fallback order: machine MCP reuse → Zhipu → Brave live search in the headless browser as the last resort (v1.14: dual-engine English fallback — a DDG failure/empty result automatically retries once via Brave live search; v1.15 adds a **bare-HTTP quick probe** (~1s, fetches the results page with no browser at all in real-machine tests some engines are less suspicious of browserless clients) before the slow headless path). If the one ahead fails, it auto-switches to the next. (The Bing source was removed outright after the upstream retired it on 2025-08-11; leftover `BING_API_KEYS` is silently ignored and `lasso doctor` will suggest removing it.)
271
+ Takes effect on save. Brave is a paid plan that includes a \$5/month credit 1,000 queries, credit card requiredthe free tier was discontinued as of 2026-02; if any configured provider goes down it auto-switches to the next; multiple keys comma-separated, each with its own quota.
272
+
273
+ > 🔴 **As of v1.17 Lasso no longer supports its own Zhipu direct key**: `ZHIPU_API_KEY` / `ZHIPU_ENDPOINT` are retired (the direct API channel was deleted; Zhipu capability is carried entirely by machine MCP reuse). Leftover keys in old configs are silently ignored, and `lasso doctor`'s `zhipu_keys_retired` check will suggest removing them.
274
+
275
+ > Fallback order: machine MCP reuse → Brave (if a key is set) → live search in the headless browser as the last resort (v1.14: dual-engine English fallback — a DDG failure/empty result automatically retries once via Brave live search; v1.15 adds a **bare-HTTP quick probe** (~1s, fetches the results page with no browser at all — in real-machine tests some engines are less suspicious of browserless clients) before the slow headless path). If the one ahead fails, it auto-switches to the next. (The Bing source was removed outright after the upstream retired it on 2025-08-11, and the Zhipu direct tier was deleted in v1.17; leftover `BING_API_KEYS` / `ZHIPU_API_KEY` are silently ignored and `lasso doctor` will suggest removing them.)
265
276
 
266
277
  How to apply for keys, how big the free tiers are → [Key Configuration Guide · Search](./doc/KEY-GUIDE.md#a-搜索). Common commands: `lasso --version` / `lasso --help` (since v1.8, unknown commands print usage and exit non-zero instead of silently hanging).
267
278
 
@@ -366,7 +377,7 @@ Your data is yours.
366
377
  | macOS desktop control doesn't work | Tick `lasso-rust-helper` under "System Settings → Privacy & Security → Accessibility / Screen Recording" (`lasso doctor` guides you) |
367
378
  | Logged-in page scrape fails | Log in once manually in your local Chrome (handle 2FA too), then say "open my logged-in X" |
368
379
  | Save-as-PDF fails | Say "take a full-page screenshot of this page" instead |
369
- | Search keeps returning nothing | Check whether the key expired / quota is exhausted; adding multiple providers (Zhipu + Brave) dramatically lowers the failure rate |
380
+ | Search keeps returning nothing | Run `lasso doctor` and check `machine_search_mcp` / `brave_keys`; check whether the Brave key expired / quota is exhausted; machine MCP reuse + the free live-search fallback work with zero config |
370
381
  | A link won't open | Say "this link is dead, find an archive" to check the Internet Archive |
371
382
  | Prompted that internal-network access was blocked | Double-check the URL; TUN proxy networks are allowed by default, other internal networks need explicit permission |
372
383
  | Want to verify the anti-detection effect | Run `lasso doctor --stealth-check` — it drives the creepjs detection page and compares against a baseline (optional, doesn't affect daily use) |
package/README.es.md CHANGED
@@ -66,8 +66,8 @@ Lasso en sí es **completamente gratis + open source MIT**. Esto es lo que realm
66
66
  | Capacidad | Costo | Notas |
67
67
  |---|---|---|
68
68
  | Lasso en sí (servidor MCP + todas las capacidades centrales) | ✅ Gratis | Open source MIT, gratis para siempre |
69
- | Búsqueda (Zhipu + Brave) | ✅ Gratis para empezar con Zhipu | Zhipu se factura por token (los usuarios nuevos tienen crédito de regalo); si la máquina ya tiene configurado el MCP de Zhipu, funciona sin configuración alguna; Brave es ahora un plan de pago que incluye \$5/mes de crédito (el tier gratis se eliminó desde 2026-02); Lasso además trae un fallback de búsqueda real gratuito, así que tienes búsqueda aunque no configures ninguno |
70
- | Extraer páginas públicas / capturas de pantalla / PDF / auditoría de red / bytes crudos | ✅ Gratis | Se ejecuta en local, sin key, sin pago |
69
+ | Búsqueda (reuso del MCP de Zhipu de la máquina + Brave) | ✅ Normalmente cero configuración | Si la máquina ya tiene configurado el MCP `web-search-prime` de Zhipu, Lasso lo reutiliza automáticamente (ruta principal, sin necesidad de ninguna key de búsqueda); Brave es un plan de pago opcional que incluye \$5/mes de crédito (el tier gratis se eliminó desde 2026-02); Lasso además trae un fallback de búsqueda real gratuito, así que tienes búsqueda aunque no configures ninguno. Desde v1.17 Lasso ya no admite su propia key directa de Zhipu (`ZHIPU_API_KEY` está retirada) |
70
+ | Extraer páginas públicas / capturas de pantalla / PDF / auditoría de red / bytes crudos / búsqueda privada local (v1.17: historial+archivos) | ✅ Gratis | Se ejecuta en local, sin key, sin pago |
71
71
  | Extraer páginas con sesión iniciada (reutiliza Chrome local) | ✅ Gratis | Se ejecuta en local, sin key, sin pago |
72
72
  | Controlar el escritorio (macOS / Windows / Linux) | ✅ Gratis | Construido y ejecutado en local, solo necesita autorización del SO; **opcional** cuenta Apple Developer de \$99/año para autorización firmada persistente (también funciona sin firmar — solo hay que reautorizar cada vez) |
73
73
  | Navegador en la nube · Steel autoalojado (v1.6 nuevo) | ✅ Gratis | Steel (open source Apache-2.0) en Docker local — **cero coste por sesión + las cookies nunca salen de tu máquina**; requiere `LASSO_ALLOW_CLOUD_BROWSER=true` + `STEEL_ENDPOINT=http://localhost:3000` |
@@ -98,7 +98,7 @@ No necesitas keys justo después de instalar (esto es **Tier 1: cero configuraci
98
98
  - Obtener bytes crudos directamente de una API JSON o un archivo
99
99
  - Controlar apps nativas de macOS (Finder / Mail / System Settings, etc. — requiere un tic una vez en System Settings)
100
100
 
101
- > 💡 **La búsqueda también puede funcionar sin configurar nada**: si tu `~/.claude.json` ya tiene configurado el MCP `web-search-prime` de Zhipu, Lasso lo detecta y lo reutiliza al arrancar — ni siquiera necesitas un `ZHIPU_API_KEY` aparte, la búsqueda simplemente funciona. Ejecuta `lasso doctor` y mira si `#36 machine_search_mcp` está en `pass`.
101
+ > 💡 **La búsqueda es de cero configuración por defecto**: si tu `~/.claude.json` ya tiene configurado el MCP `web-search-prime` de Zhipu, Lasso lo detecta y lo reutiliza al arrancar — la búsqueda simplemente funciona, sin ninguna key de búsqueda (desde v1.17 esta es la única forma admitida de usar Zhipu). Ejecuta `lasso doctor` y mira si `#36 machine_search_mcp` está en `pass`.
102
102
 
103
103
  Tu primer output — simplemente dile a Claude:
104
104
 
@@ -106,7 +106,7 @@ Tu primer output — simplemente dile a Claude:
106
106
 
107
107
  ### ¿Quieres más? Añádelo en el archivo de configuración (Tier 2)
108
108
 
109
- - **Búsqueda** → ejecuta `lasso config init` para crear `~/.lasso/config.json`, luego rellena una key de Zhipu (ver [Configurar](#configurar))
109
+ - **Búsqueda** → normalmente cero configuración (reuso del MCP de Zhipu de la máquina); opcionalmente añade una key de Brave como segunda fuente (ver [Configurar](#configurar))
110
110
  - **Extraer páginas con sesión iniciada** (Jira / GitHub privado / intranet de la empresa) → ejecuta `lasso launch-chrome` una vez
111
111
  - **Controlar el escritorio de macOS** → ejecuta `lasso doctor` una vez para que te guíe por la autorización
112
112
 
@@ -122,16 +122,26 @@ Agrupado por **lo que quieres hacer**, no por nombre de herramienta. Cada uno: u
122
122
 
123
123
  > Tú: "Busca X" → resultados estructurados de búsqueda
124
124
 
125
- Por defecto Zhipu (fuerte para chino); puedes añadir Brave además como multi-fuente (el upstream de Bing ya está cerrado y su capa muerta eliminada; la clave de configuración se tolera pero se ignora silenciosamente). **Si una fuente está con rate-limit o caída, cambia automáticamente a la siguiente — no te enteras.** Agotar la cuota gratis de un proveedor no rompe todo el conjunto.
125
+ Por defecto se reutiliza el MCP de Zhipu de la máquina (fuerte para chino, cero configuración); opcionalmente puedes añadir Brave como multi-fuente (las capas muertas de Bing y de Zhipu directo ya están eliminadas; las claves de configuración sobrantes se toleran pero se ignoran silenciosamente). **Si una fuente está con rate-limit o caída, cambia automáticamente a la siguiente — no te enteras.** Agotar la cuota gratis de un proveedor no rompe todo el conjunto.
126
126
 
127
127
  Para contenido sensible al tiempo como **noticias y seguimiento de versiones**, di directamente "busca X de la última semana / del último mes" — el filtro de frescura (day / week / month / year, v1.11) se aplica automáticamente, sin fechas escritas a mano en la consulta.
128
128
 
129
+ > ¿Quieres **el cuerpo de las páginas junto con los resultados**? Di "busca e incluye 3 bloques de contenido" (`content_blocks: 1-5`, v1.17) — tras obtener los enlaces, Lasso obtiene en paralelo las N páginas principales y recorta cada cuerpo a ~6k caracteres **relevantes para tu consulta** (el párrafo inicial siempre se conserva, las secciones con palabras clave primero): un paso hacia "enlaces + contenido legible de inmediato". Los elementos que no se pueden obtener se **anotan con honestidad** (`fetch_failed` / `not_html`) conservando el enlace — tú (o la IA) decidís si vale la pena usar el navegador. Cero dependencias de pago, sin navegador.
130
+
131
+ ### Busca en tu propia máquina (nuevo en v1.17)
132
+
133
+ > Tú: "¿qué páginas sobre X leí últimamente?" / "¿qué archivos locales mencionan X?" → búsqueda privada local
134
+
135
+ `search_local` consulta directamente el **historial de Chrome** (todos los perfiles) y el **índice Spotlight de archivos** (mdfind) de tu máquina — sin red, sin nube. Privacidad integrada: **solo se devuelven título / URL / hora / fragmento del título, nunca una exportación del contenido completo de la página**, máximo 50 resultados, bases de datos de origen abiertas solo en lectura. La búsqueda de texto completo en Apple Notes aún no está abierta (un honesto "aún no implementado" en lugar de fingir que se buscó).
136
+
129
137
  ### Extraer páginas públicas (sin login)
130
138
 
131
139
  > Tú: "Captura el texto de example.com" → texto limpio del artículo, tres granularidades disponibles
132
140
 
133
141
  Elimina automáticamente barras de navegación, anuncios, barras laterales y demás ruido — **ahorra 30–70% en tokens** (y dinero). GitHub / Reddit / Hacker News / Wikipedia / Substack / Medium y otros **sitios de alto tráfico — más de 20 en total — tienen extractores dedicados**, así que las tablas y las fórmulas matemáticas tampoco pierden su estructura (v1.12) — y cada enlace del texto es una dirección absoluta totalmente clicable. ¿Necesitas marcadores de cita (ideal para investigación, para alimentar RAG)? Una frase cambia de modo.
134
142
 
143
+ > ¿Quieres **seguir interactuando justo después de leer** (pulsar un botón, rellenar un formulario)? Di «incluye los handles interactivos en la extracción» (`include_refs`, v1.17) — al final del markdown se añade una tabla de handles tipo `[r1] button "Enviar"` (el cuerpo queda sin marcas), y luego «pulsa r1» / «rellena r2 con X» localiza directamente por handle, sin repetir la instantánea de toda la página. Si la página cambió, el handle **falla con honestidad** (devuelve didnt + sugiere re-extraer — sin adivinar, sin reintentar solo).
144
+
135
145
  > **Desde v1.5, `browse_headless` trae la anti-detección activada por defecto** (UA camuflado / `navigator.webdriver` eliminado / webgl, plugins y codecs falsificados, y una docena de capas más). **Sin configuración — automático.** Muchos sitios que "detectan headless" ahora se extraen directamente (v1.8 corrigió un defecto por el que la inyección fallaba en silencio — ahora surte efecto de verdad, y las inyecciones fallidas se reportan con honestidad en el log). Desde v1.11 la anti-detección se aplica **en la capa de arranque del navegador**: UA, viewport e idioma se emiten juntos desde el perfil, así que la cabecera HTTP de red y el JS de la página ven los mismos valores — sin contradicciones. Desde v1.12 la huella por defecto en macOS **se alinea con tu sistema** (adiós al "el UA dice Windows pero los rasgos de la máquina delatan macOS"). Solo el anti-bot pesado tipo Cloudflare necesita el navegador en la nube (ver "Esquivar anti-bot" más abajo). ¿Quieres verificar el efecto de la anti-detección? Ejecuta `lasso doctor --stealth-check` para una comparación con creepjs.
136
146
 
137
147
  ### Extraer páginas con sesión iniciada (incluso con 2FA)
@@ -142,6 +152,8 @@ Reutiliza **tu Chrome con sesión iniciada en local** — tú gestionas el 2FA u
142
152
 
143
153
  > 🔴 **Línea roja**: Lasso **nunca resuelve 2FA / códigos SMS / CAPTCHA / magic links por ti**. Debes pasarlos manualmente una vez en tu Chrome local.
144
154
 
155
+ > 🛡️ **Confirmación dentro de la ronda para acciones de alto riesgo** (v1.17): cuando una acción automática toca un patrón de alto riesgo (editores de texto enriquecido, arrastrar y soltar, avisos transitorios…), los clientes con soporte de elicitation (Claude Code ≥ 2.1.76) reciben una pregunta en la misma ronda — «continuar / saltar / abortar» — y el paso solo se ejecuta si eliges continuar, en lugar de abortar toda la ejecución. Los clientes antiguos mantienen exactamente el comportamiento actual (bloqueo seguro). **La confirmación vale solo para esa ocasión**: te volverán a preguntar cada vez; no se recuerda nada.
156
+
145
157
  ### Obtener bytes crudos (lo más rápido y barato)
146
158
 
147
159
  > Tú: "Haz GET a este endpoint JSON" → bytes crudos
@@ -194,7 +206,7 @@ Acude al Internet Archive (Wayback Machine) para encontrar la última copia arch
194
206
 
195
207
  ## Instalar
196
208
 
197
- **Versión actual v1.15.0** (changelog en el bloque plegado al final de esta sección).
209
+ **Versión actual v1.17.0** (changelog en el bloque plegado al final de esta sección).
198
210
 
199
211
  Requisitos previos: Node.js ≥ 20 + Claude Code (o cualquier cliente compatible con MCP).
200
212
 
@@ -207,7 +219,9 @@ Reinicia Claude Code → `/mcp` → `lasso ✓ Connected`. **Solo esta línea, s
207
219
  **Usuarios de macOS que quieren controlar el escritorio**: ejecuta `lasso doctor` una vez y marca `lasso-rust-helper` en "Accessibility" y "Screen Recording" siguiendo las indicaciones — `doctor` te guía paso a paso.
208
220
 
209
221
  <details>
210
- <summary>📋 Changelog (v1.8 → v1.15 — despliega para ver qué cambió en cada versión)</summary>
222
+ <summary>📋 Changelog (v1.8 → v1.17 — despliega para ver qué cambió en cada versión)</summary>
223
+
224
+ - **v1.17**: cinco mejoras — ① clave directa de Zhipu retirada (`ZHIPU_API_KEY` ya no se consume; la capacidad Zhipu se lleva únicamente con la reutilización del MCP web-search-prime de la máquina, búsqueda sin configuración por defecto) ② `search` incorpora el segundo salto `content_blocks` (tras los enlaces, obtener en paralelo los cuerpos top-N recortados a ~6k caracteres según la consulta, fallos anotados con honestidad, cero dependencias de pago) ③ nueva herramienta `search_local` (historial de Chrome + Spotlight, privada y local; solo título/URL/hora, sin exportación de texto completo) ④ confirmación por elicitation dentro del turno para acciones de alto riesgo (clientes antiguos sin cambios) ⑤ `browse extract` incorpora manejadores interactivos `include_refs` (apéndice estilo `[r1]` + clic/llenado por manejador, caducidad honesta al cambiar la página). Los resultados de búsqueda llevan ahora un eje `quality` uniforme (api / scrape / stale).
211
225
 
212
226
  - **v1.15**: capa muerta de Bing eliminada por completo (Bing Search APIs retirado por completo el 2025-08-11 — código borrado, no solo documentado; un `BING_API_KEYS` residual se ignora silenciosamente y `lasso doctor` sugiere eliminarlo) + **sonda rápida de HTTP puro** antes del navegador headless (si todas las capas de API caen, primero se descarga la página de resultados sin navegador en ~1s; solo si sale vacía arranca la ruta lenta — prueba real: 20 resultados en 1,9s frente a 5,3s de la ruta headless con captcha y cero resultados; las páginas de bloqueo blando como el captcha/portada de Baidu nunca falsifican éxito y escalan al navegador).
213
227
 
@@ -230,7 +244,7 @@ Reinicia Claude Code → `/mcp` → `lasso ✓ Connected`. **Solo esta línea, s
230
244
  | Lo que quieres hacer | Qué configurar |
231
245
  |---|---|
232
246
  | Extraer páginas públicas / capturas / PDF / ver recursos de terceros / obtener bytes crudos / controlar el escritorio | **Nada en absoluto** |
233
- | Buscar | Una key de Zhipu (gratis de solicitar; si la máquina ya tiene el MCP de Zhipu, ni eso) |
247
+ | Buscar | Normalmente cero configuración (reuso del MCP de Zhipu); key de Brave opcional (plan de pago) |
234
248
  | Búsqueda casi sin fallos | Añadir una key de Brave (plan de pago con \$5/mes de crédito; sin configurarla también hay búsqueda real gratuita de respaldo) |
235
249
  | Extraer páginas con sesión iniciada | Ejecutar `lasso launch-chrome` una vez |
236
250
  | Controlar el escritorio de macOS | Ejecutar `lasso doctor` una vez para autorizar |
@@ -261,7 +275,7 @@ Al guardar surte efecto. **¿Más estabilidad?** Añade también Brave (plan de
261
275
  }
262
276
  ```
263
277
 
264
- > Orden de degradación: reutilización del MCP de la máquina → Zhipu Brave → búsqueda real en el navegador headless como remate (v1.14: fallback inglés de doble motor — un fallo o vacío de DDG reintenta automáticamente una vez con búsqueda real de Brave; v1.15 añade antes una **sonda rápida de HTTP puro** (~1s, descarga la página de resultados sin ningún navegador — en pruebas reales algunos motores desconfían menos de clientes sin navegador); solo si no encuentra nada arranca la ruta lenta del navegador). Si falla el anterior, pasa automáticamente al siguiente. (La fuente Bing se eliminó por completo tras el retiro del upstream el 2025-08-11; un `BING_API_KEYS` residual se ignora silenciosamente y `lasso doctor` sugiere eliminarlo.)
278
+ > Orden de degradación: reutilización del MCP de la máquina → Brave (si hay key configurada) → búsqueda real en el navegador headless como remate (v1.14: fallback inglés de doble motor — un fallo o vacío de DDG reintenta automáticamente una vez con búsqueda real de Brave; v1.15 añade antes una **sonda rápida de HTTP puro** (~1s, descarga la página de resultados sin ningún navegador — en pruebas reales algunos motores desconfían menos de clientes sin navegador); solo si no encuentra nada arranca la ruta lenta del navegador). Si falla el anterior, pasa automáticamente al siguiente. (La fuente Bing se eliminó por completo tras el retiro del upstream el 2025-08-11, y el nivel directo de Zhipu se eliminó en v1.17; un `BING_API_KEYS` / `ZHIPU_API_KEY` residual se ignora silenciosamente y `lasso doctor` sugiere eliminarlo.)
265
279
 
266
280
  Cómo solicitar keys, cuánta cuota gratis hay → [Guía de configuración de keys · Búsqueda](./doc/KEY-GUIDE.md#a-搜索). Comandos habituales: `lasso --version` / `lasso --help` (desde v1.8, los comandos desconocidos imprimen el uso y terminan con código distinto de cero, en vez de colgarse en silencio).
267
281
 
@@ -366,7 +380,7 @@ Tus datos son tuyos.
366
380
  | El control del escritorio en macOS no funciona | Marca `lasso-rust-helper` bajo "System Settings → Privacy & Security → Accessibility / Screen Recording" (`lasso doctor` te guía) |
367
381
  | La extracción de página con sesión falla | Inicia sesión una vez manualmente en tu Chrome local (también el 2FA), luego di "abre mi X con sesión iniciada" |
368
382
  | Guardar como PDF falla | Di mejor "haz una captura de pantalla de página completa de esta página" |
369
- | La búsqueda no devuelve nada | Comprueba si la key caducó / la cuota se agotó; añadir varios proveedores (Zhipu + Brave) reduce drásticamente la tasa de fallo |
383
+ | La búsqueda no devuelve nada | Ejecuta `lasso doctor` y mira `machine_search_mcp` / `brave_keys`; comprueba si la key de Brave caducó / la cuota se agotó; el reuso del MCP de la máquina + el fallback de búsqueda real gratuito funcionan sin configurar nada |
370
384
  | Un enlace no abre | Di "este enlace está caído, busca un archivo" para consultar el Internet Archive |
371
385
  | Aparece que el acceso a la red interna fue bloqueado | Revisa la URL; las redes proxy TUN están permitidas por defecto, otras redes internas necesitan permiso explícito |
372
386
  | Verificar el efecto de la anti-detección | Ejecuta `lasso doctor --stealth-check` — maneja la página de detección creepjs y compara contra una línea base (opcional, no afecta el uso diario) |
package/README.fr.md CHANGED
@@ -66,8 +66,8 @@ Lasso lui-même est **totalement gratuit + MIT open source**. Voilà ce que chaq
66
66
  | Capacité | Coût | Remarques |
67
67
  |---|---|---|
68
68
  | Lasso lui-même (serveur MCP + toutes les capacités cœur) | ✅ Gratuit | MIT open source, gratuit pour toujours |
69
- | Recherche (Zhipu + Brave) | ✅ Gratuit pour démarrer avec Zhipu | Zhipu est facturé au token (les nouveaux utilisateurs disposent de crédits offerts) ; si le MCP Zhipu est déjà configuré sur la machine, cela fonctionne sans aucune configuration ; Brave est désormais un plan payant incluant \$5/mois de crédit (le palier gratuit a été supprimé depuis 2026-02) ; Lasso embarque de plus un repli de recherche réelle gratuit — vous avez donc de la recherche même sans rien configurer |
70
- | Aspirer des pages publiques / captures / PDF / audit réseau / octets bruts | ✅ Gratuit | Tourne en local, pas de clé, pas de paiement |
69
+ | Recherche (réutilisation du MCP Zhipu de la machine + Brave) | ✅ En général zéro config | Si le MCP `web-search-prime` de Zhipu est déjà configuré sur la machine, Lasso le réutilise automatiquement (chemin principal — aucune clé de recherche nécessaire) ; Brave est un plan payant en option incluant \$5/mois de crédit (le palier gratuit a été supprimé depuis 2026-02) ; Lasso embarque de plus un repli de recherche réelle gratuit — vous avez donc de la recherche même sans rien configurer. Depuis v1.17, Lasso ne prend plus en charge sa propre clé directe Zhipu (`ZHIPU_API_KEY` est retirée) |
70
+ | Aspirer des pages publiques / captures / PDF / audit réseau / octets bruts / recherche privée locale (v1.17 : historique+fichiers) | ✅ Gratuit | Tourne en local, pas de clé, pas de paiement |
71
71
  | Aspirer des pages connectées (réutilise Chrome local) | ✅ Gratuit | Tourne en local, pas de clé, pas de paiement |
72
72
  | Piloter le bureau (macOS / Windows / Linux) | ✅ Gratuit | Construit et exécuté en local, seule une autorisation OS est nécessaire ; compte Apple Developer \$99/an **facultatif** pour une autorisation persistante signée (fonctionne aussi sans signature — il faut juste réautoriser à chaque fois) |
73
73
  | Navigateur cloud · Steel auto-hébergé (nouveauté v1.6) | ✅ Gratuit | Steel (open source Apache-2.0) dans un Docker local — **zéro coût par session + les cookies ne quittent jamais votre machine** ; nécessite `LASSO_ALLOW_CLOUD_BROWSER=true` + `STEEL_ENDPOINT=http://localhost:3000` |
@@ -98,7 +98,7 @@ Aucune clé nécessaire juste après l'installation (ceci est le **Tier 1 : zér
98
98
  - Récupérer les octets bruts directement depuis une API JSON ou un fichier
99
99
  - Contrôler les applications natives macOS (Finder / Mail / Réglages Système, etc. — nécessite un clic unique dans les Réglages Système)
100
100
 
101
- > 💡 **La recherche peut aussi marcher en zéro config** : si le `~/.claude.json` de votre machine a déjà le MCP `web-search-prime` de Zhipu configuré, Lasso le détecte et le réutilise au démarrage — pas besoin de `ZHIPU_API_KEY` séparé, la recherche fonctionne direct. Lancez `lasso doctor` et vérifiez que `#36 machine_search_mcp` est `pass`.
101
+ > 💡 **La recherche est en zéro config par défaut** : si le `~/.claude.json` de votre machine a déjà le MCP `web-search-prime` de Zhipu configuré, Lasso le détecte et le réutilise au démarrage — la recherche fonctionne direct, sans aucune clé de recherche (depuis v1.17, c'est la seule façon prise en charge d'utiliser Zhipu). Lancez `lasso doctor` et vérifiez que `#36 machine_search_mcp` est `pass`.
102
102
 
103
103
  Votre première sortie — dites simplement à Claude :
104
104
 
@@ -106,7 +106,7 @@ Votre première sortie — dites simplement à Claude :
106
106
 
107
107
  ### Vous voulez plus ? Ajoutez-le dans le fichier de config (Tier 2)
108
108
 
109
- - **Recherche** → lancez `lasso config init` pour créer `~/.lasso/config.json`, puis remplissez une clé Zhipu (voir [Configurer](#configurer))
109
+ - **Recherche** → en général zéro config (réutilisation du MCP Zhipu de la machine) ; ajoutez optionnellement une clé Brave comme seconde source (voir [Configurer](#configurer))
110
110
  - **Aspirer des pages connectées** (Jira / GitHub privé / intranet d'entreprise) → lancez `lasso launch-chrome` une fois
111
111
  - **Contrôler le bureau macOS** → lancez `lasso doctor` une fois pour être guidé dans l'autorisation
112
112
 
@@ -122,16 +122,26 @@ Groupé par **ce que vous voulez faire**, pas par nom d'outil. Chaque entrée :
122
122
 
123
123
  > Vous : « Cherche X » → résultats de recherche structurés
124
124
 
125
- Zhipu par défaut (fort pour le chinois) ; vous pouvez aussi configurer Brave en multi-source (l'amont Bing est fermé et sa couche morte supprimée ; la clé de configuration est tolérée mais silencieusement ignorée). **Si l'une des sources atteint sa limite ou tombe en panne, bascule automatique sur la suivante — vous ne sentez rien.** Atteindre le quota gratuit d'un fournisseur ne casse pas l'ensemble.
125
+ Par défaut, réutilisation du MCP Zhipu de la machine (fort pour le chinois, zéro config) ; vous pouvez aussi configurer Brave en multi-source (les couches mortes de Bing et de Zhipu direct ont été supprimées ; les clés de configuration restantes sont tolérées mais silencieusement ignorées). **Si l'une des sources atteint sa limite ou tombe en panne, bascule automatique sur la suivante — vous ne sentez rien.** Atteindre le quota gratuit d'un fournisseur ne casse pas l'ensemble.
126
126
 
127
127
  Pour les contenus **d'actualité — nouvelles, mouvements de versions**, dites simplement « cherche le X de la dernière semaine / du dernier mois » : le filtre de fraîcheur s'applique automatiquement (day / week / month / year, v1.11), sans écrire de dates à la main dans la requête.
128
128
 
129
+ > Envie du **corps des pages avec les résultats** ? Dites « cherche et inclus 3 blocs de contenu » (`content_blocks: 1-5`, v1.17) — une fois les liens obtenus, Lasso récupère en parallèle les N premières pages et tronque chaque corps à ~6k caractères **pertinents pour votre requête** (le paragraphe d'intro est toujours conservé, les sections riches en mots-clés d'abord) : un pas vers « liens + contenu immédiatement lisible ». Les éléments irrécupérables sont **annotés honnêtement** (`fetch_failed` / `not_html`), le lien reste — à vous (ou à l'IA) de décider d'une relance navigateur. Zéro dépendance payante, aucun navigateur lancé.
130
+
131
+ ### Cherchez dans votre propre machine (nouveau en v1.17)
132
+
133
+ > Vous : « quelles pages sur X ai-je lues récemment ? » / « quels fichiers locaux mentionnent X ? » → recherche privée locale
134
+
135
+ `search_local` interroge directement l'**historique Chrome** (tous les profils) et l'**index Spotlight de fichiers** (mdfind) de votre machine — sans réseau, sans cloud. Confidentialité intégrée : **seuls titre / URL / horodatage / extrait du titre sont renvoyés, jamais d'export du contenu complet des pages**, 50 résultats maximum, bases sources ouvertes en lecture seule. La recherche plein-texte Apple Notes n'est pas encore ouverte (un honnête « pas encore implémenté » plutôt que de faire semblant d'avoir cherché).
136
+
129
137
  ### Aspirer des pages publiques (sans login)
130
138
 
131
139
  > Vous : « Récupère le texte de example.com » → texte d'article propre, trois granularités disponibles
132
140
 
133
141
  Retire automatiquement barres de navigation, pubs, barres latérales et autre clutter — **30 à 70 % de tokens économisés** (et de l'argent). GitHub / Reddit / Hacker News / Wikipedia / Substack / Medium et **plus de 20 sites à fort trafic passent par des extracteurs dédiés** ; tableaux et formules mathématiques gardent leur structure (v1.12) — et les liens dans le corps du texte sont des adresses absolues, complètes et cliquables. Besoin de marqueurs de citation (parfait pour la recherche, alimenter du RAG) ? Une phrase change de mode.
134
142
 
143
+ > Envie de **continuer à interagir juste après la lecture** (cliquer un bouton, remplir un formulaire) ? Dites « inclus les handles interactifs dans l'extraction » (`include_refs`, v1.17) — une table de handles type `[r1] button "Envoyer"` est ajoutée à la fin du markdown (le corps reste sans marqueurs), puis « clique r1 » / « remplis r2 avec X » localise directement par handle, sans refaire un instantané de toute la page. Si la page a changé, le handle **échoue honnêtement** (renvoie didnt + invite à ré-extraire — pas de devinement, pas de retry automatique).
144
+
135
145
  > **Depuis la v1.5, `browse_headless` active l'anti-détection par défaut** (UA maquillé / `navigator.webdriver` effacé / webgl, plugins, codecs falsifiés — une quinzaine de couches). **Aucune config — effet automatique** : beaucoup de sites « détecteurs de headless » s'aspirent maintenant directement (la v1.8 a réparé un défaut qui désactivait silencieusement l'injection — c'est maintenant réellement actif, et un échec d'injection est honnêtement signalé dans les logs). Depuis la v1.11, l'anti-détection s'applique **dès le lancement du navigateur** : UA, viewport et langue descendent du même profil — l'en-tête HTTP réseau et le JS de la page voient les mêmes valeurs, plus de contradiction ; depuis la v1.12, sur macOS l'empreinte par défaut **s'aligne sur votre système** (fini « l'UA dit Windows, les caractéristiques de la machine avouent macOS »). Seul l'anti-bot de niveau Cloudflare justifie le navigateur cloud (voir « Contournement anti-bot » ci-dessous). Envie de vérifier l'anti-détection ? Lancez `lasso doctor --stealth-check` pour une comparaison via creepjs.
136
146
 
137
147
  ### Aspirer des pages connectées (même avec 2FA)
@@ -142,6 +152,8 @@ Réutilise **votre Chrome localement connecté** — vous gérez le 2FA une fois
142
152
 
143
153
  > 🔴 **Ligne rouge** : Lasso **ne résout jamais le 2FA / codes SMS / CAPTCHA / liens magiques à votre place**. Vous devez les passer vous-même une fois dans votre Chrome local.
144
154
 
155
+ > 🛡️ **Confirmation en cours de tour pour les actions à haut risque** (v1.17) : quand une action automatisée touche un motif à haut risque (éditeurs de texte riche, glisser-déposer, toasts éphémères…), les clients compatibles elicitation (Claude Code ≥ 2.1.76) reçoivent une question dans la même tour — « continuer / passer / abandonner » — et l'étape ne s'exécute que si vous choisissez continuer, au lieu d'interrompre toute l'exécution. Les clients plus anciens conservent exactement le comportement actuel (blocage sécurisé). **La confirmation ne vaut que pour l'occurrence** : on vous reposera la question à chaque fois ; rien n'est mémorisé.
156
+
145
157
  ### Récupérer les octets bruts (le plus rapide, le moins cher)
146
158
 
147
159
  > Vous : « GET ce endpoint JSON » → octets bruts
@@ -194,7 +206,7 @@ Va à l'Internet Archive (Wayback Machine) pour retrouver la dernière copie arc
194
206
 
195
207
  ## Installer
196
208
 
197
- **Version actuelle v1.15.0** (journal des versions dans le bloc replié en fin de section).
209
+ **Version actuelle v1.17.0** (journal des versions dans le bloc replié en fin de section).
198
210
 
199
211
  Prérequis : Node.js ≥ 20 + Claude Code (ou tout client compatible MCP).
200
212
 
@@ -207,7 +219,9 @@ Redémarrez Claude Code → `/mcp` → `lasso ✓ Connected`. **C'est tout, une
207
219
  **Contrôle du bureau sur macOS** : lancez `lasso doctor` une fois et suivez les invites pour cocher `lasso-rust-helper` sous « Accessibilité » et « Capture d'écran » — `doctor` vous guide pas à pas.
208
220
 
209
221
  <details>
210
- <summary>📋 Journal des versions (v1.8 → v1.15, cliquez pour voir les changements de chaque version)</summary>
222
+ <summary>📋 Journal des versions (v1.8 → v1.17, cliquez pour voir les changements de chaque version)</summary>
223
+
224
+ - **v1.17** : cinq évolutions — ① clé directe Zhipu retirée (`ZHIPU_API_KEY` n'est plus consommée ; la capacité Zhipu passe uniquement par la réutilisation du MCP web-search-prime de la machine, recherche zéro-config par défaut) ② `search` gagne le second saut `content_blocks` (après les liens, récupération parallèle des corps top-N tronqués à ~6k caractères selon la requête, échecs annotés honnêtement, zéro dépendance payante) ③ nouvel outil `search_local` (historique Chrome + Spotlight, privé et local ; titre/URL/horaire seulement, pas d'export plein-texte) ④ confirmation par elicitation dans le tour pour les actions à haut risque (anciens clients inchangés) ⑤ `browse extract` gagne les poignées interactives `include_refs` (annexe `[r1]` + clic/saisie par poignée, péremption honnête si la page change). Les résultats de recherche portent désormais un axe `quality` uniforme (api / scrape / stale).
211
225
 
212
226
  - **v1.15** : couche morte de Bing retirée entièrement (Bing Search APIs retiré totalement le 2025-08-11 — code supprimé, pas seulement documenté ; un `BING_API_KEYS` restant est ignoré silencieusement, `lasso doctor` propose sa suppression) + **sonde rapide HTTP brut** avant le navigateur headless (si toutes les couches API tombent, une récupération sans navigateur de la page de résultats tourne d'abord en ~1s ; seulement si elle revient vide, le chemin lent démarre — test réel : 20 résultats en 1,9s contre 5,3s pour le chemin headless avec captcha et zéro résultat ; les pages de blocage doux comme le captcha/page d'accueil de Baidu ne truquent jamais un succès et escaladent vers le navigateur).
213
227
 
@@ -230,7 +244,7 @@ Redémarrez Claude Code → `/mcp` → `lasso ✓ Connected`. **C'est tout, une
230
244
  | Ce que vous voulez faire | Ce qu'il faut configurer |
231
245
  |---|---|
232
246
  | Aspirer des pages publiques / captures / PDF / voir les traceurs / octets bruts / piloter le bureau | **Rien du tout** |
233
- | Rechercher | Une clé Zhipu (gratuite à demander ; si le MCP Zhipu est déjà configuré sur la machine, même pas besoin) |
247
+ | Rechercher | En général zéro config (réutilisation du MCP Zhipu) ; clé Brave en option (plan payant) |
234
248
  | Une recherche qui tombe rarement en panne | Ajouter une clé Brave (plan payant incluant \$5/mois de crédit ; même sans elle, un repli de recherche réelle gratuit reste disponible) |
235
249
  | Aspirer des pages connectées | Lancer `lasso launch-chrome` une fois |
236
250
  | Piloter le bureau macOS | Lancer `lasso doctor` une fois pour l'autorisation |
@@ -261,7 +275,7 @@ Enregistrez et c'est actif. **Pour plus de robustesse**, ajoutez aussi Brave (pl
261
275
  }
262
276
  ```
263
277
 
264
- > Ordre de repli : réutilisation du MCP machine → Zhipu Brave → recherche réelle en navigateur headless en dernier repli (v1.14 : repli anglais à double moteur — un échec ou vide du DDG relance automatiquement une tentative via la recherche réelle Brave ; v1.15 ajoute avant une **sonde rapide HTTP brut** (~1s, récupère la page de résultats sans aucun navigateur — en tests réels certains moteurs se méfient moins des clients sans navigateur) ; seulement si elle ne trouve rien, le chemin lent du navigateur démarre). Le premier qui échoue cède la place au suivant. (La source Bing a été retirée entièrement après le retrait amont du 2025-08-11 ; un `BING_API_KEYS` restant est ignoré silencieusement et `lasso doctor` proposera de le supprimer.)
278
+ > Ordre de repli : réutilisation du MCP machine → Brave (si une clé est configurée) → recherche réelle en navigateur headless en dernier repli (v1.14 : repli anglais à double moteur — un échec ou vide du DDG relance automatiquement une tentative via la recherche réelle Brave ; v1.15 ajoute avant une **sonde rapide HTTP brut** (~1s, récupère la page de résultats sans aucun navigateur — en tests réels certains moteurs se méfient moins des clients sans navigateur) ; seulement si elle ne trouve rien, le chemin lent du navigateur démarre). Le premier qui échoue cède la place au suivant. (La source Bing a été retirée entièrement après le retrait amont du 2025-08-11, et le palier direct Zhipu a été supprimé en v1.17 ; un `BING_API_KEYS` / `ZHIPU_API_KEY` restant est ignoré silencieusement et `lasso doctor` proposera de le supprimer.)
265
279
 
266
280
  Comment demander une clé, tailles des paliers gratuits → [Guide de configuration des clés · Recherche](./doc/KEY-GUIDE.md#a-搜索). Commandes utiles : `lasso --version` / `lasso --help` (depuis la v1.8, une commande inconnue affiche l'usage et sort avec un code non nul — fini le blocage silencieux).
267
281
 
@@ -366,7 +380,7 @@ Vos données vous appartiennent.
366
380
  | Le contrôle du bureau macOS ne fonctionne pas | Cochez `lasso-rust-helper` sous « Réglages Système → Confidentialité et sécurité → Accessibilité / Capture d'écran » (`lasso doctor` vous guide) |
367
381
  | L'aspiration de page connectée échoue | Connectez-vous une fois manuellement dans votre Chrome local (gérez aussi le 2FA), puis dites « ouvre mon X connecté » |
368
382
  | L'enregistrement en PDF échoue | Dites plutôt « fais une capture pleine page de cette page » |
369
- | La recherche ne renvoie toujours rien | Vérifiez si la clé a expiré / le quota est épuisé ; ajouter plusieurs fournisseurs (Zhipu + Brave) réduit fortement le taux d'échec |
383
+ | La recherche ne renvoie toujours rien | Lancez `lasso doctor` et vérifiez `machine_search_mcp` / `brave_keys` ; vérifiez si la clé Brave a expiré / le quota est épuisé ; la réutilisation du MCP machine + le repli de recherche réelle gratuit fonctionnent sans config |
370
384
  | Un lien ne s'ouvre pas | Dites « ce lien est mort, trouve une archive » pour interroger l'Internet Archive |
371
385
  | Invite indiquant que l'accès au réseau interne a été bloqué | Vérifiez l'URL ; les réseaux proxy TUN sont autorisés par défaut, les autres réseaux internes nécessitent une permission explicite |
372
386
  | Envie de vérifier l'anti-détection | Lancez `lasso doctor --stealth-check` — il pilote la page de détection creepjs et compare à la ligne de base (optionnel, sans impact sur l'usage quotidien) |