ScanVault
Source: Dev.to
概览
ScanVault 是一个 CLI 为先的文档智能平台,能够将非结构化文件——收据、发票、PDF、截图、白板照片——转化为结构化、可搜索的数据。它解决了跨设备累积大量文档却没有快速方式定位特定信息的问题(例如 “那张发票号是多少?” 或 “我上个月在差旅上花了多少钱?”)。
架构
-
全栈 TypeScript 单仓库
- Azure Functions 无服务器 API(Cosmos DB、Blob Storage、Azure AI Search)
- 带有分类管理 UI 的 Next.js Web 仪表盘
- 作为主要用户界面的 Commander.js CLI
-
共享
ai-extract包 抽象了对 OpenAI、Anthropic、Google 的提取,并提供使用 Tesseract.js OCR 的零配置回退方案。 -
分类系统 & 字段提取 支持强大的查询,例如:
vault search "total > 50 category:finance"
Copilot CLI 的影响
基础设施 & API 开发
- 使用 Copilot 的建议搭建 Azure 资源(Cosmos DB、Blob Storage、Azure AI Search、Key Vault 的 Bicep 模块),大幅减少冗长的模板代码。
- 快速创建 Azure Functions HTTP 处理程序、身份验证中间件、Zod 验证以及 Cosmos DB 查询。
- 自动生成资产、分类和设置的 CRUD 接口。
搜索查询解析器
- Copilot 帮助构建基于正则的分词器,并为
category:finance status:ready total>50等过滤条件编写了完整的测试用例。
CLI 增强
- 加速了 Commander.js 命令树和输出格式化(
--json、--quiet、表格模式)的构建。 - 在 Copilot 提取集成上提供帮助:子进程启动、JSON 响应解析以及用于分类推断的回退启发式。
Web 仪表盘
- Tailwind CSS 样式、可折叠区块、上下文菜单以及 API 客户端的连接都通过 Copilot 的代码建议得到简化。
在整个单仓库——从共享的 Zod schema 到基础设施模板——Copilot CLI 消除了大量样板代码,使团队能够专注于架构和产品决策。
Copilot 提取集成
当未配置第三方 API 密钥时,vault upload 命令会自动将提取工作委托给 Copilot,通过自定义提取技能实现开箱即用的结构化字段提取、实体识别和自动分类,无需额外费用或配置。
- 输入/输出 JSON 合约
- 输入: 一个文件(二进制或 base64)。
- 输出: 摘要、带置信度分数的提取字段、命名实体以及建议的分类。
CLI 将文件内容传递给 Copilot,解析结构化响应,并将其注入与其他提供商相同的上传‑确认流水线。因此,无论是由 OpenAI、Anthropic 还是 Copilot 完成的提取,搜索、导出和 Web 仪表盘的行为都是一致的。
使用示例
-
带过滤条件的搜索
vault search "total > 50 category:finance" -
汇总一个 vault
vault summarize --category finance --since 1w -
自然语言提问
vault ask --category finance --since 1w "how much did I spend last week?"
这些命令在运行时利用 Copilot 对已索引文档进行自然语言查询并返回答案。
仓库
https://github.com/ronak-guliani/scanvault
视频
(如果有的话,链接到演示视频)