安装Research-claw

8 阅读4分钟

中科院出的research-claw据说可以帮助修改latex论文等,尝试记录如下:

  • 激活环境
cd workspace/research-claw
source .venv/bin/activate

image.png

  • 启动 Start the gateway — this launches the Web UI

python cli/main.py gateway --port 18790

  • 登陆:python cli/main.py login image.png

  • 邓罗错误、缺少QT界面,运行如下: sudo apt update sudo apt install libxcb-cursor0 libxkbcommon-x11-0 -y

image.png

—————— GPT5.3 codex

做了 3 处最小改动来修复:

  1. 在 openai_provider.py 增加了 os 导入,用于读取/改写进程环境变量代理配置。
  2. 在 openai_provider.py 新增 _normalize_proxy_url_normalize_proxy_env:把不被 httpx 识别的 socks://... 自动改成 socks5://...,并覆盖 HTTP_PROXY/HTTPS_PROXY/ALL_PROXY(含小写)。
  3. 在 openai_provider.py 的 get_client() 初始化 AsyncOpenAI 之前调用 _normalize_proxy_env(),确保客户端创建前代理协议已合法化,不再触发 Unknown scheme for proxy URL

————log细节如下

遇到的socket问题,解决如下: Optimizing tool selection...我会先定位代理配置是从哪里读取的,并确认为什么 socks:// 被传给了 httpx;接下来我会修正配置并验证不会再触发这个报错。

Read

Searched for regex socks://127.0.0.1:7891|socks://, 110 results

Read , lines 1 to 260

已确认错误不是业务逻辑本身,而是底层客户端读到了不合法代理协议。下一步我会检查项目里是否有把 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

Read

我已经确认并非 providers 里显式传了 proxy 参数,问题大概率来自环境变量(如 ALL_PROXY)。我继续查启动入口是否写入了 socks://,并准备做统一修正(自动改写成 socks5://)。

Searched for regex ALL_PROXY|HTTPS_PROXY|HTTP_PROXY|os.environ\[.*PROXY|setdefault\(.*PROXY (**/*.py), no results

Read , lines 1 to 280

Read , lines 320 to 520

定位结果:项目代码里没有硬编码 socks://,错误来自运行环境代理变量。为了彻底避免再次踩坑,我将修改 OpenAI provider,在创建客户端前自动把 socks:// 规范化为 socks5://(仅影响当前进程),并加日志提示。

Checked , no problems found

Read , lines 1 to 140

Read , lines 140 to 470

我现在要改 openai_provider.py :在初始化客户端前统一修正代理环境变量,把不被 httpx 识别的 socks:// 自动转换成 socks5://,从源头消除该异常。

Generating patch (51 lines) in

Checked , no problems found

代码修改已完成并通过静态错误检查。接下来我会快速核对依赖是否支持 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

Read

Read

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

Created memory file

Ran terminal command: nl -ba providers/openai_provider.py | sed -n '1,90p'

Read changed files in

已修复这个报错的根因:运行环境里用了 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),我没有改动它们。

你现在可以做的下一步

  1. 重启网关进程后再测一次 LLM 调用。
  2. 建议把系统或 shell 里的代理变量也改成 socks5://127.0.0.1:7891,避免其它工具再踩同样问题。

Made changes.