首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一个人写了 12 万行代码,造出开源版 Perplexity

一个人写了 12 万行代码,造出开源版 Perplexity

作者头像
智能时代蛮子
发布2026-06-10 20:55:00
发布2026-06-10 20:55:00
810
举报

GitHub: https://github.com/zaidmukaddam/scira

一句话总结

孟买独立开发者独力打造的「小而全」开源 AI 搜索引擎(11.5K stars),以 60+ LLM 模型支持、25+ 外部 API 集成、75 步自主研究代理和三级搜索降级为核心竞争力,是 Perplexity 开源替代品赛道中集成广度最大的方案。

值得关注的理由

  1. Extreme Search 自主研究代理:75 步自主执行 + 代码沙箱 + 多源交叉验证 + 实时流式 UI 反馈——这是 Perplexity Pro 「深度研究」功能的开源实现,技术含量远超简单的搜索+回答模式
  2. 多提供商故障转移架构:三级搜索降级(主 API → 备用 API → 元数据回退)+ 双 API key 轮转 + WebSocket Fetch 延迟优化——在不可靠的第三方 API 之上构建可靠服务的工程实践
  3. 开源核心 + 商业化的完整闭环:AGPL-3.0 + Pro/Max 分层付费 + Polar/DodoPayments 双支付系统 + Lookout 定时研究推送——独立开发者用开源策略构建商业产品的教科书案例

项目画像

维度

数据

GitHub

https://github.com/zaidmukaddam/scira

Star / Fork

11,548 / 1,455

代码行数

124,156 行(TSX 60%, TypeScript 29%, CSS 1%)

项目年龄

20 个月(2024-08-07 创建)

开发阶段

功能成熟但活跃度急剧下降(2025-08 高峰 151 commits → 2026-03 仅 5 commits)

贡献模式

独立开发(zaidmukaddam 93.3%,24 位贡献者)

热度定位

大众热门(11.5K stars,已过爆发期,日均 3-5 star)

质量评级

代码[良好] 文档[优秀] 测试[无]

作者视角:为什么存在这个项目

创始人/作者背景

Zaid Mukaddam,孟买独立开发者/创始人,193 个公开仓库,擅长 TypeScript/Next.js。围绕 Scira 构建了产品矩阵(scira-mcp、scira-mcp-chat、vif 等)。使用 Devin AI 辅助开发。典型的夜猫子开发者(22:00-01:00 是提交高峰),周末不休息。

问题判断

Perplexity AI 的搜索体验令人惊艳但闭源且付费。开源替代品(Perplexica、Morphic)要么只支持本地模型,要么功能单一。市场空白在于:一个既支持海量云端模型、又集成丰富外部 API、还有商业化路径的全功能 AI 搜索引擎。Vercel AI SDK 和各 API 厂商的免费额度降低了构建门槛。

解法哲学

  • 极致集成者:核心能力不是发明算法,而是将 25+ 外部 API 和 60+ LLM 模型通过 Vercel AI SDK 统一编排
  • API 连接器范式:每个搜索模式本质上是 group-config.ts 中的工具组合映射,新增模式只需定义工具组 + system prompt
  • 开发速度优先:大量硬编码的 model === 条件判断(AI 辅助编码特征),快速追加但不重构
  • AGPL-3.0 护城河:阻止竞对直接商用开源代码,同时保持代码公开

战略意图

Open Core 商业模式:开源核心吸引流量 → Pro/Max 付费层提供高级功能(Connectors、Memory、Voice、XQL、Lookout)→ scira.ai 在线服务。赞助商生态(Vercel OSS Program + Warp Terminal)降低运营成本。从 MiniPerplx 更名为 Scira 建立独立品牌。

核心价值提炼

创新之处

  1. Extreme Search 自主研究代理(新颖度 4/5 | 实用性 5/5 | 可迁移性 4/5)
    • 1,963 行实现完整的多步研究代理:LLM 生成研究计划 → 最多 75 步自主执行 → 5 种工具(webSearch/browsePage/xSearch/codeRunner/fileQuery)→ thinking 工具强制思考-行动交替 → done 工具作为唯一终止信号 → Python 代码在 Daytona 沙箱执行 → 实时流式 UI 反馈
  2. 多提供商三级搜索降级(新颖度 3/5 | 实用性 5/5 | 可迁移性 5/5)
    • 主搜索 API(Exa/Parallel/Firecrawl)→ 备用搜索 API → metadata.scira.app 元数据回退。确保搜索永不空响应
  3. WebSocket Fetch for OpenAI(新颖度 4/5 | 实用性 4/5 | 可迁移性 4/5)
    • 用 WebSocket 替代 HTTP 调用 OpenAI API,减少 TTFB。独特的 Serverless 延迟优化
  4. 1.5B 参数自动路由器(新颖度 3/5 | 实用性 4/5 | 可迁移性 4/5)
    • 用超轻量 katanemo/Arch-Router-1.5B 模型做查询意图分类,路由到用户自定义的最佳模型配置
  5. better-all 并行初始化(新颖度 3/5 | 实用性 4/5 | 可迁移性 5/5)
    • 基于依赖图的并行 Promise 执行,用于冷启动优化:聊天验证、限额查询、stream ID 创建同时进行,Pro 用户直接跳过 DB 查询
  6. 流恢复机制(新颖度 3/5 | 实用性 5/5 | 可迁移性 4/5)
    • Redis pub/sub + ai-resumable-stream 实现流式响应断线重连,Serverless 环境的关键可靠性保障

可复用的模式与技巧

模式

简述

适用场景

三级 API 降级

主 API → 备用 API → 元数据回退

任何依赖第三方 API 的服务

双 API key 轮转

openai + openai_2 使用不同 key 绕过限流

高并发 LLM 应用

WebSocket Fetch

用 WS 替代 HTTP 调用 API 减少延迟

Serverless 环境的 LLM 调用

工具组合映射

group-config.ts 按搜索模式定义工具组

多模式 AI 应用

LRU 性能缓存

O(1) 双向链表 + TTL,缓存用户使用量计数

频繁查询的热数据缓存

流恢复

Redis pub/sub + resumable stream

Serverless 流式响应

自动路由

1.5B 轻量模型做意图分类路由

多模型 AI 应用的成本优化

关键设计决策

  1. 单一 API 端点处理所有搜索:/api/search/route.ts(1,759 行)一个 POST 端点处理所有搜索请求。牺牲可维护性换来部署简洁性——适合 Serverless 但不适合大团队
  2. AGPL-3.0 而非 MIT:阻止竞对直接商用,保护商业化路径。但也限制了企业用户的采用意愿
  3. 170 个生产依赖:集成广度换来的代价是依赖膨胀和维护复杂度
  4. canary 版 Next.js + dev 版 TypeScript:追求最新特性,但增加了不可预测的 breaking changes 风险

竞品格局与定位

竞品对比矩阵

维度

Scira

Perplexica

Morphic

Stars

11,548

数万

中等

模型支持

60+ 模型,21 提供商

Ollama 本地 + 少量云端

有限

搜索源

4 个搜索 API + 三级降级

SearxNG 自托管

单一

深度研究

75 步自主代理 + 代码执行

自部署

困难(40+ 环境变量)

简单(Docker 一键)

中等

许可证

AGPL-3.0

MIT

Apache 2.0

商业化

Pro/Max 付费 + SaaS

纯开源

代码量

123K 行

~15K 行

~10K 行

差异化护城河

  1. 集成广度:60+ 模型 × 25+ API × 17 搜索模式的组合是竞品难以快速追赶的
  2. 已运营的 SaaS:scira.ai 有真实用户和付费基础,竞品多为纯开源
  3. Vercel 生态深度绑定:Vercel OSS Program 背书 + 深度优化的 Edge/Serverless 架构

竞争风险

  • Perplexica 在隐私和自部署友好度上优势明显(MIT + Docker 一键 + 本地模型)
  • 12 万行无测试代码的维护负担可能导致项目逐步停滞(开发节奏已从 151/月降至个位数)
  • 170 个依赖的供应链风险

生态定位

AI 搜索引擎赛道的「最丰富集成」方案——面向愿意使用云端 API 且需要全功能搜索体验的用户。与 Perplexica(隐私/自部署)和 Morphic(交互创新)形成互补定位。

套利机会分析

  • 信息差:11.5K stars 已充分曝光,但 Extreme Search 的自主研究代理实现(1,963 行)和多提供商降级架构在技术社区分析不多——这些模式可直接迁移到任何 AI 应用
  • 技术借鉴:(1) 三级搜索 API 降级模式 (2) WebSocket Fetch 延迟优化 (3) 1.5B 参数自动路由器 (4) Redis pub/sub 流恢复 (5) better-all 并行初始化
  • 生态位:「集成最丰富的开源 AI 搜索引擎」,填补了 Perplexica(轻量/隐私)和商业 Perplexity(闭源/高价)之间的空白
  • 趋势判断:已过爆发期(日均 3-5 star),开发活跃度急剧下降。项目的可持续性取决于作者是否重新投入精力或吸引新的核心贡献者

风险与不足

  1. 开发活跃度急剧下降:从 2025-08 高峰 151 commits/月降至 2026-03 仅 5 commits,接近停滞
  2. 零测试覆盖:12.4 万行代码无任何测试文件——对生产系统是重大风险
  3. 单人维护:93.3% 代码来自一人,巴士因子 = 1
  4. 巨型文件:route.ts(1,759 行)、extreme-search.ts(1,963 行)、models.ts(3,015 行)需要拆分
  5. 硬编码模型配置:1,000+ 行 model === 条件判断,每次新增模型需手动修改
  6. 自部署门槛高:40+ 环境变量使本地部署极其困难(Issue #179 根源)
  7. 依赖膨胀:170 个生产依赖,使用 canary 版 Next.js 和 dev 版 TypeScript
  8. 安全隐患:next.config.ts 中 hostname: '**' 允许任意域名图片(SSRF 风险),bodySizeLimit: '2000mb' 可能导致内存溢出

行动建议

  • 如果你要用它:直接访问 scira.ai 体验(免费 20 次/天)。如果要自部署,准备好 40+ 个 API key(Exa、Firecrawl、OpenAI、Anthropic 等)。适合需要全功能 AI 搜索但不在意隐私的场景。如果更看重隐私和自部署简洁性,选择 Perplexica
  • 如果你要学它:重点关注三个文件:(1) app/api/search/route.ts — 搜索 API 的完整请求处理管道;(2) lib/tools/extreme-search.ts — 自主研究代理的 ReAct 循环实现;(3) ai/providers.ts — 多模型抽象层和故障转移配置。DeepWiki 和 Zread.ai 均有架构文档
  • 如果你要 fork 它:改进方向:(1) 用模型配置表替代硬编码的 model === 条件 (2) 拆分巨型文件 (3) 添加核心搜索和研究代理的测试 (4) 减少必需环境变量(设合理默认值)(5) 修复 hostname: '**' 安全隐患

知识入口

资源

链接

DeepWiki

已收录

Zread.ai

已收录

官方博客

blog.scira.ai

关联论文

在线 Demo

scira.ai(免费 20 次/天)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智能时代蛮子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一句话总结
  • 值得关注的理由
  • 项目画像
  • 作者视角:为什么存在这个项目
    • 创始人/作者背景
    • 问题判断
    • 解法哲学
    • 战略意图
  • 核心价值提炼
    • 创新之处
    • 可复用的模式与技巧
    • 关键设计决策
  • 竞品格局与定位
    • 竞品对比矩阵
    • 差异化护城河
    • 竞争风险
    • 生态定位
  • 套利机会分析
  • 风险与不足
  • 行动建议
    • 知识入口
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档