这个项目能做什么
Launchstack 是一个用于构建 AI 原生应用的 TypeScript 引擎,随附一个 Next.js 参考应用,用于演示各部分如何协同工作。该引擎涵盖摄取、OCR、RAG、知识图谱、LLM 抽象和后台任务,并以分层包的形式组织在类型化端口之后。
仓库布局
该仓库是一个 pnpm workspace,本身不是应用;根级命令仅限于 lint、typecheck、format 和 Changesets 脚本,包命令必须通过 --filter 指定目标。apps/web 是 Next.js 宿主(UI、认证、命令接收、同步读取)。apps/worker 是持久工作流协调器,消费摄取 outbox 并承载后台任务。apps/landing 是独立的公开营销站点,不属于自托管部署的一部分。引擎位于 packages/protocol、evidence、application 和 adapters 中,packages/core 作为它们的兼容性门面,packages/features 存放垂直功能。services/ 包含非 workspace 的计算服务(一个 Node 文档转换器,以及 Python 转录和文档编辑服务)。
架构
Core 暴露由宿主接线的端口;功能仅依赖这些端口,绝不深入应用或框架。宿主负责环境、认证和路由,并实现诸如存储(S3)、任务分发(Inngest)、额度和 RAG 等端口。createEngine(config) 打开数据库连接池并注册槽位;若干子系统通过单独的注册调用进行配置。槽位是惰性读取的,因此必须在首次使用前设置。引擎状态存储在 globalThis 上,这可防止 Next.js HMR 重新求值,但也意味着每个进程只能有一个引擎。ESLint 声明了 core/features/host 的导入边界,CI 会强制执行;引擎包不读取 process.env。
运行它
要求是 Node 20+ 和 pnpm 10.15.1。推荐使用 Docker Compose,其中包含一个 lite 栈和一个添加 Docling 的 OCR profile;make 目标涵盖 up、logs、down 和会清除卷的 down-clean。不使用 Docker 时,你需要带 pgvector 扩展的 Postgres,然后运行迁移、可选的种子数据、Next.js 开发服务器、worker,以及可选的 Inngest 开发 UI。Web 开发服务器接受上传但不处理任何内容,因此必须同时运行 worker,否则文档会一直排队。启动需要 DATABASE_URL 和 BETTER_AUTH_SECRET。
聊天配置
聊天连接到一个实现 OpenAI chat-completions 协议的单一端点,默认通过 GOOGLE_AI_API_KEY 使用 Google Gemini 的 OpenAI 兼容端点。其他提供商通过设置 CHAT_BASE_URL 以及可选的 CHAT_API_KEY 来接入;诸如 OPENAI_API_KEY 或 OLLAMA_BASE_URL 之类的按厂商变量不会配置聊天。哪个模型处理通用聊天、提取、推理和图像,在带有预设和路由的 YAML 配置中声明;行为不会从模型 id 推断,专用路由会失败关闭。聊天配置独立于 embeddings、OCR、转录、重排序和文本转语音。
参考应用能力
该应用演示了第一方认证,支持按工作区角色、文件夹级访问、邀请和审计日志;文档上传,可通过多个提供商进行可选 OCR;PostgreSQL 加 pgvector 语义检索;带护栏的 AI 聊天,包括 PII 过滤器、grounding 和置信度门控;预测性文档分析(定义了八种文档类型,请求验证器目前接受 contract、financial、technical、compliance 和 general);面向 Reddit、X、LinkedIn 和 Bluesky 的营销流水线;由 Inngest 支持的后台任务;以及可选的 LangSmith 追踪。
摄取来源
该流水线无需 OAuth 即可读取来自 Notion、Google Docs/Sheets、Google Drive Takeout、Slack 和 GitHub 的导出,同时支持一等公民的 PDF、DOCX、PPTX、XLSX、Markdown、HTML、文本和图像适配器。一个已记录的注意事项:ZipAdapter 会跳过归档内条目的 JSON 和图像适配器,因此以 JSON 的 ZIP 形式提供的 Slack 导出不会产生任何页面。
自托管与状态
除非 DEPLOYMENT_MODE=cloud,否则部署为自托管;使用量会被记录但不设门控,不加载遥测或 CDN 资产,第一个注册者成为工作区所有者。引擎包尚未发布到 npm;在首次 Changesets 发布之前,引擎通过运行仓库来使用。该项目采用 Apache-2.0 许可,欢迎贡献,每个 PR 对应一个 issue,引擎变更使用 Changesets。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。