YaCy 是一个开源、去中心化的 P2P 搜索引擎:没有中心服务器,每个节点既贡献索引也参与搜索,和「人人可运行、数据在本地」的理念一致。传统上有 Java 版 YaCy,近年又有 YaCy-Go 用 Go 重写。YaCy.Uno 则是基于 Uno Platform(C# / .NET 9) 的又一实现——在继承 YaCy 协议与理念的前提下,把技术栈拉到 .NET 生态,并强调跨平台(Windows / macOS / Linux / WebAssembly,以及未来的 iOS/Android)。
本文重点从架构和设计思想两方面介绍 YaCy.Uno,给想了解或参与贡献的读者一个入口。
YaCy.Uno 的目标是与现有 YaCy 节点互通:实现 YaCy P2P 协议(hello、seedlist、search、transferRWI、transferURL、crawlReceipt、query、profile 等),在「线缆级」与主流 Java/Go 实现兼容。这样既能让 Uno 节点加入既有 YaCy 网络,也能让老节点发现并利用新节点,而不是另起一个孤岛网络。
整体是分层架构:从上到下依次是「展示与接入」→「应用服务」→「核心引擎」→「存储」。
┌─────────────────────────────────────────────────────────────┐
│ Uno Platform UI │ ASP.NET Core Web API │ Spectre.Console │
│ (桌面/WASM/移动) │ (REST / SSE / SignalR) │ (CLI) │
└─────────────────────────┬───────────────────────────────────┘
│
┌─────────────────────────┴───────────────────────────────────┐
│ Application Services:Search / Crawl / P2P-DHT / Index │
└─────────────────────────┬───────────────────────────────────┘
│
┌─────────────────────────┴───────────────────────────────────┐
│ Core Engine:SQLite FTS5 全文索引 / 文档解析器 / YaCy 协议 │
└─────────────────────────┬───────────────────────────────────┘
│
┌─────────────────────────┴───────────────────────────────────┐
│ Storage:SQLite (EF Core + FTS5),统一数据与索引 │
└─────────────────────────────────────────────────────────────┘
/yacy/hello、/yacy/seedlist、/yacy/search、/yacy/transferRWI、/yacy/transferURL、爬取回执、节点消息等,与 Java/Go 节点互通。documents 存元数据,documents_fts(FTS5)存全文;另有 seeds、crawlqueue、rwiterms、config 等。data/yacy.db,便于备份与迁移。| 维度 | Java YaCy | YaCy-Go | YaCy.Uno |
|---|---|---|---|
| 语言/运行时 | Java 8+ | Go | C# / .NET 9 |
| UI | JSP/Servlet | go-app WASM | Uno Platform (XAML) |
| 全文索引 | Solr + Kelondro | SQLite FTS5 | SQLite FTS5 |
| HTTP | Jetty | Fiber | ASP.NET Core Kestrel |
| 跨平台形态 | JVM | 原生 | .NET 跨平台 + Uno 多端 |
| 移动端 | ❌ | ❌ | ✅ 规划 (iOS/Android) |
| TUI/CLI | ❌ | ✅ | ✅ Spectre.Console |
共同点:都遵循 YaCy 理念(去中心、本地数据、P2P),并尽量在协议层面兼容,便于组成同一张搜索网络。
YaCy.Uno 在设计上强调:协议兼容、跨平台、本地存储与单文件可部署、核心与 UI/传输解耦;在架构上采用分层(接入 → 服务 → 引擎 → 存储),核心引擎与 SQLite FTS5 统一收口在 YaCy.Uno.Core,便于维护和扩展。若你对去中心化搜索、C#/.NET 或 Uno 跨平台开发感兴趣,欢迎到仓库看代码、提 Issue 或 PR。
设计方案.md、研发计划.md、README.md 等有更细的技术说明与 API 说明。还没有人回复