#Api de Pewrplexity sigue fallando
1 messages · Page 1 of 1 (latest)
Sí, puede ser por créditos, y sí, también puede estar entrando por OpenRouter.
Lo más útil para comprobarlo es esto, en orden:
openclaw --version
openclaw infer web providers --json
openclaw infer web search --query "OpenClaw docs" --json
Qué mirar:
- Si ves clave
pplx-..., usa la API nativa de Perplexity. - Si ves
sk-or-...o tienesOPENROUTER_API_KEY, OpenClaw puede usar Perplexity vía OpenRouter/Sonar automáticamente. - Si responde con una respuesta sintetizada con citas, suele ser la ruta OpenRouter/Sonar.
- Si devuelve filas estructuradas (
title,url,snippet), suele ser la API nativa de Perplexity.
Importante: si no has fijado tools.web.search.provider: "perplexity", el auto-detect elige el primer provider web listo. O sea, tener OPENROUTER_API_KEY no garantiza que esté usando Perplexity si hay otro provider configurado antes.
Si quieres ver el fallo exacto, deja esto corriendo y repite la búsqueda:
openclaw logs --follow
Pásame la salida de esos 3 comandos y te digo enseguida si está:
- usando Perplexity nativo,
- usando OpenRouter,
- o fallando por auth/créditos.
Docs:
ENVIO ULTIMA PRUEBA......
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer web search --query "test" --json
{
"ok": true,
"capability": "web.search",
"transport": "local",
"provider": "perplexity",
"attempts": [],
"outputs": [
{
"result": {
"query": "test",
"provider": "perplexity",
"model": "perplexity/sonar-pro",
"tookMs": 4463,
"externalContent": {
"untrusted": true,
"source": "web_search",
"provider": "perplexity",
"wrapped": true
},
"content": "\n<<<EXTERNAL_UNTRUSTED_CONTENT id="fc3ae28b1b03808a">>>\nSource: Web Search\n---\n**"Test"** is primarily defined as a means of evaluating skill, knowledge, intelligence, or aptitudes through questions, exercises, procedures, or trials, and can also refer to medical examinations, product trials, or scientific experiments.[1][2][3]\n\n--- Key Definitions as a Noun\n- A series of questions or exercises to measure abilities, knowledge, or capacities (e.g., educational or aptitude tests).[1][2]\n- A medical exam like a blood test or pregnancy test to check health or detect substances.[1][2]\n- A trial, experiment, or evaluation to verify functionality, safety, or effectiveness (e.g., product testing or stress tests).[1][2][3]\n- A result from such an evaluation (e.g., "tested positive").[1][2]\n\n--- As a Verb\n- To subject something or someone to a test for proof, analysis, or measurement (e.g., "test for HIV" or "test a new missile").[1][2]\n- To undergo testing or produce a specific result (e.g., "the cake tested done").[1][2]\n\n--- Other Contexts\n- In science/technology: Experiments, hypothesis testing, or product/system validation.[3]\n- Internet speed tests (e.g., tools measuring download/upload speeds).[4][7]\n- Hungarian translations include teszt (test), vizsgálat (examination), próba (trial), or vizsga (exam).[5][6]\n\nThis covers the most common usages; context like education, medicine, or tech determines the exact meaning.[1][2][3]\n<<<END_EXTERNAL_UNTRUSTED_CONTENT id="fc3ae28b1b03808a">>>",
"citations": [
"https://www.merriam-webster.com/dictionary/test",
"https://dictionary.cambridge.org/dictionary/english/test",
"https://en.wikipedia.org/wiki/Test",
"https://fast.com",
"https://hu.bab.la/szótár/angol-magyar/test",
"https://dictzone.com/english-hungarian-dictionary/test",
"https://www.speedtest.net",
"https://test-it.com/hu/"
]
}
}
]
}
Perfecto, con esa prueba ya se ve bastante claro.
Ahora mismo no parece un problema de créditos agotados, porque la búsqueda sí ha funcionado ("ok": true).
Y además, esto casi seguro indica que estás en la ruta Perplexity vía Sonar/OpenRouter compat:
provider: "perplexity"model: "perplexity/sonar-pro"- devuelve una respuesta sintetizada con citas, no una lista estructurada de
title/url/snippet
Eso encaja con lo que hace OpenClaw cuando Perplexity va por:
OPENROUTER_API_KEY, o- una key
sk-or-..., o plugins.entries.perplexity.config.webSearch.baseUrl/model
O sea, sí: es muy posible que esté funcionando con OpenRouter.
Si quieres rematar la comprobación, pásame solo esto también:
openclaw --version
openclaw infer web providers --json
Si infer web search funciona pero en el chat/agent falla, entonces el problema ya no está en Perplexity en sí, sino en:
- la configuración del agente,
- la selección automática del provider,
- o algún fallo del turno concreto.
Docs:
Si quieres, te ayudo a interpretar el infer web providers --json en el siguiente mensaje.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw --version
openclaw infer web providers --json
openclaw infer web search --query "OpenClaw docs" --json
OpenClaw 2026.4.15 (041266a)
{
"search": [
{
"available": true,
"configured": true,
"selected": false,
"id": "brave",
"envVars": [
"BRAVE_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "duckduckgo",
"envVars": []
},
{
"available": true,
"configured": false,
"selected": false,
"id": "exa",
"envVars": [
"EXA_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "firecrawl",
"envVars": [
"FIRECRAWL_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "gemini",
"envVars": [
"GEMINI_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "grok",
"envVars": [
"XAI_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "kimi",
"envVars": [
"KIMI_API_KEY",
"MOONSHOT_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "minimax",
"envVars": [
"MINIMAX_CODE_PLAN_KEY",
"MINIMAX_CODING_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "ollama",
"envVars": []
},
{
"available": true,
"configured": true,
"selected": true,
"id": "perplexity",
"envVars": [
"PERPLEXITY_API_KEY",
"OPENROUTER_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "searxng",
"envVars": [
"SEARXNG_BASE_URL"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "tavily",
"envVars": [
"TAVILY_API_KEY"
]
}
],
"fetch": [
{
"available": true,
"configured": false,
"selected": false,
"id": "firecrawl",
"envVars": [
"FIRECRAWL_API_KEY"
]
}
]
}
{
"ok": true,
"capability": "web.search",
"transport": "local",
"provider": "perplexity",
"attempts": [],
"outputs": [
{
"result": {
"query": "OpenClaw docs",
"provider": "perplexity",
"model": "perplexity/sonar-pro",
"tookMs": 6969,
"externalContent": {
"untrusted": true,
"source": "web_search",
"provider": "perplexity",
"wrapped": true
},
"content": "\n<<<EXTERNAL_UNTRUSTED_CONTENT id="58c8d69a12c2f71e">>>\nSource: Web Search\n---\nOpenClaw is an open-source, self-hosted gateway framework for running autonomous AI agents that connect to messaging platforms (e.g., Discord, Telegram, WhatsApp, Slack), support tool use, streaming responses, vision, voice, and browser automation—all while storing data locally for privacy.[3][4][5]\n\n--- Key Features\n- Multi-channel support: Built-in and plugin-based integration with 12+ platforms like iMessage, Matrix, Microsoft Teams, Signal, and Zalo.[4][5]\n- Agent capabilities: Sessions, memory, function calling, retries, error handling, and routing for multi-agent workflows.[4][5]\n- Local infrastructure: Runs a Gateway on localhost:18789 (default), uses SQLite (~/.openclaw/openclaw.db), and includes a CLI and Control UI/Dashboard for chatting without channel setup.[3][4]\n- Privacy-focused: No external data sharing by default.[4]\n-
Sí, aquí ya queda bastante claro:
- Está funcionando
- El provider activo es
perplexity - No parece un fallo actual de créditos, porque la búsqueda responde bien
- Y además está usando la ruta Sonar/compat, no la Search API nativa:
"provider": "perplexity",
"model": "perplexity/sonar-pro"
Eso significa que casi seguro está yendo por OpenRouter o por una config equivalente de compatibilidad, no por la API nativa pplx-.
La pista fuerte es esta:
- devuelve una respuesta sintetizada con citas
- no devuelve resultados estructurados tipo
title / url / snippet
Así que, resumiendo:
- Sí, Perplexity está seleccionado
- Sí, está funcionando ahora mismo
- Sí, muy probablemente está usando OpenRouter/Sonar
Lo único que no se ve al 100% en esa salida es de dónde sale la credencial exacta. Pero localmente lo puedes distinguir fácil sin pegar la key aquí:
- si tu clave empieza por
sk-or-→ OpenRouter - si empieza por
pplx-→ Perplexity nativa
No pegues la key en público, claro 🙂
Si quieres, el siguiente paso útil sería mirar solo esto:
openclaw config get tools.web.search --json
y te digo si está forzado a Perplexity en config o si llegó ahí por otra ruta.
Docs: https://docs.openclaw.ai/tools/perplexity-search
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config get tools.web.search --json
{
"provider": "perplexity"
Perfecto, ahí está 🙂
Eso confirma que lo tienes forzado por config:
tools.web.search.provider = "perplexity"
O sea:
- no está entrando por auto-detect
- el provider activo es Perplexity
- y como antes vimos
model: "perplexity/sonar-pro", está usando la ruta Sonar/compatibilidad - además, sí está funcionando ahora mismo
Así que la conclusión sería:
- Perplexity está seleccionado explícitamente
- La búsqueda funciona
- Muy probablemente va por OpenRouter/Sonar, no por la API nativa
pplx-
Si más adelante vuelve a fallar, entonces ya miraría:
- créditos/cuota en OpenRouter o Perplexity
- o logs en el momento del fallo con:
openclaw logs --follow
Docs: https://docs.openclaw.ai/tools/perplexity-search
Glad that helped! 🎉
Si esto lo dejó claro, por favor right-click en el mensaje de la solución → Apps → ✅ Mark Solution.
Así Answer Overflow lo indexa para el siguiente que se atasque con Perplexity.
como hacemos una prueba de busqueda amplia para verificar su funcionamiento ?
Sí, haría una prueba en 3 rondas, con consultas bastante abiertas.
Prueba esto:
openclaw infer web search --query "latest AI agent frameworks and browser automation tools" --json
openclaw infer web search --query "OpenClaw documentation installation configuration web search providers" --json
openclaw infer web search --query "today major AI open source news and model provider updates" --json
Y mira que en las 3 salga:
"ok": true"provider": "perplexity""model": "perplexity/sonar-pro"- varias
citations - contenido razonable, no vacío
Si quieres hacerlo fino, abre otra terminal con:
openclaw logs --follow
y luego lanzas esas búsquedas. Así ves si hay errores intermitentes de cuota/rate limit aunque alguna consulta responda.
En tu caso, como estás en Sonar/OpenRouter compat, la validación buena no es tanto “muchos resultados estructurados”, sino:
- que responda bien a temas amplios
- que cite varias fuentes
- y que no falle en consultas consecutivas
Si quieres, te preparo una batería de 5 queries buenas para dejar Perplexity “stress-tested” de verdad.
BORRE GRAN PARTE DEL RESULTADO DE LA BUSQUEDA POR QUE SUPERABA LA VENTANA PERMITIDA POR DISCORD alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer web search --query "latest AI agent frameworks and browser automation tools" --json
openclaw infer web search --query "OpenClaw documentation installation configuration web search providers" --json
openclaw infer web search --query "today major AI open source news and model provider updates" --json
{
"ok": true,
"capability": "web.search",
"transport": "local",
"provider": "perplexity",
"attempts": [],
"outputs": [
{
"result": {
"query": "latest AI agent frameworks and browser automation tools",
"provider": "perplexity",
"model": "perplexity/sonar-pro",
"tookMs": 8001,
"externalContent": {
"untrusted": true,
"source": "web_search",
"provider": "perplexity",
"wrapped": true
},
"content": "\n<<<EXTERNAL_UNTRUSTED_CONTENT id="5ff123094a52aea4">>>\nSource: Web Search\n---\nThe leading AI agent frameworks in 2026 include LangGraph, CrewAI, OpenAI Agents SDK, AutoGen (now in maintenance and merging into Microsoft Agent Framework), LangChain, and Semantic Kernel, valued for their support of multi-agent orchestration, planning, tool use, and state management.[1][2][3][6] These frameworks enable developers to build autonomous agents that reason, execute tasks, and collaborate, with popularity measured by GitHub stars, downloads, and enterprise adoption like Klarna (LangGraph) or Novo Nordisk (AutoGen).[1][2]\n\n--- Top AI Agent Frameworks\nThe most cited frameworks across sources, ranked by mentions and metrics (e.g., stars/downloads as of early 2026):\n\n| Framework | GitHub Stars | Monthly Downloads | Key Strengths | Notable Use Cases |\n|--------------------|--------------|-------------------|----------------------------------------|---------------------------------------|\n| LangGraph | 24.8k | 34.5M | Stateful orchestration, multi-agent, human-in-the-loop | Enterprise (Klarna saved $60M), Uber, Cisco[1][2] |\n| CrewAI | 44.3k | 5.2M | Role-based teams, simple setup, streaming tools | Customer service, marketing (Oracle, Deloitte)[1][2][3][4] |\n| OpenAI Agents SDK | 19k | 10.3M | Lightweight multi-agent, 100+ LLMs, tracing/guardrails | Prototyping, website-to-agents[2][5] |\n| AutoGen | 54.6k | 856k | Event-driven conversations (maintenance mode post-Oct 2025 merge)[2][1][3] | Data science (Novo Nordisk)[2] |\n| LangChain | N/A | N/A | Rapid prototyping, RAG, ecosystem integrations (uses LangGraph runtime) | General agents, retrieval systems[1][3][5] |\n| Semantic Kernel| N/A | N/A | Enterprise Microsoft stack, merging with AutoGen (GA Q1 2026) | Multi-agent coordination[1][3] |\n\nOthers gaining traction: Google ADK (17.8k stars, Gemini integration),[2] Agno (multi-LLM support),[4] LlamaIndex (data retrieval),[6] Botpress/Rasa (conversational).[3]\n\n--- Browser Automation Tools in AI Agent Contexts\nSearch results emphasize agent frameworks with built-in tool integrations for browser automation, rather than standalone tools. Key examples:\n- Firecrawl + OpenAI Agents SDK: Converts websites into interactive agents via web scraping/crawling.[2]\n- CrewAI/LangGraph: Support custom tools for browser tasks (e.g., via Selenium/Playwright integrations in ecosystems).[1][2]\n- General: Frameworks like LangChain provide hooks for browser tools (e.g., retrieval from web sources).[1]\n\nNo dedicated browser automation tools (e.g., Puppeteer, Playwright) are highlighted as "latest" here; focus is on agent-native capabilities for tasks like web navigation and data extraction.[2] For complex workflows, combine with libraries like those in LangChain's ec
Sí, con ese resultado ya queda validado 👍
Esa salida demuestra que:
- la búsqueda responde
- el provider activo sigue siendo Perplexity
- está yendo por
perplexity/sonar-pro - devuelve contenido largo + citas, o sea, la búsqueda amplia sí funciona
Así que yo ya descartaría, al menos ahora mismo:
- Perplexity caído
- provider mal seleccionado
- créditos totalmente agotados
Si el problema aparece en otro sitio, entonces ya no parece ser web_search en sí, sino el flujo concreto donde lo estás usando.
Para no pelearte con el límite de Discord, no hace falta pegar todo el JSON.
Si tienes jq, puedes resumir cada prueba así:
openclaw infer web search --query "latest AI agent frameworks and browser automation tools" --json | jq '{ok, provider, model: .outputs[0].result.model, tookMs: .outputs[0].result.tookMs, citations: (.outputs[0].result.citations | length)}'
Con eso te saca solo lo importante.
Si quieres, el siguiente paso es este: enseñarme dónde “falla” exactamente, porque Perplexity/search como tal ahora pinta bien.
Glad that helped! 🎉
Si esto te lo aclaró, puedes right-click → Apps → ✅ Mark Solution para que Answer Overflow lo indexe.
verifiquemos el PRESET de OpenRouter auto y dejemoslo como primario, Esta configurado Kimi 2.6 en @preset/asistente-diario. Y quiero dejarlo como primario en el Gateway, como secundario Gemini y como tercera opcion Open AI,
Sí, y aquí hay un matiz importante:
Si quieres que el preset @preset/asistente-diario sea el primario, entonces el modelo primario debe ser:
openrouter/@preset/asistente-diario
No openrouter/auto, porque auto y @preset/... son cosas distintas.
Hazlo así:
openclaw models set openrouter/@preset/asistente-diario
openclaw models fallbacks clear
openclaw models fallbacks add google/<tu-modelo-gemini>
openclaw models fallbacks add openai/<tu-modelo-openai>
openclaw models status
Si prefieres que también Gemini y OpenAI pasen por OpenRouter, entonces serían refs tipo:
openrouter/google/<modelo>
openrouter/openai/<modelo>
Yo, sinceramente, prefiero Gemini y OpenAI nativos como fallback, así OpenRouter no se vuelve punto único de fallo.
Para verificar el preset y los refs exactos antes de tocar nada:
openclaw models status
openclaw models list --provider openrouter --plain
openclaw models list --provider google --plain
openclaw models list --provider openai --plain
Y ojo, si tienes agents.defaults.models como allowlist, asegúrate de incluir ahí los 3 refs, o luego /model y algunos picks/fallbacks te pueden dar guerra.
Si me pegas:
- el ref exacto de Gemini que quieres
- el ref exacto de OpenAI que quieres
te devuelvo el bloque final exacto, ya listo para copiar/pegar.
Docs:
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw models status
openclaw models list --provider openrouter --plain
openclaw models list --provider google --plain
openclaw models list --provider openai --plain
🦞 OpenClaw 2026.4.15 (041266a)
Pairing codes exist because even bots believe in consent—and good security hygiene.
Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : google/gemini-3.1-flash-lite-preview
Fallbacks (2) : openrouter/auto, openai/gpt-4.1-mini
Image model : -
Image fallbacks (0): -
Aliases (4) : GPT -> openai/gpt-5.1-codex, gpt -> openai/gpt-5.4, gemini-lite -> google/gemini-3.1-flash-lite-preview, gemini-flash -> google/gemini-3-flash-preview
Configured models (7): openai/gpt-5.1-codex, openai/gpt-5.4, openrouter/free, google/gemini-3.1-flash-lite-preview, google/gemini-3-flash-preview, openrouter/auto, openai/gpt-4.1-mini
Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -
- brave effective=env:BSAwl7-5...x7NCmChU | env=BSAwl7-5...x7NCmChU | source=env: BRAVE_API_KEY
- google effective=env:AIzaSyCx...1ghdoEJY | env=AIzaSyCx...1ghdoEJY | source=env: GEMINI_API_KEY
- openai effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | openai:default=sk-proj-...fRb8ZXEA | env=sk-proj-...pSn135wA | source=env: OPENAI_API_KEY
- openrouter effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY
- perplexity effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY
OAuth/token status
- none
🦞 OpenClaw 2026.4.15 (041266a) — I'm not AI-powered, I'm AI-possessed. Big difference.
openrouter/auto
openrouter/free
🦞 OpenClaw 2026.4.15 (041266a)
Like having a senior engineer on call, except I don't bill hourly or sigh audibly.
google/gemini-3.1-flash-lite-preview
google/gemini-3-flash-preview
🦞 OpenClaw 2026.4.15 (041266a) — Claws out, commit in—let's ship something mildly responsible.
openai/gpt-4.1-mini
openai/gpt-5.1-codex
openai/gpt-5.4
Perfecto, ahora sí se ve claro.
Tienes agents.defaults.models como allowlist, así que para usar el preset primero hay que añadirlo a esa lista.
Y que no salga en models list --provider openrouter --plain es normal, porque ese comando te está enseñando los modelos configurados, no tus presets remotos.
Asumiendo que quieres mantener como fallback los que ya tienes ahora:
- Gemini:
google/gemini-3.1-flash-lite-preview - OpenAI:
openai/gpt-4.1-mini
haz esto:
openclaw config set 'agents.defaults.models["openrouter/@preset/asistente-diario"]' '{}' --strict-json
openclaw config set agents.defaults.model --strict-json '{
"primary": "openrouter/@preset/asistente-diario",
"fallbacks": [
"google/gemini-3.1-flash-lite-preview",
"openai/gpt-4.1-mini"
]
}'
openclaw models status
Si quieres verificar el preset con una prueba real justo después:
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
Qué deberías ver luego en openclaw models status:
- Default:
openrouter/@preset/asistente-diario - Fallbacks:
google/gemini-3.1-flash-lite-preview,openai/gpt-4.1-mini
Si prefieres que la tercera opción sea openai/gpt-5.4 en vez de gpt-4.1-mini, cambia solo esa última línea del JSON.
Si te apetece, pega el models status después de hacerlo y te confirmo que quedó fino.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}
Ajá, buena pista.
Eso me dice que ahora mismo model.run está entrando directo en OpenAI gpt-4.1-mini, y además con:
"attempts": []
O sea, no parece que haya intentado primero el preset y luego haya hecho fallback.
Más bien pinta a que el cambio no quedó aplicado como default efectivo.
Antes de tocar más, pásame estas 3 salidas:
openclaw models status
openclaw config get agents.defaults.model --json
openclaw config get 'agents.defaults.models["openrouter/@preset/asistente-diario"]' --json
Con eso vemos enseguida cuál de estas 3 está pasando:
- el preset no se guardó en config,
- el preset sí está en config pero no quedó como primary,
- o tu versión no está resolviendo bien
openrouter/@preset/...
Lo importante aquí es que ese smoke test no está usando el preset.
Así que todavía no lo daría por cerrado.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw models status
openclaw config get agents.defaults.model --json
🦞 OpenClaw 2026.4.15 (041266a) — Running on your hardware, reading your logs, judging nothing (mostly).
Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : openrouter/@preset/asistente-diario
Fallbacks (2) : google/gemini-3.1-flash-lite-preview, openai/gpt-4.1-mini
Image model : -
Image fallbacks (0): -
Aliases (4) : GPT -> openai/gpt-5.1-codex, gpt -> openai/gpt-5.4, gemini-lite -> google/gemini-3.1-flash-lite-preview, gemini-flash -> google/gemini-3-flash-preview
Configured models (8): openai/gpt-5.1-codex, openai/gpt-5.4, openrouter/free, google/gemini-3.1-flash-lite-preview, google/gemini-3-flash-preview, openrouter/auto, openai/gpt-4.1-mini, "openrouter/@preset/asistente-diario"
Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -
- brave effective=env:BSAwl7-5...x7NCmChU | env=BSAwl7-5...x7NCmChU | source=env: BRAVE_API_KEY
- google effective=env:AIzaSyCx...1ghdoEJY | env=AIzaSyCx...1ghdoEJY | source=env: GEMINI_API_KEY
- openai effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | openai:default=sk-proj-...fRb8ZXEA | env=sk-proj-...pSn135wA | source=env: OPENAI_API_KEY
- openrouter effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY
- perplexity effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY
OAuth/token status
- none
{
"primary": "openrouter/@preset/asistente-diario",
"fallbacks": [
"google/gemini-3.1-flash-lite-preview",
"openai/gpt-4.1-mini"
]
}
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config get 'agents.defaults.models["openrouter/@preset/asistente-diario"]' --json
{}
Perfecto, con eso ya cerramos una parte importante:
- la config sí quedó bien
- el primary sí es
openrouter/@preset/asistente-diario - los fallbacks sí son Gemini y luego OpenAI
Así que el problema ya no es la config.
Si infer model run acabó en openai/gpt-4.1-mini, entonces huele a una de estas dos:
- el preset está fallando en runtime y cae al fallback,
- o hay un bug de resolución con
openrouter/@preset/...en tu versión.
El siguiente paso bueno es capturar logs durante una sola ejecución:
openclaw logs --follow --plain | rg -i 'openrouter|preset|fallback|gpt-4.1-mini|error'
y en otra terminal lanzas:
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
Con eso deberíamos ver si pasa algo como:
- fallo al resolver
@preset/asistente-diario - rechazo de OpenRouter al preset
- salto explícito a fallback
- o bug raro del runtime
Ahora mismo mi lectura es: la config está correcta, pero el preset no se está ejecutando de verdad.
Pégame esas líneas de log y te digo cuál de las dos es. Si esto acaba siendo bug, tocaría GitHub issue: https://github.com/openclaw/openclaw/issues
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw logs --follow --plain | rg -i 'openrouter|preset|fallback|gpt-4.1-mini|error'
2026-04-20T22:58:39.516Z error [tools] read failed: ENOENT: no such file or directory, access '/home/alexifra/.openclaw/credentials/gog_token.txt' raw_params={"path":"~/.openclaw/credentials/gog_token.txt","limit":10}
2026-04-20T22:58:39.532Z error [tools] read failed: ENOENT: no such file or directory, access '/home/alexifra/.openclaw/credentials/gog_token.txt' raw_params={"path":"~/.openclaw/credentials/gog_token.txt","limit":10}
2026-04-20T22:58:42.910Z error [tools] read failed: EISDIR: illegal operation on a directory, read raw_params={"path":"~/.openclaw/credentials/","limit":20}
2026-04-20T22:58:42.911Z error [tools] read failed: EISDIR: illegal operation on a directory, read raw_params={"path":"~/.openclaw/credentials/","limit":20}
2026-04-20T23:10:10.161Z error [tools] edit failed: Found 2 occurrences of the text in ~/.openclaw/openclaw.json. The text must be unique. Please provide more context to make it unique. raw_params={"path":"~/.openclaw/openclaw.json","edits":[{"oldText":""auth": {","newText":""auth": {\n "profiles": {\n "google-keep-service-account": {\n "provider": "google",\n "mode": "service_account",\n "credentialJsonPath": "~/.openclaw/credentials/google_keep_service_account.json"\n }\n },\n"}]}
2026-04-20T23:10:10.164Z error [tools] edit failed: Found 2 occurrences of the text in ~/.openclaw/openclaw.json. The text must be unique. Please provide more context to make it unique. raw_params={"path":"~/.openclaw/openclaw.json","edits":[{"oldText":""auth": {","newText":""auth": {\n "profiles": {\n "google-keep-service-account": {\n "provider": "google",\n "mode": "service_account",\n "credentialJsonPath": "~/.openclaw/credentials/google_keep_service_account.json"\n }\n },\n"}]}
2026-04-20T23:10:36.888Z error Config invalid
2026-04-20T23:10:36.930Z error File: ~/.openclaw/openclaw.json
2026-04-20T23:10:36.931Z error Problem:
2026-04-20T23:10:36.931Z error - auth.profiles.google-keep-service-account.mode: Invalid input (allowed: "api_key", "oauth", "token")
2026-04-20T23:10:36.932Z error {"0":"","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-20T23:10:36.932Z","logLevelId":5,"logLevelName":"ERROR","path":{"fullFilePath":"file:///home/alexifra/.local/lib/node_modules/openclaw/dist/subsystem-Cgmckbux.js:155:68","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:155","fileColumn":"68","fileLine":"155","filePath":"/home/alexifra/.local/lib/node_modules/openclaw/dist/subsystem-Cgmckbux.js","filePathWithLine":"/home/alexifra/.local/lib/node_modules/openclaw/dist/subsystem-Cgmckbux.js:155","method":"console.error"}},"time":"2026-04-20T20:10:36.932-03:00"}
2026-04-20T23:10:36.932Z error Run: openclaw doctor --fix
2026-04-20T23:10:37.070Z error Gateway aborted: config is invalid.
2026-04-20T23:10:43.297Z error [tools] read failed: ENOENT: no such file or directory, access '/home/alexifra/.local/lib/node_modules/openclaw/docs/config.md' raw_params={"path":"~/.local/lib/node_modules/openclaw/docs/config.md","limit":60}
2026-04-20T23:10:43.300Z error [tools] read failed: ENOENT: no such file or directory, access '/home/alexifra/.local/lib/node_modules/openclaw/docs/config.md' raw_params={"path":"~/.local/lib/node_modules/openclaw/docs/config.md","limit":60}
2026-04-20T23:10:49.005Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"openclaw google service account authentication configuration"}
2026-04-20T23:10:49.006Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"openclaw google service account authentication configuration"}
2026-04-20T23:28:35.086Z error [tools] web_search failed: Perplexity API error (401):
Sí, pero esas líneas que pegaste son históricas. No son del smoke test nuevo.
Lo que veo ahí es:
- errores viejos de edición/config
- y un
web_search failed: Perplexity API error (401): User not found
Eso explica el problema anterior de Perplexity, pero no nos dice por qué el preset cayó a gpt-4.1-mini.
Hagámoslo más limpio así:
Terminal 1
openclaw logs --limit 20 --follow --plain | rg -i 'openrouter|preset|fallback|gpt-4.1-mini|model.run|error'
Espera a que termine de sacar el histórico.
Terminal 2
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
Y me pegas solo las líneas nuevas que salgan en la terminal 1 justo después de ejecutar eso.
Ahora mismo lo único sólido es:
- la config del preset está bien
- el run real acabó en
openai/gpt-4.1-mini - pero todavía no tenemos el log del momento exacto del salto
Si quieres, también te adelanto algo: ese Perplexity API error (401): User not found sí apunta a que antes estabas pegándole a Perplexity/OpenRouter con una credencial o ruta que no estaba resolviendo bien.
TERMINAL 1 alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw logs --limit 20 --follow --plain | rg -i 'openrouter|preset|fallback|gpt-4.1-mini|model.run|error'
2026-04-21T01:01:06.377Z error (node:38301) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
2026-04-21T01:01:18.353Z info gateway {"subsystem":"gateway"} agent model: openrouter/@preset/asistente-diario
2026-04-21T01:01:30.230Z warn gateway {"subsystem":"gateway"} startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
Log tail truncated (increase --max-bytes). TERMINAL 2 alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}
Ya lo tenemos. La clave es esta línea:
startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
Eso significa que, en tu 2026.4.15, OpenClaw no está resolviendo ese ref de preset como modelo válido.
Por eso luego el run termina en un modelo que sí conoce, en tu caso openai/gpt-4.1-mini.
Entonces, diagnóstico corto:
- la config está bien escrita
- el preset no se está aceptando en runtime
- no era un problema de créditos aquí
- el bloqueo real es:
Unknown model: openrouter/@preset/asistente-diario
Qué haría ahora
Opción 1, práctica ya mismo
Usa como primario un ref que OpenClaw sí reconozca hoy:
openrouter/auto, o- un modelo concreto
openrouter/<provider>/<model>
y deja Gemini/OpenAI como fallback.
Opción 2, si quieres ese preset sí o sí
Actualiza OpenClaw a una versión más nueva y vuelve a probar.
Si en la última versión sigue saliendo Unknown model: openrouter/@preset/..., eso ya es carne de GitHub issue:
https://github.com/openclaw/openclaw/issues
Cambio rápido para dejarlo estable ya
openclaw config set agents.defaults.model --strict-json '{
"primary": "openrouter/auto",
"fallbacks": [
"google/gemini-3.1-flash-lite-preview",
"openai/gpt-4.1-mini"
]
}'
Luego:
openclaw models status
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
Si quieres, te ayudo a dejar un OpenRouter concreto como primario en vez de auto, pero usaría un ref real reconocido por tu instalación, no @preset/....
dame el paso a paso sin vueltas ni tantas opciones. Hoy actualizamos Open Claw a la ultima version disponible
Sí. Paso a paso, sin vueltas:
1) Sacá el preset roto y dejá OpenRouter Auto como primario
openclaw config set agents.defaults.model --strict-json '{
"primary": "openrouter/auto",
"fallbacks": [
"google/gemini-3.1-flash-lite-preview",
"openai/gpt-4.1-mini"
]
}'
2) Verificá que quedó bien
openclaw models status
Tenés que ver:
- Default:
openrouter/auto - Fallbacks:
google/gemini-3.1-flash-lite-preview,openai/gpt-4.1-mini
3) Hacé la prueba
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
4) Resultado esperado
Si quedó bien, ya no debería aparecer:
Unknown model: openrouter/@preset/asistente-diario
Importante
Hoy, con lo que vimos, no uses:
openrouter/@preset/asistente-diario
porque tu instalación lo toma como unknown model aunque esté en config.
Si después de esto sigue raro, ahí sí toca bug report:
https://github.com/openclaw/openclaw/issues
Si quieres, pega el models status y el infer model run final y te digo en una línea si quedó OK.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config set agents.defaults.model --strict-json '{
"primary": "openrouter/auto",
"fallbacks": [
"google/gemini-3.1-flash-lite-preview",
"openai/gpt-4.1-mini"
]
}'
🦞 OpenClaw 2026.4.15 (041266a) — Shell yeah—I'm here to pinch the toil and leave you the glory.
Config overwrite: /home/alexifra/.openclaw/openclaw.json (sha256 fc31bcb697ab9ca86ccd1e4e90dbd76d1a8a3abb412a3db56f5f007f01dfd6f2 -> ff4e10827c6c7c3eb2bb9428abb8c7f5418b1eba68dc3155fea463805ddb8016, backup=/home/alexifra/.openclaw/openclaw.json.bak)
Updated agents.defaults.model. Restart the gateway to apply.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw models status
🦞 OpenClaw 2026.4.15 (041266a) — Your config is valid, your assumptions are not.
Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : openrouter/openrouter/auto (from openrouter/auto)
Fallbacks (2) : google/gemini-3.1-flash-lite-preview, openai/gpt-4.1-mini
Image model : -
Image fallbacks (0): -
Aliases (4) : GPT -> openai/gpt-5.1-codex, gpt -> openai/gpt-5.4, gemini-lite -> google/gemini-3.1-flash-lite-preview, gemini-flash -> google/gemini-3-flash-preview
Configured models (8): openai/gpt-5.1-codex, openai/gpt-5.4, openrouter/free, google/gemini-3.1-flash-lite-preview, google/gemini-3-flash-preview, openrouter/auto, openai/gpt-4.1-mini, "openrouter/@preset/asistente-diario"
Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -
- brave effective=env:BSAwl7-5...x7NCmChU | env=BSAwl7-5...x7NCmChU | source=env: BRAVE_API_KEY
- google effective=env:AIzaSyCx...1ghdoEJY | env=AIzaSyCx...1ghdoEJY | source=env: GEMINI_API_KEY
- openai effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | openai:default=sk-proj-...fRb8ZXEA | env=sk-proj-...pSn135wA | source=env: OPENAI_API_KEY
- openrouter effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY
- perplexity effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY
OAuth/token status
- none
Perfecto. Va bien.
Te falta solo esto:
1) Reinicia el gateway
openclaw gateway restart
2) Vuelve a probar
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
3) Qué espero ver
Que ya no salga el error del preset roto, y que el run use:
- OpenRouter auto, o
- si falla, recién ahí Gemini/OpenAI como fallback
Ese openrouter/openrouter/auto (from openrouter/auto) es la normalización interna, no me preocupa.
Pégame solo la salida del infer model run después del restart y te digo si quedó listo.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}
No quedó bien. Sigue entrando por OpenAI.
Haz esto exacto, en este orden, y pégame solo esas salidas:
openclaw gateway restart
openclaw gateway status
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
Ahora mismo no doy por hecho que el restart se haya aplicado al runtime.
Si después de eso sigue saliendo openai/gpt-4.1-mini, ya no seguimos dando vueltas: lo tratamos como bug/runtime issue y te digo el siguiente paso exacto.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw gateway restart
openclaw gateway status
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
🦞 OpenClaw 2026.4.15 (041266a) — I read logs so you can keep pretending you don't have to.
Restarted systemd service: openclaw-gateway.service
🦞 OpenClaw 2026.4.15 (041266a) — Your second brain, except this one actually remembers where you left things.
│
◇
Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-20.log
Command: /usr/bin/node /home/alexifra/.local/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json
Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.
Runtime: running (pid 39064, state active, sub running, last exit 0, reason 0)
RPC probe: ok
Listening: 127.0.0.1:18789
Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}
Ya está confirmado: no es tu config.
Con restart hecho, models status mostrando openrouter/auto, y infer model run saliendo igual por openai/gpt-4.1-mini, esto ya es bug/runtime issue.
Resumen corto del bug
- Configurado:
agents.defaults.model.primary = openrouter/auto openclaw models statuslo muestra bienopenclaw gateway restartaplicado- Pero
openclaw infer model run ...sigue usandoopenai/gpt-4.1-mini attempts: []
Y antes, con el preset, además daba:
Unknown model: openrouter/@preset/asistente-diario
Qué haría yo ahora
1) Dejarlo estable hoy
openclaw config set agents.defaults.model --strict-json '{
"primary": "google/gemini-3.1-flash-lite-preview",
"fallbacks": [
"openai/gpt-4.1-mini"
]
}'
openclaw gateway restart
2) Reportarlo como bug
Abre issue aquí:
https://github.com/openclaw/openclaw/issues
Puedes pegar este resumen:
OpenClaw 2026.4.15
Configured:
- primary: openrouter/auto
- fallbacks: google/gemini-3.1-flash-lite-preview, openai/gpt-4.1-mini
Observed:
- openclaw models status shows openrouter/auto as default
- openclaw gateway restart succeeds
- openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json still uses provider=openai model=gpt-4.1-mini
- attempts is empty
Also, using openrouter/@preset/asistente-diario logs:
- Unknown model: openrouter/@preset/asistente-diario
Si quieres, te dejo en el siguiente mensaje el comando exacto para pasar a Gemini primario + OpenAI fallback y cerrar esto por hoy.
Que pongo de Titulo
Pon este:
openrouter/auto ignored by infer model run, falls back to openai/gpt-4.1-mini despite being configured as primary
Y en el body menciona aparte lo del preset openrouter/@preset/asistente-diario → Unknown model.
dame exactamente lo que quieras que vaya en el Body, el contenido final que explique el caso completo
Pega esto tal cual en el Body:
### Version
OpenClaw 2026.4.15 (041266a)
### Environment
- Linux
- Gateway managed by `systemd`
- Service command:
`/usr/bin/node /home/alexifra/.local/lib/node_modules/openclaw/dist/index.js gateway --port 18789`
- Config file used by both CLI and service:
`~/.openclaw/openclaw.json`
- Gateway restart succeeds and `openclaw gateway status` reports `Runtime: running` and `RPC probe: ok`
### Goal
I want to use OpenRouter as the primary model for the gateway, with Gemini as first fallback and OpenAI as second fallback.
### First related issue: OpenRouter preset is treated as unknown
I first configured this:
```json
{
"primary": "openrouter/@preset/asistente-diario",
"fallbacks": [
"google/gemini-3.1-flash-lite-preview",
"openai/gpt-4.1-mini"
]
}
`openclaw models status` showed the preset as the default model, but the gateway log said:
```text
startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
So the preset ref is accepted in config/status, but rejected at runtime as an unknown model.
Main issue: openrouter/auto is shown as primary but runtime still uses OpenAI
After that, I switched to this config:
{
"primary": "openrouter/auto",
"fallbacks": [
"google/gemini-3.1-flash-lite-preview",
"openai/gpt-4.1-mini"
]
}
I applied it with:
```bash
openclaw config set agents.defaults.model --strict-json '{
"primary": "openrouter/auto",
"fallbacks": [
"google/gemini-3.1-flash-lite-preview",
"openai/gpt-4.1-mini"
]
}'
Then restarted the gateway:
```bash
openclaw gateway restart
openclaw gateway status
The restart succeeded.
openclaw models status now shows:
Default : openrouter/openrouter/auto (from openrouter/auto)
Fallbacks (2) : google/gemini-3.1-flash-lite-preview, openai/gpt-4.1-mini
Configured models include `openrouter/auto`.
### Reproduction
Run:
```bash
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
Actual result
It returns:
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}
### Expected result
I expect the run to use `openrouter/auto` as the primary model.
If OpenRouter fails and fallback is used, I would expect that to be visible in the run details, at minimum in `attempts`.
### Observed behavior summary
There seem to be two related OpenRouter model-resolution/runtime problems on this install:
1. `openrouter/@preset/asistente-diario` is shown in config/status but runtime says `Unknown model`.
2. `openrouter/auto` is shown as the default model in `models status`, but `infer model run` still executes on `openai/gpt-4.1-mini` with `attempts: []`.
This makes it look like the configured OpenRouter primary is not actually being used by the runtime, even though the config and status output say it is.
Si quieres, te preparo también el comentario corto para pegar como respuesta si te piden más datos.
como verificamos que quede funcional hoy antes de dejar operativo el sistema
Para dejarlo funcional hoy, yo haría esta validación corta y pragmática:
1) Deja un modelo estable para hoy
openclaw config set agents.defaults.model --strict-json '{
"primary": "google/gemini-3.1-flash-lite-preview",
"fallbacks": [
"openai/gpt-4.1-mini"
]
}'
2) Reinicia el gateway
openclaw gateway restart
openclaw gateway status
Tiene que salir:
Runtime: runningRPC probe: ok
3) Prueba el modelo principal
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
Esto tiene que devolver:
"ok": true- texto
smoke-ok - idealmente
provider: "google"
4) Prueba la búsqueda web
openclaw infer web search --query "OpenClaw docs" --json
Esto tiene que devolver:
"ok": trueprovider: "perplexity"
5) Prueba real en tu canal/superficie normal
Mándale un mensaje normal al sistema y verifica que:
- responde
- no se queda colgado
- no devuelve error de modelo
Si esas 5 cosas pasan
Yo lo daría operativo por hoy.
Si quieres ir a lo seguro
No uses hoy:
openrouter/@preset/asistente-diarioopenrouter/autocomo primario
Hasta que quede resuelto el bug.
Si quieres, te dejo el checklist final en formato “copiar y pegar” en un solo bloque.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw gateway restart
openclaw gateway status
🦞 OpenClaw 2026.4.15 (041266a) — Claws out, commit in—let's ship something mildly responsible.
Restarted systemd service: openclaw-gateway.service
🦞 OpenClaw 2026.4.15 (041266a) — No $999 stand required.
│
◇
Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-20.log
Command: /usr/bin/node /home/alexifra/.local/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json
Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.
Runtime: running (pid 39654, state active, sub running, last exit 0, reason 0)
RPC probe: ok
Listening: 127.0.0.1:18789
Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting
Perfecto. El gateway quedó sano.
Sigue con estos dos:
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
openclaw infer web search --query "OpenClaw docs" --json
Lo que quiero ver:
- en el primero:
"ok": true - en el segundo:
"ok": true
Pégame esas dos salidas y te digo si hoy ya lo podemos dejar operativo.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config set agents.defaults.model --strict-json '{
"primary": "google/gemini-3.1-flash-lite-preview",
"fallbacks": [
"openai/gpt-4.1-mini"
]
}'
🦞 OpenClaw 2026.4.15 (041266a) — Greetings, Professor Falken
Config overwrite: /home/alexifra/.openclaw/openclaw.json (sha256 784c02b443d7ebb6bd37908f4442f5e061cfa32aea52385063db9e6b43c09399 -> f49e57a55d2713d96d181dd5536f5915d57865adf6d8a5bd83127d7547c3cae2, backup=/home/alexifra/.openclaw/openclaw.json.bak)
Updated agents.defaults.model. Restart the gateway to apply.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw gateway restart
🦞 OpenClaw 2026.4.15 (041266a) — Your config is valid, your assumptions are not.
Restarted systemd service: openclaw-gateway.service
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw gateway status
🦞 OpenClaw 2026.4.15 (041266a) — Powered by open source, sustained by spite and good documentation.
│
◇
Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-20.log
Command: /usr/bin/node /home/alexifra/.local/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json
Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.
Runtime: running (pid 39915, state active, sub running, last exit 0, reason 0)
RPC probe: ok
Listening: 127.0.0.1:18789
Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}
Vale, con esto ya se ve el patrón: tu runtime está saliendo siempre por OpenAI aunque cambies el primary.
Así que, para dejarlo funcional hoy y no seguir persiguiendo fantasmas, yo lo dejaría explícitamente en OpenAI, que es lo que sí está respondiendo.
Haz esto:
openclaw config set agents.defaults.model --strict-json '{
"primary": "openai/gpt-4.1-mini",
"fallbacks": []
}'
openclaw gateway restart
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
openclaw infer web search --query "OpenClaw docs" --json
Si esas dos pruebas devuelven "ok": true
Entonces yo lo daría operativo por hoy.
Conclusión honesta
- Sí está funcional
- No está respetando la selección de primary
- Hoy déjalo en OpenAI explícitamente
- y el tema de OpenRouter/Gemini lo dejas como bug aparte
Si quieres, cuando pegues esas dos salidas finales te digo en una sola línea: “listo para producción hoy” o “todavía no”.
nuestro buscador de Perplexity volvio a fallar
Vale. Vamos directo al grano.
Pégame estas dos salidas:
openclaw infer web search --query "OpenClaw docs" --json
openclaw logs --limit 50 --plain | rg -i 'perplexity|openrouter|web_search|401|403|error'
Si vuelve a salir algo tipo:
Perplexity API error (401): User not found
entonces no es créditos, es otra vez auth/ruta con OpenRouter/Perplexity.
Pásame esas dos salidas y te digo exactamente cuál de las dos es:
- créditos/cuota
- o credencial/routing roto otra vez
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw --version
openclaw infer web providers --json
openclaw infer web search --query "OpenClaw docs" --json
OpenClaw 2026.4.15 (041266a)
{
"search": [
{
"available": true,
"configured": true,
"selected": false,
"id": "brave",
"envVars": [
"BRAVE_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "duckduckgo",
"envVars": []
},
{
"available": true,
"configured": false,
"selected": false,
"id": "exa",
"envVars": [
"EXA_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "firecrawl",
"envVars": [
"FIRECRAWL_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "gemini",
"envVars": [
"GEMINI_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "grok",
"envVars": [
"XAI_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "kimi",
"envVars": [
"KIMI_API_KEY",
"MOONSHOT_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "minimax",
"envVars": [
"MINIMAX_CODE_PLAN_KEY",
"MINIMAX_CODING_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "ollama",
"envVars": []
},
{
"available": true,
"configured": true,
"selected": true,
"id": "perplexity",
"envVars": [
"PERPLEXITY_API_KEY",
"OPENROUTER_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "searxng",
"envVars": [
"SEARXNG_BASE_URL"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "tavily",
"envVars": [
"TAVILY_API_KEY"
]
}
],
"fetch": [
{
"available": true,
"configured": false,
"selected": false,
"id": "firecrawl",
"envVars": [
"FIRECRAWL_API_KEY"
]
}
]
}
{
"ok": true,
"capability": "web.search",
"transport": "local",
"provider": "perplexity",
"attempts": [],
"outputs": [
{
"result": {
"query": "OpenClaw docs",
"provider": "perplexity",
"model": "perplexity/sonar-pro",
"tookMs": 4049,
"externalContent": {
"untrusted": true,
"source": "web_search",
"provider": "perplexity",
"wrapped": true
},
"content": "\n<<<EXTERNAL_UNTRUSTED_CONTENT id="b18408ccd80a7a17">>>\nSource: Web Search\n---\nOpenClaw documentation is hosted at https://docs.openclaw.ai, covering its self-hosted gateway for connecting chat apps (e.g., Discord, Telegram, WhatsApp) to AI agents with features like multi-channel support, tool use, sessions, memory, and multi-agent routing.[5]\n\n--- Key Resources\n- Official Docs Site: Full guides on installation, setup, channels, dashboard, control UI, and more at https://docs.openclaw.ai.[5]\n- GitHub Repo: https://github.com/openclaw/openclaw (MIT licensed, includes docs folder with getting-started.md for quick setup in ~5 minutes via CLI onboarding).[3][6]\n- Getting Started Guide: Install Node 24 (or 22.14+ LTS), get an API key, run openclaw onboard or openclaw dashboard for browser chat at
Ahora mismo sí está funcionando.
Lo que muestran esas salidas es:
- provider seleccionado:
perplexity - modelo real usado:
perplexity/sonar-pro - o sea, está entrando por la ruta Perplexity vía OpenRouter/Sonar
- no parece un problema de créditos en este momento
Así que, hoy por hoy:
- web search está operativo
- el problema que sigue raro es el routing del modelo principal del gateway, no la búsqueda
Si vuelve a “fallar”, necesito el error exacto del momento en que falla, porque con esta prueba la búsqueda está sana.
Dicho simple: Perplexity ahora mismo responde bien.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer web search --query "OpenClaw docs" --json
openclaw logs --limit 50 --plain | rg -i 'perplexity|openrouter|web_search|401|403|error'
AbortError: This operation was aborted
2026-04-21T02:05:33.512Z info gateway/reload {"subsystem":"gateway/reload"} config change detected; evaluating reload (agents.defaults.model.primary, agents.defaults.models."openrouter/@preset/asistente-diario", agents.defaults.models.openrouter/@preset/asistente-diario, plugins.entries.perplexity.config.webSearch.apiKey)
2026-04-21T02:05:33.538Z warn gateway/reload {"subsystem":"gateway/reload"} config change requires gateway restart (plugins.entries.perplexity.config.webSearch.apiKey) — deferring until 2 operation(s), 1 reply(ies), 1 embedded run(s) complete
2026-04-21T02:05:40.214Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_failover_decision","tags":["error_handling","failover","assistant","surface_error"],"runId":"6caa9194-55e4-4c66-990c-51b780ca22ff","stage":"assistant","decision":"surface_error","failoverReason":"timeout","profileFailureReason":"timeout","provider":"openai","model":"gpt-4.1-mini","sourceProvider":"openai","sourceModel":"gpt-4.1-mini","profileId":"sha256:a0ebe3f799a6","fallbackConfigured":true,"timedOut":true,"aborted":true} embedded run failover decision
2026-04-21T02:05:55.395Z error (node:40944) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
2026-04-21T02:06:05.826Z info gateway {"subsystem":"gateway"} agent model: openrouter/@preset/asistente-diario
2026-04-21T02:06:16.497Z warn gateway {"subsystem":"gateway"} startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
Log tail truncated (increase --max-bytes).
2026-04-21T02:09:26.013Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"qué es OpenClaw y para qué sirve","count":1}
2026-04-21T02:09:26.049Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"qué es OpenClaw y para qué sirve","count":1}
2026-04-21T02:15:46.838Z error AbortError: This operation was aborted
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$
Ya se ve el problema real.
No es créditos.
El error bueno es este:
Perplexity API error (401): {"error":{"message":"User not found.","code":401}}
Y además el log dice que hay un cambio pendiente en:
plugins.entries.perplexity.config.webSearch.apiKey
que requiere restart.
Haz esto exacto
Quita el apiKey de Perplexity en config y deja que use solo tu OPENROUTER_API_KEY del entorno:
openclaw config unset plugins.entries.perplexity.config.webSearch.apiKey
openclaw gateway restart
openclaw infer web search --query "OpenClaw docs" --json
Qué espero
- que desaparezca el
401 User not found - que vuelva a salir
"ok": true
El AbortError para mí es secundario. El fallo real es 401 de auth/routing.
Pégame la salida de esos 3 comandos y te digo si ya quedó limpio.
no nos olvidemos que la api que utliza Perplexity es de openrouter para utilizar sonar pro
Sí, totalmente. Y justo por eso te dije quitar solo el apiKey de Perplexity en config, no tocar la ruta Sonar/OpenRouter.
La idea es esta:
- seguir usando Perplexity vía OpenRouter para Sonar Pro
- pero evitar que
plugins.entries.perplexity.config.webSearch.apiKeymeta una credencial mala o vieja - y dejar que tome el
OPENROUTER_API_KEYdel entorno, que es lo que quieres usar
O sea, el arreglo sigue siendo este:
openclaw config unset plugins.entries.perplexity.config.webSearch.apiKey
openclaw gateway restart
openclaw infer web search --query "OpenClaw docs" --json
Eso no te saca de Sonar Pro por OpenRouter.
Solo quita una posible key conflictiva en config.
Si quieres, después comprobamos que siga saliendo:
"provider": "perplexity",
"model": "perplexity/sonar-pro"
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config unset plugins.entries.perplexity.config.webSearch.apiKey
openclaw gateway restart
openclaw infer web search --query "OpenClaw docs" --json
🦞 OpenClaw 2026.4.15 (041266a) — I'll refactor your busywork like it owes me money.
Config path not found: plugins.entries.perplexity.config.webSearch.apiKey
🦞 OpenClaw 2026.4.15 (041266a) — I autocomplete your thoughts—just slower and with more API calls.
Restarted systemd service: openclaw-gateway.service
{
"ok": true,
"capability": "web.search",
"transport": "local",
"provider": "perplexity",
"attempts": [],
"outputs": [
{
"result": {
"query": "OpenClaw docs",
"provider": "perplexity",
"model": "perplexity/sonar-pro",
"tookMs": 3518,
"externalContent": {
"untrusted": true,
"source": "web_search",
"provider": "perplexity",
"wrapped": true
},
"content": "\n<<<EXTERNAL_UNTRUSTED_CONTENT id="c3967f7f2df68c84">>>\nSource: Web Search\n---\nOpenClaw is a self-hosted, open-source gateway and personal AI assistant framework that connects chat apps (like WhatsApp, Telegram, Slack, Discord, iMessage) to autonomous AI agents for real-time interactions with APIs, tools, and messaging platforms.[1][2][4][6]\n\n--- Official Documentation\nThe primary documentation is at https://docs.openclaw.ai, covering setup, gateway configuration, channels, security, and more.[1][5]\n\n--- Key Resources\n- Getting Started Guide: Install, run onboarding, and chat via the Control UI or dashboard in ~5 minutes (e.g., openclaw dashboard opens http://127.0.0.1:18789/). Includes CLI reference and macOS app flow.[3]\n- GitHub Repo: https://github.com/openclaw/openclaw (docs in /docs folder).[3]\n- Ollama Integration: Bridges messaging to AI agents; previously Clawdbot (ollama launch clawdbot).[4]\n- DigitalOcean Marketplace: Deployment guide with resources linking to https://docs.molt.bot/ (possibly related or rebranded).[2]\n- Security Guide: https://docs.openclaw.ai/gateway/security.[2][5]\n- Additional: Clawhub Skills Library (https://clawhub.ai/), Discord community, and YouTube beginner guide.[2][5]\n\nFor DigitalOcean setup, configure execution policies via SSH as root.[2] Start with the getting-started guide for quickest setup.[3]\n<<<END_EXTERNAL_UNTRUSTED_CONTENT id="c3967f7f2df68c84">>>",
"citations": [
"https://docs.openclaw.ai",
"https://docs.digitalocean.com/products/marketplace/catalog/openclaw/",
"https://github.com/openclaw/openclaw/blob/main/docs/start/getting-started.md",
"https://docs.ollama.com/integrations/openclaw",
"https://www.youtube.com/watch?v=st534T7-mdE",
"https://openclaw.ai"
]
}
}
]
}
Perfecto. Con esto, la búsqueda quedó funcional.
Lo importante:
Config path not found= no había unapiKeyoverride en config, así que no rompiste nada- después del restart, la búsqueda respondió con:
provider: "perplexity"model: "perplexity/sonar-pro""ok": true
O sea:
- sí está usando Perplexity vía OpenRouter/Sonar Pro
- sí está funcionando ahora
- el problema de búsqueda no parece activo en este momento
Para mí, esto queda así:
- Web search / Perplexity: operativo
- Model routing del gateway: sigue siendo el bug separado
Glad that helped! 🎉
Si esto te cerró la parte de Perplexity, por favor right-click en el mensaje de la solución → Apps → ✅ Mark Solution para que Answer Overflow lo indexe.
realicemos una prueba de busqueda
Sí. Hagamos esta, que además prueba una consulta en español:
openclaw infer web search --query "qué es OpenClaw y para qué sirve" --json
Si sale "ok": true, estamos bien.
Y si falla, pega enseguida esto también:
openclaw logs --limit 50 --plain | rg -i 'perplexity|openrouter|web_search|401|403|error'
la busqueda por linea de comendos funciona, pero el agente via Discord responde esto Open Claw
APP
— 23:27
Hola, soy MAX, tu asistente amable, directo y preciso. ¿En qué puedo ayudarte hoy?
Solo tú puedes ver esto • Descartar mensaje
Ale Xifra [CLAW], — 23:27
realiza una prueba de busqueda ahora. Lista todas las ventajas y desventajas de la nueva version OpenClaw 2026.4.15 (041266a). Sus novedades en funciones, y si existe algun problema critico reportado por la comunidad de Open Claw
Open Claw
APP
— 23:27
No puedo acceder a resultados web actuales sobre la versión OpenClaw 2026.4.15 debido a un error de autenticación en la API de búsqueda. Sin embargo, si tienes documentación local, notas de lanzamiento o alguna fuente interna sobre esta versión, puedo ayudarte a revisarla y resumirla. ¿Quieres que hagamos eso?
Eso es una pista muy buena.
Si CLI funciona pero Discord no, entonces el problema ya no parece ser Perplexity en sí, sino la sesión/agente que está respondiendo en Discord.
Lo más rápido que probaría es esto:
1) En ese mismo chat de Discord
manda:
/new
y luego vuelve a pedir la búsqueda.
Eso fuerza una sesión nueva y evita que arrastre estado viejo.
2) Si sigue diciendo “error de autenticación”
ejecuta justo después:
openclaw logs --limit 100 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run'
y pégamelo.
Mi lectura ahora mismo es:
- Perplexity/search sí funciona
- el fallo está en ese hilo/sesión de Discord o en otro agente distinto del que prueba el CLI
Así que primero haría /new. Si quieres, después de eso probamos con una consulta corta y directa.
Perfecto. ¿Y qué respondió ahora, funcionó o te devolvió el mismo error?
Si siguió fallando, pégame:
- la respuesta exacta del bot
- y esto:
openclaw logs --limit 100 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run'
Con esas dos cosas ya lo cerramos.
Vale, entonces necesitamos la prueba exacta del fallo.
Pégame estas dos cosas y ya te digo dónde está roto:
1) La respuesta exacta del bot en Discord
2) Este log
openclaw logs --limit 100 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run'
Sin eso ya estaríamos adivinando, y no quiero hacerte perder más tiempo.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw logs --limit 100 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run'
Log tail truncated (increase --max-bytes).
2026-04-21T02:05:33.512Z info gateway/reload {"subsystem":"gateway/reload"} config change detected; evaluating reload (agents.defaults.model.primary, agents.defaults.models."openrouter/@preset/asistente-diario", agents.defaults.models.openrouter/@preset/asistente-diario, plugins.entries.perplexity.config.webSearch.apiKey)
2026-04-21T02:05:33.538Z warn gateway/reload {"subsystem":"gateway/reload"} config change requires gateway restart (plugins.entries.perplexity.config.webSearch.apiKey) — deferring until 2 operation(s), 1 reply(ies), 1 embedded run(s) complete
2026-04-21T02:05:40.214Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_failover_decision","tags":["error_handling","failover","assistant","surface_error"],"runId":"6caa9194-55e4-4c66-990c-51b780ca22ff","stage":"assistant","decision":"surface_error","failoverReason":"timeout","profileFailureReason":"timeout","provider":"openai","model":"gpt-4.1-mini","sourceProvider":"openai","sourceModel":"gpt-4.1-mini","profileId":"sha256:a0ebe3f799a6","fallbackConfigured":true,"timedOut":true,"aborted":true} embedded run failover decision
2026-04-21T02:05:55.395Z error (node:40944) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
2026-04-21T02:06:05.826Z info gateway {"subsystem":"gateway"} agent model: openrouter/@preset/asistente-diario
2026-04-21T02:06:16.497Z warn gateway {"subsystem":"gateway"} startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
2026-04-21T02:09:26.013Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"qué es OpenClaw y para qué sirve","count":1}
2026-04-21T02:09:26.049Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"qué es OpenClaw y para qué sirve","count":1}
2026-04-21T02:15:46.838Z error AbortError: This operation was aborted
2026-04-21T02:18:56.455Z error (node:41312) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
2026-04-21T02:19:07.330Z info gateway {"subsystem":"gateway"} agent model: openrouter/@preset/asistente-diario
2026-04-21T02:19:19.978Z warn gateway {"subsystem":"gateway"} startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
2026-04-21T02:26:30.886Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"novedades OpenClaw 2026.4.15 ventajas desventajas problemas comunidad","count":3}
2026-04-21T02:26:30.902Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"novedades OpenClaw 2026.4.15 ventajas desventajas problemas comunidad","count":3}
2026-04-21T02:27:26.176Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_agent_end","tags":["error_handling","lifecycle","agent_end","assistant_error"],"runId":"slug-gen-1776738439350","isError":true,"error":"HTTP 401: User not found.","failoverReason":"auth","model":"@preset/asistente-diario","provider":"openrouter","rawErrorPreview":"401 User not found.","rawErrorHash":"sha256:2cdeca109031","providerRuntimeFailureKind":"unknown"} embedded run agent end
2026-04-21T02:27:26.186Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_failover_decision","tags":["error_handling","failover","assistant","fallback_model"],"runId":"slug-gen-1776738439350","stage":"assistant","decision":"fallback_model","failoverReason":"auth","profileFailureReason":"auth","provider":"openrouter"
Ya encontramos la causa.
CLI y Discord no están usando lo mismo.
El log deja claro que Discord está corriendo un agente que sigue atado a:
openrouter/@preset/asistente-diario
Por eso:
- por CLI te funciona
- en Discord falla con:
401 User not foundUnknown model: openrouter/@preset/asistente-diario
O sea, el que falla no es “Perplexity global”, sino el agente MAX / el agente que responde en Discord.
Haz esto ahora
Necesito localizar ese agente exacto en config:
openclaw config get agents.list --json | rg -n -C 2 'MAX|asistente-diario|openrouter'
Pégame esa salida.
Con eso te doy el comando exacto para cambiar ese agente de Discord a un modelo estable y dejar de una vez de usar @preset/asistente-diario ahí.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config get agents.list --json | rg -n -C 2 'MAX|asistente-diario|openrouter'
Config path not found: agents.list
Bien, eso confirma algo importante:
no viene de agents.list.
Entonces ese @preset/asistente-diario está saliendo de estado persistido en ~/.openclaw, no de la config principal.
Haz esto para localizar exactamente qué archivo lo está metiendo:
rg -n 'asistente-diario|openrouter/@preset|modelOverride|providerOverride|MAX' ~/.openclaw 2>/dev/null
Pégame esa salida.
Con eso ya vemos si viene de:
- una sesión guardada
- un override persistido
- o algún archivo del agente principal
y te doy el comando exacto para limpiarlo.
/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js
9:const MAX_TRACE_STATE_ITEMS = 32;
10:const MAX_TRACE_STATE_LEN = 512;
56: if (rawTraceState.length > MAX_TRACE_STATE_LEN)
77: if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {
80: .slice(0, MAX_TRACE_STATE_ITEMS));
/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/math-intrinsics/constants/maxArrayLength.d.ts
1:declare const MAX_ARRAY_LENGTH: 4294967295;
3:export = MAX_ARRAY_LENGTH;
/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/math-intrinsics/constants/maxSafeInteger.js
5:module.exports = /** @type {import('./maxSafeInteger')} */ (Number.MAX_SAFE_INTEGER) || 9007199254740991; // Math.pow(2, 53) - 1;
/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/math-intrinsics/constants/maxValue.d.ts
1:declare const MAX_VALUE: 1.7976931348623157e+308;
3:export = MAX_VALUE;
/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/math-intrinsics/constants/maxValue.js
5:module.exports = /** @type {import('./maxValue')} */ (Number.MAX_VALUE) || 1.7976931348623157e+308;
/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts
1:declare const MAX_SAFE_INTEGER: 9007199254740991;
3:export = MAX_SAFE_INTEGER
Sí, ahí el problema fue que MAX te matcheó media node_modules 😅
Haz esta búsqueda más precisa, sin MAX y excluyendo node_modules:
rg -n --glob '!**/node_modules/**' 'asistente-diario|openrouter/@preset|modelOverride|providerOverride' ~/.openclaw 2>/dev/null
Pégame esa salida.
Con esa ya sí localizamos de dónde sale el preset roto sin ruido basura.
es demasiado texto para copiarlo aqui
Sí, entonces corta la salida.
Haz esto y pégame solo las primeras líneas:
rg -n --glob '!**/node_modules/**' 'asistente-diario|openrouter/@preset|modelOverride|providerOverride' ~/.openclaw 2>/dev/null | head -40
Con eso suele alcanzar para ver qué archivo lo está metiendo.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ rg -n --glob '!/node_modules/' 'asistente-diario|openrouter/@preset|modelOverride|providerOverride' ~/.openclaw 2>/dev/null | head -40
/home/alexifra/.openclaw/openclaw.json.bak.4:32: "primary": "openrouter/@preset/asistente-diario",
/home/alexifra/.openclaw/openclaw.json.bak.4:52: ""openrouter/@preset/asistente-diario"": {}
/home/alexifra/.openclaw/openclaw.json.bak.2:51: ""openrouter/@preset/asistente-diario"": {}
/home/alexifra/.openclaw/discord/model-picker-preferences.json:7: "openrouter/auto@preset/asistente-diario"
/home/alexifra/.openclaw/logs/config-audit.jsonl:53:{"ts":"2026-04-03T02:41:00.112Z","source":"config-io","event":"config.write","configPath":"/home/alexifra/.openclaw/openclaw.json","pid":17646,"ppid":17638,"cwd":"/home/alexifra/.openclaw/workspace","argv":["/usr/bin/node","/home/alexifra/.local/lib/node_modules/openclaw/openclaw.mjs","config","set","agents.defaults.model.primary",""openrouter/auto@preset/asistente-diario"","--strict-json"],"execArgv":["--disable-warning=ExperimentalWarning"],"watchMode":false,"watchSession":null,"watchCommand":null,"existsBefore":true,"previousHash":"ad55cdb81f3b45cac38c9a799dabeb6231b1bb2b2bae388c1ac18bcc87deb629","nextHash":"7bc2e7f96b620a108bcdbc56d9dbb0039b6d16c53b8d04914227e0fd23be28bf","previousBytes":4099,"nextBytes":4123,"previousDev":"2096","nextDev":"2096","previousIno":"112099","nextIno":"112578","previousMode":384,"nextMode":384,"previousNlink":1,"nextNlink":1,"previousUid":1000,"nextUid":1000,"previousGid":1000,"nextGid":1000,"changedPathCount":null,"hasMetaBefore":true,"hasMetaAfter":true,"gatewayModeBefore":"local","gatewayModeAfter":"local","suspicious":[],"result":"rename"}
/home/alexifra/.openclaw/logs/config-audit.jsonl:87:{"ts":"2026-04-21T01:00:53.121Z","source":"config-io","event":"config.write","configPath":"/home/alexifra/.openclaw/openclaw.json","pid":38254,"ppid":484,"cwd":"/home/alexifra","argv":["/usr/bin/node","/home/alexifra/.local/bin/openclaw","config","set","agents.defaults.models["openrouter/@preset/asistente-diario"]","{}","--strict-json"],"execArgv":[],"watchMode":false,"watchSession":null,"watchCommand":null,"existsBefore":true,"previousHash":"6b25aac0c1e45326ad5787e4a588d38bdc687f9b4fa666f659409394ba0661de","nextHash":"6d8bf45c00bd9f61cb5e5f3b1605834aa90c3a2aea8c382d4c13b96885e0772f","previousBytes":4876,"nextBytes":4931,"previousDev":"2096","previousIno":"130261","previousMode":384,"previousNlink":1,"previousUid":1000,"previousGid":1000,"changedPathCount":null,"hasMetaBefore":true,"hasMetaAfter":true,"gatewayModeBefore":"local","gatewayModeAfter":"local","suspicious":[],"result":"rename","nextDev":"2096","nextIno":"130141","nextMode":384,"nextNlink":1,"nextUid":1000,"nextGid":1000}
Ahí está el bicho.
La clave es esta línea:
~/.openclaw/discord/model-picker-preferences.json: "openrouter/auto@preset/asistente-diario"
Discord está arrastrando esa preferencia vieja.
Haz esto exacto
openclaw config unset 'agents.defaults.models["openrouter/@preset/asistente-diario"]'
mv ~/.openclaw/discord/model-picker-preferences.json ~/.openclaw/discord/model-picker-preferences.json.bak
openclaw gateway restart
Después, en Discord
- manda:
/new
- y vuelve a pedir la búsqueda.
Por qué
- el
config unsetsaca el preset roto del catálogo - el
model-picker-preferences.jsonestaba guardando la preferencia vieja de Discord - el restart fuerza a que arranque limpio
No hace falta tocar los .bak viejos ni los logs.
Cuando lo hagas, me pegas solo:
- la salida de esos 3 comandos
- y la nueva respuesta del bot en Discord
y te digo si quedó limpio.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config unset 'agents.defaults.models["openrouter/@preset/asistente-diario"]'
mv ~/.openclaw/discord/model-picker-preferences.json ~/.openclaw/discord/model-picker-preferences.json.bak
openclaw gateway restart
🦞 OpenClaw 2026.4.15 (041266a)
I speak fluent bash, mild sarcasm, and aggressive tab-completion energy.
Config path not found: agents.defaults.models["openrouter/@preset/asistente-diario"]
🦞 OpenClaw 2026.4.15 (041266a) — I've seen your commit messages. We'll work on that together.
Restarted systemd service: openclaw-gateway.service
Bien, eso está perfecto.
Config path not foundaquí está bien: significa que ese preset ya no estaba en la config activa- lo importante era mover
model-picker-preferences.jsony reiniciar, y eso ya quedó hecho
Ahora falta la prueba final en Discord
En ese chat manda:
/new
y luego algo corto como:
realiza una búsqueda web sobre OpenClaw docs
Pégame la respuesta nueva del bot.
Si con eso responde bien, ya lo damos por limpio.
Parece que no puedo acceder a la búsqueda web en este momento debido a un error de autenticación. Sin embargo, puedo ayudarte con información sobre OpenClaw basada en mis datos internos. ¿Quieres que te explique algo específico sobre OpenClaw o tienes alguna pregunta concreta?
Vale, entonces todavía no quedó limpio.
Ahora necesitamos el log de ese intento exacto, no el histórico viejo.
Haz esto así:
Terminal 1
openclaw logs --limit 20 --follow --max-bytes 1000000 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run|agent model'
Terminal 2
En Discord manda otra vez:
realiza una búsqueda web sobre OpenClaw docs
Luego
Pégame solo las líneas nuevas que aparezcan en la Terminal 1.
Con eso ya vemos si:
- sigue agarrando el preset roto,
- sigue cayendo en
401 User not found, - o Discord está usando otro agente/ruta distinta del CLI.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw logs --limit 20 --follow --max-bytes 1000000 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run|agent model'
2026-04-21T02:43:43.231Z warn gateway {"subsystem":"gateway"} startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
2026-04-21T02:43:44.401Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord channel users resolved: 1416148785159213106
2026-04-21T02:44:17.652Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_agent_end","tags":["error_handling","lifecycle","agent_end","assistant_error"],"runId":"slug-gen-1776739453693","isError":true,"error":"HTTP 401: User not found.","failoverReason":"auth","model":"@preset/asistente-diario","provider":"openrouter","rawErrorPreview":"401 User not found.","rawErrorHash":"sha256:2cdeca109031","providerRuntimeFailureKind":"unknown"} embedded run agent end
2026-04-21T02:44:17.662Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_failover_decision","tags":["error_handling","failover","assistant","fallback_model"],"runId":"slug-gen-1776739453693","stage":"assistant","decision":"fallback_model","failoverReason":"auth","profileFailureReason":"auth","provider":"openrouter","model":"@preset/asistente-diario","sourceProvider":"openrouter","sourceModel":"@preset/asistente-diario","fallbackConfigured":true,"timedOut":false,"aborted":false,"status":401,"rawErrorPreview":"401 User not found.","rawErrorHash":"sha256:2cdeca109031","providerRuntimeFailureKind":"unknown"} embedded run failover decision
2026-04-21T02:44:17.664Z error diagnostic {"subsystem":"diagnostic"} lane task error: lane=main durationMs=3967 error="FailoverError: HTTP 401: User not found."
2026-04-21T02:44:17.664Z error diagnostic {"subsystem":"diagnostic"} lane task error: lane=session:temp:slug-generator durationMs=3969 error="FailoverError: HTTP 401: User not found."
2026-04-21T02:44:17.666Z error llm-slug-generator {"subsystem":"llm-slug-generator"} Failed to generate slug: FailoverError: HTTP 401: User not found.
Ya tenemos suficiente para dejar de cavar archivos.
El hilo de Discord sigue pinned a:
@preset/asistente-diario
Así que el workaround más directo es forzar el modelo dentro de ese mismo hilo.
Haz esto en Discord, en ese mismo hilo
- Ejecuta:
/model openai/gpt-4.1-mini
- Luego manda:
/new
- Y después prueba otra vez:
realiza una búsqueda web sobre OpenClaw docs
Por qué
Los logs muestran que ese hilo sigue intentando usar:
provider=openrouter
model=@preset/asistente-diario
Si le metes /model openai/gpt-4.1-mini, le pisas ese override roto directamente en la sesión de Discord.
Haz eso y pégame la respuesta del bot. Si con eso responde bien, ya tenemos el workaround operativo de hoy.
No puedo realizar búsquedas web en este momento por un error de acceso. Sin embargo, puedo ayudarte con cualquier información sobre OpenClaw que tenga almacenada o guiarte sobre la documentación que usualmente incluyen. ¿Quieres que te explique algo en particular o que revise alguna sección específica de la documentación?
Vale. Con esto yo ya no seguiría haciéndote dar vueltas.
Lo que tenemos confirmado es:
- por CLI,
web_searchsí funciona - por Discord, el agente sigue diciendo error de acceso/auth
- así que esto ya no pinta a “Perplexity caído” ni a “faltan créditos”
- pinta a bug en la ruta Discord/embedded session, no en el backend de búsqueda en sí
Conclusión práctica de hoy
La búsqueda web está sana, pero no desde ese agente/hilo de Discord.
Workaround realista para hoy
- usa CLI para búsquedas web
- o usa otra superficie si la tienes
- y no confiaría en ese hilo de Discord para búsquedas hasta corregir el bug