From 84c79302d78356a059a8e21db25803aee19afa39 Mon Sep 17 00:00:00 2001 From: host Date: Fri, 30 Oct 2026 01:02:33 +0800 Subject: [PATCH] =?UTF-8?q?align:=20=E8=AE=B0=20MCP=20env=20=E6=A0=B9?= =?UTF-8?q?=E5=9B=A0=E4=B8=8E=E7=AB=AF=E5=88=B0=E7=AB=AF=E5=86=8D=E6=B5=8B?= =?UTF-8?q?=E7=BB=93=E8=AE=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MCP 子进程不继承 Codex env,docker -e 无用,env 须 写 config;手动加 env 后 web_search 立刻成功,代码 修法 dc9b29e 已落地并经全新项目验证(config 自动 写进 MCP env,web_search 5/6 成功)。 - 端到端仍未报出数字:web_fetch 4 次全败于 Tinyproxy 403 Filtered,一级来源域名不在 egress 白名单里; 下一层是主机白名单变更,另等用户定,非代码。 清理已核,用户剩余 0,生产 health fd9fe5f。 --- docs/chatgpt-codex-alignment.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/chatgpt-codex-alignment.md b/docs/chatgpt-codex-alignment.md index f0e1857..b5bda0b 100644 --- a/docs/chatgpt-codex-alignment.md +++ b/docs/chatgpt-codex-alignment.md @@ -126,6 +126,38 @@ 钉住、env 覆盖、空值恢复),连同 MCP / worker 测试 共 21 项全过。生产仍未部署此修法,live-info 端到 端再测另等用户定。 + +## MCP env 真正根因 + 端到端再测(2026-10-30) + +- 再测先失败,暴露了更深一层:临时 worker 新代码 + 跑 live-info,MCP 链只有 duckduckgo,DNS 瞬间失败, + 而同一任务里 Codex bash 的 env 明明有 SEARXNG_URL + 与 proxy。结论:Codex 的 MCP 子进程不继承 Codex + 进程 env,docker -e 再全也没用,env 必须写进 + config.toml 的 `[mcp_servers.websearch.env]`。 + 手动给租户 config 加 env 后,同一项目里 web_search + 立刻返回真实北京天气 3 条,证实。 +- 代码修法(提交 dc9b29e):`ensure_websearch_mcp_env` + 写/替换租户 config 的 env 小节(其它小节不动, + 空 env 不写),worker 在 `_docker_task_context` + 算出网关后、容器启动前调用它(网关此时才已知)。 + 测试新增 `test_websearch_mcp_env.py` 4 项,相关 + 共 33 项全过。 +- 全新项目端到端再测(任务 537f8b7c,临时 worker + dc9b29e,生产未部署):代码修法生效——租户 + config 里自动写进了 MCP env(含网关 10.20.21.1:8888 + 的 proxy 与 SEARXNG_URL),技能 3 个都在,web_search + 6 次里 5 次成功;但最终仍未报出天气与时间,因为 + web_fetch 4 次全败于 Tinyproxy `403 Filtered`: + 模型要 fetch 的一级来源(open-meteo、worldtimeapi、 + timeapi.io、time.is 等)都不在 egress 白名单里, + 搜索摘要本身又没有可靠数字。下一层修法不是代码, + 是主机 egress 白名单加这些一级来源域名并 reload + tinyproxy(同时改仓库 deploy/egress/tinyproxy-filter, + 否则下次部署会 revert),属生产安全配置变更, + 另等用户定。清理已核:两次测试的用户/项目/任务、 + 租户目录与网络、临时代码全删,用户剩余 0, + 生产 health 当时 fd9fe5f、worker_ok。 - 清理已核:第二次测试的用户/项目/任务、租户目录、 临时 worker 代码与临时 key 全部删除,用户剩余 0, 生产 health 仍 3696dad、worker_ok;第一次测试的