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:13457CSS 样式分析
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 客户端 | 无(内置) |
| 暴露方式 | 虚拟局域网 IP | URL + QR 码 |
| 用户操作 | 需要外部账号和配置 | 一键生成分享链接 |
| 安全性 | 组网内其他节点可见 | 单向隧道链接 |
总结
本次盲区分析发现了 3 个此前完全未文档化的技术点:
| # | 盲区 | 严重性 | 说明 |
|---|---|---|---|
| 1 | DuckDuckGo HTML 抓取搜索引擎 | 中 | web_search 内部实现完全逆向 |
| 2 | 预发布 API 环境 staging 端点 | 低 | pre-llm-api-cce.atomgit.com 灰度测试环境 |
| 3 | Oray 蒲公英远程访问集成 | 中 | 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 个新的盲区并完成文档化