149 lines
8.7 KiB
YAML
149 lines
8.7 KiB
YAML
# ============================================================
|
|
# agent-radar · 项目档案 Schema
|
|
# ------------------------------------------------------------
|
|
# 本文件有双重身份:
|
|
# 1) 人类阅读的填写规范(desc / note 字段)
|
|
# 2) scripts/new_project.py 的机器可读骨架生成源
|
|
# 改结构时两处要同步,否则脚本生成的空档案会缺字段。
|
|
#
|
|
# 五维度设计意图:
|
|
# 业务(business) — 它靠什么活着、为谁活着
|
|
# 场景(scenario) — 它在什么场合被用、产出什么
|
|
# 技术(tech) — 它怎么做到的、抽象在哪一层
|
|
# 生态(ecosystem) — 它的社区动能(多数字段由脚本自动刷新)
|
|
# 风险(risk) — 它的坑在哪、宣称与实测的落差
|
|
# 其中 risk.claim_vs_reality 是全套 schema 里最不该留空的字段:
|
|
# 它逼着每篇分析去核实「项目方宣称 vs 实际状态」,防止文章退化成 README 复读。
|
|
# ============================================================
|
|
|
|
version: 1
|
|
|
|
# ---------- 枚举值 ----------
|
|
enums:
|
|
status: [active, watch, archived] # active=持续追踪 watch=观察中 archived=停更归档
|
|
openness: [L1, L2, L3, L4] # 许可证成色分级,详见 license-tiers.yaml
|
|
vendor_type: [startup, bigtech, community, solo, unknown]
|
|
interaction_mode: [cli, ide-plugin, desktop-app, web-app, api, editor-fork]
|
|
human_in_the_loop: [autonomous, approval-gated, supervised, manual]
|
|
maturity: [concept, preview, beta, stable, mature]
|
|
model_binding: [locked, preferred, byom, neutral] # locked=仅自家模型 byom=自带模型 neutral=完全中立
|
|
visibility: [public, private, none]
|
|
|
|
# ---------- 字段定义 ----------
|
|
# type 用于脚本生成占位值:str->"" int->0 bool->false list->[] dict->{}
|
|
fields:
|
|
|
|
# ===== 顶层标识 =====
|
|
id: {type: str, required: true, desc: "档案唯一标识,小写连字符,如 ipollowork"}
|
|
name: {type: str, required: true, desc: "项目显示名"}
|
|
repo: {type: str, required: true, desc: "GitHub 仓库 owner/name"}
|
|
homepage: {type: str, required: false, desc: "官网"}
|
|
added_at: {type: str, required: true, desc: "收录日期 YYYY-MM-DD"}
|
|
status: {type: str, required: true, enum: status, desc: "追踪状态"}
|
|
|
|
# ===== 身份层 =====
|
|
identity:
|
|
tagline: {type: str, required: true, desc: "一句话定位,优先用官方原文"}
|
|
vendor: {type: str, required: false, desc: "背后公司/组织"}
|
|
vendor_type: {type: str, required: false, enum: vendor_type}
|
|
region: {type: str, required: false, desc: "团队所在地,如 中国/美国/欧洲"}
|
|
first_seen: {type: str, required: false, desc: "首次公开时间"}
|
|
|
|
# ===== 业务维度 =====
|
|
business:
|
|
positioning: {type: str, required: true, desc: "它在产业链里到底站在哪一层"}
|
|
target_users: {type: list, required: true, desc: "目标用户群"}
|
|
monetization: {type: str, required: true, desc: "变现方式:捐赠/商业授权/SaaS/双轨/未定"}
|
|
license:
|
|
spdx: {type: str, required: true, desc: "SPDX 标识,如 MIT / Apache-2.0 / NOASSERTION"}
|
|
name: {type: str, required: true, desc: "许可证实际名称"}
|
|
openness: {type: str, required: true, enum: openness, desc: "成色分级 L1-L4"}
|
|
redistributable: {type: bool, required: true, desc: "可否公开再分发 —— 直接决定镜像可见性"}
|
|
key_restrictions: {type: list, required: false, desc: "关键限制条款原文要点"}
|
|
moat: {type: str, required: false, desc: "护城河/不可轻易复制的部分"}
|
|
competitive_risk: {type: str, required: false, desc: "最容易被谁替代、为什么"}
|
|
|
|
# ===== 场景维度 =====
|
|
scenario:
|
|
primary: {type: list, required: true, desc: "核心场景"}
|
|
typical_use_cases: {type: list, required: true, desc: "典型用例,写给读者看的具体例子"}
|
|
industries: {type: list, required: false, desc: "行业落点"}
|
|
interaction_mode: {type: list, required: true, enum: interaction_mode, desc: "交互形态,可多选"}
|
|
human_in_the_loop: {type: str, required: true, enum: human_in_the_loop, desc: "人机协作模式"}
|
|
deliverables: {type: list, required: true, desc: "交付物类型:code/doc/ppt/website/design/video/data/report"}
|
|
|
|
# ===== 技术维度 =====
|
|
tech:
|
|
form_factor: {type: str, required: true, desc: "产品形态:CLI/IDE插件/桌面应用/Web平台/库"}
|
|
stack: {type: list, required: true, desc: "技术栈"}
|
|
engine_abstraction:
|
|
supported: {type: list, required: false, desc: "支持的 agent 引擎/runtime"}
|
|
mechanism: {type: str, required: false, desc: "统一接入机制描述"}
|
|
abstraction_layer: {type: str, required: false, desc: "抽象层名称,如 Engine Protocol"}
|
|
depth_notes: {type: str, required: false, desc: "**关键**:各引擎接入深度是否对等,逐个说明"}
|
|
extension_system:
|
|
skills: {type: str, required: false, desc: "Skills 支持情况"}
|
|
plugins: {type: str, required: false, desc: "插件机制"}
|
|
mcp: {type: str, required: false, desc: "MCP 支持方式"}
|
|
model_binding: {type: str, required: true, enum: model_binding, desc: "模型绑定程度"}
|
|
local_first: {type: bool, required: true, desc: "是否可完全本地运行"}
|
|
multi_agent: {type: str, required: false, desc: "多 Agent 编排方式"}
|
|
permission_sandbox: {type: str, required: false, desc: "权限审批与沙箱机制"}
|
|
observability: {type: str, required: false, desc: "执行过程可观测性"}
|
|
|
|
# ===== 生态维度(metrics 由 fetch_stats.py 自动刷新,勿手填) =====
|
|
ecosystem:
|
|
metrics:
|
|
stars: {type: int, auto: true}
|
|
forks: {type: int, auto: true}
|
|
open_issues: {type: int, auto: true}
|
|
subscribers: {type: int, auto: true}
|
|
created_at: {type: str, auto: true}
|
|
pushed_at: {type: str, auto: true}
|
|
size_kb: {type: int, auto: true}
|
|
languages: {type: dict, auto: true}
|
|
latest_release: {type: str, auto: true}
|
|
release_cadence: {type: str, auto: true}
|
|
data_date: {type: str, auto: true, desc: "本组数据的抓取日期"}
|
|
stale: {type: bool, auto: true, desc: "true=本次抓取失败,沿用上次快照"}
|
|
community: {type: str, required: false, desc: "社区形态与活跃度"}
|
|
standards: {type: list, required: false, desc: "采纳/挂靠的标准与联盟,如 OPEA/OpenSSF"}
|
|
notable_events: {type: list, required: false, desc: "关键事件与时间点"}
|
|
|
|
# ===== 风险维度 =====
|
|
risk:
|
|
license_risk: {type: str, required: true, desc: "许可证带来的使用/分发风险"}
|
|
vendor_lockin: {type: str, required: false, desc: "供应商锁定点"}
|
|
# 结构化三项式:claim / actual / source。不用裸字符串,
|
|
# 因为 build_matrix.py 要把它渲染成表格,且缺 source 的断言无法复核。
|
|
claim_vs_reality: {type: list, required: true, desc: "**必填**:每项为 {claim, actual, source} 三项,写清 宣称/实际/证据来源"}
|
|
maturity: {type: str, required: true, enum: maturity}
|
|
|
|
# ===== 象限图坐标(0-10,人工评定,供 build_matrix.py 出图) =====
|
|
# 评分是主观判断,但一旦统一口径,横向比较就成立了。
|
|
# 评完请回头看一眼:如果所有项目都打 9 分,说明这套轴失去了区分度。
|
|
chart:
|
|
form_depth: {type: int, required: false, desc: "形态纵深:0=单点工具 10=统一工作台"}
|
|
engine_neutral: {type: int, required: false, desc: "引擎立场:0=绑定单引擎 10=多引擎中立"}
|
|
local_first_score: {type: int, required: false, desc: "本地优先:0=强云依赖 10=完全本地可跑"}
|
|
deliverable_depth: {type: int, required: false, desc: "交付物纵深:0=只出代码 10=多模态可编辑产出"}
|
|
|
|
# ===== 结论 =====
|
|
verdict:
|
|
one_liner: {type: str, required: true, desc: "一句话结论,进总纲索引表"}
|
|
who_should_use: {type: str, required: true}
|
|
who_should_not: {type: str, required: true}
|
|
|
|
# ===== 镜像与文章回写 =====
|
|
mirror:
|
|
gitea_repo: {type: str, required: false, desc: "gitinbox 下的镜像仓,如 gitinbox/iPolloWork"}
|
|
visibility: {type: str, required: false, enum: visibility}
|
|
upstream: {type: str, required: false}
|
|
last_sync: {type: str, required: false}
|
|
sync_note: {type: str, required: false, desc: "如体积过大改用 treeless clone 等降级说明"}
|
|
|
|
article:
|
|
emlog_id: {type: int, required: false, desc: "emlog 文章 ID,发布后回写"}
|
|
published_at: {type: str, required: false}
|
|
url: {type: str, required: false}
|