一次回答客户发给您的安全问卷。
每家处理客户数据的公司都会反复收到同样的请求:安全问卷、隐私评估、供应商风险审查、采购尽职调查、证据索取。大多数组织靠手工答复——客户发来的电子表格、一文件夹的策略文档、一封邮件线程,以及某人对上次答复内容的记忆。
CAOS 将其转变为一套记录系统。问卷变成结构化、可作答的工作项。已完成的答复和您的合规文档变成一个可搜索、可引用的语料库。下一份问卷从您已经说过的内容开始,每项陈述都可追溯到其来源的文档或先前答复。
它是自托管的。您的策略、答复和客户的问卷都保留在您自己的基础设施上。
状态:v0。 CAOS 已在生产环境运行,但本仓库刚刚公开。接口、schema 和配置仍在变动中。外部贡献暂未开放——请参阅贡献。
不加猜测地读取问卷。 上传客户的 XLSX,CAOS 会忠实地渲染它——工作表、行、单元格、隐藏列、校验下拉列表。然后您标记哪些行可作答、哪些单元格需要填写,可按范围批量标记而非逐项操作。这里没有针对单个客户的解析器,因为没有标准可言:加粗的行可能是问题,空白的列可能是答案目标,任何能让某个工作簿解析正确的启发式规则,都可能自信地弄错另一个。
从您已完成的工作中构建语料库。 关闭一份问卷会将其已作答的行发布为可复用的问答。上传的策略、认证和报告成为可引用的段落。两者都进行不可变版本化,因此您上季度发出的答复,仍能对照当时有效的文档解释自身。
找到正确的历史答复。 检索同时运行词法搜索和语义搜索,融合两者的排名,并对最靠前的候选进行重排。合规语言两者都需要:像 "SOC 2 Type II" 这样被嵌入向量模糊化的精确 token,以及关键词搜索完全遗漏的改写表述。
起草有据可依的答复。 可选。模型通过受限的、列入白名单的工具搜索您的语料库,并起草带引用的答复——同时附上一个标签,说明其依据来源:Knowledge grounded、Mixed、General guidance 或 Based on current answer。General guidance 答复不对贵组织作任何断言,并且会明确说明这一点。
在 Google Chat 中作答。 /ciso 斜杠命令访问同一个有据可依的语料库,并提供链接返回 Web 应用中的持续会话。
导出回客户自己的工作簿。 答复写入原始文件结构中您映射过的单元格——而不是写入一个仿 CAOS 形态的近似版本。
记录一切。 只追加的审计日志,由数据库强制不可变性,携带答复修改前后的精确值。
CAOS 分为九个领域模块。其中三个——Evidence、Knowledge 和 Tasks——是全局的:它们不属于任何项目,因为其价值来自跨项目协作。
Internet
│
┌─────┴─────┐
│ nginx │ TLS · static frontend · /api proxy
└─────┬─────┘
┌──────────────┼──────────────┐
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴──────┐
│ Frontend │ │ API │ │ Taskiq │
│ React │ │ FastAPI │ │ workers │
│ static │ │ :18800 │ │ │
└───────────┘ └─────┬─────┘ └─────┬──────┘
│ │
┌─────┴──────────────┴─────┐
│ │
┌─────┴──────┐ ┌──────┴─────┐
│ PostgreSQL │ │ Redis │
│ pgvector │ │ queue+cache│
└────────────┘ └────────────┘
│
┌─────┴─────┐
│ Providers │ Bedrock · local models · Google Chat
└───────────┘
后端 —— Python 3.12+、FastAPI、SQLAlchemy 2 异步、带 pgvector 的 PostgreSQL、Redis、Taskiq 工作进程。每个模块划分为 domain → application → infrastructure → presentation,依赖关系是单向的。domain 不依赖任何东西。
前端 —— React 19、TypeScript、Vite、Tailwind v4、shadcn/ui、Zustand。应用级会话与外壳状态位于 src/app;功能与服务器缓存状态位于功能 store 中;长期运行的页面工作流位于功能控制器中。
两条检索通道都位于 PostgreSQL 中。 没有独立的向量数据库——单一存储意味着单一事务边界和单一备份。
外部供应商被保持在一臂之距。 每个集成都区分平台协议(Platform Protocol,即 CAOS 以产品语言表达的期望)、适配器协议(Adapter Protocol)和供应商实现(Vendor Implementation)——后者是唯一导入 SDK 的层次。这就是为什么嵌入与重排既能运行在固定的本地模型上,也能运行在 Bedrock 上,而应用代码无需知道用的是哪一种。
文档变得可检索。 上传 → 不可变版本 → 持久化摄取任务 → 提交(commit) → 分发给工作进程 → 提取不超过 1,500 字符的段落,每段保留引用定位器(PDF 页、DOCX 段落、XLSX 工作表/行/单元格)→ 生成嵌入向量 → 可搜索。任务在分发前提交,因此队列故障会变成可见的可重试状态,而不是看不见的挂起行。
问卷变成可作答的工作项。 上传 → 忠实的行视图 → 您映射行与答案目标 → 每个可作答行对应一个工作区条目,各自指向其确切的源单元格 → 草稿自动保存 → 显式完成,并带预期修订版本的比较并设置(compare-and-set),因此过期的标签页会收到 409,而不会覆盖同事的修改。
已完成的工作变成 Knowledge。 关闭一份问卷(或关闭一个项目,这会关闭其下所有问卷)会将已作答的行发布为可复用的问答。未作答的行不会发布任何内容。原始工作簿永远不会被摄取——它是操作性的工作,而不是依据材料。
一个问题变成有据可依的答复。 词法与语义检索并行运行 → 倒数排名融合(Reciprocal Rank Fusion)合并它们的排名 → 标签加权 → 排除过滤 → 在限定的 50 个候选窗口内重排 → 模型在固定的预算内搜索、检查、再搜索 → 生成带引用的草稿(引用指向不可变的源版本)以及依据标签。
每个阶段都会降级为较弱但诚实的模式:重排器不可用意味着退化为融合排序且没有置信度标识;嵌入向量不可用意味着退化为词法回退,并如实报告。
详情:数据流
前置条件: 带 Compose 的 Docker。前端开发需要 Node.js >=22.22.0 和 pnpm 11.9.0。后端开发还使用 uv。
无需 AWS 账户或 LLM 提供商——生成功能默认关闭,以下所有步骤无需它即可运行。
git clone https://github.com/DigiCred-OSS/caos-os.git
cd caos-os/backend
cp .env.example .env
将 backend/.env 中的 BACKEND_USERS_SECRET 占位符替换为至少 32 个随机字节:
python3 -c 'import secrets; print(secrets.token_urlsafe(48))'
启动 PostgreSQL、Redis、API 和工作进程。迁移通过 migrator 服务自动运行:
cd backend && docker compose up --build
首次运行会下载约 500 MB 的固定模型工件。之后 API 位于 http://localhost:18800,Swagger 位于 /api/docs,PostgreSQL 位于主机端口 15432。
CAOS 没有注册页面——从主机创建第一个管理员:
./caos-cli user create-superadmin --email [email protected]
cd frontend && pnpm install && pnpm dev
打开 http://localhost:5173。
前端和 API 请一致使用
localhost。会话 cookie 按主机限定作用域,因此混用localhost和127.0.0.1会悄悄丢失您的会话——这是最常见的本地环境配置问题。
下一步: 入门教程 将从这里开始,带您完成一份已作答并导出的问卷。
local(固定的 Nomic 和 MiniLM 交叉编码器,已内置在镜像中)。生产环境默认使用 AWS Bedrock。运行时从不下载模型。BACKEND_KNOWLEDGE_GENERATION_PROVIDER 和 _MODEL 以启用。每项设置都在 backend/.env.example 中有内联文档,并在配置参考中分组说明。
cd backend && uv sync --locked
uv run ruff check caos
uv run mypy caos
cd frontend && pnpm install && pnpm lint && pnpm build
此发布的发行版不包含 CAOS 的内部测试套件。Lint、类型检查和干净的构建是此处的验证关卡。
所有迁移工作请使用 ./caos-cli,而不要直接调用 Alembic——它会选择正确的环境、容器和数据库。
代码中不易看出的项目约定记录在 AGENTS.md 中,各模块特有的规则见每个模块自己的 AGENTS.md。
docs/ 遵循 Diátaxis——每个页面要么是教程、操作指南、参考资料,要么是解释说明,且这四类彼此分开。
请不要就漏洞创建公开 issue。私下报告请参阅 SECURITY.md。
CAOS 是开源的,但尚未对外部贡献开放。 我们预计在 2027 年开始接受外部拉取请求。在此之前,欢迎通过 issue 提交错误报告和问题,这些确实很有用——请参阅 CONTRIBUTING.md。
Apache License 2.0。版权所有 2026 DigiCred Technologies Pvt Ltd。
| 模块 | 负责 | 文档 |
|---|
| Identity | 认证模式、会话、角色、用户、外部主体绑定 | 文档 |
| Projects | 项目容器;关闭级联 | 文档 |
| Questionnaires | 工作簿读取、行映射、作答工作区、导出 | 文档 |
| Evidence | 可复用合规工件的全局仓库 | 文档 |
| Knowledge | 来源、段落、嵌入向量、检索、排除规则、引用 | 文档 |
| AI | CISO 对话、生成、依据标签 | 文档 |
| Chat | Google Chat 验证、身份绑定、消息投递 | 文档 |
| Tasks | 跨模块的待办人工工作 | 文档 |
| Audit | 只追加的事件日志 | 文档 |
| 开始 | 入门 |
| 部署 | 生产部署 · 配置 |
| 启用 | 答复生成 · Google SSO · Google Chat |
| 理解 | 架构 · 数据流 · 不可变性 |
| 查阅 | HTTP API · 角色 · 操作员 CLI |