从StarryClaw项目入手调试 StarryOS的http库使用问题

从StarryClaw项目入手调试 StarryOS的http库使用问题

hejiashenghejiasheng
5 次阅读
StarryOSRust调试reqwestureq
文章目录

从 StarryClaw 项目入手调试 StarryOS 的 HTTP 库使用问题

项目背景

StarryClaw 是一个基于 StarryOS 开发的 raw Agent 项目,目前处于 Demo 阶段,支持以下功能:

  • 目录查询
  • 文件列表展示
  • 内容查询

当前测试使用的是 Ollama 的云端模型,这是一个免费的模型服务。


遇到的问题

在 StarryOS 上运行时,系统响应特别缓慢,单次交互耗时约 30 秒到 1 分钟


调试过程

初步排查

起初怀疑是 StarryOS 本身的网络问题,想要测试网络连通性。但遗憾的是:

  • StarryOS 的网络工具支持尚不完善
  • 由于是 QEMU 虚拟环境,无法使用 ping 命令
  • 系统中也没有 curl 命令

巧妙验证

经过反复尝试,想到一个测试方案:在 Ollama 和 StarryOS 之间添加一个代理,以此来定位是发送端还是接收端的问题。


问题定位

经过多次测试,最终发现问题根源:StarryOS 上的 reqwest HTTP 库存在发送性能问题,数据需要很长时间才能发送出去。

验证方案

为了验证这一结论,用 C 语言编写了一个 socket 测试程序,发现速度提升明显。因此采用了 Rust + C 混合方案 作为临时解决方案。


最终解决

经过进一步探索,找到了更优雅的解决方案:将 HTTP 库从 reqwest 替换为 ureq

问题已解决!


总结

阶段方案结果
问题排查代理测试定位到发送端问题
临时方案Rust + C 混合可行但不够优雅
最终方案替换为 ureq 库✅ 完美解决

评论区0

还没有评论,快来抢沙发吧~

登录 后可发表评论