Geo Sleuth 照片定位

从照片中的地形、地图和影像线索推断拍摄位置,并附上可核查证据。

Star 数
★ 1.7k
最近更新
今天
License
MIT
主语言
Python

30 秒速览

运行形态
Agent 插件 / 技能
可在哪里用
通用 · 跨平台Codex · Claude Code
费用
免费,无需付费服务
上手难度
中 · 需要几步配置
开始前需要
Python 3.10+uvcurlGoogle Chrome 或 Playwright Chromium(用于反向图片搜索)Shell / 命令行网络访问本地文件系统
典型场景
调查者需要在照片没有 GPS、文字或明显地标时,利用铁路桥、山脊和地形缩小拍摄点范围。
不适合
  • 要求完全离线完成定位的用户
  • 需要对未见照片准确率基准的团队

这个 Agent 能做什么,适合哪些场景?

Geo Sleuth 是一个由 `SKILL.md` 和 Python 脚本组成的 Agent Skill,可安装到 Codex、Claude Code、Cursor、Gemini CLI、OpenCode 或 GitHub Copilot 等能运行 shell 命令的代理中。代理读取照片线索后,通过 `board.py` 维护候选地点、证据评分和下一步扫描任务,再调用专门脚本进行地形、OpenStreetMap、卫星影像及街景分析。脚本先检索并排序候选,模型只在排名靠前的结果中判断。最终报告包含经纬度及误差半径、相机朝向、分级置信度和卫星证据图。它在用户本地以 Python 3.10+ 和 `uv` 运行,但多项地图、影像和搜索步骤需要网络服务;README 展示的案例是回归检查,不代表未见照片上的准确率。

用户把照片交给已安装该 skill 的代理,并要求查找拍摄地点。intake.py 读取 EXIF、生成裁剪图、运行 OCR,并可执行百度和 Yandex 反向图片搜索;clues.py 查询线索表,board.py 记录候选、线索、似然评分、排除理由和扫描顺序。随后代理按需要运行 osm.py 查询 OpenStreetMap 要素,terrain.py 扫描地形并拟合山脊线,sun.py 分析阴影,sat_scan.py 对卫星瓦片候选评分,或用 gsv.py、baidu_pano.py 和 match.py 检查街景全景。geo.py 和 pose.py 可计算方位、距离及相机位姿;evidence.py 输出带相机视野标记的卫星证据图。代理给出位置、误差半径、朝向和置信度,并要求每项结论关联实际运行的命令及其生成文件。

  1. 调查者需要在照片没有 GPS、文字或明显地标时,利用铁路桥、山脊和地形缩小拍摄点范围。
  2. 地理爱好者想根据沙丘、山脉和电力线位置,筛选并核验可能的拍摄地点。
  3. 城市研究人员可结合街树开放数据、阴影、坡度和街景,定位一张街道照片。
  4. 使用 Codex 或 Claude Code 的用户希望在代理中运行可复查的照片定位流程,并查看证据图和误差半径。
  5. 维护者希望验证定位脚本变更是否改善已有案例,可重跑仓库提供的沙漠、铁路或樱花街道案例。

如何安装或部署这个 Agent?

先安装 Python 3.10+、uv、curl,并准备 Google Chrome 或 Playwright Chromium 以支持反向图片搜索。可用 skills CLI 将 skill 安装到所选代理:

npx skills add Oldcircle/geo-sleuth

按提示选择代理。也可对六个支持的代理进行用户级安装:

npx skills add Oldcircle/geo-sleuth -g -a claude-code -a codex -a cursor -a gemini-cli -a opencode -a github-copilot -y

或克隆仓库并复制 skill 文件夹:

git clone https://github.com/Oldcircle/geo-sleuth
mkdir -p ~/.agents/skills ~/.claude/skills
cp -r geo-sleuth/skills/geo-sleuth ~/.agents/skills/
ln -s ~/.agents/skills/geo-sleuth ~/.claude/skills/geo-sleuth

Linux 上若 Chromium 系统库缺失,可运行:

uvx playwright install --with-deps chromium

如何使用这个 Agent?

安装后,将照片交给代理并提出定位请求。首次使用时,先运行已安装 skill 目录中的 scripts/doctor.py 并处理失败项:

uv run /path/to/geo-sleuth/scripts/doctor.py

要检查本地元数据、图片处理和 OCR 流程而不执行反向搜索,可运行:

uv run /path/to/geo-sleuth/scripts/intake.py photo.jpg --out-dir intake --no-rev

检查 intake/intake.md 及其中列出的裁剪图和 OCR 输出。正常定位时,直接告诉代理“find where this photo was taken”;代理会按线索运行适当的扫描和验证脚本,并返回位置、朝向与证据图。需要网络检查时可用 doctor.py --network;这会探测服务,不会上传照片。首次运行依赖和模型可能需要下载;模型权重由 match.py 和 sat_scan.py 首次使用时下载。

这个 Agent 有哪些优点和局限?

优点
  • 同一份标准 SKILL.md 加 Python 脚本可用于六种明确列出的代理,也支持能读取该文件并运行 shell 命令的其他代理。
  • board.py 把候选、评分、排除依据和扫描顺序写入流程;README 要求每项结论关联实际运行命令及其输出文件。
  • 工具覆盖 OpenStreetMap、地形高程、卫星瓦片和街景,可用几何与山脊线分析没有文字或地标的照片。
  • 结果包含坐标误差半径、相机朝向、置信度等级和证据图;展示案例包括盲测重跑的误差及耗时。
局限
  • 设置需要 Python 3.10+、uv、curl 和浏览器;首次运行可能下载依赖、Playwright 或机器学习模型。
  • 反向搜索、地图查询、卫星影像和街景依赖外部服务与网络,可能遇到 403、429、验证码、超时或覆盖不足。
  • README 明确说明现有盲测照片此前已解出,结果属于回归检查;尚无未见照片的公开端到端准确率。
  • 维护说明、CLI 帮助、错误信息和默认证据标签为英文;中文来源文本会保留原样。

这个 Agent 与同类方案有什么区别?

README 将流程与仅凭人口规模或地点知名度猜测区分开来:Geo Sleuth 要求脚本先排序候选,并将结论关联到运行命令和产物文件。它也使用百度和 Yandex 反向图片搜索,但文档没有提供与其他定位产品的直接性能比较。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Geo Sleuth 照片定位 当前 71 · 存在缺口 Agent 插件 / 技能免费 ★ 1.7k 今天 Python Codex · Claude Code
BambooAI 数据分析师 85 · 表现良好 网页应用免费 + 模型费 ★ 793 2 天前 Python OpenAI API · Claude API
MiroFlow 研究智能体 53 · 缺口较多 命令行工具免费 + 模型费 ★ 3.1k 8 个月前 Python —
DecisionBox 44 · 缺口较多 自托管服务免费 + 模型费 ★ 120 1 天前 Go OpenAI API · Claude API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
71/ 100 五分制 3.6 / 5
信任安全 16/29
可靠稳定 9/14
适用触发 15/18
规范维护 14/18
有效结果 10/13
证据核验 7/8
查看各维度的扣分理由
信任安全16 / 29 · 2.8/5

README 说明了照片处理流程、脚本、数据源类别、联网搜索和证据文件,因此数据流透明度充分(3)。脚本按任务拆分且未展示明显过宽权限(最小权限2),但未见明确的逐次联网或上传确认机制(用户确认1);照片及 EXIF 等敏感信息的保存、删除和第三方服务处理说明不足(敏感数据1)。测试与文档显示可选代理、网络探测和外部地图服务,但外部影响范围及缓解措施说明有限(外部影响2)。依赖与环境检查有说明,然而所给材料未提供完整依赖安全审查证据(依赖安全1)。有 MIT 许可和数据源说明,但未见明确的逐项来源归属规则(来源归属2);未说明恢复或回滚流程(回滚1)。

可靠稳定9 / 14 · 3.2/5

README、脚本说明及测试文件共同展示了候选排序、证据记录和报告流程,整体自洽,但静态材料不足以证明所有描述均一致实现(自洽性2)。提供 Python、uv、浏览器等设置说明以及 doctor 检查和网络镜像回退测试(依赖可用性2)。测试和文档显示部分服务失败会被区分或报告,但未证明所有失败情形都有面向用户的恢复指引(失败消息2)。

适用触发15 / 18 · 4.2/5

文档覆盖照片地理定位、无文字线索场景、多个具体案例及多种 Agent 平台(受众与场景3)。有区域包、离线回归测试和明确的 unsupported 状态,但所给内容没有完整列出不适用情形或准确性边界(能力边界2)。触发语句简单,并说明通过读取 SKILL.md 执行命令;没有展示避免误触发的规则(触发精度2)。安装路径、Python 版本、平台差异及 macOS/其他系统 OCR 方案均有说明(环境适配3)。

规范维护14 / 18 · 3.9/5

README 的快速开始、安装、工作原理、工具表、案例和基准结构清楚(信息架构3)。提供 CLI 与手动安装方法、多平台路径及首次 doctor 步骤(安装说明3)。脚本和 skill 命名总体清晰,但未见命名兼容策略或稳定性承诺(命名稳定性2)。案例、命令示例、基准及 setup 章节覆盖充分(示例与常见问题3)。明确指出盲测属于回归检查而非未见照片准确率,并提供运行耗时数据;其他限制说明不完整(已知限制2)。MIT 许可文本完整(许可3)。所给材料未展示版本历史或变更日志(版本与变更记录1)。有 CONTRIBUTING 链接及 PR 邀请,但维护责任人、更新承诺和维护路径不明确(维护责任1)。

有效结果10 / 13 · 3.8/5

输出包含坐标误差半径、方向、证据图和分级置信度,且要求结论指向运行命令和产物文件,便于使用(输出可用性3)。脚本化的 OSM、地形、卫星和街景线索组合,针对无 GPS 照片提供明显的增量能力(边际价值3)。README 披露案例需约 32–72 分钟,计算和等待成本较高;没有一般成本或资源预算说明(成本收益1)。

证据核验7 / 8 · 4.4/5

README 要求结论关联会话命令及文件,并展示步骤、候选数量和图像证据(主张可追溯性3)。所给测试覆盖离线逻辑和运行时边界,README 也给出基准,但这些材料未独立验证案例中的实际地理定位结果(跨来源佐证2)。文档明确将部分判断标为假设或推测,并区分盲测回归检查与未见照片准确率(事实与推断区分3)。

风险与缓解建议
  • 照片及 EXIF 可能被交给 OCR、反向图片搜索、地图或街景服务;材料没有完整说明各服务的数据保留和隐私处理。
  • 文档案例显示定位可能耗时数十分钟;盲测结果来自已解决案例,作者明确称其为回归检查,而非未见照片准确率。
证据充分度:低 评估于 2026年10月10日 审查版本 3105d385bf86
查看完整评分方法 →

常见问题

使用它需要 API 密钥或付费订阅吗?
README 未说明需要 API 密钥或付费订阅。软件采用 MIT 许可证;但依赖网络服务、浏览器访问和模型下载,不能据此保证所有服务免费或始终可用。
照片会上传到网络服务吗?
工具包含百度和 Yandex 反向图片搜索等联网功能,是否上传取决于运行的步骤。README 提供 intake.py --no-rev 用于本地处理检查,并说明 doctor.py --network 只探测服务而不上传照片。
它能完全离线定位照片吗?
不适合把完整定位流程作为离线工具使用。OSM 查询、卫星影像、街景和在线反向搜索需要网络;本地元数据、裁剪和 OCR 可通过 intake.py --no-rev 单独检查。
定位结果有多准确?
示例案例报告了约 2 米、87 米和 3 米等误差,但这些照片已被用于开发或回归检查。项目尚未提供未见照片的公开端到端准确率,因此案例误差不能视为普遍保证。
哪些照片更适合它?
照片最好能提供可与地图或地形核对的结构线索,例如桥墩间距、山脊、阴影、街树或电力线。README 展示了没有 GPS 和文字线索的案例,但无法保证每张照片都能唯一定位。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents