# Obsidian 图片上传链路诊断器
## 诊断流程样例:Obsidian 图片上传失败
### 输入
- 用户现象:Obsidian 粘贴图片时报 `upload failed, check dev console`
- Vault 路径:`~/Documents/notes-vault`
- 本机 PicGo 配置:PicGo app 配置、日志、localhost upload endpoint
- 可选只读探针:本机已有阿里云 OSS AK/SK,不回显 secret
### 工具入口
```bash
python /Users/bytedance/Documents/info-bu/tools/picgo-oss-diagnostic/check_picgo_oss.py \
--vault ~/Documents/notes-vault \
--probe-upload \
--aliyun-readonly
```
### 检查步骤
| 层级 | 检查 | 成功信号 | 失败信号 |
|---|---|---|---|
| Obsidian 插件 | 读取 PicGo/上传插件配置,确认 upload URL 和端口 | vault 指向当前 PicGo endpoint | vault 配置缺失、端口不一致、多个 vault 指向冲突 |
| PicGo 本地服务 | 检查 `127.0.0.1:<port>` 监听和 `/upload` 响应 | 端口监听,接口可返回结构化响应 | 端口未监听、连接拒绝、接口 404/500 |
| PicGo 上传链路 | 用测试图片触发上传并解析日志 | 返回图片 URL 或 PicGo 层明确成功 | PicGo 日志出现 HTTP status/errorCode |
| OSS/RAM/账务 | 只读查询 AK 身份、RAM LastUsed、bucket Head/List、账户余额 | AK 可识别、bucket 可访问、账务正常 | `UserDisable`、欠费余额、AK 无权限或被删除 |
### 预期输出
```text
result: failed
root_cause: oss_user_disable_or_arrears
local_chain:
obsidian_config: ok
picgo_port: ok 127.0.0.1:36677
picgo_upload_endpoint: ok
remote_chain:
aliyun_ak_identity: ok masked=LT***
ram_last_used: ok
oss_bucket: failed 403 UserDisable
account_balance: failed -29.98 CNY
next_action: 充值或恢复阿里云账号后重试上传;无需重配 Obsidian/PicGo,也不要先轮换 AK。
```
### 失败时的判断
如果本地链路全绿但 OSS 返回 `403 UserDisable`,结论应直接指向账号或服务状态,而不是继续怀疑 Obsidian 插件。若 AK 无法识别或 bucket 返回权限错误,则建议检查 RAM 权限、bucket policy 或重新配置 PicGo 凭证。