先别往下翻
假设你现在要清点天上所有 >10cm 的物体(约 5.4 万个),其中真正"在干活"的——在轨运营、产出价值的活跃载荷——你觉得占多少比例?
(在心里选一个,再往下看。)
不是"末日威胁",是一本资产台账
"太空垃圾"的话题历来被讲成末日叙事——碎片越来越多、撞来撞去、地球被垃圾包围。但换个视角会得到完全不同的画面:把天上的每个物体都当成资产,你得到的是一张理性的台账。
ESA 的《空间环境报告》(Annual Space Environment Report)用 MASTER 模型给出这张台账的核心数(参考纪元 2024-08-01):
| >10cm 在轨物体数 | 其中活跃载荷 | 活跃占比 | 非活跃占比(碎片/报废/退休闲置) |
|---|---|---|---|
| 约 54,000 个 | 约 9,300 颗 | 约 17% | 约 83% |
数据年龄提示:上表数字不是"现在"的实时值,而是 ESA《空间环境报告》v10.0 的 MASTER 模型估算,冻结在参考纪元 2024-08-01——它已有约 2 年"年龄"。ESA 会每年滚动更新一版(下一版约 2027 春季),到时绝对数会变,但本篇锚定的结论结构——"真正干活的只有约 1/6"、"碎片量级远大于工作卫星"——不因数字微调而改变。追求最新值时看 ESA SDO 原文;追求逐字可核验时看本文附录的冻结快照。
也就是说:你名下这 5.4 万个"资产"里,真正在产出的只有约 9,300 个(约 1/6);其余约 83%——退休卫星、解体的碎片、撞碎后散落的零件、被遗弃的末级火箭——是闲置或报废资产。它们不是主动的"威胁",而是需要被管理的"旧资产"。
更小尺寸:按数量级翻上去
上面 5.4 万只是 >10cm 这一层。越往小尺寸走,数量越呈数量级增长:
| 尺寸段 | 在轨物体数(模型估算) | 与 >10cm 的倍数 |
|---|---|---|
| >10cm | 约 5.4 万 | ×1(基准) |
| 1cm–10cm | 约 120 万 | ×22 |
| 1mm–1cm | 约 1.3 亿 | ×2,400 |
换个更直观的说法:每颗活跃载荷头上,就悬着约 1.4 万个毫米级物体。天上远比"肉眼可见的那么大"要挤得多——但挤,不等于危险。
多数闲置物会"自清",少数才是真麻烦
ESA 的报告还有一句关键观察:并不是所有碎片都同样危险。绝大多数低轨物体高度很低,靠大气阻力几周到几个月就自然再入——它们是会自清的闲置资产。真正需要管理的是与活跃载荷共享高度带、又不会很快掉的碎片:
the density of active payloads is approaching that of debris in these heavily populated orbits
—— ESA 空间环境报告(关于 MASTER 人口 ≤1cm 的分析段)
在那些拥挤的高度带,活跃载荷的密度已经逼近碎片密度——这正是"资产管理"要盯的地方。至于那些一次性掉不下来、又长期占坑的高轨闲置卫星,那正是本系列讲的"墓地轨道"要解决的(见第 5 篇)。高度,决定了闲置资产到底会不会自己"清仓"(见第 6 篇《轨道寿命地图》)。
三个问题
1. 5.4 万是"编目数量"吗? 不是。它是 ESA 的 MASTER 模型对 >10cm 在轨总人口(含追踪到与未追踪的物体)的估算,参考纪元 2024-08-01。模型估算通常大于公开编目数,因为它把大量更小、未明确追踪的边界案例也覆盖进去了。
2. 多数是碎片,是不是很危险? 危险来自"可测的碰撞风险",不是"碎片多"本身。绝大多数低轨物体高度很低、几周到几个月就自然再入,属于会自清的闲置资产。真正要管理的是与活跃载荷共享高度带的碎片——据 ESA,在这些拥挤高度带,活跃载荷密度已经逼近碎片密度。
3. 那些"不在干活"的会不会自己掉下来? 取决于高度。低轨报废物体靠大气阻力几年内自然再入;高轨报废卫星却基本不掉——这就是"墓地轨道"要解决的问题。高度决定闲置资产会不会自己清仓。
你可以自己验
到这里的所有数字,都不是"我们说的",而是 ESA 公开报告原文算出来的:
- >10cm 物体 54,000 / 活跃载荷 9,300 / 1-10cm 1,200,000 / 1mm-1cm 130,000,000:逐字取自 ESA《空间环境报告》GEN-DB-LOG-00288-OPS-SD v10.0(2026-05-01,Final),快照内每个 primary 锚点附原文引用句 quote + 出处定位 locator;
- 活跃占比 17.2%、非活跃 82.8%、尺寸段倍数、每载荷分摊:由脚本从快照常数重算。
脚本读取冻结快照 → 由 5.4 万 / 9,300 / 120 万 / 1.3 亿 算出活跃占比、非活跃占比、1-10cm 与 1mm-1cm 相对 >10cm 的倍数、每颗活跃载荷分摊的毫米级物体数 → 输出与正文完全一致的表格、证据层级与哈希。你(或任何 AI agent)都可以重跑核对,见附录。
附录:可复现验证
python3 verify_active_vs_debris.py # 读默认快照,重跑并核对 python3 verify_active_vs_debris.py active_vs_debris.json # 指定快照文件
脚本会做四件事:
1. 校验快照 schema v2(证据门禁:primary 档必须带原文引用句 quote + 出处定位 locator);
2. 由 54,000 / 9,300 / 1,200,000 / 130,000,000 算出活跃占比与尺寸段倍数;
3. 交叉核对"每颗活跃载荷分摊的毫米级物体数"的量级;
4. 输出证据层级、快照 sha256 与验证方式。
说明:4 个 primary 锚点逐字取自 ESA《ESA's Annual Space Environment Report》GEN-DB-LOG-00288-OPS-SD v10.0(2026-05-01,Final)——>10cm 物体与活跃载荷、1-10cm 尺寸段、1mm-1cm 尺寸段、以及"自太空时代起(1957-10-04 以来)碎片在轨总量一直多于工作卫星"。每个 primary 锚点内含原文引用句 quote 与出处定位 locator,可逐字复核。所有数字为 MASTER 模型估算(参考纪元 2024-08-01),非观测编目数——模型含未追踪的小/边界物体,故大于公开编目。正文表格与派生数字由脚本从快照重算,冻结快照可精确复现。
原始材料(可直接复制)
下面的脚本与数据快照全文,供你(或任何 AI agent)直接复制使用,无需下载。
复现材料(含 sha256 锚点,随嵌入文件自动更新):
verify_active_vs_debris.py(复现脚本) · sha256 d4a6b4d3f99d71d46077afedecf7e7cf4c8695ebb5726a9b6cbaf8cc28b49ad5
active_vs_debris.json(数据快照) · sha256 5a477f4b8dc9020662d04e58f0313455328bf807ba92b39717ed1b8e5135a250
verify_active_vs_debris.py — 复现脚本全文
#!/usr/bin/env python3
# verify_active_vs_debris.py — 科普附录:验证「在轨物体 vs 活跃载荷」派生数字(零依赖)
# 输入:active_vs_debris.json 冻结快照 v2(4 个 primary 锚点 + 常数 + 背景密度注)
# 输出:活跃占比 / 碎片占比 / 各尺寸段倍数 / 每颗活跃载荷分摊的微米级物体 + 证据层级 + 快照 sha256
# 用法:python3 verify_active_vs_debris.py (默认读 active_vs_debris.json)
# python3 verify_active_vs_debris.py FILE (指定快照文件)
# 退出码:0 成功;2 解析失败;3 证据契约违规(primary 缺 quote/locator)
import hashlib
import json
import sys
TIERS = ("primary", "secondary", "media")
def check_schema(snap):
"""证据门禁:primary 档必须带原文引用句 quote + 出处定位 locator(可复现≠可验证)。"""
errors = []
for a in snap.get("anchors", []):
tier = a.get("tier")
if tier not in TIERS:
errors.append(f"锚点 {a.get('label', '?')}: tier 缺失或非法({tier})")
continue
if tier == "primary":
if not a.get("quote", "").strip():
errors.append(f"锚点 {a.get('label', '?')}: primary 档缺 quote(原文引用句)")
if not a.get("locator", "").strip():
errors.append(f"锚点 {a.get('label', '?')}: primary 档缺 locator(出处定位)")
for key, item in snap.get("background", {}).items():
if isinstance(item, dict) and "tier" in item:
tier = item.get("tier")
if tier not in TIERS:
errors.append(f"background.{key}: tier 非法({tier})")
elif tier == "primary":
if not item.get("quote", "").strip():
errors.append(f"background.{key}: primary 档缺 quote")
if not item.get("locator", "").strip():
errors.append(f"background.{key}: primary 档缺 locator")
return errors
def fmt(x):
"""去尾零的友好显示:17.2 而非 17.2222222。"""
return f"{x:.4g}"
def main():
path = sys.argv[1] if len(sys.argv) > 1 else "active_vs_debris.json"
with open(path, "rb") as f:
raw = f.read()
sha = hashlib.sha256(raw).hexdigest()
try:
snap = json.loads(raw.decode("utf-8"))
anchors = snap["anchors"]
c = snap["constants"]
bg = snap.get("background", {})
except Exception as e:
print(f"ERROR: 快照解析失败: {e}", file=sys.stderr)
return 2
schema_errors = check_schema(snap)
if schema_errors:
print("ERROR: 证据契约违规(可复现≠可验证):", file=sys.stderr)
for e in schema_errors:
print(f" - {e}", file=sys.stderr)
return 3
gt = c["objects_gt_10cm"]
ap = c["active_payloads"]
cm_10 = c["objects_1cm_10cm"]
mm_1cm = c["objects_1mm_1cm"]
share_active = ap / gt * 100.0
share_other = 100.0 - share_active
ratio_1cm_10cm = cm_10 / gt
ratio_1mm_1cm = mm_1cm / gt
mm_per_active = mm_1cm / ap
print("=== 在轨物体 vs 活跃载荷 派生数字 ===")
print(f">10cm 在轨物体总数 N = {gt:,} 个")
print(f"其中活跃载荷 A = {ap:,} 颗")
print(f" · 活跃占比 = A / N = {ap:,}/{gt:,} = {share_active:.1f}%")
print(f" · 非活跃(碎片/报废/退休闲置)占比 = 100% − {share_active:.1f}% = {share_other:.1f}%")
print(f" · 每颗活跃载荷对应 {gt / ap:.1f} 个 >10cm 在轨物体")
print("-" * 52)
print("尺寸段与 >10cm 物体数的倍数(同源 MASTER 模型,参考纪元 2024-08-01):")
print(f" 1cm-10cm : {cm_10:,}/{gt:,} = ×{ratio_1cm_10cm:.0f}")
print(f" 1mm-1cm : {mm_1cm:,}/{gt:,} = ×{ratio_1mm_1cm:,.0f}")
print(f" 1mm-1cm 相对活跃载荷:{mm_1cm:,}/{ap:,} = {mm_per_active:,.0f} 个/每颗活跃载荷")
print("-" * 52)
print("背景密度注(primary):")
for key, item in bg.items():
if isinstance(item, dict):
print(f" {item.get('note', '')}")
print("-" * 52)
print("=== 证据层级(可复现≠可验证,quote 为外部正确性逐字证据)===")
primaries = [a["label"] for a in anchors if a.get("tier") == "primary"]
print(" primary(主源逐字, ESA 空间环境报告 v10.0):")
for lab in primaries:
print(f" · {lab}")
print(f"快照格式: {snap.get('format', '?')} · 锚点行数 {snap.get('rows', '?')}")
print(f"快照 sha256: {sha}")
print("验证方式:重跑本脚本,与文章正文表格及派生数字逐项核对(占比、倍数、每颗载荷分摊)。")
return 0
if __name__ == "__main__":
sys.exit(main())
active_vs_debris.json — 数据快照全文
{
"format": "chenji-active-vs-debris-v2",
"schema": {
"version": 2,
"evidence_tiers": ["primary", "secondary", "media"],
"rule": "primary 档锚点必须带原文引用句(quote)+出处定位(locator);secondary 为归因清楚的官方二手口径;media 为媒体汇编。可复现≠可验证:quote 是外部正确性的逐字证据,让 AI agent 无需依赖权威即可核验。"
},
"generated": "2026-08-31",
"source": "ESA《ESA's Annual Space Environment Report》GEN-DB-LOG-00288-OPS-SD v10.0(2026-05-01,Final)公开文献原文;MASTER 参考纪元 2024-08-01",
"rows": 4,
"constants": {
"objects_gt_10cm": 54000,
"active_payloads": 9300,
"objects_1cm_10cm": 1200000,
"objects_1mm_1cm": 130000000,
"note": ">10cm 在轨物体数 54000(含约 9300 活跃载荷);1-10cm 约 120 万;1mm-1cm 约 1.3 亿——均为 ESA MASTER-2024 模型估算(参考纪元 2024-08-01),非观测编目数。"
},
"anchors": [
{
"asof": "2024-08-01",
"label": "MASTER 估算:>10cm 在轨物体与活跃载荷",
"tier": "primary",
"quote": "54.000 objects greater than 10 cm (including approximately 9300 active payloads)",
"locator": "ESA 空间环境报告 §2.4《Non-catalogued and modelled objects》,MASTER 参考纪元 2024-08-01(第 408-410 行文本)",
"ref": "ESA'S ANNUAL SPACE ENVIRONMENT REPORT, GEN-DB-LOG-00288-OPS-SD v10.0, 2026-05-01"
},
{
"asof": "2024-08-01",
"label": "MASTER 估算:1-10cm 在轨物体",
"tier": "primary",
"quote": "1.2 million objects from 1 cm to 10 cm",
"locator": "ESA 空间环境报告 §2.4《Non-catalogued and modelled objects》,MASTER 参考纪元 2024-08-01(第 412 行文本)",
"ref": "ESA'S ANNUAL SPACE ENVIRONMENT REPORT, GEN-DB-LOG-00288-OPS-SD v10.0, 2026-05-01"
},
{
"asof": "2024-08-01",
"label": "MASTER 估算:1mm-1cm 在轨物体",
"tier": "primary",
"quote": "130 million objects from 1 mm to 1 cm",
"locator": "ESA 空间环境报告 §2.4《Non-catalogued and modelled objects》,MASTER 参考纪元 2024-08-01(第 414 行文本)",
"ref": "ESA'S ANNUAL SPACE ENVIRONMENT REPORT, GEN-DB-LOG-00288-OPS-SD v10.0, 2026-05-01"
},
{
"asof": "2026",
"label": "自太空时代起,碎片在轨总量一直多于工作卫星",
"tier": "primary",
"quote": "Ever since the start of the space age on the 4th of October 1957 there has been more space debris in orbit than operational satellites",
"locator": "ESA 空间环境报告引言/执行摘要(报告开篇背景段)",
"ref": "ESA'S ANNUAL SPACE ENVIRONMENT REPORT, GEN-DB-LOG-00288-OPS-SD v10.0, 2026-05-01"
}
],
"background": {
"density_note": {
"tier": "primary",
"quote": "the density of active payloads is approaching that of space debris in these heavily populated orbits",
"locator": "ESA 空间环境报告 §2.4(MASTER 人口 ≤1cm 分析段)",
"note": "在星座密集的高度带,活跃载荷密度已逼近碎片密度——即便这一层,也说明'在用的'与'垃圾的'在同量级挤占"
}
}
}
你该带走什么
天上 >10cm 的在轨物体约 5.4 万个,真正在干的活活跃载荷只有约 9,300 颗(约 17%),其余约 83% 是碎片、报废卫星、退休末级——二手闲置与报废资产。更小尺寸段以数量级翻上去:1-10cm 约 120 万(×22),1mm-1cm 约 1.3 亿(×2,400),每颗活跃载荷头上悬着约 1.4 万个毫米级物体。碎片话题不必是末日叙事:轨道是资产,绝大多数闲置物会随高度自清(见《轨道寿命地图》),真正要管理的是与活跃载荷共享高度带的那些。资产管理的第一步,从来是盘清账。
数据来源:ESA 空间环境报告(Annual Space Environment Report)GEN-DB-LOG-00288-OPS-SD v10.0(2026-05-01,Final)——>10cm 在轨物体与活跃载荷、1-10cm、1mm-1cm、以及"碎片在轨总量一直多于工作卫星"四段原文;MASTER-2024 模型估算,参考纪元 2024-08-01。
历史背景:本系列第 5 篇《墓地轨道》——高轨报废卫星为何基本不掉、如何抬升处置;第 6 篇《轨道寿命地图》——高度如何决定一颗卫星失联后自然再入的时长。
可验证声明 印记等级:完整可复现
- 数据可复现:文中数字可由文末脚本 + 冻结快照重跑核对
- 引用可溯源:锚点逐字回主源(原文引用句 + 出处定位)
- 结论可核对:证据层级已标注(主源逐字 / 官方二手 / 媒体汇编)