 rootandClaude Opus 5.5
|
16083942c0
|
feat(sites): 出口统一与 Cloudflare 过挑战级联(CF-2)
- 出口:站点请求不再隐式继承 HTTP(S)_PROXY,没开代理明确直连(创建客户端时临时拿掉代理环境变量,Deno 2.9 语义见 egress.ts),
开了走站点代理;TMDB / Brave / 图片改为显式按环境变量(行为不变)
- CloudflareGate:浏览器代理期直接代抓 → HTTP(可复用时带 cf_clearance)→ 挑战 → 浏览器过挑战(同站 30 分钟一次、单飞)
→ cf_clearance 仅在 UA 跟随浏览器且两端同出口时给 HTTP,重试 1 次记 cfReuse → 仍被挑战则浏览器代抓并进入 6 小时代理期
- 浏览器:solveSiteChallenge(自动放行 ≤15s / 系统发起视觉子流程最多 2 次 / 真验证码转人工待处理)、fetchSiteHtml(profile 锁 + 站点令牌)、
交还后读回 cf_clearance 继续;site.config.cloudflare 状态契约
Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
2026-09-30 21:26:54 +08:00 |
|
 rootandClaude Opus 5.5
|
d53df25fc8
|
feat(agent): web.search / web.fetch via Brave Search (WEB-1)
- adapters/websearch: Brave client (X-Subscription-Token, error classes),
result normalization with redaction/truncation, SSRF guard, HTML→text fetch
(10s, 512KB, text/html|text/plain only)
- modules/websearch: 10-min PG cache (region websearch), cross-process
per-minute limit, web.fetch allowlist = URLs from the caller's latest
web.search; POST /websearch/test
- settings.agent.webSearch (key write-only → secret_ref); settings card
under Agent; web.* offered to the model only when enabled, plus a system
prompt rule; outputs marked untrusted
- capability count 27 → 29; e2e E13; runbook docs/runbook/websearch.md
Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
2026-09-29 00:14:08 +08:00 |
|