Files
agent-radar/README.md
T

138 lines
5.4 KiB
Markdown
Raw 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.
# agent-radar · 全球智能体开源应用追踪
持续追踪全球 AI Agent 开源应用,输出**深度分析文章**(发布在 [blog.apescale.com](https://blog.apescale.com) 可巴蒂栏目),
并**镜像源码**到 `gitinbox` 组织做代码级跟踪。
设计原则:**每新增一个项目,边际成本递减,横向对比能力自动增强。**
所有项目共用同一套五维 schema,因此对比矩阵、赛道图、总纲索引都能由脚本自动生成,
人只需要做「研判与写作」这部分不可替代的工作。
---
## 收录标准
满足任一即可收录,但会标注不同 `status`:
| status | 含义 | 判定 |
| --- | --- | --- |
| `active` | 持续追踪 | 有实际影响力,或技术路线有代表性,值得长期跟进 |
| `watch` | 观察中 | 早期项目,方向有意思但尚未验证 |
| `archived` | 归档 | 停更 / 被收购 / 路线变更 |
**不收录**:纯模型权重、纯数据集、无公开代码的论文复现、营销型空壳仓库。
---
## 目录结构
```
agent-radar/
├── README.md # 本文件
├── schema/
│ ├── project.schema.yaml # 五维档案字段定义 + 枚举(也是脚本的骨架生成源)
│ └── license-tiers.yaml # 许可证成色分级 → 镜像可见性规则
├── data/
│ ├── registry.yaml # 收录总表,驱动批量抓取
│ ├── projects/<id>.yaml # 每项目一份五维档案
│ └── snapshots/<id>.jsonl # 指标时间序列(追加式,一行一天)
├── articles/
│ ├── 00-overview.md # 总纲文源文(含矩阵占位符,由脚本回填)
│ └── <id>.md # 项目深度文源文
├── templates/project-article.md # 文章固定章节模板
├── scripts/ # 抓取 / 生成 / 镜像 / 发布脚本
└── site/index.html # 静态总览页
```
---
## 五维档案
每个项目一份 `data/projects/<id>.yaml`,字段定义见 `schema/project.schema.yaml`:
| 维度 | 回答的问题 |
| --- | --- |
| `identity` | 它是谁、谁在做 |
| `business` | 它靠什么活着、为谁活着 |
| `scenario` | 它在什么场合被用、产出什么 |
| `tech` | 它怎么做到的、抽象在哪一层 |
| `ecosystem` | 它的社区动能(多数由脚本自动刷新) |
| `risk` | 它的坑在哪、宣称与实测的落差 |
> `risk.claim_vs_reality` 是最不该留空的字段。它逼着每篇分析去核实
> 「项目方宣称 vs 实际状态」,防止文章退化成 README 复读。
---
## 许可证分级 → 镜像可见性
**新增项目时的第一判断项。** 规则见 `schema/license-tiers.yaml`:
| 级 | 判定 | 成色 | 镜像可见性 |
| --- | --- | --- | --- |
| L1 | MIT / Apache-2.0 / BSD / ISC / GPL / MPL | 完全开源 | `public` |
| L2 | AGPL / SSPL / BUSL / Elastic-2.0 | 有限开源 | `public`(档案标注限制) |
| L3 | NOASSERTION + 自定义 source-available | 源码可得、非开源 | **`private`** |
| L4 | 无 LICENSE / proprietary | 不可得 | 不镜像,仅存链接 |
定错级的代价:L3 项目被公开镜像,等于替对方做了一次未经授权的公开分发。
---
## 新增一个项目的 SOP
```bash
# 1. 建档(自动抓许可证并定级 L1-L4)
python3 scripts/new_project.py --repo owner/name
# 2. 手工填档案五维度 —— 重点填 risk.claim_vs_reality
$EDITOR data/projects/<id>.yaml
# 并把它加进 data/registry.yaml
# 3. 刷新指标
python3 scripts/fetch_stats.py --id <id>
# 4. 镜像源码(按许可证等级自动决定 private / public)
bash scripts/mirror_sync.sh --id <id>
# 5. 成文(套 templates/project-article.md)
$EDITOR articles/<id>.md
# 6. 发布到 emlog(可巴蒂 sid=17),emlog_id 会自动回写档案
python3 scripts/publish_emlog.py --article <id>
# 7. 回填总纲并更新总纲文
python3 scripts/build_matrix.py
python3 scripts/publish_emlog.py --article 00-overview
# 8. 入库
git add -A && git commit -m "track: <name>" && git push
```
### ⚠️ 更新总纲文时必读
emlog 的 update 接口**不传 `--content` 就会清空正文**。
`publish_emlog.py` 已内置保护(update 前先 `detail` 取回全文),
但如果你手工调 emlog 脚本更新总纲,**必须先 detail 再 update**。
---
## 脚本一览
| 脚本 | 作用 | 降级行为 |
| --- | --- | --- |
| `new_project.py` | 建档 + 自动判许可证等级 | API 失败时生成未定级骨架,要求人工填 |
| `fetch_stats.py` | 抓指标 + 累积时间序列快照 | 无 `GITHUB_TOKEN` 则匿名降级;当日缓存;失败沿用上次快照并标 `stale` |
| `build_matrix.py` | 生成对比矩阵 + 赛道图 / 象限图 | 项目 <4 个出分层图,≥4 个才出象限图 |
| `mirror_sync.sh` | 源码镜像同步 | 大仓(>300MB)提示并支持 treeless clone 降级 |
| `publish_emlog.py` | emlog 发布 / 更新 | update 前强制取回全文防空内容 |
---
## 已知约束
- **GitHub API 限额**:无 `GITHUB_TOKEN` 时匿名限额 60 次/小时。
项目数超过约 20 个后批量刷新会受限,建议配置 token。
- **磁盘占用**:源码镜像是全量裸仓。10 个量级约需数 GB,
大仓可用 `--filter=blob:none` 做 treeless 镜像。
- **象限图阈值**:样本 <4 个时象限图没有统计意义,此阶段只出赛道分层图。