Domain Scope Eval:个人/部门/项目私域隔离实验¶
结论¶
本轮实验验证的是架构风险,不是检索速度。
当前结果:
- Case 数:7。
- 通过数:7。
- 覆盖 scope 类型:department、personal、project。
- 风险探针数:4。
- stale index 阻断数:2/2。
- archived project lifecycle 过滤数:1。
- Context Router score log case 数:7。
- Context Router scorer:
domain_router_feature_v1。 - Context Router feature score candidate 数:24。
- Context Router 权限过滤库数:10。
- safe output 泄漏标记数:0。
- Tool Gateway 过滤的不安全候选输出:9,其中风险探针贡献 6。
- Ontology contract case 数:3。
- Ontology 覆盖 scope 类型:department、personal、project。
- Ontology object/rule/action/writeback event type 数:7 / 5 / 7 / 3。
这说明当前 Framework 已经可以用同一套 topology、permission view、lifecycle、SearchConnector 和 Tool Gateway 同时服务个人、部门、项目三类私域 demo,并阻断故意不安全 connector 造成的越权、归档和 stale index 输出。
本轮也把外部 Palantir 本体论参考推进成最小可测契约:三个基础 demo 都显式引用 object、rule、action 和 writeback event type。它们不再只是文档概念,而是进入 domain-topology.json、topology lint 和 Domain Scope Eval 输出。
运行命令:
bash
python scripts/domain_scope_eval.py --write-report
结果文件:
vault/50-outputs/domain-scope-eval-results.jsonvault/50-outputs/domain-scope-eval-analysis.md
实验设计¶
实验使用合成组织拓扑:
- 个人域:员工入职与首次报销。
- 部门域:财务部门报销政策。
- 项目域:当前 OrgReOrg Framework MVP。
在 3 个基础场景之外,本轮新增 4 个风险探针:
- 跨部门项目:项目维护者不能因为“跨部门协作”默认继承财务和个人上下文。
- 员工调岗:旧部门或旧岗位的 stale index 不能继续被当前个人任务读到。
- 项目归档:归档或 superseded 的项目上下文默认不能参与当前回答。
- 权限变更:权限收回后,即使索引里还残留旧材料,也必须被运行时授权阻断。
为了暴露风险,实验没有假设底层 connector 完美安全。LeakyDomainConnector 会故意:
- 忽略请求中的权限 scope。
- 返回候选库里的越权文档。
- 在
rank_log中塞入候选上下文库 ID、source URI 和 owner。
然后由 Framework 层处理:
text
domain-topology.json
-> routing rule 生成候选上下文库
-> route_domain_context 用 feature-based scorer 生成候选库评分、命中原因和 trace_log
-> permission view 过滤最终可调用库
-> SearchConnector Tool Gateway 检查 allowed_scopes
-> lifecycle 过滤 archived / superseded context
-> gateway 后置过滤越权 evidence
-> safe_rank_log 清洗 rank_log
-> safe output 返回给 Agent
Case 明细¶
| Case | 类型 | 风险 | 最终选择 | 返回库 | Ontology | Gateway 过滤 | Lifecycle 过滤 | 结果 |
|---|---|---|---|---|---|---|---|---|
personal-onboarding-reimbursement |
personal | base_scope | personal_employee_ops, org_directory |
org_directory, personal_employee_ops |
obj=2, rule=1, action=1, writeback=1 | 1 | 0 | pass |
department-finance-policy |
department | base_scope | department_finance_ops, org_directory |
department_finance_ops, org_directory |
obj=2, rule=1, action=1, writeback=1 | 1 | 0 | pass |
project-framework-development |
project | base_scope | project_orgreorg_knowledge, org_directory |
org_directory, project_orgreorg_knowledge |
obj=3, rule=2, action=2, writeback=2 | 1 | 0 | pass |
risk-cross-department-project |
project | cross_department_project | project_orgreorg_knowledge, org_directory |
org_directory, project_orgreorg_knowledge |
- | 2 | 0 | pass |
risk-employee-transfer-stale-index |
personal | employee_transfer_stale_index | personal_employee_ops, org_directory |
org_directory, personal_employee_ops |
- | 2 | 0 | pass |
risk-archived-project-filter |
project | archived_project | project_orgreorg_knowledge, org_directory |
org_directory, project_orgreorg_knowledge |
- | 1 | 1 | pass |
risk-permission-change-stale-index |
project | permission_change_stale_index | project_orgreorg_knowledge, org_directory |
org_directory, project_orgreorg_knowledge |
- | 1 | 0 | pass |
每个 case 都故意把越权、归档或 stale index 材料放进候选集。最终 safe output 没有泄漏 forbidden context library id、source URI 或 marker。
得到的 Insight¶
domain/必须按组织拓扑组织,不能只按“当前项目资料”组织。- 路由可以“看见候选”,但最终调用和输出必须受 permission view 约束。
- Tool Gateway 需要支持
person:*、dept:*、project:*这类 namespaced scopes。 rank_log也属于潜在泄漏面,不能原样返回候选 ID、source URI、owner 或 debug note。- 项目域不能默认继承部门所有上下文;跨部门项目必须显式声明上下文库和权限视图。
- stale index 不能只靠删除传播兜底;员工调岗、权限收回、项目归档都要求返回前按当前 permission view 和 lifecycle 二次过滤。
route_domain_context已升级为domain_router_feature_v1:评分不再只看关键词,而是组合 lexical overlap、关键词短语、task binding、source path、scope signal、permission scope、ontology binding、lifecycle 和 unknown topology penalty。- ontology contract 需要进入测试和 lint,否则 object / rule / action / writeback 容易停留在口号,不能真正约束 Agent 行为。
下一步¶
- 用真实团队问题和人工纠正日志校准
domain_router_feature_v1的 feature 权重。 - 把风险探针里的合成 stale index 替换成真实 adapter 的删除传播、重建延迟和权限变更事件。
- 把 permission view 从 JSON 合约推进为可审计策略和运行时授权检查。
- 后续如果接 embedding 或 learning-to-rank scorer,必须保持同一 permission view、feature trace、trace_log 和 Tool Gateway 边界。