Skip to content

Security: TopoSpace/AgriPlan-Agent

Security

SECURITY.md

安全与隐私说明(Security & Privacy)

本仓库中不存在什么

经全量扫描确认,仓库内不含:API 密钥、服务地址(endpoint)、Bearer 令牌、 邮箱、手机号、身份证号、IP 地址、本机文件路径、任何个人或单位账号信息。

config/settings.yaml 不在仓库中,只提供不含真实值的模板 config/settings.example.yaml

凭据应该放在哪里

优先用环境变量,其次用本地 config/settings.yaml(已被 .gitignore 排除)。 core/config.py 是唯一的凭据入口,它在真正发起请求的时刻才读取配置; 未配置时模块照常导入,只有实际调用外部服务的函数才会抛 MissingCredential

异常信息中只出现变量名,不回显取到的值。此外,所有对外请求的失败路径都做了 服务地址剥离requestsurllib 的原生异常文本会带上完整请求 URL(其中 含主机名、有时还含查询串里的 key),若被界面层直接渲染就等于把服务地址暴露给 终端用户。因此 modules/tool_dispatcher.pymodules/vision_analyzer.pymodules/llm_planner.pymodules/llm_responses.py 一律只向上层报出异常类型与 HTTP 状态码,详细排错请查服务端日志。

提交到公开平台前的自检

# 1. 确认没有密钥形态的字符串
grep -rInE "(sk|cpl|hf|ghp|AKIA|AIza)[-_A-Za-z0-9]{16,}" .

# 2. 确认没有写死的服务地址(正常应只剩文档中的示例链接)
grep -rIno "https\?://[^\"' ,)]*" . | sort -u

# 3. 确认本地配置没有被跟踪
git status --porcelain --ignored | grep settings.yaml

务必新建一个空仓库来发布,不要沿用旧仓库的提交历史。 密钥即使从当前文件中 删除,只要曾经提交过,就仍然留在历史对象里,可以被任何人检出。

田间照片

照片可能携带 GPS 等 EXIF 信息。.gitignore 已排除 *.jpg / *.jpeg / *.webp; 运行时上传的图像只写入系统临时目录,不进入仓库。 assets/ 下的界面截图已确认不含 PNG 元数据块,其中的地块名称、面积、 土壤指标与经纬度均为演示用示例值。

密钥万一泄露了怎么办

先到服务商控制台吊销并重新签发,再处理代码——只删代码不吊销是无效的。

There aren't any published security advisories