Geo Sleuth 照片定位
从照片中的地形、地图和影像线索推断拍摄位置,并附上可核查证据。
- Star 数
- ★ 1.7k
- 最近更新
- 今天
- License
- MIT
- 主语言
- Python
- FA 评分
- 71/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude Code
- 费用
- 免费,无需付费服务
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 调查者需要在照片没有 GPS、文字或明显地标时,利用铁路桥、山脊和地形缩小拍摄点范围。
- 不适合
- 要求完全离线完成定位的用户
- 需要对未见照片准确率基准的团队
- 源码审查
- 71/100 · 存在缺口
这个 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 输出带相机视野标记的卫星证据图。代理给出位置、误差半径、朝向和置信度,并要求每项结论关联实际运行的命令及其生成文件。
- 调查者需要在照片没有 GPS、文字或明显地标时,利用铁路桥、山脊和地形缩小拍摄点范围。
- 地理爱好者想根据沙丘、山脉和电力线位置,筛选并核验可能的拍摄地点。
- 城市研究人员可结合街树开放数据、阴影、坡度和街景,定位一张街道照片。
- 使用 Codex 或 Claude Code 的用户希望在代理中运行可复查的照片定位流程,并查看证据图和误差半径。
- 维护者希望验证定位脚本变更是否改善已有案例,可重跑仓库提供的沙漠、铁路或樱花街道案例。
如何安装或部署这个 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-sleuthLinux 上若 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?
查看各维度的扣分理由
README 说明了照片处理流程、脚本、数据源类别、联网搜索和证据文件,因此数据流透明度充分(3)。脚本按任务拆分且未展示明显过宽权限(最小权限2),但未见明确的逐次联网或上传确认机制(用户确认1);照片及 EXIF 等敏感信息的保存、删除和第三方服务处理说明不足(敏感数据1)。测试与文档显示可选代理、网络探测和外部地图服务,但外部影响范围及缓解措施说明有限(外部影响2)。依赖与环境检查有说明,然而所给材料未提供完整依赖安全审查证据(依赖安全1)。有 MIT 许可和数据源说明,但未见明确的逐项来源归属规则(来源归属2);未说明恢复或回滚流程(回滚1)。
README、脚本说明及测试文件共同展示了候选排序、证据记录和报告流程,整体自洽,但静态材料不足以证明所有描述均一致实现(自洽性2)。提供 Python、uv、浏览器等设置说明以及 doctor 检查和网络镜像回退测试(依赖可用性2)。测试和文档显示部分服务失败会被区分或报告,但未证明所有失败情形都有面向用户的恢复指引(失败消息2)。
文档覆盖照片地理定位、无文字线索场景、多个具体案例及多种 Agent 平台(受众与场景3)。有区域包、离线回归测试和明确的 unsupported 状态,但所给内容没有完整列出不适用情形或准确性边界(能力边界2)。触发语句简单,并说明通过读取 SKILL.md 执行命令;没有展示避免误触发的规则(触发精度2)。安装路径、Python 版本、平台差异及 macOS/其他系统 OCR 方案均有说明(环境适配3)。
README 的快速开始、安装、工作原理、工具表、案例和基准结构清楚(信息架构3)。提供 CLI 与手动安装方法、多平台路径及首次 doctor 步骤(安装说明3)。脚本和 skill 命名总体清晰,但未见命名兼容策略或稳定性承诺(命名稳定性2)。案例、命令示例、基准及 setup 章节覆盖充分(示例与常见问题3)。明确指出盲测属于回归检查而非未见照片准确率,并提供运行耗时数据;其他限制说明不完整(已知限制2)。MIT 许可文本完整(许可3)。所给材料未展示版本历史或变更日志(版本与变更记录1)。有 CONTRIBUTING 链接及 PR 邀请,但维护责任人、更新承诺和维护路径不明确(维护责任1)。
输出包含坐标误差半径、方向、证据图和分级置信度,且要求结论指向运行命令和产物文件,便于使用(输出可用性3)。脚本化的 OSM、地形、卫星和街景线索组合,针对无 GPS 照片提供明显的增量能力(边际价值3)。README 披露案例需约 32–72 分钟,计算和等待成本较高;没有一般成本或资源预算说明(成本收益1)。
README 要求结论关联会话命令及文件,并展示步骤、候选数量和图像证据(主张可追溯性3)。所给测试覆盖离线逻辑和运行时边界,README 也给出基准,但这些材料未独立验证案例中的实际地理定位结果(跨来源佐证2)。文档明确将部分判断标为假设或推测,并区分盲测回归检查与未见照片准确率(事实与推断区分3)。
- 照片及 EXIF 可能被交给 OCR、反向图片搜索、地图或街景服务;材料没有完整说明各服务的数据保留和隐私处理。
- 文档案例显示定位可能耗时数十分钟;盲测结果来自已解决案例,作者明确称其为回归检查,而非未见照片准确率。
常见问题
使用它需要 API 密钥或付费订阅吗?
照片会上传到网络服务吗?
intake.py --no-rev 用于本地处理检查,并说明 doctor.py --network 只探测服务而不上传照片。它能完全离线定位照片吗?
intake.py --no-rev 单独检查。