爱意满满的作品展示区。
dong2go

做了一个带知识库 RAG 问答的 macOS GitHub Stars 工具,想听听大家的建议

  •  
  •   dong2go · Jul 22 · 967 views
    This topic created in 32 days ago, the information mentioned may be changed or developed.

    最近一直在做一个 macOS 工具,叫 Starcat 。从最初简单的 stars 同步到现在加入知识库 RAG 问答,想分享一下进展和设计思路,听听大家的反馈。

    起因

    我自己的 GitHub Stars 已经一千八百多个了。刚开始 star 是收藏,后来变成「以后再看」,再后来就是精神负债了。最近一次触发我的是:想找一个以前 star 过的 Swift 剪贴板管理工具,记不清名字,在 GitHub Stars 页面翻了快 20 分钟。找到了,但这个过程让我觉得——GitHub 提供了「收藏」,但没提供「找回」。

    所以我做了 Starcat ,一个 macOS 原生应用。最开始做了最基础的事:把 stars 同步到本地,三栏管理,支持标签、笔记、阅读状态、全文搜索、AI 摘要。

    Starcat 管理主视图

    最近在做的:知识库 RAG 问答

    但最近最花精力的功能是知识库 RAG。这个东西的动机很简单:有时候你需要的不是「搜到一个 repo 」,而是「回答一个问题」。

    举个例子。我想知道「我收藏的 SwiftUI 项目里,哪些用了 Core Data 做本地存储?」。这不是一个搜索词能表达的问题。GitHub 搜索帮不了我,全文搜索也帮不了我——因为这个问题需要理解「用了 Core Data 做本地存储」这个语义,然后在我本地几百个 repo 的 README 、笔记、摘要里找到匹配的内容,最后综合成答案。

    RAG 工作台做的事情就是:

    1. 理解你的自然语言问题。
    2. 从你的知识库(你主动筛选入库的 repo ,不是全部 stars )里做混合检索——本地 FTS5 全文 + 本地 embedding 向量。
    3. 找到相关的 README 段落、笔记片段、AI 摘要。
    4. 把这些上下文和你的问题一起发给 LLM ,生成带引用的回答。
    5. 每个结论都链接回具体 repo 和段落,你可以点进去验证。

    Starcat RAG 知识库问答

    为什么不直接用全部 stars ?

    知识库和 stars 是两个概念。stars 是「我看过觉得有意思」,知识库是「我研究过、有价值、想持续跟踪」。RAG 在知识库范围内工作,用户才知道回答的来源是自己筛选过的数据。这会比直接在全量 stars 上检索更可信。

    为什么放本地?

    整个检索链路( FTS5 + 向量扫描)都在本地完成。只有最后一步 LLM 生成需要调 AI provider 。1.8 万个本地向量的相似度计算用了 vDSP 加速,实测比纯 Swift 快了约 23 倍。即使没有网络,本地检索也能跑完——只是生成那一步需要网络(或者你可以接 Ollama 本地模型)。

    AI 还是不能自动写

    这个原则从第一版到现在都没变。RAG 是只读的,不自动写标签、不自动写笔记、不自动改 star 状态。标签建议仍然需要用户确认,笔记草稿仍然需要用户手动保存。我觉得对于一个本地知识库来说,这个边界比「自动化」更重要。

    关于 AI 工具链

    除了人用,Starcat 也做了本地 MCP Service ,外部 Agent ( Claude / Codex 等)可以查你的 stars 和知识库;另有跨平台 starcat-cli 做命令行桥接。项目在 github.com/starcat-app,反馈可提到 starcat-app/starcat-pro

    想听听大家的想法

    几个我最近在纠结的问题,想听听社区的意见:

    1. 知识库 vs stars 的 RAG 边界:现在默认只检索知识库。你觉得提供一个「搜索全部 stars 」的可选项有用吗?还是保持现在的严格边界更好?
    2. RAG 回答的长短:现在默认输出 200-500 字的摘要性回答带引用。你更倾向于短的(直接给结论+来源),还是长的(详细分析+对比+风险提示)?
    3. 你们现在怎么管理 GitHub Stars ? 是不是和我一样,star 了就不管了?有没有什么自己摸索出来的土办法?
    4. 对「 Agent 替你写标签/笔记」这个方向怎么看? 我觉得风险大于收益,但也许有人觉得自动化的好处超过风险?

    官网: https://starcat.ink

    欢迎拍砖,特别是对 RAG 方向的反馈。

    2 replies    2026-08-13 17:19:48 +08:00
    xinkuie
        1
    xinkuie  
       Jul 23
    存取向量的数据库用的是什么呢
    dong2go
        2
    dong2go  
    OP
       10 days ago
    因为考虑的是本地优先,就用了 SQLite , 它本身没有内置向量类型,但有 sqlite-vec 等向量扩展。
    Starcat 当前先把 Embedding 以 BLOB 形式保存在 SQLite 中,并在 Swift 侧计算余弦相似度。后续计划接入 sqlite-vec ,把向量检索下沉到 SQLite/C 层;不过它目前与 PostgreSQL 的 pgvector 还有差距,特别是成熟的 HNSW 、IVFFlat 等 ANN 索引能力。
    因此,当知识库扩大到大量 Repo 、产生大量 Chunk 时,还会结合增量向量化、量化和 ANN 索引优化,必要时使用 Qdrant 等专用向量后端。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5703 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:40 · PVG 14:40 · LAX 23:40 · JFK 02:40
    ♥ Do have faith in what you're doing.