结论摘要
Semantica 值得作为“语义证据、上下文图、双时态事实、来源追踪与可问责决策”的重点设计参考,但暂不建议把整个项目直接放入生产关键路径。
明确结论:建议仅作设计参照,并对少数组件开展可替换的隔离 PoC;不建议整包引入。
推荐优先级如下:
- 强参照上下文、决策、因果关系、有效期和撤回语义的数据契约。
- 隔离验证
ProvenanceManager(管理来源、版本、血缘、作废和完整性校验的溯源管理器,约第 64 行)、TemporalVersionManager(管理时态快照、修订和校验和的版本管理器,约第 1149 行)与DatalogReasoner(执行事实和 Horn 规则固定点推导的规则引擎,约第 39 行)。 - 参照 Explorer 的时间轴、来源泳道、决策列表与因果链主从框架和图节点检查器;理由、先例与合规目前主要停留在后端模型或接口层,借鉴时需补齐前端接入并校正产品语义。
- 暂不采用
ReteEngine(计划执行增量规则匹配但核心匹配与连接仍为占位实现的组件,约第 120 行)及resolve_conflicts()(只统计冲突处理结果而未把选定值回写实体的方法,约第 1346 行)。
| 能力 | 当前判断 | 建议 |
|---|---|---|
| 上下文图与决策 | 模型价值高,但核心对象职责过重 | 强烈建议参照模型 |
| 双时态与历史修订 | 建模较完整,查询接口仍有简化路径 | 建议隔离 PoC |
| 证据与来源 | 主体能力较完整,接入默认可选且持久化能力有限 | 建议选择性引入 |
| 冲突处理 | 工作流齐全,规则偏启发式且自动解决未回写 | 仅参照工作流 |
| 确定性推理 | Datalog 与纯时态推理有价值,Rete 尚未完成 | 局部验证 |
| Explorer 交互 | 工作台覆盖面广,但决策详情接入不完整,部分标签高于后端实际语义 | 强烈建议参照交互框架 |
| 整体生产成熟度 | pyproject.toml(声明项目元数据和发布分类的清单,约第 17—22 行)标记 Production/Stable,但源码中的子系统成熟度不均,跨模块事务也未统一 |
发布标签不能代替按能力验收,暂不建议整包引入 |
专题解析导航
主报告用于快速理解项目全貌;专题负责具体机制、源码证据、抽象示例和采用边界。
| 专题 | 解决的问题 | 简要结论 | 文件链接 |
|---|---|---|---|
| Context Graph 与决策模型 | 上下文、决策、审批、先例和因果关系如何进入同一图模型 | 数据契约值得重点参照,巨型类不宜直接扩展 | 进入 Context Graph 与决策模型专题 |
| 双时态事实与历史修订 | 如何区分事实何时有效和系统何时知道 | 模型与修订语义值得参照,查询层需 PoC | 进入双时态专题 |
| Provenance 证据链 | 如何回答证据来源、生产活动和版本变更 | 主体设计较完整,但生产接入必须强制持久化 | 进入 Provenance 专题 |
| 确定性推理 | 哪些结论可以通过规则复现并解释 | 优先评估 Datalog 与时态推理,避开当前 Rete | 进入确定性推理专题 |
| Explorer 交互设计 | 人如何审查图、时间、来源、决策和推理 | 多种交互值得借鉴,但标签与算法语义需对齐 | 进入 Explorer 交互专题 |
| 风险边界与引入方案 | 哪些能力尚未完成,如何安全验证 | 固定版本、隔离适配、分阶段验收 | 进入风险与引入专题 |
项目定位
Semantica 是一个 Python 语义基础设施项目。它不只生成知识图谱,还尝试把多模态摄取、语义抽取、图构建、双时态历史、证据来源、冲突裁决、确定性推理、决策记录和人工审查放入同一能力版图。
从源码组织判断,它更接近“模块化单体 + 多后端适配器”,而不是已经统一身份、统一存储、统一事务和统一审计的完整数据平台。Python API、CLI、MCP 和 Web Explorer 是多种入口,但源码中没有一个不可绕过的应用服务保证所有写入都同步完成来源记录、时态修订和决策审计。
发布标签与实际成熟度
- 仓库事实:
pyproject.toml(声明项目版本、许可证和发布分类的项目清单,约第 5—34 行)把项目标记为Development Status :: 5 - Production/Stable。 - 源码事实:
AlphaNode._matches()(当前直接接受所有事实的 alpha 条件匹配方法,约第 79 行)和BetaNode._can_join()(当前直接接受左右事实组合的 beta 连接方法,约第 101 行)仍是占位逻辑;resolve_conflicts()(只累计处理计数而未把选定值回写实体的方法,约第 1346 行)没有完成实际写回;ContextManagerWithProvenance(引用当前源码树中缺失底层上下文管理模块的来源包装器,约第 19 行)与ReasoningEngineWithProvenance(引用当前源码树中缺失底层推理引擎模块的来源包装器,约第 21 行)存在端到端导入风险。 - 选型判断:
Production/Stable是上游发布元数据,不是本报告对全部子系统完成度的背书。生产采用仍应按具体能力、真实调用链和目标环境逐项验收。
核心依赖、框架与技术栈
技术栈概览
| 层次 | 依赖性质与版本依据 | 职责及实际使用证据 | 影响或风险 |
|---|---|---|---|
| 核心语言与运行时 | Python(项目核心实现语言,声明最低版本 3.8,约第 15 行);容器运行时使用 3.14 |
所有核心语义、图、时态、溯源和推理能力均为 Python 模块 | 最低声明版本与容器版本跨度大,PoC 需选定单一运行时并回归 |
| 图与 RDF | NetworkX(直接运行时依赖,约第 57 行)和 RDFLib(直接运行时依赖,约第 56 行) |
前者用于图校验与算法,实际调用见图校验实现;后者用于 RDF 摄取、三元组后端及 PROV 导出,实际调用见本体摄取实现 | 同时维护属性图和 RDF 语义会增加模型映射与一致性成本 |
| 数据契约 | Pydantic(直接运行时依赖,最低约束 2.13.4,约第 78 行) |
Explorer 请求响应及语义抽取模型使用声明式校验,见Explorer schema | 直接依赖下限较新,升级时需检查插件与生态兼容性 |
| Web 后端框架 | FastAPI(explorer 可选依赖,最低约束 0.109.2,约第 237 行)和 Uvicorn(explorer 可选 ASGI 服务器,最低约束 0.22.0,约第 238 行) |
仅服务 Explorer API、静态资源和 WebSocket,实际入口见Explorer 应用 | 它们不是核心库的统一应用框架;生产接入仍需自建事务和权限边界 |
| Web 前端框架 | React(前端直接依赖,锁定 19.2.5)与 TypeScript(开发依赖,锁定 5.9.3) |
承载图、决策、来源、时间轴和推理工作台,声明见前端清单 | 前后端为独立构建链,认证、API 契约和版本兼容需联合验证 |
| 图与时间可视化 | Sigma(前端图渲染直接依赖,锁定 3.0.2)、Graphology(前端图数据结构直接依赖,锁定 0.26.0)和 vis-timeline(时间轴直接依赖,锁定 8.5.0) |
用于图浏览、关系检查和时间回放,实际组件见图工作台源码 | 大图性能、布局稳定性与双时态表达能力需要真实数据压测 |
| 构建与部署 | Vite(前端构建工具,锁定 6.4.3);Dockerfile(Node 26 构建前端、Python 3.14 运行服务) |
单镜像交付 Explorer 与 Python 后端 | 镜像默认安装 explorer 扩展,不等于最小化核心部署 |
| 上游项目许可 | MIT License(上游仓库的项目许可文本,约第 1 行);pyproject.toml(声明项目许可证和 OSI 分类的清单,约第 10、22 行) |
许可文本允许在保留版权和许可声明的条件下使用、复制、修改和分发上游项目代码 | 许可较宽松,但不覆盖第三方依赖、模型、数据集、商标或业务数据的独立权利与合规要求 |
框架边界、锁定状态与依赖分类
- 没有单一核心后端框架。 Semantica 的主体是 Python 库;Web 框架只属于 explorer 可选扩展,不能把 Explorer 路由当作统一业务服务层。
- Python 依赖在
pyproject.toml(项目包、直接依赖、可选依赖和开发依赖的声明清单)中主要使用最低版本约束;仓库同时提供requirements-ci.txt(由 uv 针对 Python 3.11 与 all 可选组编译、固定精确版本并附带哈希的 CI 依赖清单;该可选组按声明不含 GPU 依赖)。因此 CI 广覆盖环境已有可复现基线,但目标生产环境、最小能力集合和其他 Python 版本仍没有专用锁定结果。 - 前端存在
package-lock.json(锁定前端直接与传递依赖版本的 npm 锁文件,lockfileVersion 3);Python 的 CI 广覆盖锁定与前端构建锁定覆盖范围不同,都不能代替面向目标生产组合的依赖裁剪与验证。 - 开发依赖和测试工具位于 pyproject 的 dev 可选组;数据库、图后端、向量库、云服务、LLM 提供商等被拆为可选依赖,但核心直接依赖仍覆盖 NLP、机器学习、图计算、多媒体和文件处理,部署面偏大。
- 生产引入前应基于目标 Python 版本和最小能力集合生成专用锁定清单,执行软件成分与许可证检查、裁剪未使用能力,并验证运行时版本、GPU/CPU 构建、模型下载和镜像体积;现有 CI 广覆盖清单不能消除这些升级、运维和供应链风险。
开源许可与合规边界
Semantica 上游项目采用 MIT License(约第 1—21 行),pyproject.toml(项目元数据清单,约第 10、22 行)也给出相同声明。对项目自身代码而言,这降低了内部评估、修改和分发的许可门槛,但分发时仍需保留许可证要求的版权和许可声明。
该项目许可证不能替代依赖级核查:Python 与前端锁定清单中的第三方包、可选数据库和云后端、下载的模型或数据集可能各有独立条款。生产引入前仍需针对实际启用的最小能力集合生成软件物料清单,逐项检查许可证、来源和再分发限制;本报告不把“项目为 MIT”推断为“整个部署组合无许可风险”。
整体架构
下面的能力图说明仓库边界,不表示所有模块默认已经自动形成事务闭环。
关键模块边界:
semantica.context(管理上下文图、决策、因果和相关查询的模块)覆盖范围最广,也是职责最集中的区域。semantica.kg(构建知识图谱并提供时态模型、查询和版本管理的模块)同时承担图构建和双时态能力,但时态接口并未完全统一。semantica.provenance(记录实体、活动、Agent、版本和血缘的来源追踪模块)具有独立模型,却经常通过可选包装器接入主链路。semantica.conflicts(检测与裁决多类冲突的模块)适合作为工作流参考,不足以代替领域一致性引擎。semantica.reasoning(提供基础规则链、Datalog、时态推理和解释生成的模块)内部成熟度差异较大。semantica.explorer(为图、决策、时间、来源和推理提供 Web API 的后端模块)与React(承载多个可视化工作台的前端框架入口)共同构成人工审查入口。
关键类与方法总览
| 原始技术标识 | 当前职责 | 选型意义 |
|---|---|---|
ContextGraph(聚合节点、边、索引、时态状态和决策关系的核心图对象) |
承载上下文与决策的主要内存模型和访问入口 | 数据契约值得参照,但职责过重,不建议直接扩展为业务核心 |
DecisionRecorder.record_decision()(协调决策节点、实体关系和可选来源记录的写入方法) |
接近单一决策写入口 | 可参照应用服务边界,但生产实现需要统一事务或可靠事件 |
TemporalGraphQuery.query_at_time()(按所选时间轴重建点时图状态的方法) |
执行有效时间或记录时间过滤 | 适合隔离 PoC;传入查询文本当前未被解释 |
TemporalVersionManager.apply_revision()(保留旧关系并追加替代版本的追溯修订方法) |
保存历史认知变化与修订事件 | 是双时态补录和决策复盘最值得验证的实现之一 |
ProvenanceManager.track_entity()(在事务范围内记录实体来源、版本和派生关系的方法) |
来源能力的主要写入口 | 适合单机 SQLite PoC,生产需确保业务写入不可绕过它 |
DatalogReasoner.derive_all()(以半朴素迭代执行固定点推导的方法) |
复算递归确定性规则 | 值得用真实领域规则验证表达力、性能和证明链 |
ConflictDetector.resolve_conflicts()(只统计解决数量而未回写实体的冲突处理方法) |
暴露自动处理的当前实现边界 | 只能参照流程,不能把计数成功解释为数据已被修改 |
DecisionWorkspace(加载决策列表和邻居链的前端工作台) |
提供决策主从审查骨架 | 交互框架值得参照,但详情、先例、合规和认证仍需补齐 |
架构要点
1. 上下文、决策与因果关系是一等对象
ContextNode(保存上下文内容、属性和有效期的节点模型,约第 322 行)与 ContextEdge(保存关系类型、关系族和有效期的边模型,约第 365 行)使用一致的时态语义。决策也不是普通日志,而是带场景、推理、结果、置信度、相关实体、决策者和有效期的图对象。
trace_decision_causality()(沿显式因果边并结合启发式影响关系追踪决策链的方法,约第 3544 行)会混合不同证据强度,因此产品层必须区分“显式声明”和“推测关联”。详见Context Graph 与决策模型专题。
2. 有效时间与记录时间明确分离
BiTemporalFact(同时保存业务有效时间和系统记录时间的事实模型,约第 28 行)区分“何时成立”和“何时获知”。版本管理采用追加替代而不是覆盖旧值,适合补录、追溯修订、政策版本和决策复盘。
局限是 query_at_time()(按指定时间轴过滤并重建图状态的方法,约第 107 行)不解释传入查询字符串,它更像时态过滤接口而不是完整查询语言。详见双时态专题。
3. Provenance 超出普通来源字段
ProvenanceEntry(保存实体、活动、Agent、版本、来源位置和校验信息的溯源记录,约第 37 行)借鉴 Entity—Activity—Agent 关系。实体追踪会区分上一版本与语义派生,作废采用追加记录而不是删除历史。
本地 SHA-256 链能发现意外修改或断链,但没有外部签名和可信时间戳。拥有数据库完全写权限的攻击者仍可能重写并重算整个链,不能把它单独视为强对抗场景的不可否认证据。详见Provenance 专题。
4. 冲突工作流完整,自动解决仍弱
ConflictDetector(检测值、类型、关系、时态和逻辑冲突的检测器,约第 95 行)能生成置信度、严重度和建议动作;ConflictResolver(按投票、可信度、时效性或人工策略选择结果的裁决器)提供了合理流程抽象。
严重度和逻辑互斥包含硬编码启发式,时态冲突也不是完整双时态矛盾分析。现阶段只应参照“检测—解释—建议—人工裁决—留痕”流程。详见风险与引入专题。
5. 确定性推理必须按子系统评价
DatalogReasoner(支持事实、Horn 规则、递归和固定点推导的规则引擎,约第 39 行)适合验证可复算规则;TemporalReasoningEngine(以纯 Python 计算区间关系、覆盖和缺口的时态推理器,约第 43 行)不依赖 LLM,确定性较好。
Rete 子系统的 alpha 匹配与 beta 连接仍直接返回真,解释结果也未与证据版本、规则版本和决策记录形成不可绕过的审计链。详见确定性推理专题。
关键流程与数据流
源码具备上述大部分模型,但没有统一应用服务强制它们在同一事务内完成。生产化时应建立稳定 ID、统一事件契约和可靠 outbox,使业务写入成功时来源记录不会静默缺失。
可借鉴的交互设计
- 决策列表与因果链主从框架:当前列表负责筛选和状态扫描,右侧只展示选中项摘要与所谓因果链;原因、上下文、先例和合规尚未接入该前端视图。主从骨架适合参照,但完整决策审查面板属于需要补齐的目标形态。
- 来源泳道图:将 Agent、Activity、Entity 分泳道展示,同时回答“谁、通过什么过程、产生了什么”。
- 时间轴与快照播放:允许回看图状态变化;借鉴时应增加有效时间/记录时间轴切换。
- 节点检查器:把业务属性、时态边界、来源数量、因果路径和候选链接集中在上下文面板。
- 推理工作台:按模板、事实、规则、执行和结果逐步展开,降低规则实验门槛。
- 多入口一致性:多种入口方向值得借鉴,但必须汇合到同一应用服务,不能维护各自的简化语义。
现有“Causal Chain”后端使用通用邻居查询;尚未被当前决策前端调用的“precedent”后端接口主要依赖同类别与 token 相似度,“compliance”后端接口只检查特定违规边。主从交互形态可保留,但新增接入时应把标签明确为“显式关系”“启发式候选”或“规则验证结果”。详见Explorer 交互专题。
引入成本、风险与限制
- Python 核心直接依赖覆盖机器学习、NLP、向量检索、图计算、可视化、文档、图像和音频处理,最小使用场景仍可能承担较大供应链与镜像体积。
- 项目处于 0.x 快速迭代阶段,必须锁定 commit 并在升级时重做关键源码与行为复核。
- 上下文、时态、来源、推理和图构建没有天然共享同一个事务和持久化层。
ContextManagerWithProvenance(为上下文操作追加溯源记录的包装器,约第 19 行)和ReasoningEngineWithProvenance(为推理运行追加溯源记录的包装器,约第 21 行)引用仓库中不存在的底层模块,端到端接入路径存在断裂。- Explorer 后端启用 API key 后要求
X-API-Key(受保护接口使用的认证请求头,约第 19 行),但静态检查未发现原生React(Explorer 可视化工作台的前端框架入口)提供录入或发送流程。安全模式需要反向代理注入或补充前端认证。 - 本次未运行测试;所有运行行为、性能和部署判断都必须在 PoC 中复核。
建议:引入或参照
建议仅作设计参照
- 上下文节点与边共用有效期语义;
- 决策、审批、例外、先例和因果关系的一等建模;
- 有效时间与记录时间分离;
- Entity—Activity—Agent 来源模型;
- 追加式修订与作废;
- 时间轴、来源泳道、主从审查和逐字段证据交互。
建议局部引入前先验证
- 以溯源管理器配合 SQLite 做单机审计 PoC;
- 以时态版本管理器验证补录、历史回放和完整性摘要;
- 以 Datalog 引擎验证真实领域规则、递归深度、性能和解释边界。
不建议引入
- 当前 Rete 规则引擎;
- 自动冲突解决的现有回写路径;
- 缺失底层模块的来源追踪包装器;
- 把通用邻居链标为真实因果链;
- 仅依赖本地哈希链承担强安全审计;
- 未形成目标生产环境专用锁定并完成依赖裁剪前直接整包部署。
推荐从风险边界与引入方案专题的三个隔离 PoC 开始,通过验收后再讨论组件级引入。
源码依据
以下源码证据全部指向公开官方仓库的完整 commit SHA 行级永久链接;报告与专题之间继续使用可随目录移动的相对链接。
| 证据 | 固定版本官方源码 | 支持的判断 |
|---|---|---|
| 上下文节点与边的有效期 | 节点和边的有效期定义 | 节点和边具有有效期与活动状态 |
| 决策记录与因果追踪 | 决策记录实现、显式与启发式因果追踪实现 | 决策是一等图对象,因果追踪混合显式与启发式关系 |
| 双时态事实模型 | 有效时间与记录时间字段 | 有效时间与记录时间被分离 |
| 时态查询与版本修订 | 双轴点时查询、追加式历史修订 | 支持按轴查询、快照、修订和校验和 |
| 来源记录结构 | 来源、活动、Agent 与版本字段 | 来源、活动、Agent、版本和校验字段独立建模 |
| 自动冲突解决占位行为 | 只累计处理计数的冲突解决实现 | 自动处理没有真正回写实体 |
| Datalog 固定点推导 | 半朴素固定点循环 | 支持确定性固定点推导 |
| Rete 占位匹配与连接 | 直接返回真的 alpha 与 beta 条件 | 当前不能承担真实模式匹配 |
| Explorer 决策链后端 | 通用邻居查询形成的决策链 | UI 所称因果链实际使用通用邻居查询 |
| 项目许可与发布分类 | 项目许可证与发布分类、MIT 许可文本 | 上游项目采用 MIT,同时声明 Production/Stable;许可证与成熟度标签均需和依赖及实现证据分别判断 |
待确认问题
- 目标系统的事实、关系、决策和审计事件规模及写入并发是多少?
- 是否要求严格双时态,还是只保留有效时间历史?
- 审计是否用于监管或法律证据,是否需要签名和外部可信时间戳?
- 冲突规则属于通用图清洗,还是明确业务域约束?
- 规则推理是否需要否定、聚合、优先级、例外和完整证明树?
- 哪些 Agent 决策允许自动执行,哪些必须人工审批?
- 当前已有的图数据库、事件总线、IAM 和审计平台分别是什么?
在这些问题明确前,最稳妥的路线仍是:把 Semantica 当作架构与交互设计样本,对少数组件进行小范围、可替换的验证。