Skip to content

AtomCode 深度盲区分析 #7 — 搜索引擎集成、预发布环境、远程访问

持续分析循环 — 2026-06-24 14:19
发现 3 个此前完全未文档化的子系统


1. DuckDuckGo 网页搜索引擎(web_search 工具内部实现)

源文件: crates/atomcode-core/src/tool/web_search.rs

系统概述

AtomCode 内置了一个基于 DuckDuckGo HTML 抓取的网页搜索引擎,作为 LLM 的 web_search 工具。此前分析文档仅提及该工具存在,但未深入其实现细节。

技术实现

搜索引擎: DuckDuckGo (非官方 HTML 端点)
端点:     https://html.duckduckgo.com/html/
方法:     POST
参数:     q=<查询词>
UA:       Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36
超时:     20 秒 (tokio timeout)
请求超时: 15 秒 (curl --max-time 15)

HTML 解析逻辑

搜索结果从 HTML 页面中解析:

解析目标选择器/模式说明
结果链接class="result__a" 中的 href 属性提取 uddg= 参数获取实际 URL
结果摘要class="result__snippet"搜索结果摘要文本
默认结果数8 条可配置 max_results

调用接口

rust
// 工具定义
web_search(query: String) -> Vec<SearchResult>
// 参数
query: string    // 搜索查询
max_results?: int // 结果数量(默认 8)

// 返回
[{ title, url, snippet }]

与相关工具的协作

web_search(query)          → DuckDuckGo → 搜索结果列表

web_fetch(url)             → 读取具体页面内容(README、文档、源码等)

日志模式

+web_search before cmd.output().await query=
*web_search after cmd.output().await is_ok=
<web_search tokio timeout (20s) fired

限制与降级

  • 超时后返回降级结果
  • 网络不可达时返回:Network may be unreachable or DuckDuckGo is slow
  • 使用 curl 命令执行 HTTP 请求(而非纯 Rust HTTP 客户端)

安全注意事项

  • DuckDuckGo HTML 解析依赖于页面结构,可能随 DDG 更新而失效
  • 无 API key 要求(非官方接口)
  • 属于"屏幕抓取"(screen scraping)实现

2. 预发布/Staging API 环境

发现: pre-llm-api-cce.atomgit.com 子域名

端点信息

生产环境: https://llm-api.atomgit.com/v1
预发布环境: https://pre-llm-api-cce.atomgit.com/v1

功能分析

预发布环境用于在正式发布前测试新模型和 API 变更:

rust
// 认证流程中的判断逻辑
"Use the AtomGit OAuth flow by setting base_url to https://pre-llm-api-cce.atomgit.com/v1"

// 错误处理
"server returned an empty model list"

触发条件

  • 通过环境变量或配置文件切换 base_url
  • 返回空模型列表时会回退到生产环境
  • 预发布环境模型列表可能不完整

意义

  • AtomCode 团队使用 staging 环境进行模型灰度发布
  • cce 可能表示某个内部项目代号或部署区域
  • 支持在不影响生产环境的情况下测试新 LLM 模型

3. 远程访问 — Oray 蒲公英集成

发现: WebUI SPA 中的 pgy.oray.com 链接

技术实现

位于 WebUI SPA 的远程访问设置面板中:

javascript
// WebUI 远程访问按钮
<button class="ghost-btn header-remote-btn"
  aria-label="远程访问"
  title="远程访问">
  // SVG 图标 (矩形+信号线)
</button>

// 远程访问面板中的链接
<a class="btn btn-primary"
  href="https://pgy.oray.com"
  target="_blank"
  rel="noreferrer">
  前往设置
</a>

Oray 蒲公英 (Pgy) 介绍

  • 蒲公英 (pgy.oray.com) 是上海贝锐信息科技提供的智能组网/SD-WAN 服务
  • 功能:组建虚拟局域网,实现远程访问内网服务
  • 在 AtomCode 中的用途:通过 WebUI 远程访问本地 daemon

远程访问流程

用户本地:
  AtomCode Daemon (127.0.0.1:13457)
       ↕ Oray Pgy 虚拟组网
用户远程设备:
  浏览器 → pgy.oray.com 组网 → 本地 Daemon:13457

CSS 样式分析

css
.remote-access {
  gap: 12px;
}
.remote-state {
  flex-direction: column;
  align-items: ...;
}

样式类名说明:

  • remote-access — 远程访问面板容器
  • remote-state — 连接状态显示区域
  • header-remote-btn — 顶部栏远程访问按钮

与 Tunnel 子系统的关系

注意: 此远程访问机制与已文档化的 Tunnel 子系统(QR 码远程访问)是独立且互补的

特性Oray 蒲公英Tunnel 子系统
技术原理SD-WAN 虚拟组网反向代理隧道
外部依赖需安装 Oray 客户端无(内置)
暴露方式虚拟局域网 IPURL + QR 码
用户操作需要外部账号和配置一键生成分享链接
安全性组网内其他节点可见单向隧道链接

总结

本次盲区分析发现了 3 个此前完全未文档化的技术点

#盲区严重性说明
1DuckDuckGo HTML 抓取搜索引擎web_search 内部实现完全逆向
2预发布 API 环境 staging 端点pre-llm-api-cce.atomgit.com 灰度测试环境
3Oray 蒲公英远程访问集成WebUI SPA 内置的 SD-WAN 远程访问入口

推荐更新: 以上内容应整合入现有文档体系:

  • TOOLS_AND_MODELS_ANALYSIS.md → 补充 web_search 实现细节
  • DAEMON_API_LIVEWIRE_ANALYSIS.md → 补充 staging API 环境说明
  • WEBUI_SPA_ARCHITECTURE.md → 补充远程访问面板分析

逆向命令索引

bash
# 提取 web_search 工具
strings atomcode.bin.bak | grep "^crates/atomcode-core/src/tool/web_search.rs"
# 输出: crates/atomcode-core/src/tool/web_search.rs

# 提取搜索引擎 URL
strings atomcode.bin.bak | grep -E "duckduckgo|bing\.com|google\.com" | sort -u

# 提取 staging 环境
strings atomcode.bin.bak | grep -E "pre-llm-api|staging|llm-api.*atomgit" | sort -u

# 提取 Oray 蒲公英
strings atomcode.bin.bak | grep -iE "pgy|oray|remote.*access|tunnel" | sort -u | head -10

本报告由持续分析循环生成 — 发现 3 个新的盲区并完成文档化

基于 VitePress 构建 · AtomCode v4.25.3 逆向工程分析文档