fengming 0.3.10 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-info.json +2 -2
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/cli-startup-metadata.json +8 -8
- package/dist/control-ui/assets/{activity-D-mnRThU.js → activity-wgT0-JR0.js} +2 -2
- package/dist/control-ui/assets/{agents-U_KSP5I_.js → agents-DG5PobrT.js} +2 -2
- package/dist/control-ui/assets/{channels-ohK9_G1O.js → channels-CX28oM42.js} +2 -2
- package/dist/control-ui/assets/{cron-6ZCzfU29.js → cron-B8ixwBqU.js} +2 -2
- package/dist/control-ui/assets/{debug-CSsDLg_s.js → debug-CnkYZUXy.js} +2 -2
- package/dist/control-ui/assets/{index-jUDczxhd.js → index-DQRZJKbO.js} +4 -4
- package/dist/control-ui/assets/{instances-782ZoDT4.js → instances-BE3mV1JC.js} +2 -2
- package/dist/control-ui/assets/{nodes-BMX16BKM.js → nodes-Cou4PWRX.js} +2 -2
- package/dist/control-ui/assets/{sessions-jLGSApYa.js → sessions-DpAaBT21.js} +2 -2
- package/dist/control-ui/assets/{skills-DweBwUhs.js → skills-DjA_j_20.js} +2 -2
- package/dist/control-ui/assets/{workboard-BsU-FXIo.js → workboard-BFnvbS0k.js} +2 -2
- package/dist/control-ui/index.html +1 -1
- package/dist/control-ui/sw.js +1 -1
- package/dist/gateway/protocol/index.d.ts +1 -1
- package/dist/{index-AZzJCgph.d.ts → index-DuDY3bCZ.d.ts} +2 -2
- package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
- package/dist/plugin-sdk/agent-config-primitives.d.ts +1 -1
- package/dist/plugin-sdk/{bundled-channel-config-schema-Dfn3b8sF.d.ts → bundled-channel-config-schema-BPFNnbwu.d.ts} +23 -23
- package/dist/plugin-sdk/bundled-channel-config-schema.d.ts +3 -3
- package/dist/plugin-sdk/channel-config-primitives.d.ts +2 -2
- package/dist/plugin-sdk/channel-config-schema-legacy.d.ts +3 -3
- package/dist/plugin-sdk/channel-config-schema.d.ts +2 -2
- package/dist/plugin-sdk/channel-core.d.ts +1 -1
- package/dist/plugin-sdk/channel-plugin-common.d.ts +1 -1
- package/dist/plugin-sdk/compat.d.ts +2 -2
- package/dist/plugin-sdk/{config-schema-DUddICQM.d.ts → config-schema-D7cABQ6o.d.ts} +1 -1
- package/dist/plugin-sdk/config-schema.d.ts +2 -2
- package/dist/plugin-sdk/core.d.ts +1 -1
- package/dist/plugin-sdk/discord.d.ts +2 -2
- package/dist/plugin-sdk/tts-runtime.d.ts +1 -1
- package/dist/plugin-sdk/{zod-schema.core-B4_b2R5K.d.ts → zod-schema.core-CwBNqcXp.d.ts} +1 -1
- package/package.json +4 -409
- package/CHANGELOG.md +0 -42
- package/THIRD_PARTY_NOTICES.md +0 -37
- package/docs/.i18n/README.md +0 -81
- package/docs/.i18n/ar-navigation.json +0 -18
- package/docs/.i18n/de-navigation.json +0 -18
- package/docs/.i18n/es-navigation.json +0 -18
- package/docs/.i18n/fr-navigation.json +0 -18
- package/docs/.i18n/glossary.ar.json +0 -78
- package/docs/.i18n/glossary.de.json +0 -78
- package/docs/.i18n/glossary.es.json +0 -78
- package/docs/.i18n/glossary.fa.json +0 -78
- package/docs/.i18n/glossary.fr.json +0 -78
- package/docs/.i18n/glossary.id.json +0 -78
- package/docs/.i18n/glossary.it.json +0 -78
- package/docs/.i18n/glossary.ja-JP.json +0 -98
- package/docs/.i18n/glossary.ko.json +0 -78
- package/docs/.i18n/glossary.nl.json +0 -78
- package/docs/.i18n/glossary.pl.json +0 -78
- package/docs/.i18n/glossary.pt-BR.json +0 -78
- package/docs/.i18n/glossary.th.json +0 -78
- package/docs/.i18n/glossary.tr.json +0 -78
- package/docs/.i18n/glossary.uk.json +0 -78
- package/docs/.i18n/glossary.vi.json +0 -78
- package/docs/.i18n/glossary.zh-CN.json +0 -1122
- package/docs/.i18n/glossary.zh-TW.json +0 -78
- package/docs/.i18n/id-navigation.json +0 -18
- package/docs/.i18n/it-navigation.json +0 -18
- package/docs/.i18n/ja-navigation.json +0 -18
- package/docs/.i18n/ko-navigation.json +0 -18
- package/docs/.i18n/pl-navigation.json +0 -18
- package/docs/.i18n/pt-BR-navigation.json +0 -18
- package/docs/.i18n/tr-navigation.json +0 -18
- package/docs/.i18n/translation-workflow.md +0 -111
- package/docs/.i18n/zh-Hans-navigation.json +0 -552
- package/docs/AGENTS.md +0 -36
- package/docs/CLAUDE.md +0 -1
- package/docs/agent-runtime-architecture.md +0 -48
- package/docs/announcements/bluebubbles-imessage.md +0 -79
- package/docs/auth-credential-semantics.md +0 -124
- package/docs/automation/auth-monitoring.md +0 -11
- package/docs/automation/clawflow.md +0 -12
- package/docs/automation/cron-jobs.md +0 -534
- package/docs/automation/cron-vs-heartbeat.md +0 -11
- package/docs/automation/gmail-pubsub.md +0 -11
- package/docs/automation/hooks.md +0 -387
- package/docs/automation/index.md +0 -135
- package/docs/automation/poll.md +0 -12
- package/docs/automation/standing-orders.md +0 -250
- package/docs/automation/taskflow.md +0 -155
- package/docs/automation/tasks.md +0 -374
- package/docs/automation/troubleshooting.md +0 -12
- package/docs/automation/webhook.md +0 -12
- package/docs/brave-search.md +0 -11
- package/docs/channels/access-groups.md +0 -201
- package/docs/channels/ambient-room-events.md +0 -214
- package/docs/channels/bot-loop-protection.md +0 -131
- package/docs/channels/broadcast-groups.md +0 -472
- package/docs/channels/channel-routing.md +0 -162
- package/docs/channels/clickclack.md +0 -138
- package/docs/channels/discord.md +0 -1758
- package/docs/channels/feishu.md +0 -650
- package/docs/channels/googlechat.md +0 -284
- package/docs/channels/group-messages.md +0 -95
- package/docs/channels/groups.md +0 -524
- package/docs/channels/imessage-from-bluebubbles.md +0 -259
- package/docs/channels/imessage.md +0 -839
- package/docs/channels/index.md +0 -64
- package/docs/channels/irc.md +0 -253
- package/docs/channels/line.md +0 -243
- package/docs/channels/location.md +0 -71
- package/docs/channels/matrix-migration.md +0 -370
- package/docs/channels/matrix-presentation.md +0 -77
- package/docs/channels/matrix-push-rules.md +0 -150
- package/docs/channels/matrix.md +0 -921
- package/docs/channels/mattermost.md +0 -542
- package/docs/channels/msteams.md +0 -1096
- package/docs/channels/nextcloud-talk.md +0 -176
- package/docs/channels/nostr.md +0 -253
- package/docs/channels/pairing.md +0 -214
- package/docs/channels/qqbot.md +0 -314
- package/docs/channels/signal.md +0 -417
- package/docs/channels/slack.md +0 -1623
- package/docs/channels/synology-chat.md +0 -187
- package/docs/channels/telegram.md +0 -1124
- package/docs/channels/tlon.md +0 -296
- package/docs/channels/troubleshooting.md +0 -162
- package/docs/channels/twitch.md +0 -431
- package/docs/channels/wechat.md +0 -171
- package/docs/channels/whatsapp.md +0 -796
- package/docs/channels/yuanbao.md +0 -416
- package/docs/channels/zalo.md +0 -253
- package/docs/channels/zalouser.md +0 -217
- package/docs/ci.md +0 -657
- package/docs/clawhub/publishing.md +0 -96
- package/docs/cli/acp.md +0 -370
- package/docs/cli/agent.md +0 -109
- package/docs/cli/agents.md +0 -253
- package/docs/cli/approvals.md +0 -190
- package/docs/cli/backup.md +0 -98
- package/docs/cli/browser.md +0 -307
- package/docs/cli/channels.md +0 -154
- package/docs/cli/clawbot.md +0 -25
- package/docs/cli/commitments.md +0 -90
- package/docs/cli/completion.md +0 -39
- package/docs/cli/config.md +0 -504
- package/docs/cli/configure.md +0 -77
- package/docs/cli/crestodian.md +0 -337
- package/docs/cli/cron.md +0 -304
- package/docs/cli/daemon.md +0 -67
- package/docs/cli/dashboard.md +0 -33
- package/docs/cli/devices.md +0 -240
- package/docs/cli/directory.md +0 -68
- package/docs/cli/dns.md +0 -53
- package/docs/cli/docs.md +0 -63
- package/docs/cli/doctor.md +0 -241
- package/docs/cli/flows.md +0 -52
- package/docs/cli/gateway.md +0 -572
- package/docs/cli/health.md +0 -43
- package/docs/cli/hooks.md +0 -345
- package/docs/cli/index.md +0 -400
- package/docs/cli/infer.md +0 -364
- package/docs/cli/logs.md +0 -68
- package/docs/cli/mcp.md +0 -529
- package/docs/cli/memory.md +0 -183
- package/docs/cli/message.md +0 -317
- package/docs/cli/migrate.md +0 -334
- package/docs/cli/models.md +0 -239
- package/docs/cli/node.md +0 -177
- package/docs/cli/nodes.md +0 -76
- package/docs/cli/onboard.md +0 -250
- package/docs/cli/pairing.md +0 -77
- package/docs/cli/path.md +0 -511
- package/docs/cli/plugins.md +0 -459
- package/docs/cli/policy.md +0 -886
- package/docs/cli/proxy.md +0 -89
- package/docs/cli/qr.md +0 -56
- package/docs/cli/reset.md +0 -39
- package/docs/cli/sandbox.md +0 -208
- package/docs/cli/secrets.md +0 -202
- package/docs/cli/security.md +0 -136
- package/docs/cli/sessions.md +0 -164
- package/docs/cli/setup.md +0 -59
- package/docs/cli/skills.md +0 -122
- package/docs/cli/status.md +0 -45
- package/docs/cli/system.md +0 -89
- package/docs/cli/tasks.md +0 -111
- package/docs/cli/transcripts.md +0 -151
- package/docs/cli/tui.md +0 -91
- package/docs/cli/uninstall.md +0 -44
- package/docs/cli/update.md +0 -243
- package/docs/cli/voicecall.md +0 -204
- package/docs/cli/webhooks.md +0 -117
- package/docs/cli/wiki.md +0 -256
- package/docs/concepts/active-memory.md +0 -856
- package/docs/concepts/agent-loop.md +0 -185
- package/docs/concepts/agent-runtimes.md +0 -276
- package/docs/concepts/agent-workspace.md +0 -230
- package/docs/concepts/agent.md +0 -140
- package/docs/concepts/architecture.md +0 -154
- package/docs/concepts/channel-docking.md +0 -145
- package/docs/concepts/commitments.md +0 -150
- package/docs/concepts/compaction.md +0 -203
- package/docs/concepts/context-engine.md +0 -347
- package/docs/concepts/context.md +0 -199
- package/docs/concepts/delegate-architecture.md +0 -319
- package/docs/concepts/dreaming.md +0 -264
- package/docs/concepts/experimental-features.md +0 -109
- package/docs/concepts/features.md +0 -91
- package/docs/concepts/fengming-sdk.md +0 -323
- package/docs/concepts/mantis-slack-desktop-runbook.md +0 -231
- package/docs/concepts/mantis.md +0 -744
- package/docs/concepts/markdown-formatting.md +0 -139
- package/docs/concepts/memory-builtin.md +0 -148
- package/docs/concepts/memory-honcho.md +0 -144
- package/docs/concepts/memory-qmd.md +0 -271
- package/docs/concepts/memory-search.md +0 -167
- package/docs/concepts/memory.md +0 -299
- package/docs/concepts/message-lifecycle-refactor.md +0 -1126
- package/docs/concepts/messages.md +0 -214
- package/docs/concepts/model-failover.md +0 -384
- package/docs/concepts/model-providers.md +0 -719
- package/docs/concepts/models.md +0 -371
- package/docs/concepts/multi-agent.md +0 -625
- package/docs/concepts/oauth.md +0 -198
- package/docs/concepts/parallel-specialist-lanes.md +0 -127
- package/docs/concepts/personal-agent-benchmark-pack.md +0 -74
- package/docs/concepts/presence.md +0 -117
- package/docs/concepts/progress-drafts.md +0 -406
- package/docs/concepts/qa-e2e-automation.md +0 -947
- package/docs/concepts/qa-matrix.md +0 -139
- package/docs/concepts/queue-steering.md +0 -90
- package/docs/concepts/queue.md +0 -136
- package/docs/concepts/retry.md +0 -86
- package/docs/concepts/session-pruning.md +0 -104
- package/docs/concepts/session-tool.md +0 -188
- package/docs/concepts/session.md +0 -164
- package/docs/concepts/soul.md +0 -116
- package/docs/concepts/streaming.md +0 -257
- package/docs/concepts/system-prompt.md +0 -328
- package/docs/concepts/timezone.md +0 -47
- package/docs/concepts/typebox.md +0 -309
- package/docs/concepts/typing-indicators.md +0 -88
- package/docs/concepts/usage-tracking.md +0 -66
- package/docs/date-time.md +0 -126
- package/docs/debug/node-issue.md +0 -90
- package/docs/diagnostics/flags.md +0 -182
- package/docs/docs.json +0 -1862
- package/docs/fengming-agent-runtime.md +0 -82
- package/docs/gateway/authentication.md +0 -256
- package/docs/gateway/background-process.md +0 -147
- package/docs/gateway/bonjour.md +0 -303
- package/docs/gateway/bridge-protocol.md +0 -97
- package/docs/gateway/cli-backends.md +0 -439
- package/docs/gateway/config-agents.md +0 -1525
- package/docs/gateway/config-channels.md +0 -945
- package/docs/gateway/config-tools.md +0 -774
- package/docs/gateway/configuration-examples.md +0 -704
- package/docs/gateway/configuration-reference.md +0 -1391
- package/docs/gateway/configuration.md +0 -739
- package/docs/gateway/diagnostics.md +0 -213
- package/docs/gateway/discovery.md +0 -154
- package/docs/gateway/doctor.md +0 -575
- package/docs/gateway/gateway-lock.md +0 -37
- package/docs/gateway/health.md +0 -73
- package/docs/gateway/heartbeat.md +0 -498
- package/docs/gateway/index.md +0 -383
- package/docs/gateway/local-model-services.md +0 -205
- package/docs/gateway/local-models.md +0 -355
- package/docs/gateway/logging.md +0 -149
- package/docs/gateway/multiple-gateways.md +0 -178
- package/docs/gateway/network-model.md +0 -15
- package/docs/gateway/openai-http-api.md +0 -378
- package/docs/gateway/openresponses-http-api.md +0 -347
- package/docs/gateway/openshell.md +0 -316
- package/docs/gateway/opentelemetry.md +0 -433
- package/docs/gateway/operator-scopes.md +0 -119
- package/docs/gateway/pairing.md +0 -207
- package/docs/gateway/prometheus.md +0 -249
- package/docs/gateway/protocol.md +0 -826
- package/docs/gateway/remote-gateway-readme.md +0 -169
- package/docs/gateway/remote.md +0 -280
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -148
- package/docs/gateway/sandboxing.md +0 -546
- package/docs/gateway/secrets-plan-contract.md +0 -159
- package/docs/gateway/secrets.md +0 -805
- package/docs/gateway/security/audit-checks.md +0 -127
- package/docs/gateway/security/exposure-runbook.md +0 -212
- package/docs/gateway/security/index.md +0 -1343
- package/docs/gateway/security/secure-file-operations.md +0 -76
- package/docs/gateway/security/shrinkwrap.md +0 -111
- package/docs/gateway/tailscale.md +0 -156
- package/docs/gateway/tools-invoke-http-api.md +0 -169
- package/docs/gateway/troubleshooting.md +0 -877
- package/docs/gateway/trusted-proxy-auth.md +0 -483
- package/docs/help/debugging.md +0 -341
- package/docs/help/environment.md +0 -233
- package/docs/help/faq-first-run.md +0 -870
- package/docs/help/faq-models.md +0 -556
- package/docs/help/faq.md +0 -2041
- package/docs/help/index.md +0 -39
- package/docs/help/scripts.md +0 -56
- package/docs/help/testing-live.md +0 -587
- package/docs/help/testing-updates-plugins.md +0 -299
- package/docs/help/testing.md +0 -977
- package/docs/help/troubleshooting.md +0 -449
- package/docs/index.md +0 -196
- package/docs/install/ansible.md +0 -233
- package/docs/install/azure.md +0 -315
- package/docs/install/bun.md +0 -59
- package/docs/install/clawdock.md +0 -112
- package/docs/install/development-channels.md +0 -148
- package/docs/install/digitalocean.md +0 -174
- package/docs/install/docker-vm-runtime.md +0 -154
- package/docs/install/docker.md +0 -564
- package/docs/install/exe-dev.md +0 -201
- package/docs/install/fly.md +0 -524
- package/docs/install/gcp.md +0 -418
- package/docs/install/hetzner.md +0 -285
- package/docs/install/hostinger.md +0 -98
- package/docs/install/index.md +0 -232
- package/docs/install/installer.md +0 -447
- package/docs/install/kubernetes.md +0 -196
- package/docs/install/macos-vm.md +0 -281
- package/docs/install/migrating-claude.md +0 -165
- package/docs/install/migrating-hermes.md +0 -178
- package/docs/install/migrating.md +0 -137
- package/docs/install/nix.md +0 -112
- package/docs/install/node.md +0 -142
- package/docs/install/northflank.mdx +0 -44
- package/docs/install/oracle.md +0 -218
- package/docs/install/podman.md +0 -216
- package/docs/install/railway.mdx +0 -92
- package/docs/install/raspberry-pi.md +0 -234
- package/docs/install/render.mdx +0 -167
- package/docs/install/uninstall.md +0 -131
- package/docs/install/updating.md +0 -284
- package/docs/install/upstash.md +0 -96
- package/docs/logging.md +0 -320
- package/docs/nav-tabs-underline.js +0 -100
- package/docs/network.md +0 -72
- package/docs/nodes/audio.md +0 -216
- package/docs/nodes/camera.md +0 -166
- package/docs/nodes/images.md +0 -77
- package/docs/nodes/index.md +0 -439
- package/docs/nodes/location-command.md +0 -102
- package/docs/nodes/media-understanding.md +0 -495
- package/docs/nodes/talk.md +0 -160
- package/docs/nodes/troubleshooting.md +0 -123
- package/docs/nodes/voicewake.md +0 -93
- package/docs/perplexity.md +0 -11
- package/docs/plan/codex-context-engine-harness.md +0 -624
- package/docs/plan/ui-channels.md +0 -284
- package/docs/platforms/digitalocean.md +0 -12
- package/docs/platforms/easyrunner.md +0 -109
- package/docs/platforms/index.md +0 -51
- package/docs/platforms/linux.md +0 -141
- package/docs/platforms/mac/bundled-gateway.md +0 -79
- package/docs/platforms/mac/canvas.md +0 -128
- package/docs/platforms/mac/child-process.md +0 -72
- package/docs/platforms/mac/dev-setup.md +0 -112
- package/docs/platforms/mac/health.md +0 -39
- package/docs/platforms/mac/icon.md +0 -36
- package/docs/platforms/mac/logging.md +0 -62
- package/docs/platforms/mac/menu-bar.md +0 -93
- package/docs/platforms/mac/peekaboo.md +0 -96
- package/docs/platforms/mac/permissions.md +0 -73
- package/docs/platforms/mac/remote.md +0 -123
- package/docs/platforms/mac/signing.md +0 -52
- package/docs/platforms/mac/skills.md +0 -43
- package/docs/platforms/mac/voice-overlay.md +0 -66
- package/docs/platforms/mac/voicewake.md +0 -73
- package/docs/platforms/mac/webchat.md +0 -54
- package/docs/platforms/mac/xpc.md +0 -66
- package/docs/platforms/oracle.md +0 -12
- package/docs/platforms/raspberry-pi.md +0 -13
- package/docs/platforms/windows.md +0 -286
- package/docs/plugins/adding-capabilities.md +0 -146
- package/docs/plugins/admin-http-rpc.md +0 -216
- package/docs/plugins/agent-tools.md +0 -13
- package/docs/plugins/architecture-internals.md +0 -1196
- package/docs/plugins/architecture.md +0 -483
- package/docs/plugins/building-extensions.md +0 -13
- package/docs/plugins/building-plugins.md +0 -335
- package/docs/plugins/bundles.md +0 -310
- package/docs/plugins/cli-backend-plugins.md +0 -310
- package/docs/plugins/codex-computer-use.md +0 -297
- package/docs/plugins/codex-harness-reference.md +0 -470
- package/docs/plugins/codex-harness-runtime.md +0 -268
- package/docs/plugins/codex-harness.md +0 -780
- package/docs/plugins/codex-native-plugins.md +0 -276
- package/docs/plugins/community.md +0 -77
- package/docs/plugins/compatibility.md +0 -167
- package/docs/plugins/copilot.md +0 -356
- package/docs/plugins/dependency-resolution.md +0 -176
- package/docs/plugins/google-meet.md +0 -1737
- package/docs/plugins/hooks.md +0 -484
- package/docs/plugins/install-overrides.md +0 -80
- package/docs/plugins/manage-plugins.md +0 -210
- package/docs/plugins/manifest.md +0 -1457
- package/docs/plugins/memory-lancedb.md +0 -385
- package/docs/plugins/memory-wiki.md +0 -529
- package/docs/plugins/message-presentation.md +0 -473
- package/docs/plugins/oc-path.md +0 -166
- package/docs/plugins/plugin-inventory.md +0 -189
- package/docs/plugins/plugin-permission-requests.md +0 -193
- package/docs/plugins/reference/acpx.md +0 -23
- package/docs/plugins/reference/admin-http-rpc.md +0 -23
- package/docs/plugins/reference/alibaba.md +0 -23
- package/docs/plugins/reference/amazon-bedrock-mantle.md +0 -23
- package/docs/plugins/reference/amazon-bedrock.md +0 -23
- package/docs/plugins/reference/anthropic-vertex.md +0 -19
- package/docs/plugins/reference/anthropic.md +0 -23
- package/docs/plugins/reference/arcee.md +0 -23
- package/docs/plugins/reference/azure-speech.md +0 -23
- package/docs/plugins/reference/bonjour.md +0 -19
- package/docs/plugins/reference/brave.md +0 -23
- package/docs/plugins/reference/browser.md +0 -23
- package/docs/plugins/reference/byteplus.md +0 -19
- package/docs/plugins/reference/canvas.md +0 -19
- package/docs/plugins/reference/cerebras.md +0 -23
- package/docs/plugins/reference/chutes.md +0 -23
- package/docs/plugins/reference/clickclack.md +0 -23
- package/docs/plugins/reference/cloudflare-ai-gateway.md +0 -23
- package/docs/plugins/reference/codex-supervisor.md +0 -27
- package/docs/plugins/reference/codex.md +0 -23
- package/docs/plugins/reference/comfy.md +0 -23
- package/docs/plugins/reference/copilot-proxy.md +0 -19
- package/docs/plugins/reference/copilot.md +0 -23
- package/docs/plugins/reference/deepgram.md +0 -23
- package/docs/plugins/reference/deepinfra.md +0 -23
- package/docs/plugins/reference/deepseek.md +0 -23
- package/docs/plugins/reference/diagnostics-otel.md +0 -19
- package/docs/plugins/reference/diagnostics-prometheus.md +0 -19
- package/docs/plugins/reference/diffs-language-pack.md +0 -19
- package/docs/plugins/reference/diffs.md +0 -19
- package/docs/plugins/reference/discord.md +0 -23
- package/docs/plugins/reference/document-extract.md +0 -23
- package/docs/plugins/reference/duckduckgo.md +0 -23
- package/docs/plugins/reference/elevenlabs.md +0 -23
- package/docs/plugins/reference/exa.md +0 -23
- package/docs/plugins/reference/fal.md +0 -23
- package/docs/plugins/reference/feishu.md +0 -23
- package/docs/plugins/reference/file-transfer.md +0 -19
- package/docs/plugins/reference/firecrawl.md +0 -23
- package/docs/plugins/reference/fireworks.md +0 -23
- package/docs/plugins/reference/github-copilot.md +0 -23
- package/docs/plugins/reference/gmi.md +0 -23
- package/docs/plugins/reference/google-meet.md +0 -23
- package/docs/plugins/reference/google.md +0 -23
- package/docs/plugins/reference/googlechat.md +0 -23
- package/docs/plugins/reference/gradium.md +0 -23
- package/docs/plugins/reference/groq.md +0 -23
- package/docs/plugins/reference/huggingface.md +0 -23
- package/docs/plugins/reference/imessage.md +0 -23
- package/docs/plugins/reference/inworld.md +0 -23
- package/docs/plugins/reference/irc.md +0 -23
- package/docs/plugins/reference/kilocode.md +0 -23
- package/docs/plugins/reference/kimi.md +0 -23
- package/docs/plugins/reference/line.md +0 -23
- package/docs/plugins/reference/litellm.md +0 -23
- package/docs/plugins/reference/llm-task.md +0 -19
- package/docs/plugins/reference/lmstudio.md +0 -23
- package/docs/plugins/reference/lobster.md +0 -19
- package/docs/plugins/reference/matrix.md +0 -23
- package/docs/plugins/reference/mattermost.md +0 -23
- package/docs/plugins/reference/memory-core.md +0 -19
- package/docs/plugins/reference/memory-lancedb.md +0 -23
- package/docs/plugins/reference/memory-wiki.md +0 -23
- package/docs/plugins/reference/microsoft-foundry.md +0 -19
- package/docs/plugins/reference/microsoft.md +0 -19
- package/docs/plugins/reference/migrate-claude.md +0 -19
- package/docs/plugins/reference/migrate-hermes.md +0 -19
- package/docs/plugins/reference/minimax.md +0 -23
- package/docs/plugins/reference/mistral.md +0 -23
- package/docs/plugins/reference/moonshot.md +0 -23
- package/docs/plugins/reference/msteams.md +0 -23
- package/docs/plugins/reference/nextcloud-talk.md +0 -23
- package/docs/plugins/reference/nostr.md +0 -23
- package/docs/plugins/reference/novita.md +0 -23
- package/docs/plugins/reference/nvidia.md +0 -23
- package/docs/plugins/reference/oc-path.md +0 -23
- package/docs/plugins/reference/ollama.md +0 -23
- package/docs/plugins/reference/open-prose.md +0 -19
- package/docs/plugins/reference/openai.md +0 -23
- package/docs/plugins/reference/opencode-go.md +0 -23
- package/docs/plugins/reference/opencode.md +0 -23
- package/docs/plugins/reference/openrouter.md +0 -23
- package/docs/plugins/reference/openshell.md +0 -19
- package/docs/plugins/reference/perplexity.md +0 -23
- package/docs/plugins/reference/pixverse.md +0 -23
- package/docs/plugins/reference/policy.md +0 -72
- package/docs/plugins/reference/qa-channel.md +0 -23
- package/docs/plugins/reference/qa-lab.md +0 -19
- package/docs/plugins/reference/qa-matrix.md +0 -19
- package/docs/plugins/reference/qianfan.md +0 -23
- package/docs/plugins/reference/qqbot.md +0 -23
- package/docs/plugins/reference/qwen.md +0 -23
- package/docs/plugins/reference/runway.md +0 -23
- package/docs/plugins/reference/searxng.md +0 -19
- package/docs/plugins/reference/senseaudio.md +0 -23
- package/docs/plugins/reference/sglang.md +0 -23
- package/docs/plugins/reference/signal.md +0 -23
- package/docs/plugins/reference/skill-workshop.md +0 -23
- package/docs/plugins/reference/slack.md +0 -23
- package/docs/plugins/reference/stepfun.md +0 -23
- package/docs/plugins/reference/synology-chat.md +0 -23
- package/docs/plugins/reference/synthetic.md +0 -23
- package/docs/plugins/reference/tavily.md +0 -23
- package/docs/plugins/reference/telegram.md +0 -23
- package/docs/plugins/reference/tencent.md +0 -23
- package/docs/plugins/reference/tlon.md +0 -23
- package/docs/plugins/reference/together.md +0 -23
- package/docs/plugins/reference/tokenjuice.md +0 -23
- package/docs/plugins/reference/tts-local-cli.md +0 -19
- package/docs/plugins/reference/twitch.md +0 -23
- package/docs/plugins/reference/venice.md +0 -23
- package/docs/plugins/reference/vercel-ai-gateway.md +0 -23
- package/docs/plugins/reference/vllm.md +0 -23
- package/docs/plugins/reference/voice-call.md +0 -23
- package/docs/plugins/reference/volcengine.md +0 -23
- package/docs/plugins/reference/voyage.md +0 -19
- package/docs/plugins/reference/vydra.md +0 -23
- package/docs/plugins/reference/web-readability.md +0 -19
- package/docs/plugins/reference/webhooks.md +0 -23
- package/docs/plugins/reference/whatsapp.md +0 -23
- package/docs/plugins/reference/workboard.md +0 -23
- package/docs/plugins/reference/xai.md +0 -23
- package/docs/plugins/reference/xiaomi.md +0 -23
- package/docs/plugins/reference/zai.md +0 -23
- package/docs/plugins/reference/zalo.md +0 -23
- package/docs/plugins/reference/zalouser.md +0 -24
- package/docs/plugins/reference.md +0 -145
- package/docs/plugins/sdk-agent-harness.md +0 -338
- package/docs/plugins/sdk-channel-inbound.md +0 -70
- package/docs/plugins/sdk-channel-ingress.md +0 -137
- package/docs/plugins/sdk-channel-message.md +0 -18
- package/docs/plugins/sdk-channel-outbound.md +0 -113
- package/docs/plugins/sdk-channel-plugins.md +0 -765
- package/docs/plugins/sdk-channel-turn.md +0 -9
- package/docs/plugins/sdk-entrypoints.md +0 -344
- package/docs/plugins/sdk-migration.md +0 -979
- package/docs/plugins/sdk-overview.md +0 -511
- package/docs/plugins/sdk-provider-plugins.md +0 -846
- package/docs/plugins/sdk-runtime.md +0 -676
- package/docs/plugins/sdk-setup.md +0 -550
- package/docs/plugins/sdk-subpaths.md +0 -391
- package/docs/plugins/sdk-testing.md +0 -403
- package/docs/plugins/skill-workshop.md +0 -713
- package/docs/plugins/tool-plugins.md +0 -411
- package/docs/plugins/voice-call.md +0 -942
- package/docs/plugins/webhooks.md +0 -192
- package/docs/plugins/workboard.md +0 -252
- package/docs/plugins/zalouser.md +0 -86
- package/docs/prose.md +0 -137
- package/docs/providers/alibaba.md +0 -158
- package/docs/providers/anthropic.md +0 -381
- package/docs/providers/arcee.md +0 -144
- package/docs/providers/azure-speech.md +0 -119
- package/docs/providers/bedrock-mantle.md +0 -211
- package/docs/providers/bedrock.md +0 -414
- package/docs/providers/cerebras.md +0 -130
- package/docs/providers/chutes.md +0 -153
- package/docs/providers/claude-max-api-proxy.md +0 -191
- package/docs/providers/cloudflare-ai-gateway.md +0 -119
- package/docs/providers/comfy.md +0 -362
- package/docs/providers/deepgram.md +0 -184
- package/docs/providers/deepinfra.md +0 -92
- package/docs/providers/deepseek.md +0 -146
- package/docs/providers/ds4.md +0 -309
- package/docs/providers/elevenlabs.md +0 -130
- package/docs/providers/fal.md +0 -240
- package/docs/providers/fireworks.md +0 -144
- package/docs/providers/github-copilot.md +0 -257
- package/docs/providers/gmi.md +0 -92
- package/docs/providers/google.md +0 -472
- package/docs/providers/gradium.md +0 -123
- package/docs/providers/groq.md +0 -171
- package/docs/providers/huggingface.md +0 -235
- package/docs/providers/index.md +0 -105
- package/docs/providers/inferrs.md +0 -272
- package/docs/providers/inworld.md +0 -120
- package/docs/providers/kilocode.md +0 -135
- package/docs/providers/litellm.md +0 -234
- package/docs/providers/lmstudio.md +0 -224
- package/docs/providers/minimax.md +0 -505
- package/docs/providers/mistral.md +0 -235
- package/docs/providers/models.md +0 -64
- package/docs/providers/moonshot.md +0 -413
- package/docs/providers/novita.md +0 -92
- package/docs/providers/nvidia.md +0 -158
- package/docs/providers/ollama-cloud.md +0 -115
- package/docs/providers/ollama.md +0 -1225
- package/docs/providers/openai.md +0 -1093
- package/docs/providers/opencode-go.md +0 -123
- package/docs/providers/opencode.md +0 -149
- package/docs/providers/openrouter.md +0 -349
- package/docs/providers/perplexity-provider.md +0 -123
- package/docs/providers/pixverse.md +0 -165
- package/docs/providers/qianfan.md +0 -132
- package/docs/providers/qwen-oauth.md +0 -115
- package/docs/providers/qwen.md +0 -364
- package/docs/providers/runway.md +0 -103
- package/docs/providers/senseaudio.md +0 -68
- package/docs/providers/sglang.md +0 -161
- package/docs/providers/stepfun.md +0 -229
- package/docs/providers/synthetic.md +0 -154
- package/docs/providers/tencent.md +0 -130
- package/docs/providers/together.md +0 -140
- package/docs/providers/venice.md +0 -312
- package/docs/providers/vercel-ai-gateway.md +0 -128
- package/docs/providers/vllm.md +0 -407
- package/docs/providers/volcengine.md +0 -199
- package/docs/providers/vydra.md +0 -180
- package/docs/providers/xai.md +0 -571
- package/docs/providers/xiaomi.md +0 -262
- package/docs/providers/zai.md +0 -224
- package/docs/refactor/access.md +0 -9
- package/docs/refactor/acp.md +0 -298
- package/docs/refactor/canvas.md +0 -131
- package/docs/refactor/database-first.md +0 -2256
- package/docs/refactor/ingress-core.md +0 -341
- package/docs/reference/AGENTS.default.md +0 -131
- package/docs/reference/RELEASING.md +0 -799
- package/docs/reference/api-usage-costs.md +0 -208
- package/docs/reference/application-modernization-plan.md +0 -208
- package/docs/reference/code-mode.md +0 -773
- package/docs/reference/credits.md +0 -33
- package/docs/reference/device-models.md +0 -50
- package/docs/reference/fengming-sdk-api-design.md +0 -390
- package/docs/reference/full-release-validation.md +0 -202
- package/docs/reference/memory-config.md +0 -604
- package/docs/reference/prompt-caching.md +0 -358
- package/docs/reference/release-performance-sweep.md +0 -360
- package/docs/reference/rich-output-protocol.md +0 -101
- package/docs/reference/rpc.md +0 -43
- package/docs/reference/secret-placeholder-conventions.md +0 -33
- package/docs/reference/secretref-credential-surface.md +0 -159
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +0 -663
- package/docs/reference/session-management-compaction.md +0 -474
- package/docs/reference/templates/AGENTS.dev.md +0 -90
- package/docs/reference/templates/AGENTS.md +0 -227
- package/docs/reference/templates/BOOT.md +0 -16
- package/docs/reference/templates/BOOTSTRAP.md +0 -66
- package/docs/reference/templates/CLAUDE.md +0 -1
- package/docs/reference/templates/HEARTBEAT.md +0 -24
- package/docs/reference/templates/IDENTITY.dev.md +0 -52
- package/docs/reference/templates/IDENTITY.md +0 -34
- package/docs/reference/templates/SOUL.dev.md +0 -82
- package/docs/reference/templates/SOUL.md +0 -49
- package/docs/reference/templates/TOOLS.dev.md +0 -29
- package/docs/reference/templates/TOOLS.md +0 -51
- package/docs/reference/templates/USER.dev.md +0 -23
- package/docs/reference/templates/USER.md +0 -28
- package/docs/reference/test.md +0 -247
- package/docs/reference/token-use.md +0 -246
- package/docs/reference/transcript-hygiene.md +0 -214
- package/docs/reference/wizard.md +0 -252
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -101
- package/docs/security/THREAT-MODEL-ATLAS.md +0 -611
- package/docs/security/formal-verification.md +0 -170
- package/docs/security/incident-response.md +0 -59
- package/docs/security/network-proxy.md +0 -268
- package/docs/snippets/plugin-publish/minimal-fengming.plugin.json +0 -12
- package/docs/snippets/plugin-publish/minimal-package.json +0 -16
- package/docs/specs/claw-supervisor.md +0 -247
- package/docs/start/bootstrapping.md +0 -49
- package/docs/start/docs-directory.md +0 -69
- package/docs/start/fengming.md +0 -252
- package/docs/start/getting-started.md +0 -152
- package/docs/start/hubs.md +0 -201
- package/docs/start/lore.md +0 -223
- package/docs/start/onboarding-overview.md +0 -72
- package/docs/start/onboarding.md +0 -98
- package/docs/start/quickstart.md +0 -25
- package/docs/start/setup.md +0 -178
- package/docs/start/showcase.md +0 -363
- package/docs/start/wizard-cli-automation.md +0 -232
- package/docs/start/wizard-cli-reference.md +0 -331
- package/docs/start/wizard.md +0 -141
- package/docs/style.css +0 -137
- package/docs/superpowers/specs/2026-04-22-tweakcn-custom-theme-import-design.md +0 -316
- package/docs/tools/acp-agents-setup.md +0 -351
- package/docs/tools/acp-agents.md +0 -854
- package/docs/tools/agent-send.md +0 -130
- package/docs/tools/apply-patch.md +0 -64
- package/docs/tools/brave-search.md +0 -139
- package/docs/tools/browser-control.md +0 -391
- package/docs/tools/browser-linux-troubleshooting.md +0 -173
- package/docs/tools/browser-login.md +0 -77
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +0 -219
- package/docs/tools/browser.md +0 -810
- package/docs/tools/btw.md +0 -159
- package/docs/tools/capability-cookbook.md +0 -12
- package/docs/tools/clawhub.md +0 -5
- package/docs/tools/code-execution.md +0 -173
- package/docs/tools/creating-skills.md +0 -158
- package/docs/tools/diffs.md +0 -525
- package/docs/tools/duckduckgo-search.md +0 -109
- package/docs/tools/elevated.md +0 -128
- package/docs/tools/exa-search.md +0 -152
- package/docs/tools/exec-approvals-advanced.md +0 -444
- package/docs/tools/exec-approvals.md +0 -494
- package/docs/tools/exec.md +0 -285
- package/docs/tools/firecrawl.md +0 -155
- package/docs/tools/gemini-search.md +0 -114
- package/docs/tools/goal.md +0 -217
- package/docs/tools/grok-search.md +0 -129
- package/docs/tools/image-generation.md +0 -493
- package/docs/tools/index.md +0 -178
- package/docs/tools/kimi-search.md +0 -105
- package/docs/tools/llm-task.md +0 -137
- package/docs/tools/lobster.md +0 -365
- package/docs/tools/loop-detection.md +0 -154
- package/docs/tools/media-overview.md +0 -160
- package/docs/tools/minimax-search.md +0 -102
- package/docs/tools/multi-agent-sandbox-tools.md +0 -409
- package/docs/tools/music-generation.md +0 -372
- package/docs/tools/ollama-search.md +0 -153
- package/docs/tools/pdf.md +0 -213
- package/docs/tools/perplexity-search.md +0 -220
- package/docs/tools/plugin.md +0 -363
- package/docs/tools/reactions.md +0 -100
- package/docs/tools/searxng-search.md +0 -141
- package/docs/tools/skills-config.md +0 -195
- package/docs/tools/skills.md +0 -569
- package/docs/tools/slash-commands.md +0 -487
- package/docs/tools/steer.md +0 -77
- package/docs/tools/subagents.md +0 -651
- package/docs/tools/tavily.md +0 -162
- package/docs/tools/thinking.md +0 -142
- package/docs/tools/tokenjuice.md +0 -84
- package/docs/tools/tool-search.md +0 -269
- package/docs/tools/trajectory.md +0 -229
- package/docs/tools/tts.md +0 -1009
- package/docs/tools/video-generation.md +0 -555
- package/docs/tools/web-fetch.md +0 -210
- package/docs/tools/web.md +0 -461
- package/docs/tts.md +0 -11
- package/docs/vps.md +0 -139
- package/docs/web/control-ui.md +0 -512
- package/docs/web/dashboard.md +0 -107
- package/docs/web/index.md +0 -133
- package/docs/web/tui.md +0 -250
- package/docs/web/webchat.md +0 -102
- package/npm-shrinkwrap.json +0 -12861
- package/patches/.gitkeep +0 -0
- package/patches/@agentclientprotocol__claude-agent-acp@0.37.0.patch +0 -41
- package/pnpm-workspace.yaml +0 -120
- package/scripts/crabbox-wrapper.mjs +0 -2004
- package/scripts/lib/official-external-channel-catalog.json +0 -560
- package/scripts/lib/official-external-plugin-catalog.json +0 -264
- package/scripts/lib/official-external-provider-catalog.json +0 -158
- package/scripts/lib/package-dist-imports.mjs +0 -171
- package/scripts/npm-runner.mjs +0 -91
- package/scripts/postinstall-bundled-plugins.mjs +0 -978
- package/scripts/preinstall-package-manager-warning.mjs +0 -64
- package/scripts/prepare-git-hooks.mjs +0 -72
- package/scripts/windows-cmd-helpers.mjs +0 -22
- package/skills/batch/SKILL.md +0 -118
- package/skills/code-review/SKILL.md +0 -107
- package/skills/debug/SKILL.md +0 -83
- package/skills/loop/SKILL.md +0 -118
- package/skills/run/SKILL.md +0 -79
- package/skills/run-skill-generator/SKILL.md +0 -179
- package/skills/verify/SKILL.md +0 -103
- package/src/agents/templates/HEARTBEAT.md +0 -3
package/docs/tools/web-fetch.md
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "web_fetch tool -- HTTP fetch with readable content extraction"
|
|
3
|
-
read_when:
|
|
4
|
-
- You want to fetch a URL and extract readable content
|
|
5
|
-
- You need to configure web_fetch or its Firecrawl fallback
|
|
6
|
-
- You want to understand web_fetch limits and caching
|
|
7
|
-
title: "Web fetch"
|
|
8
|
-
sidebarTitle: "Web Fetch"
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
The `web_fetch` tool does a plain HTTP GET and extracts readable content
|
|
12
|
-
(HTML to markdown or text). It does **not** execute JavaScript.
|
|
13
|
-
|
|
14
|
-
For JS-heavy sites or login-protected pages, use the
|
|
15
|
-
[Web Browser](/tools/browser) instead.
|
|
16
|
-
|
|
17
|
-
## Quick start
|
|
18
|
-
|
|
19
|
-
`web_fetch` is **enabled by default** -- no configuration needed. The agent can
|
|
20
|
-
call it immediately:
|
|
21
|
-
|
|
22
|
-
```javascript
|
|
23
|
-
await web_fetch({ url: "https://example.com/article" });
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Tool parameters
|
|
27
|
-
|
|
28
|
-
<ParamField path="url" type="string" required>
|
|
29
|
-
URL to fetch. `http(s)` only.
|
|
30
|
-
</ParamField>
|
|
31
|
-
|
|
32
|
-
<ParamField path="extractMode" type="'markdown' | 'text'" default="markdown">
|
|
33
|
-
Output format after main-content extraction.
|
|
34
|
-
</ParamField>
|
|
35
|
-
|
|
36
|
-
<ParamField path="maxChars" type="number">
|
|
37
|
-
Truncate output to this many characters.
|
|
38
|
-
</ParamField>
|
|
39
|
-
|
|
40
|
-
## How it works
|
|
41
|
-
|
|
42
|
-
<Steps>
|
|
43
|
-
<Step title="Fetch">
|
|
44
|
-
Sends an HTTP GET with a Chrome-like User-Agent and `Accept-Language`
|
|
45
|
-
header. Blocks private/internal hostnames and re-checks redirects.
|
|
46
|
-
</Step>
|
|
47
|
-
<Step title="Extract">
|
|
48
|
-
Runs Readability (main-content extraction) on the HTML response.
|
|
49
|
-
</Step>
|
|
50
|
-
<Step title="Fallback (optional)">
|
|
51
|
-
If Readability fails and Firecrawl is configured, retries through the
|
|
52
|
-
Firecrawl API with bot-circumvention mode.
|
|
53
|
-
</Step>
|
|
54
|
-
<Step title="Cache">
|
|
55
|
-
Results are cached for 15 minutes (configurable) to reduce repeated
|
|
56
|
-
fetches of the same URL.
|
|
57
|
-
</Step>
|
|
58
|
-
</Steps>
|
|
59
|
-
|
|
60
|
-
## Progress updates
|
|
61
|
-
|
|
62
|
-
`web_fetch` emits a public progress line only when the fetch is still pending
|
|
63
|
-
after five seconds:
|
|
64
|
-
|
|
65
|
-
```text
|
|
66
|
-
Fetching page content...
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Fast cache hits and quick network responses finish before the timer fires, so
|
|
70
|
-
they do not show a progress line. If the call is canceled, the timer is cleared.
|
|
71
|
-
When the fetch eventually completes, the agent receives the normal tool result;
|
|
72
|
-
the progress line is only channel UI state and never contains fetched page
|
|
73
|
-
content.
|
|
74
|
-
|
|
75
|
-
## Config
|
|
76
|
-
|
|
77
|
-
```json5
|
|
78
|
-
{
|
|
79
|
-
tools: {
|
|
80
|
-
web: {
|
|
81
|
-
fetch: {
|
|
82
|
-
enabled: true, // default: true
|
|
83
|
-
provider: "firecrawl", // optional; omit for auto-detect
|
|
84
|
-
maxChars: 50000, // max output chars
|
|
85
|
-
maxCharsCap: 50000, // hard cap for maxChars param
|
|
86
|
-
maxResponseBytes: 2000000, // max download size before truncation
|
|
87
|
-
timeoutSeconds: 30,
|
|
88
|
-
cacheTtlMinutes: 15,
|
|
89
|
-
maxRedirects: 3,
|
|
90
|
-
useTrustedEnvProxy: false, // let a trusted HTTP(S) env proxy resolve DNS
|
|
91
|
-
readability: true, // use Readability extraction
|
|
92
|
-
userAgent: "Mozilla/5.0 ...", // override User-Agent
|
|
93
|
-
ssrfPolicy: {
|
|
94
|
-
allowRfc2544BenchmarkRange: true, // opt-in for trusted fake-IP proxies using 198.18.0.0/15
|
|
95
|
-
allowIpv6UniqueLocalRange: true, // opt-in for trusted fake-IP proxies using fc00::/7
|
|
96
|
-
},
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Firecrawl fallback
|
|
104
|
-
|
|
105
|
-
If Readability extraction fails, `web_fetch` can fall back to
|
|
106
|
-
[Firecrawl](/tools/firecrawl) for bot-circumvention and better extraction:
|
|
107
|
-
|
|
108
|
-
```json5
|
|
109
|
-
{
|
|
110
|
-
tools: {
|
|
111
|
-
web: {
|
|
112
|
-
fetch: {
|
|
113
|
-
provider: "firecrawl", // optional; omit for auto-detect from available credentials
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
},
|
|
117
|
-
plugins: {
|
|
118
|
-
entries: {
|
|
119
|
-
firecrawl: {
|
|
120
|
-
enabled: true,
|
|
121
|
-
config: {
|
|
122
|
-
webFetch: {
|
|
123
|
-
apiKey: "fc-...", // optional if FIRECRAWL_API_KEY is set
|
|
124
|
-
baseUrl: "https://api.firecrawl.dev",
|
|
125
|
-
onlyMainContent: true,
|
|
126
|
-
maxAgeMs: 86400000, // cache duration (1 day)
|
|
127
|
-
timeoutSeconds: 60,
|
|
128
|
-
},
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
},
|
|
132
|
-
},
|
|
133
|
-
}
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
`plugins.entries.firecrawl.config.webFetch.apiKey` supports SecretRef objects.
|
|
137
|
-
Legacy `tools.web.fetch.firecrawl.*` config is auto-migrated by `fengming doctor --fix`.
|
|
138
|
-
|
|
139
|
-
<Note>
|
|
140
|
-
If Firecrawl is enabled and its SecretRef is unresolved with no
|
|
141
|
-
`FIRECRAWL_API_KEY` env fallback, gateway startup fails fast.
|
|
142
|
-
</Note>
|
|
143
|
-
|
|
144
|
-
<Note>
|
|
145
|
-
Firecrawl `baseUrl` overrides are locked down: hosted traffic uses
|
|
146
|
-
`https://api.firecrawl.dev`; self-hosted overrides must target private or
|
|
147
|
-
internal endpoints, and `http://` is accepted only for those private targets.
|
|
148
|
-
</Note>
|
|
149
|
-
|
|
150
|
-
Current runtime behavior:
|
|
151
|
-
|
|
152
|
-
- `tools.web.fetch.provider` selects the fetch fallback provider explicitly.
|
|
153
|
-
- If `provider` is omitted, FengMing auto-detects the first ready web-fetch
|
|
154
|
-
provider from available credentials. Non-sandboxed `web_fetch` can use
|
|
155
|
-
installed plugins that declare `contracts.webFetchProviders` and register a
|
|
156
|
-
matching provider at runtime. Today the bundled provider is Firecrawl.
|
|
157
|
-
- Sandboxed `web_fetch` calls stay limited to bundled providers.
|
|
158
|
-
- If Readability is disabled, `web_fetch` skips straight to the selected
|
|
159
|
-
provider fallback. If no provider is available, it fails closed.
|
|
160
|
-
|
|
161
|
-
## Trusted env proxy
|
|
162
|
-
|
|
163
|
-
If your deployment requires `web_fetch` to go through a trusted outbound
|
|
164
|
-
HTTP(S) proxy, set `tools.web.fetch.useTrustedEnvProxy: true`.
|
|
165
|
-
|
|
166
|
-
In this mode, FengMing still applies hostname-based SSRF checks before sending
|
|
167
|
-
the request, but it lets the proxy resolve DNS instead of doing local DNS
|
|
168
|
-
pinning. Enable this only when the proxy is operator-controlled and enforces
|
|
169
|
-
outbound policy after DNS resolution.
|
|
170
|
-
|
|
171
|
-
<Note>
|
|
172
|
-
If no HTTP(S) proxy env var is configured, or the target host is excluded by
|
|
173
|
-
`NO_PROXY`, `web_fetch` falls back to the normal strict path with local DNS
|
|
174
|
-
pinning.
|
|
175
|
-
</Note>
|
|
176
|
-
|
|
177
|
-
## Limits and safety
|
|
178
|
-
|
|
179
|
-
- `maxChars` is clamped to `tools.web.fetch.maxCharsCap`
|
|
180
|
-
- Response body is capped at `maxResponseBytes` before parsing; oversized
|
|
181
|
-
responses are truncated with a warning
|
|
182
|
-
- Private/internal hostnames are blocked
|
|
183
|
-
- `tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange` and
|
|
184
|
-
`tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange` are narrow opt-ins
|
|
185
|
-
for trusted fake-IP proxy stacks; leave them unset unless your proxy owns
|
|
186
|
-
those synthetic ranges and enforces its own destination policy
|
|
187
|
-
- Redirects are checked and limited by `maxRedirects`
|
|
188
|
-
- `useTrustedEnvProxy` is an explicit opt-in and should only be enabled for
|
|
189
|
-
operator-controlled proxies that still enforce outbound policy after DNS
|
|
190
|
-
resolution
|
|
191
|
-
- `web_fetch` is best-effort -- some sites need the [Web Browser](/tools/browser)
|
|
192
|
-
|
|
193
|
-
## Tool profiles
|
|
194
|
-
|
|
195
|
-
If you use tool profiles or allowlists, add `web_fetch` or `group:web`:
|
|
196
|
-
|
|
197
|
-
```json5
|
|
198
|
-
{
|
|
199
|
-
tools: {
|
|
200
|
-
allow: ["web_fetch"],
|
|
201
|
-
// or: allow: ["group:web"] (includes web_fetch, web_search, and x_search)
|
|
202
|
-
},
|
|
203
|
-
}
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
## Related
|
|
207
|
-
|
|
208
|
-
- [Web Search](/tools/web) -- search the web with multiple providers
|
|
209
|
-
- [Web Browser](/tools/browser) -- full browser automation for JS-heavy sites
|
|
210
|
-
- [Firecrawl](/tools/firecrawl) -- Firecrawl search and scrape tools
|
package/docs/tools/web.md
DELETED
|
@@ -1,461 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "web_search, x_search, and web_fetch -- search the web, search X posts, or fetch page content"
|
|
3
|
-
title: "Web search"
|
|
4
|
-
sidebarTitle: "Web Search"
|
|
5
|
-
read_when:
|
|
6
|
-
- You want to enable or configure web_search
|
|
7
|
-
- You want to enable or configure x_search
|
|
8
|
-
- You need to choose a search provider
|
|
9
|
-
- You want to understand auto-detection and provider fallback
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
The `web_search` tool searches the web using your configured provider and
|
|
13
|
-
returns results. Results are cached by query for 15 minutes (configurable).
|
|
14
|
-
|
|
15
|
-
FengMing also includes `x_search` for X (formerly Twitter) posts and
|
|
16
|
-
`web_fetch` for lightweight URL fetching. In this phase, `web_fetch` stays
|
|
17
|
-
local while `web_search` and `x_search` can use xAI Responses under the hood.
|
|
18
|
-
|
|
19
|
-
<Info>
|
|
20
|
-
`web_search` is a lightweight HTTP tool, not browser automation. For
|
|
21
|
-
JS-heavy sites or logins, use the [Web Browser](/tools/browser). For
|
|
22
|
-
fetching a specific URL, use [Web Fetch](/tools/web-fetch).
|
|
23
|
-
</Info>
|
|
24
|
-
|
|
25
|
-
## Quick start
|
|
26
|
-
|
|
27
|
-
<Steps>
|
|
28
|
-
<Step title="Choose a provider">
|
|
29
|
-
Pick a provider and complete any required setup. Some providers are
|
|
30
|
-
key-free, while others use API keys. See the provider pages below for
|
|
31
|
-
details.
|
|
32
|
-
</Step>
|
|
33
|
-
<Step title="Configure">
|
|
34
|
-
```bash
|
|
35
|
-
fengming configure --section web
|
|
36
|
-
```
|
|
37
|
-
This stores the provider and any needed credential. You can also set an env
|
|
38
|
-
var (for example `BRAVE_API_KEY`) and skip this step for API-backed
|
|
39
|
-
providers.
|
|
40
|
-
</Step>
|
|
41
|
-
<Step title="Use it">
|
|
42
|
-
The agent can now call `web_search`:
|
|
43
|
-
|
|
44
|
-
```javascript
|
|
45
|
-
await web_search({ query: "FengMing plugin SDK" });
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
For X posts, use:
|
|
49
|
-
|
|
50
|
-
```javascript
|
|
51
|
-
await x_search({ query: "dinner recipes" });
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
</Step>
|
|
55
|
-
</Steps>
|
|
56
|
-
|
|
57
|
-
## Choosing a provider
|
|
58
|
-
|
|
59
|
-
<CardGroup cols={2}>
|
|
60
|
-
<Card title="Brave Search" icon="shield" href="/tools/brave-search">
|
|
61
|
-
Structured results with snippets. Supports `llm-context` mode, country/language filters. Free tier available.
|
|
62
|
-
</Card>
|
|
63
|
-
<Card title="DuckDuckGo" icon="bird" href="/tools/duckduckgo-search">
|
|
64
|
-
Key-free fallback. No API key needed. Unofficial HTML-based integration.
|
|
65
|
-
</Card>
|
|
66
|
-
<Card title="Exa" icon="brain" href="/tools/exa-search">
|
|
67
|
-
Neural + keyword search with content extraction (highlights, text, summaries).
|
|
68
|
-
</Card>
|
|
69
|
-
<Card title="Firecrawl" icon="flame" href="/tools/firecrawl">
|
|
70
|
-
Structured results. Best paired with `firecrawl_search` and `firecrawl_scrape` for deep extraction.
|
|
71
|
-
</Card>
|
|
72
|
-
<Card title="Gemini" icon="sparkles" href="/tools/gemini-search">
|
|
73
|
-
AI-synthesized answers with citations via Google Search grounding.
|
|
74
|
-
</Card>
|
|
75
|
-
<Card title="Grok" icon="zap" href="/tools/grok-search">
|
|
76
|
-
AI-synthesized answers with citations via xAI web grounding.
|
|
77
|
-
</Card>
|
|
78
|
-
<Card title="Kimi" icon="moon" href="/tools/kimi-search">
|
|
79
|
-
AI-synthesized answers with citations via Moonshot web search; ungrounded chat fallbacks fail explicitly.
|
|
80
|
-
</Card>
|
|
81
|
-
<Card title="MiniMax Search" icon="globe" href="/tools/minimax-search">
|
|
82
|
-
Structured results via the MiniMax Token Plan search API.
|
|
83
|
-
</Card>
|
|
84
|
-
<Card title="Ollama Web Search" icon="globe" href="/tools/ollama-search">
|
|
85
|
-
Search via a signed-in local Ollama host or the hosted Ollama API.
|
|
86
|
-
</Card>
|
|
87
|
-
<Card title="Perplexity" icon="search" href="/tools/perplexity-search">
|
|
88
|
-
Structured results with content extraction controls and domain filtering.
|
|
89
|
-
</Card>
|
|
90
|
-
<Card title="SearXNG" icon="server" href="/tools/searxng-search">
|
|
91
|
-
Self-hosted meta-search. No API key needed. Aggregates Google, Bing, DuckDuckGo, and more.
|
|
92
|
-
</Card>
|
|
93
|
-
<Card title="Tavily" icon="globe" href="/tools/tavily">
|
|
94
|
-
Structured results with search depth, topic filtering, and `tavily_extract` for URL extraction.
|
|
95
|
-
</Card>
|
|
96
|
-
</CardGroup>
|
|
97
|
-
|
|
98
|
-
### Provider comparison
|
|
99
|
-
|
|
100
|
-
| Provider | Result style | Filters | API key |
|
|
101
|
-
| ----------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------- |
|
|
102
|
-
| [Brave](/tools/brave-search) | Structured snippets | Country, language, time, `llm-context` mode | `BRAVE_API_KEY` |
|
|
103
|
-
| [DuckDuckGo](/tools/duckduckgo-search) | Structured snippets | -- | None (key-free) |
|
|
104
|
-
| [Exa](/tools/exa-search) | Structured + extracted | Neural/keyword mode, date, content extraction | `EXA_API_KEY` |
|
|
105
|
-
| [Firecrawl](/tools/firecrawl) | Structured snippets | Via `firecrawl_search` tool | `FIRECRAWL_API_KEY` |
|
|
106
|
-
| [Gemini](/tools/gemini-search) | AI-synthesized + citations | -- | `GEMINI_API_KEY` |
|
|
107
|
-
| [Grok](/tools/grok-search) | AI-synthesized + citations | -- | xAI OAuth, `XAI_API_KEY`, or `plugins.entries.xai.config.webSearch.apiKey` |
|
|
108
|
-
| [Kimi](/tools/kimi-search) | AI-synthesized + citations; fails on ungrounded chat fallbacks | -- | `KIMI_API_KEY` / `MOONSHOT_API_KEY` |
|
|
109
|
-
| [MiniMax Search](/tools/minimax-search) | Structured snippets | Region (`global` / `cn`) | `MINIMAX_CODE_PLAN_KEY` / `MINIMAX_CODING_API_KEY` / `MINIMAX_OAUTH_TOKEN` |
|
|
110
|
-
| [Ollama Web Search](/tools/ollama-search) | Structured snippets | -- | None for signed-in local hosts; `OLLAMA_API_KEY` for direct `https://ollama.com` search |
|
|
111
|
-
| [Perplexity](/tools/perplexity-search) | Structured snippets | Country, language, time, domains, content limits | `PERPLEXITY_API_KEY` / `OPENROUTER_API_KEY` |
|
|
112
|
-
| [SearXNG](/tools/searxng-search) | Structured snippets | Categories, language | None (self-hosted) |
|
|
113
|
-
| [Tavily](/tools/tavily) | Structured snippets | Via `tavily_search` tool | `TAVILY_API_KEY` |
|
|
114
|
-
|
|
115
|
-
## Auto-detection
|
|
116
|
-
|
|
117
|
-
## Native OpenAI web search
|
|
118
|
-
|
|
119
|
-
Direct OpenAI Responses models use OpenAI's hosted `web_search` tool automatically when FengMing web search is enabled and no managed provider is pinned. This is provider-owned behavior in the bundled OpenAI plugin and only applies to native OpenAI API traffic, not OpenAI-compatible proxy base URLs or Azure routes. Set `tools.web.search.provider` to another provider such as `brave` to keep the managed `web_search` tool for OpenAI models, or set `tools.web.search.enabled: false` to disable both managed search and native OpenAI search.
|
|
120
|
-
|
|
121
|
-
## Native Codex web search
|
|
122
|
-
|
|
123
|
-
Codex-capable models can optionally use the provider-native Responses `web_search` tool instead of FengMing's managed `web_search` function.
|
|
124
|
-
|
|
125
|
-
- Configure it under `tools.web.search.openaiCodex`
|
|
126
|
-
- It only activates for Codex-capable OpenAI models (`openai/*` models using `api: "openai-codex-responses"`)
|
|
127
|
-
- Managed `web_search` still applies to non-Codex models
|
|
128
|
-
- `mode: "cached"` is the default and recommended setting
|
|
129
|
-
- `tools.web.search.enabled: false` disables both managed and native search
|
|
130
|
-
|
|
131
|
-
```json5
|
|
132
|
-
{
|
|
133
|
-
tools: {
|
|
134
|
-
web: {
|
|
135
|
-
search: {
|
|
136
|
-
enabled: true,
|
|
137
|
-
openaiCodex: {
|
|
138
|
-
enabled: true,
|
|
139
|
-
mode: "cached",
|
|
140
|
-
allowedDomains: ["example.com"],
|
|
141
|
-
contextSize: "high",
|
|
142
|
-
userLocation: {
|
|
143
|
-
country: "US",
|
|
144
|
-
city: "New York",
|
|
145
|
-
timezone: "America/New_York",
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
|
-
},
|
|
149
|
-
},
|
|
150
|
-
},
|
|
151
|
-
}
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
If native Codex search is enabled but the current model is not Codex-capable, FengMing keeps the normal managed `web_search` behavior.
|
|
155
|
-
|
|
156
|
-
## Network safety
|
|
157
|
-
|
|
158
|
-
Managed `web_search` provider calls use FengMing's guarded fetch path. For
|
|
159
|
-
trusted provider API hosts, FengMing allows Surge, Clash, and sing-box fake-IP
|
|
160
|
-
DNS answers in `198.18.0.0/15` and `fc00::/7` only for that provider hostname.
|
|
161
|
-
Other private, loopback, link-local, and metadata destinations remain blocked.
|
|
162
|
-
|
|
163
|
-
This automatic allowance does not apply to arbitrary `web_fetch` URLs. For
|
|
164
|
-
`web_fetch`, enable `tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange` and
|
|
165
|
-
`tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange` explicitly only when your
|
|
166
|
-
trusted proxy owns those synthetic ranges.
|
|
167
|
-
|
|
168
|
-
## Setting up web search
|
|
169
|
-
|
|
170
|
-
Provider lists in docs and setup flows are alphabetical. Auto-detection keeps a
|
|
171
|
-
separate precedence order.
|
|
172
|
-
|
|
173
|
-
If no `provider` is set, FengMing checks providers in this order and uses the
|
|
174
|
-
first one that is ready:
|
|
175
|
-
|
|
176
|
-
API-backed providers first:
|
|
177
|
-
|
|
178
|
-
1. **Brave** -- `BRAVE_API_KEY` or `plugins.entries.brave.config.webSearch.apiKey` (order 10)
|
|
179
|
-
2. **MiniMax Search** -- `MINIMAX_CODE_PLAN_KEY` / `MINIMAX_CODING_API_KEY` / `MINIMAX_OAUTH_TOKEN` / `MINIMAX_API_KEY` or `plugins.entries.minimax.config.webSearch.apiKey` (order 15)
|
|
180
|
-
3. **Gemini** -- `plugins.entries.google.config.webSearch.apiKey`, `GEMINI_API_KEY`, or `models.providers.google.apiKey` (order 20)
|
|
181
|
-
4. **Grok** -- xAI OAuth, `XAI_API_KEY`, or `plugins.entries.xai.config.webSearch.apiKey` (order 30)
|
|
182
|
-
5. **Kimi** -- `KIMI_API_KEY` / `MOONSHOT_API_KEY` or `plugins.entries.moonshot.config.webSearch.apiKey` (order 40)
|
|
183
|
-
6. **Perplexity** -- `PERPLEXITY_API_KEY` / `OPENROUTER_API_KEY` or `plugins.entries.perplexity.config.webSearch.apiKey` (order 50)
|
|
184
|
-
7. **Firecrawl** -- `FIRECRAWL_API_KEY` or `plugins.entries.firecrawl.config.webSearch.apiKey` (order 60)
|
|
185
|
-
8. **Exa** -- `EXA_API_KEY` or `plugins.entries.exa.config.webSearch.apiKey`; optional `plugins.entries.exa.config.webSearch.baseUrl` overrides the Exa endpoint (order 65)
|
|
186
|
-
9. **Tavily** -- `TAVILY_API_KEY` or `plugins.entries.tavily.config.webSearch.apiKey` (order 70)
|
|
187
|
-
|
|
188
|
-
Key-free fallbacks after that:
|
|
189
|
-
|
|
190
|
-
10. **DuckDuckGo** -- key-free HTML fallback with no account or API key (order 100)
|
|
191
|
-
11. **Ollama Web Search** -- key-free fallback via your configured local Ollama host when it is reachable and signed in with `ollama signin`; can reuse Ollama provider bearer auth when the host needs it, and can call direct `https://ollama.com` search when configured with `OLLAMA_API_KEY` (order 110)
|
|
192
|
-
12. **SearXNG** -- `SEARXNG_BASE_URL` or `plugins.entries.searxng.config.webSearch.baseUrl` (order 200)
|
|
193
|
-
|
|
194
|
-
If no provider is detected, it falls back to Brave (you will get a missing-key
|
|
195
|
-
error prompting you to configure one).
|
|
196
|
-
|
|
197
|
-
<Note>
|
|
198
|
-
All provider key fields support SecretRef objects. Plugin-scoped SecretRefs
|
|
199
|
-
under `plugins.entries.<plugin>.config.webSearch.apiKey` are resolved for the
|
|
200
|
-
bundled API-backed web search providers, including Brave, Exa, Firecrawl,
|
|
201
|
-
Gemini, Grok, Kimi, MiniMax, Perplexity, and Tavily,
|
|
202
|
-
whether the provider is picked explicitly via `tools.web.search.provider` or
|
|
203
|
-
selected through auto-detect. In auto-detect mode, FengMing resolves only the
|
|
204
|
-
selected provider key -- non-selected SecretRefs stay inactive, so you can
|
|
205
|
-
keep multiple providers configured without paying resolution cost for the
|
|
206
|
-
ones you are not using.
|
|
207
|
-
</Note>
|
|
208
|
-
|
|
209
|
-
## Config
|
|
210
|
-
|
|
211
|
-
```json5
|
|
212
|
-
{
|
|
213
|
-
tools: {
|
|
214
|
-
web: {
|
|
215
|
-
search: {
|
|
216
|
-
enabled: true, // default: true
|
|
217
|
-
provider: "brave", // or omit for auto-detection
|
|
218
|
-
maxResults: 5,
|
|
219
|
-
timeoutSeconds: 30,
|
|
220
|
-
cacheTtlMinutes: 15,
|
|
221
|
-
},
|
|
222
|
-
},
|
|
223
|
-
},
|
|
224
|
-
}
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
Provider-specific config (API keys, base URLs, modes) lives under
|
|
228
|
-
`plugins.entries.<plugin>.config.webSearch.*`. Gemini can also reuse
|
|
229
|
-
`models.providers.google.apiKey` and `models.providers.google.baseUrl` as lower-priority
|
|
230
|
-
fallbacks after its dedicated web-search config and `GEMINI_API_KEY`. See the
|
|
231
|
-
provider pages for examples.
|
|
232
|
-
Grok can also reuse an xAI OAuth auth profile from `fengming models auth login
|
|
233
|
-
--provider xai --method oauth`; API-key config remains the fallback.
|
|
234
|
-
|
|
235
|
-
`tools.web.search.provider` is validated against the web-search provider ids
|
|
236
|
-
declared by bundled and installed plugin manifests. A typo such as `"brvae"`
|
|
237
|
-
fails config validation instead of silently falling back to auto-detection. If a
|
|
238
|
-
configured provider only has stale plugin evidence, such as a leftover
|
|
239
|
-
`plugins.entries.<plugin>` block after uninstalling a third-party plugin,
|
|
240
|
-
FengMing keeps startup resilient and reports a warning so you can reinstall the
|
|
241
|
-
plugin or run `fengming doctor --fix` to clean up the stale config.
|
|
242
|
-
|
|
243
|
-
`web_fetch` fallback provider selection is separate:
|
|
244
|
-
|
|
245
|
-
- choose it with `tools.web.fetch.provider`
|
|
246
|
-
- or omit that field and let FengMing auto-detect the first ready web-fetch
|
|
247
|
-
provider from available credentials
|
|
248
|
-
- non-sandboxed `web_fetch` can use installed plugin providers that declare
|
|
249
|
-
`contracts.webFetchProviders`; sandboxed fetches stay bundled-only
|
|
250
|
-
- today the bundled web-fetch provider is Firecrawl, configured under
|
|
251
|
-
`plugins.entries.firecrawl.config.webFetch.*`
|
|
252
|
-
|
|
253
|
-
When you choose **Kimi** during `fengming onboard` or
|
|
254
|
-
`fengming configure --section web`, FengMing can also ask for:
|
|
255
|
-
|
|
256
|
-
- the Moonshot API region (`https://api.moonshot.ai/v1` or `https://api.moonshot.cn/v1`)
|
|
257
|
-
- the default Kimi web-search model (defaults to `kimi-k2.6`)
|
|
258
|
-
|
|
259
|
-
For `x_search`, configure `plugins.entries.xai.config.xSearch.*`. It uses the
|
|
260
|
-
same xAI auth profile as chat, or the `XAI_API_KEY` / plugin web-search
|
|
261
|
-
credential used by Grok web search.
|
|
262
|
-
Legacy `tools.web.x_search.*` config is auto-migrated by `fengming doctor --fix`.
|
|
263
|
-
When you choose Grok during `fengming onboard` or `fengming configure --section web`,
|
|
264
|
-
FengMing can also offer optional `x_search` setup with the same credential.
|
|
265
|
-
This is a separate follow-up step inside the Grok path, not a separate top-level
|
|
266
|
-
web-search provider choice. If you pick another provider, FengMing does not
|
|
267
|
-
show the `x_search` prompt.
|
|
268
|
-
|
|
269
|
-
### Storing API keys
|
|
270
|
-
|
|
271
|
-
<Tabs>
|
|
272
|
-
<Tab title="Config file">
|
|
273
|
-
Run `fengming configure --section web` or set the key directly:
|
|
274
|
-
|
|
275
|
-
```json5
|
|
276
|
-
{
|
|
277
|
-
plugins: {
|
|
278
|
-
entries: {
|
|
279
|
-
brave: {
|
|
280
|
-
config: {
|
|
281
|
-
webSearch: {
|
|
282
|
-
apiKey: "YOUR_KEY", // pragma: allowlist secret
|
|
283
|
-
},
|
|
284
|
-
},
|
|
285
|
-
},
|
|
286
|
-
},
|
|
287
|
-
},
|
|
288
|
-
}
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
</Tab>
|
|
292
|
-
<Tab title="Environment variable">
|
|
293
|
-
Set the provider env var in the Gateway process environment:
|
|
294
|
-
|
|
295
|
-
```bash
|
|
296
|
-
export BRAVE_API_KEY="YOUR_KEY"
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
For a gateway install, put it in `~/.fengming/.env`.
|
|
300
|
-
See [Env vars](/help/faq#env-vars-and-env-loading).
|
|
301
|
-
|
|
302
|
-
</Tab>
|
|
303
|
-
</Tabs>
|
|
304
|
-
|
|
305
|
-
## Tool parameters
|
|
306
|
-
|
|
307
|
-
| Parameter | Description |
|
|
308
|
-
| --------------------- | ----------------------------------------------------- |
|
|
309
|
-
| `query` | Search query (required) |
|
|
310
|
-
| `count` | Results to return (1-10, default: 5) |
|
|
311
|
-
| `country` | 2-letter ISO country code (e.g. "US", "DE") |
|
|
312
|
-
| `language` | ISO 639-1 language code (e.g. "en", "de") |
|
|
313
|
-
| `search_lang` | Search-language code (Brave only) |
|
|
314
|
-
| `freshness` | Time filter: `day`, `week`, `month`, or `year` |
|
|
315
|
-
| `date_after` | Results after this date (YYYY-MM-DD) |
|
|
316
|
-
| `date_before` | Results before this date (YYYY-MM-DD) |
|
|
317
|
-
| `ui_lang` | UI language code (Brave only) |
|
|
318
|
-
| `domain_filter` | Domain allowlist/denylist array (Perplexity only) |
|
|
319
|
-
| `max_tokens` | Total content budget, default 25000 (Perplexity only) |
|
|
320
|
-
| `max_tokens_per_page` | Per-page token limit, default 2048 (Perplexity only) |
|
|
321
|
-
|
|
322
|
-
<Warning>
|
|
323
|
-
Not all parameters work with all providers. Brave `llm-context` mode
|
|
324
|
-
rejects `ui_lang`; `date_before` also needs `date_after` because Brave custom
|
|
325
|
-
freshness ranges require both start and end dates.
|
|
326
|
-
Gemini, Grok, and Kimi return one synthesized answer with citations. They
|
|
327
|
-
accept `count` for shared-tool compatibility, but it does not change the
|
|
328
|
-
grounded answer shape. Gemini supports `freshness`, `date_after`, and
|
|
329
|
-
`date_before` by converting them to Google Search grounding time ranges.
|
|
330
|
-
Perplexity behaves the same way when you use the Sonar/OpenRouter
|
|
331
|
-
compatibility path (`plugins.entries.perplexity.config.webSearch.baseUrl` /
|
|
332
|
-
`model` or `OPENROUTER_API_KEY`).
|
|
333
|
-
SearXNG accepts `http://` only for trusted private-network or loopback hosts;
|
|
334
|
-
public SearXNG endpoints must use `https://`.
|
|
335
|
-
Firecrawl and Tavily only support `query` and `count` through `web_search`
|
|
336
|
-
-- use their dedicated tools for advanced options.
|
|
337
|
-
</Warning>
|
|
338
|
-
|
|
339
|
-
## x_search
|
|
340
|
-
|
|
341
|
-
`x_search` queries X (formerly Twitter) posts using xAI and returns
|
|
342
|
-
AI-synthesized answers with citations. It accepts natural-language queries and
|
|
343
|
-
optional structured filters. FengMing only enables the built-in xAI `x_search`
|
|
344
|
-
tool on the request that serves this tool call.
|
|
345
|
-
|
|
346
|
-
<Note>
|
|
347
|
-
xAI documents `x_search` as supporting keyword search, semantic search, user
|
|
348
|
-
search, and thread fetch. For per-post engagement stats such as reposts,
|
|
349
|
-
replies, bookmarks, or views, prefer a targeted lookup for the exact post URL
|
|
350
|
-
or status ID. Broad keyword searches may find the right post but return less
|
|
351
|
-
complete per-post metadata. A good pattern is: locate the post first, then
|
|
352
|
-
run a second `x_search` query focused on that exact post.
|
|
353
|
-
</Note>
|
|
354
|
-
|
|
355
|
-
### x_search config
|
|
356
|
-
|
|
357
|
-
```json5
|
|
358
|
-
{
|
|
359
|
-
plugins: {
|
|
360
|
-
entries: {
|
|
361
|
-
xai: {
|
|
362
|
-
config: {
|
|
363
|
-
xSearch: {
|
|
364
|
-
enabled: true,
|
|
365
|
-
model: "grok-4-1-fast-non-reasoning",
|
|
366
|
-
baseUrl: "https://api.x.ai/v1", // optional, overrides webSearch.baseUrl
|
|
367
|
-
inlineCitations: false,
|
|
368
|
-
maxTurns: 2,
|
|
369
|
-
timeoutSeconds: 30,
|
|
370
|
-
cacheTtlMinutes: 15,
|
|
371
|
-
},
|
|
372
|
-
webSearch: {
|
|
373
|
-
apiKey: "xai-...", // optional if an xAI auth profile or XAI_API_KEY is set
|
|
374
|
-
baseUrl: "https://api.x.ai/v1", // optional shared xAI Responses base URL
|
|
375
|
-
},
|
|
376
|
-
},
|
|
377
|
-
},
|
|
378
|
-
},
|
|
379
|
-
},
|
|
380
|
-
}
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
`x_search` posts to `<baseUrl>/responses` when
|
|
384
|
-
`plugins.entries.xai.config.xSearch.baseUrl` is set. If that field is omitted,
|
|
385
|
-
it falls back to `plugins.entries.xai.config.webSearch.baseUrl`, then the
|
|
386
|
-
legacy `tools.web.search.grok.baseUrl`, and finally the public xAI endpoint.
|
|
387
|
-
|
|
388
|
-
### x_search parameters
|
|
389
|
-
|
|
390
|
-
| Parameter | Description |
|
|
391
|
-
| ---------------------------- | ------------------------------------------------------ |
|
|
392
|
-
| `query` | Search query (required) |
|
|
393
|
-
| `allowed_x_handles` | Restrict results to specific X handles |
|
|
394
|
-
| `excluded_x_handles` | Exclude specific X handles |
|
|
395
|
-
| `from_date` | Only include posts on or after this date (YYYY-MM-DD) |
|
|
396
|
-
| `to_date` | Only include posts on or before this date (YYYY-MM-DD) |
|
|
397
|
-
| `enable_image_understanding` | Let xAI inspect images attached to matching posts |
|
|
398
|
-
| `enable_video_understanding` | Let xAI inspect videos attached to matching posts |
|
|
399
|
-
|
|
400
|
-
### x_search example
|
|
401
|
-
|
|
402
|
-
```javascript
|
|
403
|
-
await x_search({
|
|
404
|
-
query: "dinner recipes",
|
|
405
|
-
allowed_x_handles: ["nytfood"],
|
|
406
|
-
from_date: "2026-03-01",
|
|
407
|
-
});
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
```javascript
|
|
411
|
-
// Per-post stats: use the exact status URL or status ID when possible
|
|
412
|
-
await x_search({
|
|
413
|
-
query: "https://x.com/huntharo/status/1905678901234567890",
|
|
414
|
-
});
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
## Examples
|
|
418
|
-
|
|
419
|
-
```javascript
|
|
420
|
-
// Basic search
|
|
421
|
-
await web_search({ query: "FengMing plugin SDK" });
|
|
422
|
-
|
|
423
|
-
// German-specific search
|
|
424
|
-
await web_search({ query: "TV online schauen", country: "DE", language: "de" });
|
|
425
|
-
|
|
426
|
-
// Recent results (past week)
|
|
427
|
-
await web_search({ query: "AI developments", freshness: "week" });
|
|
428
|
-
|
|
429
|
-
// Date range
|
|
430
|
-
await web_search({
|
|
431
|
-
query: "climate research",
|
|
432
|
-
date_after: "2024-01-01",
|
|
433
|
-
date_before: "2024-06-30",
|
|
434
|
-
});
|
|
435
|
-
|
|
436
|
-
// Domain filtering (Perplexity only)
|
|
437
|
-
await web_search({
|
|
438
|
-
query: "product reviews",
|
|
439
|
-
domain_filter: ["-reddit.com", "-pinterest.com"],
|
|
440
|
-
});
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
## Tool profiles
|
|
444
|
-
|
|
445
|
-
If you use tool profiles or allowlists, add `web_search`, `x_search`, or `group:web`:
|
|
446
|
-
|
|
447
|
-
```json5
|
|
448
|
-
{
|
|
449
|
-
tools: {
|
|
450
|
-
allow: ["web_search", "x_search"],
|
|
451
|
-
// or: allow: ["group:web"] (includes web_search, x_search, and web_fetch)
|
|
452
|
-
},
|
|
453
|
-
}
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
## Related
|
|
457
|
-
|
|
458
|
-
- [Web Fetch](/tools/web-fetch) -- fetch a URL and extract readable content
|
|
459
|
-
- [Web Browser](/tools/browser) -- full browser automation for JS-heavy sites
|
|
460
|
-
- [Grok Search](/tools/grok-search) -- Grok as the `web_search` provider
|
|
461
|
-
- [Ollama Web Search](/tools/ollama-search) -- key-free web search through your Ollama host
|