[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fGvSWOPqvfqpnsEtCyzEke1GXmolvqBsaZFKU24tT1XY":3},{"item":4,"related":57},{"id":5,"type":6,"title":7,"slug":8,"summary":9,"body":10,"coverUrl":11,"productScreenshots":12,"productLinks":13,"authorName":14,"authorUrl":15,"authorSubject":16,"category":17,"tags":22,"sourceLabel":47,"sourceName":45,"sourceUrl":48,"status":49,"seoTitle":50,"seoDescription":50,"canonicalUrl":50,"isFeatured":51,"sno":52,"sortOrder":53,"publishedAt":54,"updatedAt":55,"createdAt":56},"b389a24b-ea9b-4e0f-a7c8-451b9d9fc271","article","如何为海量软件项目做「可追溯的分类整理」","how-reuseio-works","Reuseio 用机器自动维护数据流程，让来源决定事实，平台内置 AI 负责整理，用户 Agent 结合实际项目判断。","> 软件世界正在指数级膨胀。一个需求背后，可能有几十个 API、SDK、MCP Server、Skill、CLI 都能满足。Reuseio 不替你做技术决策，而是用 AI 把散落在互联网上的软件能力，自动发现、抽取、分类、验证、整理成一份「机器可读、来源可查、持续更新」的世界级 Registry。\n\n## AI 负责整理，来源负责事实\n\n传统做法里，开发者要么靠记忆堆砌经验，要么让 AI 凭训练数据「脑补」一个库是否支持某项能力。Reuseio 把这两件事彻底分开：\n\n- **Reuseio 负责**：发现（Discover）、描述（Describe）、结构化（Structure）、引用（Reference）。\n- **Reuseio 不负责**：决策（Decide）、执行（Execute）、代理（Proxy）、计费（Bill）、托管密钥（Store Credentials）。\n\n一句话概括它的边界哲学：\n\n> 机器自动维护数据流程，让来源决定事实，平台内置 AI 负责整理，让用户的 Agent 结合实际项目判断。\n\n也就是说，Reuseio 不声称「哪个最好」，它只保证「我说的事实都有出处」。这是它能管理海量项目且不崩坏的根基。\n\n## 统一数据模型胜过无限分类\n\n面对成千上万的软件，第一道难题不是「怎么抓」，而是「怎么存」。Reuseio 用一套以 **Product（产品）为核心** 的模型来解决分类收敛问题：\n\n| 实体 | 作用 | 关键约束 |\n| --- | --- | --- |\n| **Provider** | 软件提供方（如 Cloudflare、Stripe） | 与 Product 分离，一个 Provider 下挂多个 Product |\n| **Product** | 核心实体：API \u002F SDK \u002F MCP \u002F Skill \u002F CLI \u002F SaaS \u002F Runtime \u002F Library \u002F Open Source | 必须有名称、slug、合法类型、至少一个 Source |\n| **Capability** | 正式能力（如 Object Storage、Authentication） | 独立建模，与 Product **多对多** |\n| **Tag** | 受控标签（Runtime、Region、License、Protocol…） | 必须归属某个 Tag Group |\n| **Facts** | 动态事实（`pricing.free_tier`、`runtime.cloudflare_workers`） | 每项必须绑定 Source |\n| **Source \u002F Evidence** | 事实来源与字段级证据 | 所有事实可追溯 |\n\n这种建模的巧妙之处在于：**能力的分类是可收敛的**。无论市面上出现多少新库，「对象存储」「身份认证」这类 Capability 是稳定的。AI 的工作不是无限发明新分类，而是把新产品精确挂到已有的能力树上。\n\n## AI 分类整理流水线\n\nReuseio 把「管理海量项目」拆成一条全自动、可伸缩的 Pipeline：\n\n```mermaid\nflowchart LR\n    A[互联网] --> B[Discovery 发现]\n    B --> C[AI 收录判断]\n    C --> D[Crawler 抓取]\n    D --> E[Extract 文本清洗切片]\n    E --> F[AI Normalizer 标准化]\n    F --> G[Validator 校验]\n    G --> H[Publish 自动发布]\n    H --> I[Website \u002F API \u002F npm \u002F Skill]\n```\n\n每一步 AI 的角色都明确清晰：\n\n1. **Discovery（发现）**：从 GitHub、npm、MCP Registry、官方目录、人工 Seed URL 扫描新项目，进入 `discovered_items`，先做基础去重（Canonical URL、官方域名、仓库地址、包名、Provider+名称、别名）。\n2. **AI 收录判断**：判断项目属于 `valid \u002F irrelevant \u002F demo \u002F abandoned \u002F duplicate \u002F spam`。这是「收录决策」，允许 AI 推理，但**此时 AI 不能生成任何事实**。\n3. **Crawler（抓取）**：按 `max_depth=3`、`max_pages=30` 等边界递归抓取官方文档、API Reference、Pricing、SDK、Changelog，只访问官方域名，绝不越界。\n4. **Extract（抽取）**：删除导航\u002F页脚\u002F广告等噪声，保留标题、段落、表格、代码；长文档切片，绝不全文塞给 AI。\n5. **AI Normalizer（标准化，核心环节）**：把「产品元数据 + 来源片段 + 现有 Registry + Schema」输入模型，输出**严格结构化 JSON**——Provider、类型、中英摘要、Capability 候选、Tag、Integration、Facts、关系、来源映射、AI Prompt。\n6. **Validator（校验）**：确定性校验器逐项检查 Schema 合法性、枚举值、URL、Capability\u002FTag 是否真实存在、Fact 是否绑定 Source。失败只记录错误，不污染数据库。\n7. **Publish（发布）**：通过校验即自动上线，无需人工审核，并清理缓存、重建搜索索引。管理员事后只需处理异常。\n\n## 能推算，但不能编造\n\n这是 Reuseio 最有纪律感的设计。AI 在流水线里被明确允许和禁止了两套行为：\n\n**AI 可以做**（整理性工作）：\n- 抽取、整理、分类、翻译、摘要、生成介绍、生成供 AI 使用的提示词。\n\n**AI 禁止做**（事实性编造）：\n- 猜测价格、猜测兼容性、猜测运行环境、猜测 API 能力、根据常识填字段、用 Provider 其他产品推导当前产品能力。\n\n对于所有未知信息，规则是：\n\n```json\n\u002F\u002F 正确：未知就是 null\n{ \"cloudflare_workers\": null }\n\n\u002F\u002F 错误：把\"未知\"当成\"不支持\"\n{ \"cloudflare_workers\": false }\n```\n\n**「未知 ≠ false」** 是整条流水线的铁律。摘要类内容（中英 Summary、Description、AI Prompt）允许 AI 综合多篇来源生成，但只能基于已抓取内容，不得引入材料之外的新事实。\n\n## 受控词表：让分类自动收敛\n\n海量项目最怕分类失控——今天 AI 叫它「对象存储」，明天叫「云存储」，后天叫「OSS」。Reuseio 用两个受控词表锁死这个问题：\n\n- **Capability Registry**：AI 抽取能力后，先查已存在的 Registry 做匹配，命中就用 `capability_id`；确实不存在才生成候选，且必须完成 slug 规范化、去重、alias 匹配。\n- **Tag Registry**：Tag 必须属于某个 Tag Group（如 `runtime`、`region`、`commercial-model`），AI 候选 → 词表精确\u002F别名匹配 → 复用或新建。\n\n同时，AI 还会抽取产品间关系（`depends_on`、`integrates_with`、`compatible_with`），并谨慎建立 `alternative_to`（仅凭常识不自动建立）。这让 Registry 不只是目录，而是一张不断生长的**软件能力图谱**。\n\n## 自动化、去重、成本控制\n\n要让「海量」可持续，靠的不是更强的模型，而是更稳的工程：\n\n- **队列化解耦**：Cloudflare Cron → Scheduler Worker → Queue → Crawler Worker，避免单次任务过大或单点失败拖垮全局。\n- **幂等与去重**：队列重投不会创建重复 run 或重复 crawl；发布失败仅隔离该产品，不影响其他。\n- **更新检测（content_hash）**：重新抓取先比 Hash，没变就不调 AI、不重新标准化，只更新 `fetched_at`，**大幅降低 AI 成本**。按类型制定刷新周期（Pricing 24h、Docs 7 天、第三方 14 天、已停更 30 天）。\n- **失败隔离与限速**：Job 级 \u002F Source 级隔离 + Queue 重试；尊重 `robots.txt`，单域名并发 ≤2、间隔 ≥1s，`ReuseioBot\u002F1.0`。\n- **停更处理**：检测到 `Deprecated \u002F Sunset \u002F Archived` 自动标 `discontinued` 但保留 Source 与页面；旧文档里消失的事实先标记 stale，连续两次抓取无法确认才删除，避免网页改版误删有效信息。\n\n## 一处建模，多端消费\n\n整理好的 Registry 不被锁死在某个界面里，而是围绕**同一套 Schema** 服务所有客户端：\n\n```text\nOne Registry · One Schema · Multiple Clients\n```\n\n- **Reuseio Manifest**（`reuseio.json`）：人类、AI Agent、工具统一可读的描述格式。\n- **前台网站**：SSR 浏览、搜索、详情、来源展示、AI Prompt 一键复制。\n- **Public REST API**：无需 Key，给 AI Agent 直接检索。\n- **npm SDK**：极薄封装，`search()`、`getProduct()`、`getManifest()` 直接返回 Manifest。\n- **Skill（工作流）**：不存数据，只定义「读需求 → 拆能力 → 查 Reuseio → 读 Manifest → 查 Evidence → 比较 → 让 AI 判断 → 依据官方文档实施」的协议。\n\n同一个产品，在网页、API、SDK、Skill、未来 MCP 里看到的都是同一份结构化事实。\n\n## Reuseio 的核心资产\n\nReuseio 的价值，不在于它多会「推荐」，而在于它把混乱的软件世界，沉淀成一份：\n\n> **持续更新、可追溯、机器可读取的软件能力 Registry。**\n\n当项目数量从几百涨到几十万，靠人肉维护会崩溃，靠 AI 自由发挥会失真。Reuseio 给出的答案是：**用 AI 做规模化整理，用来源做事实锚点，用统一 Schema 做长期收敛**——让开发者在动手写代码前，先看见已有的、被验证过的、可复用的方案。\n\n这是「从重复造轮子，到优先复用」的第一步。","\u002Fuploads\u002F2026-08-12\u002Fc6e069f3-d23a-483d-ba9e-20ec36407ef2.jpg",[],[],"Srces工作室","https:\u002F\u002Fwww.srces.cn","f39339b1-aaa6-4e86-b0c2-a6e6a21113b5",{"id":18,"name":19,"slug":20,"description":21},"6179d3b6-dc34-4483-9ded-3cd9f1b37a47","科普","abbreviation","介绍各领域新兴概念",[23,27,31,35,39,43],{"id":24,"name":25,"slug":26},"88d2bc27-0e0f-468a-b907-2991cb97b87b","人工智能","ai",{"id":28,"name":29,"slug":30},"4c2bbea6-eab7-40a8-8447-1de478ff7749","分析","analyse",{"id":32,"name":33,"slug":34},"7c76bfc2-f80f-4ee0-a95d-27bd8708b434","技术","slug",{"id":36,"name":37,"slug":38},"93e74788-a474-46ff-a185-5bdb45ab3b02","Srces工作室产品","srces-product",{"id":40,"name":41,"slug":42},"bfb9750c-40cf-487e-81ad-dbac5f22ffcd","SaaS","saas",{"id":44,"name":45,"slug":46},"631fda37-c797-4f16-b814-457c609c0aad","Reuseio","reuseio","前往使用","https:\u002F\u002Freuseio.com","published",null,false,5,0,"2026-08-12T00:00:00.000Z","2026-08-19T03:03:42.066Z","2026-08-12T05:56:11.211Z",[58,67,76],{"id":59,"type":6,"title":60,"slug":61,"summary":62,"coverUrl":63,"authorName":14,"sno":64,"publishedAt":65,"createdAt":66},"91a515bb-7b16-4b1a-9a13-8a579d689e00","软件复杂度分配：开发者和用户各自该承担什么","software-complexity","当开发者选择“不做某些事情”时，这些事情的复杂度并不会自动消失，而是会以另一种形式转嫁到用户身上","\u002Fuploads\u002F2026-08-31\u002F00da97de-89e8-46ad-babb-19e7e09a5ff0.jpg",1,"2026-08-31T00:00:00.000Z","2026-08-31T06:12:08.608Z",{"id":68,"type":6,"title":69,"slug":70,"summary":71,"coverUrl":72,"authorName":73,"sno":64,"publishedAt":74,"createdAt":75},"0bc8b96e-279c-4e3d-ae9c-96397812c539","软件复用：从“造轮子”到“搭积木”的工程师思维","software-reuse","软件复用的本质不是复制粘贴，而是系统工程化的核心实践。本文从复用的定义、层次、价值讲到实践原则，并推荐一个帮你落地“先找后造”理念的资源平台，助你从零散编码走向架构思维。","\u002Fuploads\u002F2026-08-23\u002F53ec95ac-9196-469c-bca4-03be6d15a161.jpg","Foundit","2026-08-23T00:00:00.000Z","2026-08-23T07:17:57.603Z",{"id":77,"type":6,"title":78,"slug":46,"summary":79,"coverUrl":80,"authorName":14,"sno":64,"publishedAt":81,"createdAt":82},"dbf6772f-7444-4fb3-92ea-983e6d0cee0d","Reuseio：为 AI 时代重新定义\"软件复用\"的注册中心","一个面向开发者与 AI 的软件能力注册中心。它不替你写代码，而是让 AI 在动手之前，先看见已经存在的世界。","\u002Fuploads\u002F2026-08-12\u002F3650f19f-d9e5-4cbf-8e06-24ccd965cded.jpg","2026-08-10T00:00:00.000Z","2026-08-10T05:57:30.081Z"]