中科院出的research-claw据说可以帮助修改latex论文等,尝试记录如下:
- 激活环境
cd workspace/research-claw
source .venv/bin/activate
- github地址 github.com/nanoAgentTe…
- 启动 Start the gateway — this launches the Web UI
python cli/main.py gateway --port 18790
-
登陆:python cli/main.py login
-
邓罗错误、缺少QT界面,运行如下: sudo apt update sudo apt install libxcb-cursor0 libxkbcommon-x11-0 -y
—————— GPT5.3 codex
做了 3 处最小改动来修复:
- 在 openai_provider.py 增加了
os导入,用于读取/改写进程环境变量代理配置。 - 在 openai_provider.py 新增
_normalize_proxy_url和_normalize_proxy_env:把不被httpx识别的socks://...自动改成socks5://...,并覆盖HTTP_PROXY/HTTPS_PROXY/ALL_PROXY(含小写)。 - 在 openai_provider.py 的
get_client()初始化AsyncOpenAI之前调用_normalize_proxy_env(),确保客户端创建前代理协议已合法化,不再触发Unknown scheme for proxy URL。
————log细节如下
遇到的socket问题,解决如下:
Optimizing tool selection...我会先定位代理配置是从哪里读取的,并确认为什么 socks:// 被传给了 httpx;接下来我会修正配置并验证不会再触发这个报错。
Searched for regex socks://127.0.0.1:7891|socks://, 110 results
已确认错误不是业务逻辑本身,而是底层客户端读到了不合法代理协议。下一步我会检查项目里是否有把 socks:// 注入到环境变量或配置里的代码,并在入口处做兼容修复。
Searched for regex HTTP_PROXY|HTTPS_PROXY|ALL_PROXY|proxy|socks5|socks:// (**/providers/**/*.py), 4 results
Searched for regex HTTP_PROXY|HTTPS_PROXY|ALL_PROXY|proxy|socks5|socks:// (**/*.py), 19 results
我已经确认并非 providers 里显式传了 proxy 参数,问题大概率来自环境变量(如 ALL_PROXY)。我继续查启动入口是否写入了 socks://,并准备做统一修正(自动改写成 socks5://)。
Searched for regex ALL_PROXY|HTTPS_PROXY|HTTP_PROXY|os.environ\[.*PROXY|setdefault\(.*PROXY (**/*.py), no results
定位结果:项目代码里没有硬编码 socks://,错误来自运行环境代理变量。为了彻底避免再次踩坑,我将修改 OpenAI provider,在创建客户端前自动把 socks:// 规范化为 socks5://(仅影响当前进程),并加日志提示。
我现在要改 openai_provider.py :在初始化客户端前统一修正代理环境变量,把不被 httpx 识别的 socks:// 自动转换成 socks5://,从源头消除该异常。
Generating patch (51 lines) in
代码修改已完成并通过静态错误检查。接下来我会快速核对依赖是否支持 socks5://,确保修完协议后不会出现新的代理依赖问题。
Ran terminal command: cd /home/yang/workspace/research-claw && ./.venv/bin/python - <<'PY' import pkgutil mods = {m.name for m in pkgutil.iter_modules()} print('socksio' in mods) print('httpx_socks' in mods) PY
Ran terminal command: cd /home/yang/workspace/research-claw && ALL_PROXY='socks://127.0.0.1:7891' ./.venv/bin/python - <<'PY' from providers.openai_provider import OpenAIProvider import os p = OpenAIProvider(api_key='x', api_base='http://localhost:8080', default_model='gpt-3.5-turbo') _ = p.get_client() print('ALL_PROXY=', os.environ.get('ALL_PROXY')) print('OK') PY
我会把这次根因和修复要点记到 memory,避免后续再次遇到同类 socks:// 代理协议问题。
Read memory
Ran terminal command: nl -ba providers/openai_provider.py | sed -n '1,90p'
已修复这个报错的根因:运行环境里用了 socks://127.0.0.1:7891,而 httpx/openai 客户端不识别 socks:// 协议(应为 socks5://)。
修改内容
- 在 openai_provider.py 新增代理协议规范化逻辑:
- socks://... 自动改写为 socks5://...
- 同时处理大小写环境变量:HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / http_proxy / https_proxy / all_proxy
- 在 openai_provider.py 的 get_client 初始化前执行规范化,确保每次创建 AsyncOpenAI 客户端前都不会吃到非法代理协议。
验证结果
- 我做了本地冒烟测试:手动注入 ALL_PROXY=socks://127.0.0.1:7891 后初始化 provider。
- 输出显示已自动修正并成功初始化:
- Normalized proxy env ALL_PROXY: 'socks://127.0.0.1:7891' -> 'socks5://127.0.0.1:7891'
- OK
- 语法/类型错误检查:无新增错误。
说明
- 这次修复是进程内兜底,能直接避免你日志里的 ValueError: Unknown scheme for proxy URL。
- 你之前工作区里还有其他未提交改动(例如 settings (copy).json、.olauth copy),我没有改动它们。
你现在可以做的下一步
- 重启网关进程后再测一次 LLM 调用。
- 建议把系统或 shell 里的代理变量也改成 socks5://127.0.0.1:7891,避免其它工具再踩同样问题。
Made changes.