卓卓安Claw项目方案库
展示首页/方案库/技术决策
技术决策

ADR-001:卓安Claw 技术选型与参考项目

约 6 分钟·卓安Claw · 2026.11
本页目录
  1. 1. 背景
  2. 2. 调研结论
  3. 3. 决策
  4. 3.1 自建
  5. 3.2 采用/参考的成熟件
  6. 3.3 明确不采用
  7. 4. 目标架构
  8. 5. 对原型的约束
  9. 6. 两天 Spike(不阻塞 11/27)
  10. 7. 后果
  11. 8. 参考数据说明
  • 状态:Accepted
  • 日期:2026-11-08
  • 决策人:项目负责人 + A/B/C
  • 关联:docs/prototype/卓安Claw-原型设计方案-v1.0.md、docs/prototype/卓安Claw-原型开发三人分工与正式版衔接方案-v1.0.md

1. 背景

卓安Claw 是及锋内核上的律所定制版,目标是把刑事案件全生命周期(预约 → 建档 → 分诊 → 接诊 → 检查 → 诊断 → 方案 → 办案 → 复核 → 结案 → 归档 → 随访)做成可管理、可审计、可协作的系统。

约束:

  • 7 家直营所(成都总所 + 深圳、昆明、重庆、北京、西安、西宁),约 200 人,约 1,000 件/年,单案平均约 1GB。
  • 卓安私有云(阿里云专属 VPC、单租户),独立服务器,不使用及锋服务器。
  • V1 不买 GPU:外部模型 API + 脱敏 + 审计;C 类敏感案卷不出私有云。
  • 11/27 300 人会议演示,3 人团队,19 天(11/09–11/27)。
  • 原型必须能演进为正式版,不能推翻重来。

2. 调研结论

GitHub 上没有可直接照搬的成熟律所业务系统:

  • NodineLegal/OpenLawOffice:38 star,最后推送 2016 年,已停更。
  • OpenLaw 核心库:2021 年已归档。
  • legal-case-management 搜索结果大多为 1–4 star 的课程/毕业项目。
  • 律所关键词下 stars 较高的项目是 AI 文档/Agent 工具(如 lavern、legalwork),不是业务管理系统。

因此本项目的策略是:自建法律领域层 + 组合成熟基础件,不 fork 任何“半成品律所系统”。

3. 决策

3.1 自建

  • 12 节点案件主线、阶段状态机、清单、时限、交接。
  • 7 类角色、5 档数据范围、案件团队 ACL、字段级遮条。
  • 中国刑事法律知识、文书模板、类案检索规则、C 类数据策略。
  • 客户小程序公开策略与客户可见的“办案动作”。
  • 追加式审计事件(谁、何时、看了什么、改了什么、调了什么模型)。

3.2 采用/参考的成熟件

能力 参考项目 采用方式 备注
身份 SSO Keycloak(37.7k,Apache-2.0) 正式版自托管;企业微信做 IdP 适配 成熟、稳定;比自研账号体系稳
权限 Casbin(20.5k,Apache-2.0) V1 角色 + 数据范围;案件团队用关系表 复杂后再评估 OpenFGA
关系授权 OpenFGA(6.1k,Apache-2.0) V1.5 评估 跨所/外部协作复杂时再上
文档管理 Paperless-ngx(47.9k,GPL-3.0) 借入库/OCR/标签/检索/版本管线 GPL:不直接嵌入闭源产品
文档解析 Docling(70.3k,MIT)、MinerU(83.3k) C 类本地解析;中文 PDF 优先 MinerU 先做离线 Spike
RAG/引用 RAGFlow(93.8k,Apache-2.0) 借“结构化解析 + 可追溯引用”模式 不一定要整套部署
Agent 工作流 Dify(160.6k) 借工作流/可观测性设计 许可证 NOASSERTION,先法务确认
电子签 DocuSeal(19k,AGPL-3.0)/ Documenso(15.7k,AGPL-3.0) 借模板/签署/审计流程;信任根接第三方 CA AGPL:不直接嵌入
状态机 XState(30.4k,MIT) 12 节点推进/回退/守卫 原型可用,正式版可后端化
长流程 Temporal(24.3k,MIT) V1.5 评估超期/提醒/SLA 11/27 不需要
数据库 PostgreSQL + pgvector 正式版主库;检索先用 pgvector 稳定、可运维
原型后端 Supabase 自托管 / FastAPI + SQLite 替代 PocketBase PocketBase 主仓库已归档
对象存储 阿里云 OSS 正式版存储 MinIO 已归档,不作为生产底座
PC 前端 Vite + React + TypeScript 原型与正式版 先浏览器全屏,不急着 Electron
小程序 Taro(37.7k) 正式版;11/27 先用 H5 不阻塞演示

3.3 明确不采用

  • 不 fork OpenLawOffice / OpenLaw 等停更项目。
  • V1 不上 Camunda/Flowable 等 BPMN 引擎;12 节点用显式状态机 + 清单更可控。
  • 不自研电子签密码学/信任根;只做流程与 CA 适配层。
  • 不在 11/27 前接真实模型、真实企业微信、真实电子签、真实 OA。
  • 不把 PocketBase / MinIO 作为正式版底座(均已归档)。
  • 不把 AGPL/GPL 项目直接嵌入闭源产品;商用前法务确认。

4. 目标架构

企业微信 / 手机端
        ↓
Keycloak(SSO / OIDC / 会话)
        ↓
PC React 主端          小程序 Taro(正式版)/ H5(演示版)
        ↓
卓安Claw API(FastAPI)
  ├─ 案件域:12 节点状态机 + 清单 + 时限 + 阶段推进
  ├─ 权限:Casbin + 数据范围 + 案件团队 + 字段遮条
  ├─ 文档:阿里云 OSS + Docling/MinerU + Paperless 式索引
  ├─ 知识/Agent:pgvector 或 RAGFlow + 外部模型 API + 引用 + 审计
  ├─ 电子签:DocuSeal 式流程 + 第三方 CA 适配层
  └─ 审计:append-only 事件表
        ↓
PostgreSQL + pgvector / Redis / 阿里云 OSS

5. 对原型的约束

11/27 原型不引入上述任何重型依赖:

  • 5 屏:工作台、案件详情、Agent、驾驶舱、客户视图。
  • 3 个哇点:一案七面、Agent 出文书、7 家所驾驶舱。
  • 数据全部来自 packages/demo-data 合成数据。
  • Agent 用预生成响应 + 流式动画,不接真模型。
  • 客户视图先用 /mini H5 + 手机框。
  • 原型后端使用 packages/api-client 的 demo adapter;正式版换 HTTP/FastAPI,契约不变。
  • PocketBase 如需使用,仅限演示;正式版不使用。

6. 两天 Spike(不阻塞 11/27)

  1. 文档:1 份脱敏 PDF → MinerU/Docling → 分块 → pgvector/RAGFlow → 带引用回答;记录准确率、耗时、引用可点率。
  2. 权限:客服/客户经理/谈案/承办 4 个角色 → Casbin 策略 → 验证 4 条硬边界。
  3. 身份:企业微信 → Keycloak/Casdoor OIDC → 拿到用户、部门、分所。
  4. 状态机:1 个案件 → 12 节点推进/回退 → 每步写审计 → 越权/跳步被拒。

Spike 结果写入 docs/adr/ADR-002-spike-results.md,通过后再锁正式版选型。

7. 后果

  • 正面:不被单一开源项目绑定;每一层都有成熟替代;原型可以快速演进而不用推翻。
  • 负面:需要自己维护法律领域层和集成层;需要法务审查许可证;需要控制基础件数量,避免“组合爆炸”。
  • 缓解:V1 只锁 4 个基础件(Keycloak、Casbin、PostgreSQL+pgvector、OSS),其余延后。

8. 参考数据说明

star 数、最近推送时间、许可证状态为 2026-11-08 通过 GitHub API 查询的结果;后续会变化,选型前需复核。许可证以仓库 LICENSE 与法务意见为准。