joy-cli/docs/ops/manhuang-handbook.md
feibisi 71caf4af96 feat(manhuang): 采购雷达 — 货架事件、商家信任与噪声标
SKU 通用流程:history 差分产出 shelf_events(价/有货,unknown≠售罄),
shops trust 分进 tab-caches/黑市面板;礼品卡面值假差标 noise;
ensure-shops --record-outcome 回填我方履约。设计见 manhuang-procurement-radar.md。
2026-07-13 13:57:46 +08:00

544 lines
22 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 蛮荒Manhuang完整手册
> 更新2026-07-12含全量核实、SMS-Activate 停运、free/MSRP/providers
> 定位AI / OSINT **能力供应链作战室**——观察、比价、缺口、隐渠信号。
> **不成交**:黑市 / 鬼市都只做观察;下单、代付、登录暗网商城不在本系统内。
本手册是**运维总入口**。极简索引:[manhuang-README.md](./manhuang-README.md)。面板语义见 [joy-manhuang.md](./joy-manhuang.md);专题见文末「文档地图」。
最近全量探活:[manhuang-full-audit-2026-07-12.md](./manhuang-full-audit-2026-07-12.md)。
### 快速跳转
| 要做什么 | 看哪里 |
|----------|--------|
| 日常刷新管线 | §6 · §19 |
| **采购雷达 · 货架事件/信任/RSS vs 自采** | **[procurement-radar](./manhuang-procurement-radar.md)** |
| 接码用谁 | §15**仅 5sim**SMS-Activate 已停) |
| shops / X 观察店 | §8 |
| channels 校验 / status 语义 | §9 |
| Tor / 鬼市 / onion | §10 · [guishi-probe](./manhuang-guishi-probe.md) |
| Quote API / free / MSRP | [channels-and-quote-api](./manhuang-channels-and-quote-api.md) |
| 自建 CD/RSSHub 别重起 | §11 · [selfhost-catalog](./manhuang-selfhost-catalog.md) |
---
## 1. 一句话架构
```
外源探针Mac clearnet + scout Tor
│ 控频 launchd / cron
~/.cache/manhuang/
quotes/ (ai-accounts · community-prices · msrp-litellm · free-llm-lists)
relays/ (status · candidates-from-providers)
guishi/ · changedetection/ · tab-caches · pipeline-last
collect_manhuang() ──► joy dashboard UItab 驾驶舱)
quote-aggregator :8877本机只读/v1/quotes · /v1/msrp · /v1/free …)
```
| 角色 | 机器 | 做什么 |
|------|------|--------|
| **Mac / linuxjoy** | 宿主机 | 黑市比价、community价+free+MSRP、具名中转、CD、notify、collect、面板 |
| **scout** | 侦察 VM | Tor `:9050`、鬼市探针、onion 标题级探活、handbooks、open-feeds/Miniflux |
| **ai-team** | 10.211.55.107 | ChangeDetection `:5000` · RSSHub `:1200`**Docker 长期服务落这里,不重复起栈** |
| **konqi** | joy-konqi | 链危机 / 品牌威胁通知接收方 |
---
## 2. 黑市 vs 鬼市(铁律)
| | **黑市 heishi** | **鬼市 guishi** |
|--|-----------------|-----------------|
| 对象 | 清网可审计平台、SKU 比价 | 隐渠、onion、OSINT、本地 shops |
| 数据 | `blackmarket.skus` · demand · channels.json | `guishi.channels` · shops · probe · onion |
| 能做 | 探价、demand 挂钩、价差/缺口推 konqi | Tor 标题探活、品牌撞库、目录质量 |
| **不做** | 代下单 / 代付 | 登录市场、爬商品分页、自动成交 |
分层字段:
- `market_layer``heishi` | `guishi`(明面 marketplace **heishi kind 优先**
- 鬼市 `quality``signal`(有 handle/url 可跟)| `live`(探针活)| `placeholder`(仅目录壳)
### channels.json `status` 语义(货架过滤)
| status | 含义 | 是否进 heishi 货架 |
|--------|------|-------------------|
| `active` | 主路径可探针 | 是 |
| `watch` / `watch_only` / `catalog_only` / `needs_key` / `optional` | 观察或需密钥 | 观察向(归一为 watch |
| `down` | 核实不可达SSL/挂) | 是但标弱;中转勿主用 |
| **`shutdown` / `dead` / `exit_scam`** | **停运/跑路** | **否collect 跳过)** |
例:**SMS-Activate = `shutdown`**2025-12 官方停运),禁止当「待 key 活源」。
---
## 3. 价值链与导航
```
支付(碎银) → 原料(接码/邮箱/代理) → 自产(密令注册机) → 号池(Codex/API)
→ 消费(接口探活) → 工程(Agent) → 出口(通道/Tor)
风险旁路:帮派(威胁) · 密室(暴露面)
外购旁路:黑市(明面 demand/实价) · 鬼市(隐渠/TG/发卡/onion 线索)
```
**一级导航(靠前):**
总览 → 密令 → 黑市 → 鬼市 → 碎银 → 接口 → Agent → 通道 → 帮派 → 密室 → 数据源 → 辅线…
成功标准:
1. 10 秒内看到哪一环红、next 是什么
2. Codex 全死时总览/密令/黑市同一危机叙事
3. 黑市主视野 = 需求 + 实价;锚价折叠
4. 默认进 **总览驾驶舱**
---
## 4. 配置路径
| 用途 | 仓库(可提交) | 本地 / 私密(不进 git |
|------|----------------|------------------------|
| 黑市渠道目录 | `configs/manhuang/channels.json` | `~/.config/manhuang/channels.json` |
| 产品类型 | `configs/manhuang/product-types.json` | 覆盖同路径 |
| 鬼市扩展目录 | `configs/manhuang/guishi-channels.json` | `~/.config/manhuang/guishi-channels.json` |
| 具名中转 | `configs/manhuang/relays.json` | `~/.config/manhuang/relays.json` |
| onion 白名单 | `configs/manhuang/onion-markets.example.json` | `~/.config/manhuang/onion-markets.json` · scout `~/data/manhuang/onion-markets.json` |
| 本地店表 | `configs/manhuang/shops.example.json` | `~/.config/manhuang/shops.json` · scout `~/data/manhuang/shops.json` |
| 密钥 | `configs/manhuang/keys.env.example` | `~/.config/manhuang/keys.env`§14 表) |
缓存Mac
```
~/.cache/manhuang/
quotes/ai-accounts.json # 黑市 SKU 比价
quotes/community-prices.json # proxy 价 + 5sim + free/msrp 摘要字段
quotes/msrp-litellm.json # LiteLLM 官方 token 锚
quotes/free-llm-lists.json # mnfst free + cheahjs 摘要
quotes/.demand-probe.{request,last}
relays/status.json # 具名 + providers.yaml 动态候选
relays/candidates-from-providers.json
changedetection/status.json
guishi/{status,handbooks}.json # 自 scout 拉回或 scp
tab-caches.json
pipeline-last.json # 管线健康快照(含侧线阶段)
chain-alerts.jsonl
```
scout 数据:
```
~/data/manhuang/guishi/status.json
~/data/manhuang/guishi/handbooks.json
~/data/manhuang/{shops,onion-markets,guishi-channels}.json
~/logs/manhuang-guishi.log
```
---
## 5. 两条管线(别混)
| 管线 | 目的 | 入口 | 文档 |
|------|------|------|------|
| **A 供应链比价** | 黑市价 / demand / 中转 / free·MSRP / 鬼市 ssh / 通知 | Mac `run-quote-probe.sh` + Quote API | 本手册 · channels-and-quote-api |
| **B 开源态势** | 公开 IOC/KEV、live-pulse 品牌、Miniflux、open-feeds | scout cron + Mac live-pulse | [data-sources](./manhuang-data-sources.md) · [oss-path](./manhuang-oss-path.md) |
面板 `collect_manhuang` **两边都读**。Docker 长期服务CD/RSSHub只在 **ai-team**
---
## 6. 脚本清单
路径均相对 `~/Projects/joy-cli``scripts/manhuang/` 现网全表:
| 脚本 | 作用 |
|------|------|
| **`run-quote-probe.sh`** | **主入口**:智能 quotes + community + relays + CD + guishi + tab-caches + notify + pipeline-last |
| `probe-ai-account-quotes.py` | GGSel/FunPay/Plati…`--demand-first` 只打 gap SKU |
| `probe-community-prices.py` | awesome 价 + OpenRouter + 5sim + free + LiteLLM MSRP |
| `probe-named-relays.py` | relays.json + providers.yaml 动态候选reverse 跳过) |
| `probe-changedetection.py` | ai-team CD 状态 |
| `ensure-cd-watches.py` | CD 幂等建 watch`--shops` / `--guishi` / `--all-guishi` |
| `probe-guishi.py` | **仅 scout**:浅水 + onion 标题 |
| `build-guishi-handbooks.py` | 闲鱼等手册索引 |
| `ensure-shops.py` | shops init / validate / sync-scout / add-stub |
| `check-tor-scout.sh` | scout Tor SOCKS + circuit写 tor_hint |
| `validate-channels.py` | channels.json 结构校验 |
| `quote-aggregator.py` | 本机 `:8877` 只读 API |
| `build-tab-caches.py` | 新鲜度 / price_moves / demand_probe 摘要 |
| `notify-chain.sh` | 链危机 / 大价差 / 中转 down → konqi2h |
| `notify-guishi-brand.sh` | 品牌 threat → konqi4hexposure 默认不推) |
| `enrich-open-hits.py` | **管线 B**:公开 feed 对撞自有域名scout |
### 6.1 日常管线(首选)
```bash
bash scripts/manhuang/run-quote-probe.sh # 智能demand 旗 / 轮换 / 轻量
bash scripts/manhuang/run-quote-probe.sh --demand-first --force
bash scripts/manhuang/run-quote-probe.sh --rotate --force
```
`run-quote-probe.sh` 串联大致quotes → community → relays → CD → guishi(ssh) → tab_caches → notify → **`pipeline-last.json`**。
**exit code 以 quotes 为主**;尾部失败记 log + pipeline不伪装 quotes 失败。
---
## 7. 需求优先demand-first与缺口闭环
### 7.1 何时自动挂旗
`collect_manhuang` 检测:
- 链危机(`chain.crisis`
- 需求货架无 marketplace 实价 / `sku_gap` 偏大
→ 写 `~/.cache/manhuang/quotes/.demand-probe.request`(约 90min 节流)
→ launchd 每 30min 的 `run-quote-probe.sh` 消费 → `--demand-first --force`
### 7.2 手动补 gap
```bash
cd ~/Projects/joy-cli
python3 scripts/manhuang/probe-ai-account-quotes.py --demand-first --force
# 成功后会写 quotes + .demand-probe.last
```
### 7.3 实测快照2026-07-12
| 项 | 值 |
|----|-----|
| 探针模式 | demand-first gap manual |
| probed_n | 22 SKU |
| market_hits | 12FunPay / GGSel / 5sim 等) |
| 例codex 相关 | hits 4→7`codex_quota` $8 FunPay |
| quotes 盘 | skus≈59demand 货架≈19 |
| 鬼市 | channels 146 · quality signal/live/placeholder ≈36/56/54 |
| 黑市 channels | 52 |
缺口不会永远为 0官方锚价、无灰市 lot 的 SKU 会保留 gap属预期。
---
## 8. 本地店表 shops.json
### 8.1 流程
```bash
# 1) 初始化空壳(或已有则原样)
python3 scripts/manhuang/ensure-shops.py
# 2) 加可编辑位(非 demo
python3 scripts/manhuang/ensure-shops.py --add-stub
# 3) 编辑真实 TG handle / 发卡 URL频道名不进 git
$EDITOR ~/.config/manhuang/shops.json
# 4) 校验:每条 real 店须有 url 或 handle 或 rsshub_path
python3 scripts/manhuang/ensure-shops.py --validate
# 5) 同步 scoutprobe 会读)
python3 scripts/manhuang/ensure-shops.py --sync-scout
# 6) CD 盯 http URL无 URL 的 TG 不会建 watch
python3 scripts/manhuang/ensure-cd-watches.py --shops
```
### 8.2 字段要点
- `id` 唯一;勿含 `demo`/`example`(否则 collect 当示例跳过)
- `handle``url``rsshub_path` 至少一项
- `sku_for`:挂到 demand capability`codex_quota` / `claude` / `sms`
- `status``watch` / `active`
- brands 列表驱动鬼市品牌撞库
### 8.3 当前状态2026-07-12
- 本地 **~25** 条观察店FunPay/GGSel/5sim/OpenRouter/awesome + **X 检索式** + 样本发卡/中转)
- validate **ok** · 已 sync scout · CD 对 http URL 已建 watch
- 私有 TG 卖号 Bot可改 `tg-slot-ai-private``--add-stub`**不要**把私人 handle 提交 git
- 刻意不收录:随机 WhatsApp/手机号 spam
---
## 9. channels.json 校验与目录块
```bash
python3 scripts/manhuang/validate-channels.py
python3 scripts/manhuang/validate-channels.py --json # 机读
```
校验内容:
- `marketplaces[]`id、base/url`catalog_only`/`manual` 允许无 base
- `sms_apis[]` / `relay_price_feeds[]` / `named_relay_stations[]`id
- `demand_sku_ids`:非空字符串列表
-`product-types.json` 交叉提示(未知 product_types 警告)
| 块 | 用途 |
|----|------|
| `marketplaces` | 明面店 + FunPay lots |
| `sms_apis` | 接码(**5sim active**SMS-Activate **shutdown** |
| `relay_price_feeds` | GitHub JSON / OpenRouter / LiteLLM MSRP / providers.yaml |
| `named_relay_stations` | 具名中转down 的勿主用) |
| `free_llm_lists` | free 档目录mnfst 机读 + cheahjs |
| `demand_sku_ids` | demand-first 关键 SKU |
仓库基线量级marketplaces ~10 · sms 4 · relay feeds ~7 · free lists ~5 · demand_sku_ids 21。
---
## 10. Onion 白名单与 Tor
### 10.1 策略policy
```json
"checkout": false,
"scrape_listings": false,
"title_probe": true
```
只探活 + 抽 `<title>`;不登录、不下单、不爬商品分页。`example.onion` 会被跳过。
### 10.2 部署
```bash
cp configs/manhuang/onion-markets.example.json ~/.config/manhuang/onion-markets.json
# 仅保留 legal + 经 dark.fail 核对的 observe 地址
scp ~/.config/manhuang/onion-markets.json scout:data/manhuang/onion-markets.json
bash scripts/manhuang/check-tor-scout.sh
# 可选bash scripts/manhuang/check-tor-scout.sh --restart
ssh scout 'python3 ~/scripts/manhuang/probe-guishi.py'
```
### 10.3 实测2026-07-12
| 检查 | 结果 |
|------|------|
| SOCKS 9050 | ok |
| check.torproject.org/api/ip | circuit_ok · IsTor |
| 合法 onion 标题 | Tor Project **alive**`<title>Tor Project \| Anonymity Online`DDG onion 偶发 40s 超时 |
| clearnet 浅水 | 近次 checks 51 · ok≈46 · fail≈5论坛/paste 超时属常态) |
| 说明 | **电路活 ≠ 每个 .onion 秒开**;白名单只保 legal 基线即可 |
---
## 11. ChangeDetection
```bash
# keys.env
# CHANGEDTECTION_URL=http://10.211.55.107:5000
# CHANGEDTECTION_API_KEY=...
python3 scripts/manhuang/ensure-cd-watches.py --all-guishi
python3 scripts/manhuang/probe-changedetection.py
```
Mac Python **不认 NO_PROXY 的 CIDR**;脚本对 `10.x` 强制直连。
workers 过多会拖死 Flask → 502compose 建议 `NUMBER_OF_WORKERS=2` + healthcheck。
---
## 12. 通知
| 脚本 | 触发 | 节流 | 通道 |
|------|------|------|------|
| `notify-chain.sh` | chain crisis / Codex 无额 / 价差 Δ≥1 / 中转 down | 2h / mode | `vm-dm konqi` → 失败落 `~/office/konqi/inbox` |
| `notify-guishi-brand.sh` | brand **threat**(钓鱼/IOC | 4h | 同上exposure 默认不推 |
不改 NATS ACL。强制`--force`
---
## 13. 面板字段速查
| API 字段 | UI |
|----------|-----|
| `manhuang.chain` | 总览六环 |
| `manhuang.blackmarket` | 黑市 demand / skus / shelf |
| `manhuang.guishi` | 鬼市 channels / shops / probe / brand_hits |
| `manhuang.demand_probe` | 总览/黑市 demand 条 |
| `manhuang.pipeline` | **数据源** tab 管线表 + 新鲜度(含侧线阶段) |
| `manhuang.community_prices` | 社区价 overlay |
| `manhuang.relays` | 具名中转 |
| `manhuang.changedetection` | CD 摘要 |
| `manhuang.channels_catalog` | 交易平台目录卡 |
| `manhuang.tab_resources` | 各 tab 资源图谱辅线(默认折叠) |
---
## 14. launchd / cron / 密钥
### Mac launchd仓库 `configs/launchd/`
| Label | 周期 | 程序 | 日志 |
|-------|------|------|------|
| `com.feibisi.manhuang-quotes` | **30min** | `run-quote-probe.sh` | `~/logs/manhuang-quotes.{stdout,stderr}.log` |
| `com.feibisi.manhuang-quote-api` | KeepAlive | `quote-aggregator.py` | `~/logs/manhuang-quote-api.*.log` |
```bash
cp configs/launchd/com.feibisi.manhuang-quotes.plist ~/Library/LaunchAgents/
cp configs/launchd/com.feibisi.manhuang-quote-api.plist ~/Library/LaunchAgents/
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.feibisi.manhuang-quotes.plist
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.feibisi.manhuang-quote-api.plist
launchctl kickstart -k gui/$(id -u)/com.feibisi.manhuang-quote-api
curl -s http://127.0.0.1:8877/v1/summary | jq .
```
### scout cron建议
`probe-guishi` + handbooks`25 */2 * * *`open-feeds 见 [data-sources](./manhuang-data-sources.md)。
### keys.env
模板:`configs/manhuang/keys.env.example``~/.config/manhuang/keys.env`
| 变量 | 用途 | 必需? |
|------|------|--------|
| `CHANGEDTECTION_URL` / `API_KEY` | ai-team CD | CD 建议有 |
| `BRAND_DOMAINS` | 鬼市品牌撞库 | 建议 |
| `RSSHUB_BASE` | shops 拉频道 | 可选 · 用 `http://10.211.55.107:1200` |
| `ABUSECH_*` / `OTX_*` / `URLSCAN_*` | live-pulse 管线 B | 可选 |
---
## 15. 接码源核实2026-07-12
| 源 | 结论 |
|----|------|
| **5sim** | **主路径** · guest prices HTTP 200 · 价缓存有效(多国) |
| **SMS-Activate** | **官方停运**(约 2025-12-22· 首页仍 200 但是告别页 *“SMS-Activate service is closed / completely ceased since December 22”* · 品牌已废 · 冒充新站=诈骗 · **禁止充值/探针** |
| SMS-Man | 首页 403/盾 · `watch_only` |
| GrizzlySMS | 首页 200 · `watch_only`(未接 key |
社区常说「跑路」:实质是**停运 + 提现门槛争议**(曾要求 ≥$30 退款),官方自称技术转 HeroSMS**不是**「待 API key 的活源」。目录字段:`status: shutdown`
**collect 铁律:** `shutdown` / `dead` / `exit_scam` **不得**进入黑市 `channels`(已修 catalog 漏过滤)。
同日更大范围核实见 [manhuang-full-audit-2026-07-12.md](./manhuang-full-audit-2026-07-12.md)68 URL · 65 ok
| 中转核实 | 结论 |
|----------|------|
| openrouter / yunwu / bltcy / tokenx24 | 可用 |
| **geshihua / uiuiapi** | SSL 不可达 · `status: down` · 不主用 |
---
## 16. 排障速查
| 症状 | 检查 |
|------|------|
| 黑市/鬼市 UI 空 | layer 折叠过猛?看 `counts`;重启 dashboard 重 collect |
| demand 永远无价 | 跑 `--demand-first --force`;看 FunPay/GGSel 是否被墙 |
| pipeline 老旧 | `run-quote-probe.sh --force`;看 `pipeline-last.json` stages |
| Tor down | `check-tor-scout.sh`scout `systemctl --user status tor` |
| onion 全超时 | 电路 ok 时仍可能慢;加长 timeout 或先只保 legal 基线 |
| CD 502 | 降 workers确认 10.x 直连 |
| shops validate 失败 | 填 handle/urldemo id 会被跳过 |
| 密钥进面板 | **禁止**;只放 keys.env / 工具配置 |
---
## 17. 文档地图
| 文档 | 内容 |
|------|------|
| **本手册** | 总入口 · 运维闭环 · 铁律 · 接码核实 |
| [manhuang-README.md](./manhuang-README.md) | 极简索引 + 一键体检 |
| [joy-manhuang.md](./joy-manhuang.md) | 面板页结构 / tab 语义 |
| [manhuang-supply-chain.md](./manhuang-supply-chain.md) | 供应链 v9 · 成功标准 · 轮询 |
| **[manhuang-procurement-radar.md](./manhuang-procurement-radar.md)** | **采购雷达 · 货架事件 · 信任 · RSS vs 自采** |
| [manhuang-channels-and-quote-api.md](./manhuang-channels-and-quote-api.md) | 渠道 + Quote API + free/MSRP |
| [manhuang-guishi-probe.md](./manhuang-guishi-probe.md) | 鬼市探针 / shops / onion / brand |
| [manhuang-full-audit-2026-07-12.md](./manhuang-full-audit-2026-07-12.md) | **全量探活快照**68 URL |
| [manhuang-data-sources.md](./manhuang-data-sources.md) | 数据源契约 / live-pulse |
| [manhuang-markets-catalog.md](./manhuang-markets-catalog.md) | 市场与产品类型摘要 |
| [manhuang-selfhost-catalog.md](./manhuang-selfhost-catalog.md) | 自托管选型(含 **ai-team CD/RSSHub** |
| [manhuang-oss-path.md](./manhuang-oss-path.md) | 开源默认路线 |
| [manhuang-tabs-review-2026-07-11.md](./manhuang-tabs-review-2026-07-11.md) | **历史** tab 评审纪要(默认可不读) |
代码:
- 后端 `src/joy/dashboard/manhuang.py` · **`manhuang_shelf.py`**(事件/信任纯函数)
- 前端 `src/joy/web/js/tabs/manhuang.js`(货架事件条 · 信任榜 · 价差)
- 配置 `configs/manhuang/`shops.example trust 字段)
- 脚本 `scripts/manhuang/``build-tab-caches` 写 shelf_events / shops_trust
---
## 18. 安全与合规
1. 密钥 / cookie / token **永不进 git、永不进面板**
2. shops / onion 真实地址只在本机与 scout 私有路径
3. 观察可以大胆;**成交在系统外人工**
4. 品牌 threat 通知给人裁决,脚本不自动处置
5. 暗网只做白名单标题探活,不扩爬
6. **已停运品牌**(如 SMS-Activate禁止充值冒充「新官网」按诈骗处理
7. 中转 `providers.yaml` 收录 **≠ 背书**;只 health不自动注册
---
## 19. 常用复制块
```bash
cd ~/Projects/joy-cli
# 全管线强制
bash scripts/manhuang/run-quote-probe.sh --demand-first --force
# 仅 gap 补价
python3 scripts/manhuang/probe-ai-account-quotes.py --demand-first --force
# communityproxy 价 + 5sim + free + MSRP
python3 scripts/manhuang/probe-community-prices.py
python3 scripts/manhuang/probe-named-relays.py
# channels 校验
python3 scripts/manhuang/validate-channels.py
# shops
python3 scripts/manhuang/ensure-shops.py --validate
python3 scripts/manhuang/ensure-shops.py --sync-scout
# Tor + 鬼市
bash scripts/manhuang/check-tor-scout.sh
scp scripts/manhuang/probe-guishi.py scout:~/scripts/manhuang/
ssh scout 'python3 ~/scripts/manhuang/probe-guishi.py'
# CD
python3 scripts/manhuang/ensure-cd-watches.py --all-guishi
python3 scripts/manhuang/probe-changedetection.py
# Quote API 抽查
curl -s http://127.0.0.1:8877/v1/summary | jq .
curl -s http://127.0.0.1:8877/v1/msrp | jq '.anchors|keys'
curl -s http://127.0.0.1:8877/v1/free | jq '.providers_n // .mnfst.providers_n'
# 通知(慎用 force
bash scripts/manhuang/notify-chain.sh
bash scripts/manhuang/notify-guishi-brand.sh
```
---
## 20. 文档完备性(自检 · 2026-07-12
| 问题 | 够吗? |
|------|--------|
| 新人如何跑通主路径? | **够** — §6 + §19 复制块 |
| 接码用谁 / SMS-Activate 坑? | **够** — §15 |
| 黑市 vs 鬼市边界? | **够** — §2 |
| Quote API / free / MSRP | **够** — channels-and-quote-api |
| shops / X 观察店? | **够** — §8 |
| 自建别重复起栈? | **够** — §5 + selfhost-catalog |
| 全量探活快照? | **够** — full-audit |
| keys / launchd / 日志路径? | **够** — §14本轮补全 |
| 双管线 A 比价 vs B 开源态势? | **够** — §5本轮补全 |
| 脚本是否全覆盖? | **够** — §6 全表(含 enrich-open-hits |
| guishi-channels 115+ 条怎么维护? | **弱** — 只说加载路径,未写「如何批量改 layer」够用则手改 JSON |
| 面板字段 → UI 组件对照? | **弱** — 有字段表无截图/组件 id开发靠读 manhuang.js |
| 端到端验收清单(一键)? | **中** — full-audit §11 + §19 可拼;未做成单一 `make check` |
| 英文读者 / 对外 README | **不需要**(内网运维文档) |
**结论:** 内网运维 **够用**。剩余弱项是「目录批改」与「UI 对照」,不挡日常 probe/排障。新事实停运源、down 中转)以 `channels.json` + full-audit 为准,手册 §15 已钉死接码。