Doramagic 项目包 · 项目说明书

Vane 项目

Vane 是一款由 AI 驱动的问答引擎。

Vane 项目概览与系统架构

Vane 是从 Perplexica 派生的开源 AI 搜索引擎,主打"自托管 + 隐私优先",用户可完全掌控数据 README.md。项目在 v1.12.0 起移除了 Langchain,改用自研的轻量抽象以获得对流式输出与工具调用的更细粒度控制(v1.12.0 release notes)。其核心项目括:

章节 相关页面

继续阅读本节完整说明和来源证据。

项目定位与核心能力

Vane 是从 Perplexica 派生的开源 AI 搜索引擎,主打"自托管 + 隐私优先",用户可完全掌控数据 README.md。项目在 v1.12.0 起移除了 Langchain,改用自研的轻量抽象以获得对流式输出与工具调用的更细粒度控制(v1.12.0 release notes)。其核心项目括:

系统架构总览

代码组织遵循"前端 + 后端 Agent + 模型提供方"的分层结构 CONTRIBUTING.md:1-30。前端基于 Next.js(src/app,主路由含 //c/discover/library),后端核心位于 src/lib/agents/search,模型层抽象为 BaseLLM / BaseEmbedding 供具体实现复用 src/lib/agents/search/types.ts:15-50

flowchart TB
    UI[Next.js 路由<br/>src/app] --> API[API 路由<br/>src/app/api]
    API --> SA[Search Agent<br/>src/lib/agents/search]
    SA --> CL[Classifier]
    SA --> RS[Researcher<br/>工具循环]
    SA --> WG[Widgets]
    SA --> WR[Writer]
    RS --> WS[webSearch]
    RS --> DS[socialSearch]
    RS --> AS[academicSearch]
    SA --> MP[Model Providers]
    MP --> OL[Ollama]
    MP --> OA[OpenAI 兼容]
    MP --> LM[LM Studio]
    RS --> SX[SearXNG]
    SA --> CFG[配置系统<br/>config/index.ts]

Search Agent 按"分类 → 研究 → 部件 → 写作"四阶段推进。研究阶段是显式的工具循环:每轮先调用 __reasoning_preamble 输出自然语言计划,再决定是否执行 web_search / socialSearch / academicSearch src/lib/agents/search/researcher/actions/plan.ts:1-50src/lib/prompts/search/researcher.ts)。

搜索流水线详解

1. 分类阶段 —— src/lib/prompts/search/classifier.ts 通过 LLM 判定是否需要联网(skipSearch)、启用 academicSearch / discussionSearch / personalSearch,并激活 showWeatherWidget / showStockWidget / showCalculationWidget 等小部件;最终输出脱离上下文的 standaloneFollowUp

2. 研究阶段 —— Researcher 是带工具调用的循环体。webSearch.tsquality 模式下要求至少 5–6 轮检索、每次最多 3 条查询,从宽泛到具体逐步收敛 src/lib/agents/search/researcher/actions/search/webSearch.ts:1-60socialSearch.ts 限定引擎为 reddit,并要求来源与分类条件同时满足才会启用 src/lib/agents/search/researcher/actions/search/socialSearch.ts:1-40academicSearch.ts 使用 arxiv / google scholar / pubmed 三引擎 src/lib/agents/search/researcher/actions/search/academicSearch.ts:1-40

3. 写作阶段 —— src/lib/prompts/search/writer.ts 要求模型输出"博客式"Markdown 段落,强制使用 [number] 内联引用并保留原始数值。

4. 建议生成 —— src/lib/agents/suggestions/index.ts 在对话结束后调用 generateObject 解析出下一轮可能的问题数组。

模型与配置系统

ollamaLLM.ts 显式列举"推理型"模型名单(gpt-ossdeepseek-r1qwen3deepseek-v3.1magistralnemotron-3 等),用于在消息转换时正确分离 reasoning_content 与正文 src/lib/models/providers/ollama/ollamaLLM.ts:1-45。配置系统基于文件存储 currentConfig.json,可与 SEARXNG_API_URL 等环境变量合并,作用域分 clientserver src/lib/config/index.ts:1-60

已知问题与社区反馈

近期社区反馈集中在升级兼容性与稳定性(v1.12.2 release notes):

  • 1.12.1 → 1.12.2 升级后部分用户卡在 "Brainstorming forever"(#1154
  • OpenAI 兼容提供方在 function.arguments 为空时流式解析崩溃(#1150
  • OllamaEmbedding 无并发限制,并行搜索会压垮嵌入端点(#1147
  • SearXNG 偶发返回 0 条结果导致流水线无响应(#1143
  • v1.12.2 已修复:历史双重转换、挂起请求超时、部件错误导致整条管线崩溃等问题(v1.12.2 release notes

社区功能请求主要集中在:简化 Docker 部署以免去克隆仓库(#673)、集成 Tavily / Exa 等 LLM 优化搜索源(#709)、引入多用户鉴权(#708)、MCP 协议支持(#758)等。

See Also

  • 搜索流水线
  • 模型提供方(Ollama / OpenAI / LM Studio)
  • 配置系统
  • 已知问题与升级指南

来源:https://github.com/ItzCrazyKns/Vane / 项目说明书

AI 模型与 Provider 集成

Vane 的 AI 模型层位于 src/lib/models/ 下,采用多 Provider 适配器模式,把不同厂商(OpenAI、Anthropic、Google Gemini、Groq、Ollama 等)以及任何兼容 OpenAI 接口的服务统一抽象为同一组接口(BaseLLM、BaseEmbedding)。搜索管线(分类、检索、写作、小部件)只依赖这些抽象接口,从而实...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 3.1 OpenAI 兼容层

继续阅读本节完整说明和来源证据。

章节 3.2 Anthropic、Gemini、Groq

继续阅读本节完整说明和来源证据。

章节 3.3 Ollama 与本地模型

继续阅读本节完整说明和来源证据。

1. 概述与设计动机

Vane 的 AI 模型层位于 src/lib/models/ 下,采用多 Provider 适配器模式,把不同厂商(OpenAI、Anthropic、Google Gemini、Groq、Ollama 等)以及任何兼容 OpenAI 接口的服务统一抽象为同一组接口(BaseLLMBaseEmbedding)。搜索管线(分类、检索、写作、小部件)只依赖这些抽象接口,从而实现 Provider 之间的可插拔切换。

v1.12.0 起,Vane 完全移除 Langchain,改用自研的低层实现以获得对流式输出、JSON 函数调用以及厂商特性的细粒度控制(CONTRIBUTING.md)。这一架构重构是后续 Provider 灵活性的基础。

资料来源:src/lib/models/providers/index.ts:1-40CONTRIBUTING.md

2. Provider 注册与运行时装配

Vane 通过 registry.ts 统一加载所有 Provider,并以数组形式维护可用模型清单。每个 Provider 实现文件(如 openaiLLM.tsanthropicLLM.ts)导出 BaseLLM 子类,覆写 streamChatgenerateObject 等核心方法。

flowchart LR
  A[Search Pipeline] --> B[BaseLLM Abstraction]
  B --> C[OpenAI Compatible]
  B --> D[Anthropic Native]
  B --> E[Gemini Native]
  B --> F[Groq Native]
  B --> G[Ollama Local]
  C --> C1[OpenAI / LM Studio / OpenRouter]
  C --> C2[v1.12.1+ LM Studio Provider]

src/lib/config/index.ts 中定义了"基础 URL、API Key、模型选择"等可配置字段,初始化时既会写入本地配置文件,也会读取环境变量(如 SEARXNG_API_URL)。这种双源配置使 Docker 部署更友好,但也带来了 v1.12.1 → v1.12.2 升级时用户报告的"Brainstorming 永久循环"问题(#1154)。

资料来源:src/lib/config/index.ts:1-120src/lib/models/registry.ts:1-80v1.12.1 Release Notes

3. 主要 Provider 实现要点

3.1 OpenAI 兼容层

openaiLLM.ts 是最大的一块,承担了官方 OpenAI、LM Studio(v1.12.1 引入)、OpenRouter 等所有 OpenAI 兼容协议的适配。该层最容易出现边界条件问题,例如:

  • 空 function.arguments 片段:在流式传输中部分 chunk 的 function.arguments 为空字符串时,JSON 解析可能抛错并导致研究流程"卡在 Brainstorming",参见 #1150
  • 远程代码执行风险:旧版使用 child_process 拼接外部输入存在 RCE 漏洞,已在生产环境被利用 #946
  • 费用失控:当"Auto Video Search"启用后,OpenRouter 路由到 Claude Opus 等昂贵模型可能产生高额账单 #1144,建议在设置中显式限定模型。

3.2 Anthropic、Gemini、Groq

三者各自实现原生 SDK 调用,不走 OpenAI 协议转换层,从而能利用各家原生的 function calling、缓存与安全特性。writer.ts 中的写作提示词要求模型生成带 [number] 引用的 Markdown 答案,这要求 Provider 必须稳定支持 JSON / 结构化输出。

3.3 Ollama 与本地模型

Ollama 既作为 LLM Provider,又作为 Embedding Provider。社区报告其 embedding 在并发搜索时缺乏限流,会压垮本地推理服务 #1147,建议自部署时增加反向代理或并发上限。

资料来源:src/lib/models/providers/openai/openaiLLM.ts:1-200src/lib/models/providers/ollama/ollamaLLM.ts:1-200src/lib/prompts/search/writer.ts:1-80

4. 选型与故障排查指南

下表汇总了常见 Provider 的关键考量:

Provider协议流式支持已知问题缓解措施
OpenAI原生稳定高费用设置 max_tokens / 限额
OpenRouterOpenAI 兼容部分空 args chunk 抛错 [#1150]升级到 ≥ v1.12.2
LM StudioOpenAI 兼容稳定JSON 抽取曾异常v1.12.1 已修复
Anthropic原生稳定暂无
Ollama原生 HTTP受机器性能影响embedding 并发 502 [#1147]部署并发限制

升级或新增 Provider 时,建议优先参考 CONTRIBUTING.md 中描述的"models are loaded via src/lib/models/registry.ts"装配流程,并在 config/index.ts 中补充对应的 UI 配置项。

资料来源:CONTRIBUTING.mdv1.12.2 Release Notes

See Also

  • 搜索管线与 Agent 架构
  • SearXNG 集成与故障排查
  • 配置与环境变量参考
  • 升级到 v1.12.2 的破坏性变更说明

资料来源:src/lib/models/providers/index.ts:1-40CONTRIBUTING.md

搜索流水线、Researcher 与 Widget 系统

Vane 是一个基于 AI 的开源搜索引擎,其核心能力由 src/lib/agents/search 下的"分类 → 检索 → 写作"三段式流水线提供 资料来源:[README.md:1-40]()。在 1.12.0 的架构重构中,Langchain 被完全移除,改由自研的 SearchAgent 与 APISearchAgent 编排,以获得对流式、工具调用与模型差异化的...

章节 相关页面

继续阅读本节完整说明和来源证据。

概述

Vane 是一个基于 AI 的开源搜索引擎,其核心能力由 src/lib/agents/search 下的"分类 → 检索 → 写作"三段式流水线提供 资料来源:README.md:1-40。在 1.12.0 的架构重构中,Langchain 被完全移除,改由自研的 SearchAgentAPISearchAgent 编排,以获得对流式、工具调用与模型差异化的细粒度控制 资料来源:CONTRIBUTING.md:1-20。流水线的主要输入是用户的聊天历史与 followUp 查询,输出则是一段带引用、可嵌入 Widget 的最终答复。

流水线架构

搜索流程在 SearchAgent.searchAsync(用户会话场景)与 APISearchAgent.searchAsync(外部 API 场景)中实现,结构基本一致:先由分类器决定是否需要检索以及启用哪些来源,然后并行启动 Researcher 与 Widget 执行器,最后由 Writer 提示词合成答复 资料来源:src/lib/agents/search/index.ts:20-58 资料来源:src/lib/agents/search/api.ts:9-44。下游的持久化层会把消息状态写入 messages 表,便于断点续传与历史回放 资料来源:src/lib/agents/search/index.ts:20-46

flowchart LR
    A[用户查询 followUp] --> B[Classifier]
    B -->|skipSearch=false| C[Researcher 工具调用循环]
    B --> D[WidgetExecutor 并行]
    C --> E[Search Findings]
    D --> F[Widget Outputs]
    E --> G[Writer 提示词]
    F --> G
    G --> H[流式最终答复]
    B -.->|skipSearch=true| H

分类器与来源路由

SearchSources 枚举定义了三种数据来源:webdiscussionsacademic,分别对应普通网页、Reddit 等讨论区和 arXiv/Google Scholar/PubMed 等学术站点 资料来源:src/lib/agents/search/types.ts:1-22Classifier 在每次查询时通过结构化提示词输出多个布尔字段:skipSearchpersonalSearchacademicSearchdiscussionSearchshowWeatherWidgetshowStockWidget 等 资料来源:src/lib/prompts/search/classifier.ts:1-40。这些字段既是研究员行动(Action)的 enabled 谓词,也是 Widget 触发器;任何字段被分类器否定,则对应的检索/Widget 路径都不会启动。

常见模式:分类器提示词中明确"如果 widget 能完全回答用户问题,请同时把 skipSearch 设为 true",这避免了为简单问题无谓地消耗检索与 token 配额 资料来源:src/lib/prompts/search/classifier.ts:30-40

Researcher 与工具调用循环

Researcher 是流水线的核心,它要求模型在每一轮首先调用 __reasoning_preamble(实现位于 plan.ts)输出自然语言计划,然后再选择其它工具——"如果不在任何其它工具之前先调用它,调用将被忽略" 资料来源:src/lib/agents/search/researcher/actions/plan.ts:1-40。研究员提示词明确要求遵循"reasoning → tool → reasoning → tool → … → done"的迭代循环,并建议在 quality 模式下完成 5–6 轮以上的检索 资料来源:src/lib/prompts/search/researcher.ts:1-80

三种检索 Action 共享同一个 executeSearch 工具,差别仅在传入的 engines 列表:

Action文件默认 engines启用条件
webSearchactions/search/webSearch.ts由 SearXNG 决定skipSearch === false
socialSearchactions/search/socialSearch.ts['reddit']sources.includes('discussions')discussionSearch === true
academicSearchactions/search/academicSearch.ts['arxiv', 'google scholar', 'pubmed']sources.includes('academic')academicSearch === true

资料来源:src/lib/agents/search/researcher/actions/search/webSearch.ts:1-80 资料来源:src/lib/agents/search/researcher/actions/search/socialSearch.ts:1-40 资料来源:src/lib/agents/search/researcher/actions/search/academicSearch.ts:1-40。每个 Action 最多接受 3 个查询并把结果回填到当前 ResearchBlock,再由 executeSearch 调用 SearXNG 完成检索 资料来源:src/lib/lib/config/index.ts:40-60。

Widget 系统

Widget 与 Researcher 并行执行,互不阻塞。WidgetExecutor.executeAllAPISearchAgent 中通过 Promise.all 与检索一起启动,并在出错时仅记录日志而不会拖垮整条流水线——这正是 v1.12.2 中"widget 执行错误不再崩溃整个研究流水线"的修复点 资料来源:src/lib/agents/search/api.ts:18-30Widget 接口统一了 shouldExecute(基于分类结果触发)与 execute(产出 WidgetOutput,包含 llmContext 与结构化 data)两类契约 资料来源:src/lib/agents/search/types.ts:24-40。Writer 提示词要求在最终答复中以 [number] 行内引用所有事实,并将 Widget 输出与检索结果统一拼装为带 Markdown 结构、引用与可选总结的深度回答 资料来源:src/lib/prompts/search/writer.ts:1-40

配置与运行时模式

SearchAgentConfig 暴露了 modespeed / balanced / quality),研究员与检索均按模式调整提示词深度与循环轮数 资料来源:src/lib/agents/search/types.ts:8-22。检索后端完全由 SEARXNG_API_URL 环境变量指向的 SearXNG 实例驱动,社区反馈显示该实例的可用性会直接影响"Vane 是否能产出非零结果"——例如 issue #1143 中"SearXNG 检索得到 82 条结果却最终 0 响应"即由下游处理异常导致 资料来源:src/lib/lib/config/index.ts:40-60。

已知问题与社区反馈

  • 1.12.2 升级后曾出现"Brainstorming forever"挂起(issue #1154),症状与研究员工具调用循环未正常终止有关,1.12.2 的"validation and timeouts to prevent hung search requests"修复正是针对此路径。
  • issue #1150 报告 OpenRouter 兼容流式在空 function.arguments 分片上抛出,导致 UI 卡在 Brainstorming...——发生点在 openaiLLM.ts 的工具调用解析处,间接破坏研究员回路。
  • issue #1147 指出 OllamaEmbedding 缺少并发限制,会在并行检索下打挂本地 Embedding 服务;这与本流水线中每个 Researcher 实例都会触发独立的 embed() 调用直接相关。

See Also

资料来源:src/lib/agents/search/researcher/actions/search/webSearch.ts:1-80 资料来源:src/lib/agents/search/researcher/actions/search/socialSearch.ts:1-40 资料来源:src/lib/agents/search/researcher/actions/search/academicSearch.ts:1-40。每个 Action 最多接受 3 个查询并把结果回填到当前 ResearchBlock,再由 executeSearch 调用 SearXNG 完成检索 资料来源:src/lib/lib/config/index.ts:40-60。

部署、安装、配置与常见故障排查

本文面向希望自托管 Vane 的开发者与运维人员,聚焦项目的部署形态、运行时配置结构、安装初始化流程以及社区中常见的故障模式。Vane 是一个 AI 驱动的开源搜索引擎,由 Next.js 前端与 Node.js 后端组成,支持 Ollama、OpenAI 兼容、LM Studio 等多种模型提供方,并通过 SearxNG 完成外部网络检索 README.md:1-30。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 4.1 检索结果为空或返回零条

继续阅读本节完整说明和来源证据。

章节 4.2 UI 长时间停在「Brainstorming」

继续阅读本节完整说明和来源证据。

章节 4.3 异常费用与速率失控

继续阅读本节完整说明和来源证据。

一、部署形态与运行时组件

Vane 的官方镜像 itzcrazykns1337/vane:latest 以 Docker 容器形式分发,标准启动需要映射端口 3300,并通过环境变量或初始化向导注入基础配置 README.md:30-60CONTRIBUTING.md 明确指出项目代码分为三层:

  • src/app:Next.js 路由与页面(首页 /、聊天 /c、发现 /discover、资料库 /library)。
  • src/lib:核心后端逻辑,包含搜索代理(src/lib/agents/search)、模型注册表(src/lib/models/registry.ts)、SearxNG 客户端(src/lib/searxng.ts)等。
  • src/components:可复用 UI 组件,例如导出 Markdown/PDF 的 Navbar src/components/Navbar.tsx:1-40

社区长期存在的简化部署诉求表明,部分用户希望直接通过单镜像方式启动而不必克隆仓库 Issue #673,这是当前部署仍要求执行首次访问 Setup Wizard 才能写入配置的原因。

二、配置系统结构

Vane 的运行时配置由 Config 类管理,首次启动时会从 configPath 加载(不存在则写入默认值),并允许通过环境变量覆盖 src/lib/config/index.ts:80-130。配置项按 scope 分为:

作用域含义典型字段
client仅前端 UI 使用systemInstructions 自定义模型语气 src/lib/config/index.ts:40-70
server后端运行时需要searxngURL,由环境变量 SEARXNG_API_URL 注入 src/lib/config/index.ts:90-110

搜索代理侧的 SearchAgentConfig 描述了一次研究会话所需的全部依赖:启用的来源集合(web/discussions/academic)、上传文件 ID、LLM、Embedding、模式(speed/balanced/quality)以及系统指令 src/lib/agents/search/types.ts:1-40。配置错误最常表现为「Brainstorming」阶段卡死,例如 1.12.2 升级后初始化未完成即触发研究请求,会导致请求挂起 Issue #1154

三、初始化与安装流程

新部署后用户首次访问会自动进入 Setup Wizard,由 SetupWizard.tsxSetupConfig.tsx 协作完成模型、搜索源、自定义指令等基础信息的录入,随后通过 Config.saveConfig() 写入本地 JSON 文件 src/lib/config/index.ts:120-150。若配置解析失败,控制台会输出 SyntaxError 并回退到默认配置,同时覆盖原文件 src/lib/config/index.ts:130-160

环境变量覆写优先级最高,例如未设置 SEARXNG_API_URL 时 SearxNG 检索将无法工作,社区中常见的「Search is broken」通常源于此变量未配置或 SearxNG 实例返回结构异常 Issue #1143

四、常见故障排查

4.1 检索结果为空或返回零条

典型场景:研究阶段显示「Found 82 results」但后续无响应。根因通常是 SearxNG 实例返回了非数组结构或引擎被禁用,1.12.2 已增加搜索查询的非数组边界校验 Release v1.12.2

4.2 UI 长时间停在「Brainstorming」

当 OpenAI 兼容提供方在流式 tool-call 阶段解析到空的 function.arguments 时会抛出异常,导致研究请求死亡但前端未收到终止事件。该问题在 src/lib/models/providers/openai/openaiLLM.ts 的流式解析器中暴露,需要对空块进行容错处理 Issue #1150。同时,OllamaEmbedding 在并发场景下没有全局并发上限,5–10 个并行检索会击穿 Ollama 服务并产生 502 Issue #1147。Ollama 提供方还需要特别注意推理类模型(deepseek-r1qwen3nemotron-cascade-2 等)启用了额外的 reasoning 字段 src/lib/models/providers/ollama/ollamaLLM.ts:20-40

4.3 异常费用与速率失控

启用 Auto Video Search 后,若未在路由处限制调度次数,可能在无人交互的情况下持续调用高成本模型(如 Claude Opus),造成数千美元计费 Issue #1144。建议在网关侧配置 OpenRouter 的速率与预算告警。

4.4 页面无法加载(Synology / NAS)

Issue #1153 报告在 Synology 上通过 Docker 启动并接入 OpenAI 兼容提供方时,搜索启动后页面出现「This page couldn't load」错误。该现象多与 Next.js 流式响应在反代下被截断有关,应在 NAS 反向代理中关闭缓冲并放行 /api/chat

4.5 安全相关

历史版本曾报告通过不安全的 child_process 拼接产生 RCE 漏洞,1.12.x 重构后已移除 LangChain 并重写为自定义实现 Issue #946。升级至 v1.12.0 及以上版本可消除该风险 Release v1.12.0

五、升级与维护建议

  1. 升级前务必阅读对应版本的发布说明,1.12.0 移除了 LangChain 并重命名了所有 provider,1.12.2 修复了历史双重转换、挂起请求与 widget 崩溃等问题 Release v1.12.0Release v1.12.2
  2. 自托管 SearxNG 时确认 json 格式与至少一个通用引擎可用,OpenAI 兼容提供方建议同时启用 LM Studio 或本地 Ollama 作为备用链路 Release v1.12.1
  3. 学术与社交检索分别使用 arxiv/google scholar/pubmedreddit 引擎,需要 SearxNG 实例启用对应插件 src/lib/agents/search/researcher/actions/search/academicSearch.ts:1-40src/lib/agents/search/researcher/actions/search/socialSearch.ts:1-40
  4. 自定义系统指令应在 Setup Wizard 的「System Instructions」中填写,避免通过环境变量硬编码导致无法热更新 src/lib/config/index.ts:40-70

See Also

来源:https://github.com/ItzCrazyKns/Vane / 项目说明书

失败模式与踩坑日记

保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。

high 来源证据:Remote Code Execution via Unsafe child_process Usage in Perplexica (Confirmed Real-World Compromise)

可能影响授权、密钥配置或安全边界。

high 来源证据:Vane somehow charged $3000 USD to my openrouter account.

可能影响授权、密钥配置或安全边界。

medium 依赖 Docker 环境

非工程用户可能没有 Docker,启动成本明显增加。

medium 来源证据:Enhancement: Consider serpbase.dev as an optional search provider for reliable SERP retrieval

可能增加新用户试用和生产接入成本。

Pitfall Log / 踩坑日志

项目:ItzCrazyKns/Vane

摘要:发现 16 个潜在踩坑项,其中 2 个为 high/blocking;最高优先级:安全/权限坑 - 来源证据:Remote Code Execution via Unsafe child_process Usage in Perplexica (Confirmed Real-World Compromise)。

1. 安全/权限坑 · 来源证据:Remote Code Execution via Unsafe child_process Usage in Perplexica (Confirmed Real-World Compromise)

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Remote Code Execution via Unsafe child_process Usage in Perplexica (Confirmed Real-World Compromise)
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/ItzCrazyKns/Vane/issues/946 | 来源讨论提到 node 相关条件,需在安装/试用前复核。

2. 安全/权限坑 · 来源证据:Vane somehow charged $3000 USD to my openrouter account.

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Vane somehow charged $3000 USD to my openrouter account.
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/ItzCrazyKns/Vane/issues/1144 | 来源类型 github_issue 暴露的待验证使用条件。

3. 安装坑 · 依赖 Docker 环境

  • 严重度:medium
  • 证据强度:runtime_trace
  • 发现:安装/运行入口包含 Docker 命令:docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest
  • 对用户的影响:非工程用户可能没有 Docker,启动成本明显增加。
  • 复现命令:docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest
  • 证据:identity.distribution | https://github.com/ItzCrazyKns/Vane | docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest

4. 安装坑 · 来源证据:Enhancement: Consider serpbase.dev as an optional search provider for reliable SERP retrieval

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:Enhancement: Consider serpbase.dev as an optional search provider for reliable SERP retrieval
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/ItzCrazyKns/Vane/issues/1148 | 来源类型 github_issue 暴露的待验证使用条件。

5. 安装坑 · 来源证据:This page couldn’t load

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:This page couldn’t load
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/ItzCrazyKns/Vane/issues/1153 | 来源讨论提到 docker 相关条件,需在安装/试用前复核。

6. 安装坑 · 来源证据:Update to Vane 1.12.2 from Perplexica 1.12.1 broke it. Brainstoming forever

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:Update to Vane 1.12.2 from Perplexica 1.12.1 broke it. Brainstoming forever
  • 对用户的影响:可能影响升级、迁移或版本选择。
  • 证据:community_evidence:github | https://github.com/ItzCrazyKns/Vane/issues/1154 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

7. 配置坑 · 可能修改宿主 AI 配置

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主,或安装命令涉及用户配置目录。
  • 对用户的影响:安装可能改变本机 AI 工具行为,用户需要知道写入位置和回滚方法。
  • 证据:capability.host_targets | https://github.com/ItzCrazyKns/Vane | host_targets=claude, chatgpt

8. 配置坑 · 来源证据:OpenRouter-compatible streaming can crash on empty tool-call arguments

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个配置相关的待验证问题:OpenRouter-compatible streaming can crash on empty tool-call arguments
  • 对用户的影响:可能阻塞安装或首次运行。
  • 证据:community_evidence:github | https://github.com/ItzCrazyKns/Vane/issues/1150 | 来源类型 github_issue 暴露的待验证使用条件。

9. 能力坑 · 能力判断依赖假设

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:README/documentation is current enough for a first validation pass.
  • 对用户的影响:假设不成立时,用户拿不到承诺的能力。
  • 证据:capability.assumptions | https://github.com/ItzCrazyKns/Vane | README/documentation is current enough for a first validation pass.

10. 运行坑 · 来源证据:OllamaEmbedding has no concurrency limit, causing 502 errors on embedding server under parallel searches

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个运行相关的待验证问题:OllamaEmbedding has no concurrency limit, causing 502 errors on embedding server under parallel searches
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/ItzCrazyKns/Vane/issues/1147 | 来源类型 github_issue 暴露的待验证使用条件。

11. 维护坑 · 维护活跃度未知

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:未记录 last_activity_observed。
  • 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
  • 证据:evidence.maintainer_signals | https://github.com/ItzCrazyKns/Vane | last_activity_observed missing
  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 证据:downstream_validation.risk_items | https://github.com/ItzCrazyKns/Vane | no_demo; severity=medium

13. 安全/权限坑 · 存在评分风险

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:风险会影响是否适合普通用户安装。
  • 证据:risks.scoring_risks | https://github.com/ItzCrazyKns/Vane | no_demo; severity=medium

14. 安全/权限坑 · 来源证据:Search is broken

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Search is broken
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/ItzCrazyKns/Vane/issues/1143 | 来源讨论提到 docker 相关条件,需在安装/试用前复核。

15. 维护坑 · issue/PR 响应质量未知

  • 严重度:low
  • 证据强度:source_linked
  • 发现:issue_or_pr_quality=unknown。
  • 对用户的影响:用户无法判断遇到问题后是否有人维护。
  • 证据:evidence.maintainer_signals | https://github.com/ItzCrazyKns/Vane | issue_or_pr_quality=unknown

16. 维护坑 · 发布节奏不明确

  • 严重度:low
  • 证据强度:source_linked
  • 发现:release_recency=unknown。
  • 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
  • 证据:evidence.maintainer_signals | https://github.com/ItzCrazyKns/Vane | release_recency=unknown

来源:Doramagic 发现、验证与编译记录