OpenContracts 开源文档智能平台
为智能体世界打造的开源文档智能平台,将文档库转化为可编程的引用图。
证据显示:README 明确说明遥测数据不收集文档内容、用户身份或查询内容,并提供了禁用方法(TELEMETRY_ENABLED=False, REACT_APP_POSTHOG_API_KEY 未设置),这体现了数据流透明性。但权限最小化方面,MCP 服务器提供匿名和认证端点,但未明确说明权限范围;用户确认机制未明确;敏感数据处理未详细说明;依赖安全未提供漏洞扫描或依赖锁定证据;外部影响(如网络调用)未明确;回滚机制未提及;来源归属仅通过许可证和版权声明体现。因此,多数标准得分较低。
证据显示:项目有 CI 工作流(backend.yml)运行 lint、mypy 和 pytest,测试覆盖了加速检测和基准测试,表明自我一致性较好。依赖可用性方面,使用 Docker 和固定版本,但未提供依赖锁定文件或镜像摘要。失败消息方面,测试中有明确的错误消息和退出码,但用户文档中缺少故障排除指南。因此,自我一致性得 2 分,依赖可用性和失败消息得 2 分。
证据显示:README 描述了多种使用场景(法律、研究、工程等),并提供了 API、MCP、UI 三种接口,表明受众和场景广泛。能力边界通过文档和代码中的模块划分体现,但触发精度(如 MCP 工具权限)未明确。环境适配方面,提供了 Docker 部署和硬件加速选项,但未提供非 Docker 部署指南。因此,受众和场景、能力边界、环境适配得 2 分,触发精度得 1 分。
证据显示:README 提供了清晰的信息架构,包括快速开始、文档链接、架构说明。安装说明详细,包括开发和生产部署步骤。命名稳定性方面,项目名称和版本标签存在,但未提供 API 稳定性保证。示例和 FAQ 方面,README 有代码示例,但缺少 FAQ。已知限制未明确列出。许可证为 MIT,完整文本存在。版本变更日志未提供,但存在发布说明。维护责任未明确,但通过 GitHub 工作流和赞助链接暗示。因此,信息架构、安装说明、示例和 FAQ 得 2 分,命名稳定性、已知限制、版本变更日志、维护责任得 1 分,许可证得 3 分。
证据显示:输出可用性方面,提供了 API、MCP 和 UI,输出格式明确(如 JSON)。边际价值方面,项目提供了独特的引用图功能,但未与其他工具对比。成本效益方面,未提供性能基准或成本分析,但提供了硬件加速选项。因此,输出可用性和边际价值得 2 分,成本效益得 1 分。
证据显示:README 中的声明(如功能、性能)有文档和代码支持,但未提供独立验证。跨来源佐证方面,有测试和 CI 结果,但未提供外部验证。事实与推断分离方面,README 区分了产品描述和架构说明,但未明确标注推断。因此,声明可追溯性得 2 分,跨来源佐证和事实推断分离得 1 分。
- MCP 端点权限未明确,可能暴露敏感数据。
- 依赖安全未提供漏洞扫描或锁定文件,存在供应链风险。
- 遥测数据虽声明匿名,但未提供数据流图或详细说明。
- 回滚机制未提及,数据丢失风险需注意。
这个 Agent 能做什么,适合哪些场景?
OpenContracts 是一个自托管的开源文档智能平台,面向需要构建文档处理应用的开发者和团队。它提供 GraphQL、REST 和 Model Context Protocol (MCP) 三种接口,统一访问文档、标注、引用关系和 AI 智能体。该平台将人类标注作为引用图的基准,支持 PDF、DOCX、纯文本以及 126 种可转换为 PDF 的格式。其核心功能包括语料库管理、结构化数据提取、协作讨论、多模态搜索和可插拔的处理流水线。它是 MIT 许可证,可通过 Docker Compose 部署,并带有用于智能体发现的 MCP 端点。
OpenContracts 通过一个统一的平台处理文档存储、标注、引用提取和 AI 推理。它接收文档,通过 Docling 等解析器提取文本和布局信息,为文档生成向量嵌入,并构建一个引用图,将文档与引用的法律条文或法规连接起来。它提供 Python API 用于创建文档或语料库级别的智能体,这些智能体利用搜索工具和标注数据生成基于引用的回答。MCP 服务器在 /mcp/ 和 /mcp/me/ 端点暴露语料库,提供工具如 search_corpus、list_documents、get_document_text、list_annotations、list_relationships 和 create_thread_message。结构化提取通过定义字段集(自然语言查询)在 Celery workers 上运行,将结果整理到电子表格网格中,包含人工批准/拒绝功能。所有操作均可通过 GraphQL API 访问,前端与后端交互使用 REST 进行上传和健康检查。
- 法律研究团队希望将多个 SEC 文件与引用的法规关联,以构建可导航的治理图。
- 开发人员构建自定义文档智能应用,需要通过 GraphQL API 访问标注和引用数据。
- AI 智能体(例如 Claude 或 Cursor)需要搜索合同语料库并检索基于引用的答案。
- 研究人员需要从数百个文档中提取特定条款(如赔偿条款)到电子表格中进行审查。
- 组织需要协作标注文档,包括线程讨论、@提及和投票,以构建团队知识库。
这个 Agent 有哪些优点和局限?
- 提供完整的引用图基础设施,包含可遍历的文档和法规节点,而非简单的文件存储。
- 通过 MCP 服务器直接集成智能体,支持标准化发现和工具。
- 人类标注作为基准,确保 AI 生成的注释和提取有据可依。
- 架构复杂,需要 Docker 和多个微服务(解析器、嵌入器等)运行。
- 初始设置需要配置环境变量和潜在的 GPU 优化以获得更好的性能。
- PDF 解析和嵌入等某些组件可能依赖外部服务,如 Gotenberg 或硬件加速镜像。
如何安装或部署这个 Agent?
使用 Docker 安装:克隆仓库,复制环境文件(如 .envs/.local/.django、.postgres、.frontend),然后运行 docker compose -f local.yml --profile fullstack up(开发环境)或 docker compose -f production.yml up -d(生产环境)进行构建。访问 http://localhost:3000,使用 admin / Openc0ntracts_def@ult 登录。
如何使用这个 Agent?
使用 Python 智能体:导入 agents 模块,调用 agents.for_document(123, corpus=45),然后使用 agent.stream('Summarize the indemnification clauses') 流式获取回答。或者,通过 MCP 端点(/mcp/ 或 /mcp/me/)连接智能体客户端,并使用列出的工具。对于结构化提取,定义字段集并运行它;提取内容将在 Celery 队列上调度并显示在网格中,可进行人工审查。