Firecrawl 自托管实战:部署、验证与成本账

从固定版本开始完成 Firecrawl 自托管:按 v2.11.162 部署 Docker Compose,用真实抓取和重启复测保存证据,并对照 Firecrawl Cloud 的功能边界与 30 天成本。文中提供可复用的验证脚本、适用团队清单和成本工作表,帮助你判断基础设施控制权是否值得首月 $725.20 的投入。

Tuesday, September 22, 2026Omid Saffari
Firecrawl 自托管实战:部署、验证与成本账

Firecrawl 自托管买到的是对代码和基础设施的控制权,并不是一项免费的托管服务。先锁定 v2.11.162,用一次真实的 /v2/scrape 请求证明链路可用,保存证据,再核算运维投入。按下文的 30 天工作表计算:抓取 1,000 个基础页面时,Firecrawl Cloud 成本为 $0;抓取 10,000 个页面时为 $44;若把明确假设的 6 小时运维工时计入,自托管方案首月将达到 $725.20

先说结论:这个规模下,Cloud 更省钱

当源码访问权、基础设施控制权或特定网络边界值得团队亲自维护整套系统时,才选择 Firecrawl 自托管。如果需求只是把公开 URL 转成干净内容,Cloud 更合适。 Firecrawl 在自托管指南中也给出了相同判断:Cloud 是最快且受支持的生产路径;选择自托管,则意味着相关基础设施都由团队负责。

30 天产出自托管首月自托管后续月份示例Firecrawl Cloud财务上的默认优选
1,000 个成功抓取的基础页面$725.20$325.20$0Cloud
10,000 个成功抓取的基础页面$725.20$325.20$44Cloud

这里的自托管数字是预算,不是吞吐量承诺。Firecrawl 没有公布经过验证的最低主机规格,本次运行也无法测试这台假设的主机能否支撑上述任一规模。愿意支付溢价的合理理由是控制权;至于能否省钱,必须结合自己的页面、并发量和失败率实测。

Firecrawl 自托管到底换来了什么

你获得的是运行在自有基础设施上的 Firecrawl 核心引擎,以及维护其周边所有依赖的责任。 可以把 Cloud 想成一间配齐人员的商用厨房,而自托管拿到的是厨房设计图。设计图可以审查、修改,也确实有价值,但它不包含厨师、消防检查、制冷设备巡检和夜班值守。

锁定版本后的默认技术栈支持核心的 scrape、crawl、map 和 search 路由,也包含 Fetch 与 Playwright 处理能力。同时,它还依赖 PostgreSQL、Redis、RabbitMQ 等服务,而 readiness 端点并不会验证整条链路是否真正可用。

这条边界很重要:{"status":"ok"} 只说明某个 HTTP 端点给出了响应,并不能证明页面能够从主机发出请求、完成渲染、经过 worker 处理并最终返回 Markdown。一次成功抓取,才是最低限度的可用性证据。

Firecrawl 本地部署:安装与指南一致的版本

使用 Firecrawl v2.11.162,不要直接跟随持续变化的 main 分支。 该标签创建于 2026 年 7 月 30 日,对应提交 7666c1f9ae8720a6bba271e0f60b6a217f8a5210。锁定版本后,代码、Compose 文件和安装说明才能保持一致。

官方前置条件包括 Git、Docker Engine 或 Docker Desktop、Docker Compose v2、curl、可用的 3002 端口,以及足以构建并运行多个服务的主机资源。Firecrawl 并未公布经过验证的最低机器配置。

  1. 锁定源码版本

    克隆 Firecrawl 并检出 v2.11.162。记录最终提交,以便后续维护者复现这次部署。

  2. 创建基线环境

    仅在受信任网络内进行评估时关闭数据库身份验证;PostgreSQL 数据库名保持为 postgres,并使用至少 32 个字符的随机密码。不要提交 .env

  3. 构建并检查全部服务

    启动 Compose 技术栈,然后查看 docker compose ps --all。长期运行的服务应处于运行状态,一次性初始化任务应已完成。

  4. 用真实抓取完成验证

    先检查 readiness,再通过 /v2/scrape 抓取 https://example.com。不要把 readiness 响应当作验证终点。

Bash
git clone https://github.com/firecrawl/firecrawl.git
cd firecrawl
git checkout v2.11.162
git rev-parse HEAD

db_password="$(openssl rand -hex 32)"
printf 'USE_DB_AUTHENTICATION=false\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=%s\nPOSTGRES_DB=postgres\n' \
  "$db_password" > .env

docker compose up --build -d
docker compose ps --all

curl --fail --silent --show-error --max-time 5 \
  http://localhost:3002/v0/health/readiness

curl --fail-with-body --silent --show-error --max-time 75 \
  -X POST http://localhost:3002/v2/scrape \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://example.com","formats":["markdown"],"timeout":60000}'

只有当响应包含 success: true、返回的 Markdown,以及带有 statusCode: 200 的元数据时,抓取才算通过。具体元数据可能因目标而异。如果 readiness 通过但抓取失败,应检查 API 和 Playwright 日志,因为绿色心跳并未覆盖这些路径。

架构验证流程:依次锁定版本、启动技术栈、运行包含十个 URL 的抓取样本、保存证据并检查重启结果
可信的安装记录应证明完整数据链路、保留原始响应、包含一次刻意设置的失败,并在重启后再次执行抓取。

保存一份能交给其他工程师的验证记录

只有原始证据在终端会话结束后仍然留存,安装才算得到验证。 下方脚本从已锁定版本的仓库开始,创建一个带时间戳的目录,保存主机规格、准确版本、构建耗时、容器状态、readiness 输出、10 份原始抓取响应、汇总、1 份资源快照、重启输出,以及重启后的第 2 次成功抓取。

第 10 个 URL 使用保留的 .invalid 域名,因此这组样本可以稳定包含一次刻意失败,而不必依赖某个真实网站恰好发生故障。其余 9 个目标均为固定的公开页面。运行脚本前请安装 jq,因为它负责构造请求 JSON 并读取响应字段。

Bash
#!/usr/bin/env bash
set -euo pipefail

base_url="${FIRECRAWL_BASE_URL:-http://localhost:3002}"
stamp="$(date -u +%Y%m%dT%H%M%SZ)"
out="firecrawl-verification-${stamp}"
mkdir -p "$out/responses"

actual_release="$(git describe --tags --exact-match)"
[[ "$actual_release" == "v2.11.162" ]] || {
  printf 'Expected v2.11.162, found %s\n' "$actual_release" >&2
  exit 1
}

{
  printf 'checked_at_utc=%s\n' "$(date -u +%FT%TZ)"
  printf 'release=%s\n' "$actual_release"
  printf 'commit=%s\n' "$(git rev-parse HEAD)"
  printf 'cpus=%s\n' "$(getconf _NPROCESSORS_ONLN)"
  awk '/MemTotal/ {printf "memory_kib=%s\n", $2}' /proc/meminfo
  uname -a
  docker version
  docker compose version
} > "$out/host.txt" 2>&1

setup_start="$(date +%s)"
docker compose up --build -d > "$out/compose-up.log" 2>&1
printf '%s\n' "$(( $(date +%s) - setup_start ))" > "$out/setup-seconds.txt"
docker compose ps --all --format json > "$out/containers-before.json"
curl --fail --silent --show-error --max-time 5 \
  "$base_url/v0/health/readiness" > "$out/readiness.json"

targets=(
  https://example.com
  https://example.org
  https://example.net
  https://httpbin.org/html
  https://www.iana.org/help/example-domains
  https://www.rfc-editor.org/rfc/rfc9110
  https://www.w3.org/TR/PNG/iso_8859-1.txt
  https://docs.python.org/3/
  https://www.firecrawl.dev/
  https://fixture-failure.invalid/
)

printf 'index\turl\tcurl_exit\tsuccess\tstatus_code\n' > "$out/summary.tsv"
i=0
for target in "${targets[@]}"; do
  i=$((i + 1))
  response="$out/responses/$(printf '%02d' "$i").json"
  payload="$(jq -n --arg url "$target" \
    '{url:$url,formats:["markdown"],timeout:60000}')"
  if curl --silent --show-error --max-time 75 -X POST \
    "$base_url/v2/scrape" -H 'Content-Type: application/json' \
    -d "$payload" > "$response"; then curl_exit=0; else curl_exit=$?; fi
  success="$(jq -r '.success // false' "$response" 2>/dev/null || printf false)"
  status="$(jq -r '.data.metadata.statusCode // .error // "none"' \
    "$response" 2>/dev/null || printf unreadable)"
  printf '%s\t%s\t%s\t%s\t%s\n' \
    "$i" "$target" "$curl_exit" "$success" "$status" >> "$out/summary.tsv"
done

docker stats --no-stream --format json > "$out/container-stats.json"
docker compose restart > "$out/restart.log" 2>&1
for attempt in $(seq 1 60); do
  if curl --fail --silent --max-time 5 "$base_url/v0/health/readiness" \
    > "$out/readiness-after-restart.json"; then break; fi
  sleep 2
done
docker compose ps --all --format json > "$out/containers-after.json"
jq -n '{url:"https://example.com",formats:["markdown"],timeout:60000}' | \
  curl --fail-with-body --silent --show-error --max-time 75 \
    -X POST "$base_url/v2/scrape" -H 'Content-Type: application/json' -d @- \
    > "$out/restart-scrape.json"

jq -e -s 'all(.[]; .success == true and .data.metadata.statusCode == 200)' \
  "$out/responses/01.json" "$out/restart-scrape.json" >/dev/null
printf 'Saved verification record: %s\n' "$out"

在首次抓取和重启后的抓取都通过之前,不要依据这份记录发布成功结论。失败响应也必须全部保留:它们能够揭示 DNS、出站访问、反爬行为、目标状态或技术栈本身的问题;删除失败记录,只会削弱证据价值。

看清默认技术栈的能力边界

Firecrawl 自托管提供核心路由,并不覆盖 Firecrawl 的全部产品能力。 只有经过测量的需求确实需要时,才添加额外服务;不要仅仅因为某个配置项存在就启用它。

需求默认自托管技术栈额外工作Cloud 方案
Scrape、crawl、map、search已包含自行运维并监控依赖已包含且由平台托管
Fetch 与 Playwright 处理已包含自行负责容量和失败处理由平台托管
基于 LLM 的抽取或格式未配置接入 OpenAI 兼容提供商或 Ollama,再单独测试提供托管的模型调用路径
高级反爬能力不包含 Fire-engine单独运行并配置 Fire-engine在支持范围内由平台托管
截图与页面操作默认路径不可用需要 Fire-engine视产品与套餐而定
Agent、Browser、Interact、控制台、企业控制默认技术栈不包含核实外部服务要求属于 Cloud 产品能力
身份验证、TLS、持久化、备份、恢复评估基线并不完整需要设计、实现、测试并持续运维服务控制由 Firecrawl 负责

如果要在这次部署决策之外比较 Cloud 搜索与检索方案,可参阅 AI 搜索 API 对比,其中覆盖了更广泛的供应商。是否更换抓取工具,则是另一个采购问题。

哪些团队最能从自托管中获益

最适合的团队通常已经拥有平台工程能力,而且确实有控制要求。 在小规模使用下,仅仅追求更低的单页价格并不充分。

排名团队与场景具体工作流价值所在
1拥有已批准云账户的受监管产品团队在指定账户内运行核心抓取,限制出站路由,保留验证记录,再把干净 Markdown 送入内部检索管线团队可按自身控制框架管理基础设施、数据流和操作人员
2必须检查或修改抓取引擎的公司锁定源码、审查变更、添加范围明确的内部补丁,并在每次升级前重新运行固定样本当所需行为属于引擎本身时,源码访问权可以免去等待供应商的时间
3已在运维 PostgreSQL、Redis、RabbitMQ、TLS、密钥和监控的平台团队将 Firecrawl 纳入现有运行手册、告警、备份系统和事件响应流程现成的运维能力降低新增的所有权负担
4实施受控出站访问的工程团队让抓取流量通过获批代理,记录目标地址,并在启用可选提供商前验证数据流部署可以遵守组织网络策略,无须另开例外
5需要比较不同版本抓取表现的团队对相同的 10 个 URL 运行测试,保留原始 JSON,执行重启,再将记录与上一个锁定构建对比版本决策以可重复证据为依据,而不是截图和记忆
6只需要核心路由的产品使用 scrape、crawl、map 和 search,不为不需要的 Cloud 专属功能付费或形成依赖更窄的需求边界更容易理解和维护

不合适的场景同样明确。一个只想获得稳定抓取端点的 2 人产品团队,会额外买下一个原本不需要的运维项目。如果团队依赖 Agent、Browser、Interact、截图、页面操作或托管式高级抓取能力,从自托管起步也站错了功能边界。

30 天成本工作表:控制权确实有账单

按明确且保守的假设计算,无论是 1,000 还是 10,000 个基础页面,托管版 Firecrawl 都更便宜。 自托管预算采用 DigitalOcean Basic Droplet:8 vCPU、16 GiB RAM、320 GiB SSD,每月 $96;再加 100 GiB 持久化 Volume,费用 $10,以及 $19.20 的每周备份预算。DigitalOcean 在 2026 年 9 月 22 日列出了这些价格。

16 GiB 并不是官方最低配置,而是根据锁定版本的 Compose 文件作出的预算假设:其中 API 服务的上限为 8 GiB,Playwright 为 4 GiB,同时数据库、缓存、队列和其他进程仍需占用资源。只有负载测试才能确定合适的主机规格。

运维时间才是更大的成本项。本工作表假设前 30 天需要 4 小时安装和 2 小时维护,并按每小时 $100 的综合成本计算。这只是一个假设,并非市场费率,请换成自己的实际数字。

首个 30 天成本项自托管Cloud:1,000 个页面Cloud:10,000 个页面
计算资源$96.00已包含已包含
持久化 Volume$10.00已包含已包含
每周备份预算$19.20已包含已包含
运维人工$600.00本 API 账单中为 $0本 API 账单中为 $0
Firecrawl 套餐与 credits$0$0$44.00
合计$725.20$0$44.00

Firecrawl Cloud 每抓取一个基础页面消耗 1 个 credit。Free 套餐以 $0 提供 1,000 credits。若按月付费抓取 10,000 个页面,Hobby 套餐的 5,000 credits 价格为 $19,另 5,000 个 Hobby credits 需要购买 5 次、每次 $5,合计 $44。Hobby 年付的月均有效价格可降至 $41,但前提是按年付费。

架构式成本对比:三十天内成功抓取一千和一万个页面
按给定的首月假设,自托管在两种规模下都需 $725.20,Cloud 则分别为 $0 和 $44。这是预算对比,不是主机容量测试结果。

这套模型没有计入税费、可选 LLM 提供商、代理费用、Fire-engine、高可用、超额流量、法律审查和事件补救,也没有把未经证实的吞吐能力算给自托管主机。后续月份的示例中,去掉 4 小时安装工作后,自托管成本降至 $325.20,但在两种假设规模下仍高于 Cloud。

这并不意味着自托管永远无法省钱。只有基准测试先证明容量,再用足够大的规模把固定基础设施和运维工时分摊到更多成功页面上,节省才会出现。按 10,000 个页面计算,这份工作表中控制需求必须足以证明首月多付 $681.20 是合理的。

围绕这道缺口,值得做的 3 个产品

最有潜力的是验证工具包:它不与 Firecrawl 本身竞争,却能把含糊的安装结果变成证据。 单次实时搜索快照返回了 8 条相关搜索和 9 个 People Also Ask 问题,其中 5 条相关搜索聚焦 Docker、Docker Compose、免费使用、Cloud 对比或 API key;问题里则直接有人询问 Firecrawl 是否昂贵、是否安全。

1. 自托管就绪度与验证工具包

面向工程负责人的本地 CLI 与报告工具。它检查版本、主机、Compose 状态、真实抓取路径、预期失败和重启行为,同时列出生产缺口,最后生成一份可供审核的签名归档。

需求信号很直接:Google 相关搜索包含 Firecrawl self-host DockerFirecrawl self-host docker composeFirecrawl self-host API key。最小可售版本包括 1 条命令、固定测试样本、HTML 报告和脱敏控制。难点在于环境差异:报告可以证明实际运行了什么,却无法保证所有目标站点或未来版本都会表现一致。

2. Cloud 与自托管成本规划器

这是一款部署计算器,输入成功页面数、选项、并发量、运维费率、恢复目标和必需功能,即可并列展示 Cloud credits、基础设施和人工成本,而且所有假设都清晰可见。

搜索快照包含 Firecrawl self-hosted vs cloud,People Also Ask 中则有 Is Firecrawl expensive?Is there a free version of Firecrawl available?。当前价格锚点很明确:1,000 个 Cloud credits 为 $0;按月付费的 5,000 个 Hobby credits 为 $19;每额外 1,000 个 Hobby credits 收费 $5。MVP 是一份带版本的价格表和可导出的工作表。难点仍是自托管容量:没有买方自己的基准测试,计算器只能展示区间,而不能编造盈亏平衡点。

3. 生产加固蓝图

这是为已经通过评估、接下来需要身份验证、TLS、持久化数据、备份、恢复测试、监控、密钥管理和受控出站访问的团队准备的一套强约束基础设施模块。

需求信号分别来自 People Also Ask 问题 Is Firecrawl safe to use? 和相关搜索 Firecrawl self-host API key。Firecrawl 自己的指南已经列出了所有尚未完成的生产决策,因此真正的价值在于实施并提供证据,而不是假装这些责任从未被写明。MVP 包括 1 个受支持的云目标、锁定版本的基础设施代码、告警和恢复演练。难点在于责任边界:可复用模块无法替客户认证其安全或合规状态。

边界与不粉饰的结论

在尚未量清运维投入之前,不要为了省下 $19 就选择 Firecrawl 自托管。 这套基线关闭了 API 身份验证,没有 TLS,也没有为 PostgreSQL、Redis 和 RabbitMQ 添加持久化存储,更不具备高可用。把它暴露在不受信任的网络中,会让评估阶段的权宜之计变成安全错误。

不要假设默认技术栈与 Cloud 功能完全一致。LLM 格式需要额外提供商,Fire-engine 是独立组件,默认路径不提供截图和操作功能;Agent、Browser、Interact、控制台及企业控制仍属于 Cloud 能力,或者需要另行验证相关服务。

不要根据 Compose 资源上限或这份工作表确定生产规格。内存上限不等于推荐主机配置。先运行固定样本,再加入自己工作负载中的代表性页面,测量并发量和失败类型,之后还要测试备份恢复与升级回滚。

值得继续推进的最强理由,是团队确实有 Cloud 无法满足的控制要求;最站不住脚的理由,则是“免费”二字。

周一就做这件事

安排 1 名工程师,在一台一次性私有主机上用 2 小时完成评估。 锁定 v2.11.162,运行官方的单次抓取,再执行用于保存证据的验证脚本;如果重启后的抓取没有通过,就到此为止。随后,把工作表中的每小时 $100 运维费率换成自己的综合成本,并用 1 句话写清控制要求。如果这句话仍然含糊,就使用 Cloud;如果足够具体,则应先规划生产控制,再增加用量。

Firecrawl 贵吗?

取决于部署方式和页面量。Firecrawl Cloud 每月前 1,000 个基础页面 credits 的费用为 $0。在这份工作表中,按月购买 Hobby 加按量付费,10,000 个基础页面需要 $44;而假设投入 6 小时运维的自托管首月示例成本为 $725.20。只有在自己的基准测试和控制要求足以证明固定工作值得投入时,自托管才可能在财务上成立。

Firecrawl 有免费版本吗?

有。Firecrawl 提供开源部署路径,Firecrawl Cloud 的 Free 套餐每月也包含 1,000 credits。开源免去的是 Firecrawl 套餐费,而不是计算、存储、安全、监控、升级、恢复和运维人工成本。

使用 Firecrawl 安全吗?

只有部署在受信任网络内,并配备适当的主机与网络控制,这套评估基线才是安全的。它关闭了数据库身份验证,也不包含生产级身份验证设计、TLS、持久化存储、高可用或恢复方案。对外暴露前,必须先实施并测试这些控制,安全性取决于此。

如何用 Docker Compose 自托管 Firecrawl?

安装 Git、Docker、Docker Compose v2 和 curl。检出 v2.11.162,创建包含 4 个值的基线 .env,执行 docker compose up --build -d,检查每项服务和 readiness,最后必须取得一次成功的 POST /v2/scrape 响应。保存原始结果,并在重启后再次抓取。

Firecrawl 自托管需要 API key 吗?

受信任网络评估将 USE_DB_AUTHENTICATION=false,因此本地请求不使用 API key。但这不是面向公网的生产设计。Firecrawl 明确指出,生产身份验证需要完整且受支持的身份与数据库设计,并配合网络控制和 TLS;单靠 1 个环境变量并不够。

如果你希望围绕自己的控制要求构建锁定版本、可观测的部署方案,请参阅 AI 生产系统

最近更新
2026年9月22日
分类
Build

在 Google 中优先显示本站

将 omidsaffari.com 添加为 Google 搜索的优先来源

把 omidsaffari.com 设为优先来源,Google 会在 Top Stories、AI Overviews 和 AI Mode 中为您优先展示。

AI Agent 付费重试怎么管:把购买权限交还给人

AI Agent 付费重试怎么管:把购买权限交还给人

一套已有两道人审关卡的视频工作流,仍让 AI Agent 在自检失败后自行重做;等人查看时,所有者密钥下已产生 $5.48 费用。本文拆解漏洞为何出在“再次购买”的权限边界,并给出可执行的控制方案:审查只记录问题,由人批准重试,付费渲染函数在调用前校验并消费许可,防止模型把自己的重做建议变成付款授权。2026年9月22日Build
MindStudio 评测:AI智能体开发平台值不值得用?

MindStudio 评测:AI智能体开发平台值不值得用?

这篇 MindStudio 评测拆解其 AI 智能体开发平台的工作流、模型选择、集成、人工审核与测试能力,并核对 Free、Individual 和 Business 方案。文中按 1,000 与 10,000 个任务测算模型、审核和搭建成本,说明个人开发者、团队与自动化场景应如何判断是否值得试用。2026年9月22日Build
Wispr Flow 与 Superwhisper 怎么选:价格、隐私与团队功能对比

Wispr Flow 与 Superwhisper 怎么选:价格、隐私与团队功能对比

Wispr Flow 和 Superwhisper 该怎么选?本文从价格、离线能力、隐私边界、团队协作和平台支持逐项对比,并给出 20 句纠错测试方案。Superwhisper 更适合需要本地处理和灵活模型配置的个人,Wispr Flow 则更适合重视共享词典、集中计费与云端工作流的团队。2026年9月22日Build
AI自动化公司怎么选:服务商证据、价格与交接指南

AI自动化公司怎么选:服务商证据、价格与交接指南

如何选择真正能把工作流交付到生产环境的AI自动化公司?本文对比HatchWorks AI、Leanware、Axe Automation与Coretus的服务定位、公开价格、所有权、支持和退出条款,并用统一的90天成本模型与20案例试点框架,帮企业看清报价、风险、验收标准和最终交接边界。2026年9月22日Build
Claude Code Projects 实战指南:从配置到并行审核

Claude Code Projects 实战指南:从配置到并行审核

Claude Code Projects 测试版把一个长期对话变成云端开发协调台。本指南带你检查账号资格、连接 GitHub、配置项目说明和云环境,拆分两项互不冲突的任务,并逐一审核线程、分支、用量与上下文继承规则;同时讲清每天 200 个新线程的上限、适用场景、成本及当前限制,帮助你先在可丢弃仓库中安全试跑。2026年9月21日Build
客服工单自动分配:Jev AI 置信度门控实战

客服工单自动分配:Jev AI 置信度门控实战

想把客服工单自动分配接入现有系统?本文用一个可运行的 Jev AI 路由方案,讲清 Choice、Score 与 Noul 的返回结构、置信度门控、人工兜底和 30 条工单的影子测试,并拆解成本、适用边界与两个可落地的产品方向,同时说明如何记录模型版本、概率、延迟和错误标签,让团队在不交出最终控制权的前提下安全上线。2026年9月21日Build
Claude Code 读取 AGENTS.md:原生支持的正确配置方式

Claude Code 读取 AGENTS.md:原生支持的正确配置方式

Claude Code 读取 AGENTS.md 已有原生方案,但版本、项目指令优先级、配置模式和服务提供商都会影响结果。本指南梳理 v2.1.277 的加载规则,讲清 CLAUDE.md 与 AGENTS.md 如何取舍、怎样启用双文件模式、何时保留导入桥接,并用无害探针验证新会话到底加载了哪份项目指令。2026年9月19日Build
Claude Code MCP 启动超时:四类超时怎么配

Claude Code MCP 启动超时:四类超时怎么配

Claude Code 2.1.274 新增 CLAUDE_CODE_MCP_STARTUP_WAIT_MS,用于限制首轮非交互执行等待 MCP 服务器的时间。本文讲清它与 MCP_TIMEOUT、工具调用超时和任务截止时间的区别,并提供可复现测试、CI 就绪门禁及自动化场景配置建议,让定时任务在依赖未就绪时快速失败。2026年9月17日Build
订阅通讯

每周日,一封信。写运转中的系统,不写热评。

每周一期。无垃圾邮件。随时退订。