feat: web search MCP v1 (oh-my-pi pattern, Python stdlib)
web_search auto chain Perplexity/Exa/Tavily/Brave/SearXNG/DuckDuckGo with pinned-provider no-fallback, web_fetch with head+tail truncation, codex-home seeding helper (idempotent, never writes keys). Tests: cloud/tests/test_websearch_mcp.py 12/12 (mocked HTTP). Not wired into worker, not deployed, paid backends not live-tested.
This commit is contained in:
1 parent
5026e75b2c
commit
f8acdffb4a
5 files changed
+1194
No files matched your search
@@ -3,6 +3,25 @@
|
||||
语义化版本见 `VERSION`(当前 0.1.0)。以下按日期倒序,只列已交付
|
||||
的大项,每项附实测证据;未建成的东西在“诚实边界”里明说,不夸大。
|
||||
|
||||
## 2026-10-28:网页搜索 MCP v1(oh-my-pi 模式,Python 实现)
|
||||
|
||||
- 新增 `cloud/websearch.py` + `cloud/websearch_mcp.py`(纯标准库):
|
||||
stdio MCP 服务器暴露 `web_search` / `web_fetch`,provider 链
|
||||
按 Perplexity → Exa → Tavily → Brave → SearXNG → DuckDuckGo
|
||||
的 auto 顺序回退,pin 单个名字时不回退;抓取去脚本样式、
|
||||
默认 15000 字符头尾截断并标 `[TRUNCATED]`;key 只走进程
|
||||
环境变量,错误串不含 key(单测断言)。
|
||||
- 新增 `ensure_codex_home_websearch`:把两个脚本拷进租户
|
||||
codex-home,缺失时追加 `[mcp_servers.websearch]`,已有
|
||||
section 绝不重写、租户改过的脚本绝不覆盖。
|
||||
- 单测:`cloud/tests/test_websearch_mcp.py` 12 个全部通过
|
||||
(链式回退、pin 不回退、全部失败、Perplexity 答案与引用、
|
||||
Brave/Tavily 映射、DuckDuckGo HTML 解析、抓取截断与拒绝、
|
||||
MCP 帧、配置合并幂等),不联网、不需要真实 key。
|
||||
诚实边界:付费后端只以 mock 验证请求字段与映射,未用真实
|
||||
key 实测;worker 自动播种未接线、生产 egress 白名单未改、
|
||||
本批只本地提交,未推、未建 PR、未合并、未部署。
|
||||
|
||||
## 2026-10-28:长 goal 任务异常退出可断点续跑(不再 terminal failed)
|
||||
|
||||
- 实弹事故:11:49 认领的 8 轮 goal 长任务跑约 60 分钟后终局
|
||||
|
||||
Reference in new issue
Block a user