Oct 19, 2026

用 geo-sleuth 定位一张照片的拍摄地点

geo-sleuth 把你的编码 Agent 变成照片地理定位分析师:OpenStreetMap 几何、高程天际线、卫星瓦片和街景——每个答案都附带误差半径和证据图。

#tutorial#developer-tools#research

一张没有 GPS 信息、没有招牌、没有车牌、也没有地标的照片——只有一座桥、一座山和一片稻田。Oldcircle 的 geo-sleuth(3k 星)把这个难题交给你的编码 Agent,并让它亮出推导过程:答案是机位加朝向、误差半径、分级置信度,外加一张卫星证据图。

为什么这个 Skill 重要

让 Agent 做地理定位,多数时候是模型凭感觉猜。geo-sleuth 把分工倒了过来:二十多个单一职责的 Python 脚本负责搜索、评分和排序,模型只在排名靠前的少数候选里做判断。README 里的三条规则定义了这门纪律:

  • **每个结论都要指向文件。**结论必须点名会话里实际运行过的命令和它产出的文件。人口多、名气大不算证据。
  • **用几何而不是猜测。**桥墩间距变成一把距离尺,阴影变成方位角,山脊线变成一份可与高程数据比对的指纹。
  • **排除需要证据。**观察和猜测只能降低候选的权重;要排除一个候选,必须有读取到的或计算出来的证据。

它是一个标准 Agent Skill——一个 SKILL.md 加普通 Python 脚本——所以同一个文件夹可以在 Claude Code、Codex、Cursor、Gemini CLI、OpenCode 和 GitHub Copilot 里运行。

安装

文档记载的一条命令完成安装,并提示你选择要接入的 agent:

npx skills add Oldcircle/geo-sleuth

想一条命令覆盖全部六个 agent(用户级):

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

更喜欢自己复制文件夹?README 记载了手动 git clone 到 ~/.agents/skills/ 的路线(Claude Code 用符号链接)。首次使用时,让 Agent 运行已装 skill 的 scripts/ 目录下的 doctor.py 并处理所有失败项。你需要 Python 3.10+、uv、curl,以及——做以图搜图时——Chrome 或 Playwright Chromium。带 ML 模型的脚本会在首次使用时下载模型,预留额外的时间和磁盘空间。

实战:定位一张被抹掉信息的照片

把照片交给 Agent,说:

这张照片没有 GPS 信息。找出它是在哪里拍的:给出相机位置、朝向、误差半径和置信度,每个结论都要指向实际运行过的命令和产出的文件。

然后 skill 文档记载的流水线开始运转:intake.py 一次跑完元数据、边缘裁剪、OCR 和以图搜图;候选盘收集线索并对假设排序;terrain.py、osm.py 和 sun.py 扫描区域、拟合天际线;sat_scan.py 和 match.py 把卫星瓦片和街景与照片比对。README 的旗舰案例展示了完整的漏斗:从一个区域 27,335 段 OpenStreetMap 铁路桥,经过 171 个候选点位、14,372 个拟合机位,再加最后的桥墩计数校验,收束到一个 ±2 m 的单点——整轮跑了约 72 分钟。

要预期迭代而不是一锤定音:README 的沙漠案例记载了 skill 在天际线误差 10 像素附近卡住,直到把拟合扩展为可解 1° 相机横滚——这个修复现在默认包含在 terrain.py fit 里。

技巧

  • 先用 intake.py photo.jpg --out-dir intake --no-rev 跑纯本地流水线,在接触任何在线服务之前检查元数据、裁剪和 OCR。
  • 源证据保持原始语言——skill 的维护指令是英文,Agent 会用你的语言解释中文 OCR 文本或地名。
  • README 公开了用全新 Agent 做的盲测复跑:沙漠照片距确认机位 87 m(32 分钟),温哥华樱花街 3 m(53 分钟)。它也直说了两张照片此前都被解过,所以这些是回归检查,不是对未见照片的准确率数字。
  • GEO_DEVICE=cpu|cuda|mps 可以为 ML 脚本强制指定设备,否则脚本按 CUDA、MPS、CPU 的顺序自动挑选。

何时不用这个 Skill

README 自己画了线:只对你自己的照片或获得授权分析的照片使用,绝不用于找到那些不愿被找到的人。结果也随模型和过程中的决策而变——README 警告说换一个模型未必能复现同样的结果。而对于那些本来就有据可查的照片("埃菲尔铁塔,白天"),在浏览器里做一次以图搜图,比跑 72 分钟的几何流水线快得多。


查看 排行榜 了解更多 skill。