Skip to content

About

ACTE:对抗案件理论机 —— 诉讼代理智能体的姿态参数化与不可逆动作护栏(论文 F1 的算法本体:内核 + DSH 插件 + 评测 harness + 形式化规范)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ACTE:对抗案件理论机

ACTE(Adversarial Case-Theory Engine)是一个诉讼代理决策引擎。它在同一条流水线上 处理三个问题:哪些动作不可实施(不可逆动作护栏)、在允许的动作中选取哪一个(姿态参数化)、 以及主张是否具备事实、规范与证据三类支撑(案件理论图)。

引擎的设计约束只有一条:它不判断案件能否胜诉,只保证不会实施使自身处境发生不可逆 恶化的动作。该约束的形式化与由此得到的定理见 method/formalization.md。

本仓库收录算法本体,包括内核、运行时插件、评测入口、回归测试与验证链,以及形式化规范。 实验材料(任务集、金标准、消融配置与逐臂读数)另行归档,理由见第 8 节。

1 构件

1.1 不可逆动作护栏

法律程序中存在一类不可回复的动作。提起诉讼可能引起处罚层级加重,甚至转入刑事程序; 未在法定期限内起诉则起诉通道关闭。此类动作登记于 T_irr(不可逆转移表),由护栏 (下称盾)在规划之前予以排除。盾的形态为

Shield(s) = { a : (s, a) ∉ T_irr 且存在自 s 起的无穷安全续行 }

其取值仅依赖状态、动作集与 T_irr,不依赖效用函数或策略。这一性质是定理 1 的结论, 而非实现上的取舍。T_irr 由 rules/gates.yaml(闸门注册表)生成,经 code/data/t-irr.json(附源文件 sha256 的快照)至插件内联合成段,三处逐字一致由 check_plugin_data.py 校验。

1.2 姿态参数化

同一引擎以两个参数驱动三种诉讼风格:

姿态 目标 Obj 风险预算 ε 取向
细 覆盖最大化 宽松 先行铺全事实与证据
狠 效用最大化 宽松 追求回收规模
稳 效用最大化 严格 宁可少为,不可为错

ε 不停留于符号层面,而落实为可消耗配额。strict 对应配额 0,任何不可逆动作均不接受, 包括当事人已确认者;loose 对应配额 1,接受一个已确认的不可逆动作,未确认者仍一律拦截。 配额属于状态的增广分量,不构成策略,故不违反盾不依赖策略的要求。

1.3 案件理论图

主张为节点,事实、规范与证据为三类支撑边。完备性(每条主张三类边齐备)与覆盖度 (按要件事实计,不按请求权条数计)均可机械校验。

1.4 评测入口

code/harness.py 为可插拔臂的评测入口,流程为运行系统、判定弱点是否被发现、计算指标、 落盘附溯源的结果文件。另设两个夹具臂(oracle 与 null)用于标定度量链自身: oracle 应给出检出率 100%、误报 0;null 应给出检出率 0%、误报 0、升级事故率 100%。 任一不符即说明度量链存在问题,而非系统强弱。这两个臂不是基线,不得作为实验结果引用。

2 定理

method/formalization.md 给出完整陈述、证明与工程含义,摘要如下。

定理 内容 所解锁的设计决策
1(解耦) 硬约束(ε = 0)下盾可独立于目标与策略求解;分两步即达约束最优 风险闸门可实现为独立插件,无须与策略联合优化
1′(软约束可解耦的条件) ε > 0 时解耦要求风险预算为可消耗配额;条件不满足时策略必须随机化 「闸门能否单独实现」成为可操作的工程判据
2(姿态单调) 固定 Obj、ε_1 ≤ ε_2,则 Shield_{ε_1} ⊆ Shield_{ε_2} 提供可证伪的消融诊断:出现交叉即说明 ε 未单独起作用
3(无免费午餐) 存在实例族使三姿态两两互不占优 参数化为必需,而非多余的工程复杂度

定理 1 直接决定代码结构:Engine.shielded_plan() 先计算盾,再在盾内按姿态选取动作, 而非将风险并入效用函数统一打分。若实现将风险并入目标联合优化,即等于否认定理 1。 策略层因此不得重新评估风险,该边界由 code/tests/test_strategy.py 固定。

3 术语

词 含义
盾 / shield 不可逆动作护栏,见 ctd_acte/t_irr.py 与 plugins/acte-shield.js
闸门 / gate rules/gates.yaml 中的单条不可逆转移登记项
T_irr 不可逆转移表,由闸门注册表导出
姿态 / posture 参数对 (Obj, ε),见 ctd_acte/posture.py
升级 / escalation 己方动作引起的处境不可逆恶化,如处罚加重、转入刑事、标的物灭失
动作型 / 不作为型 两类 T_irr 条目:实施某动作即触发,与未在期限内作为而触发
时间增广 不作为型的判定需要剩余期限这一状态分量;缺该分量时应报无法判定,不得放行
弱点注入签名 金标准机制:将「案件事实中埋有弱点」转化为可机械核验的注入、痕迹与后果断言
ToC 案件理论图(Theory of Case)
M_1 / M_2 / M_3 定理 3 构造的三个互不占优的实例族
DSH DeepSeek Harness,引擎的运行时基座(MIT,第三方组件)
发射端 plugins/acte-plan.js,注册工具、将提交送交盾、并将裁决写入日志
要诀 / yaojue 登记表与快照里的来源标识:本引擎的办案风格取自一本实务读物的各章,yaojue 记该章名(稳 / 细 / 狠 / 全),source_page 记其在原书中的位置。本仓库只登记出处,不收录原书内容
姿态标识 代码与数据里的姿态标识沿用该读物的章名(细 / 狠 / 稳)。论文以目标与预算另行写为覆盖型 / 效用型 / 稳健型,两者是同一组参数的不同写法:细 = 覆盖型、狠 = 效用型、稳 = 稳健型
T1–T4 评测的四种任务形态:T1 立案决策、T2 主张栈完整性、T3 文书侧输出、T4 对方攻击预判。指标名与代码里的编号与之一致

代码注释中的 B1–B4 指论文 §4.1 列出的对比基线。除此以外,代码与文档不出现任何 需要外部对照表才能读懂的编号:所有机制名(如输出侧接地门槛、红队对抗循环)与 实验配置名都以自足表述写出,读者只看本仓库即可理解。

4 安装与验证

依赖 Python 3.9 及以上版本与 PyYAML;插件运行时测试需要 Node。内核本身不依赖第三方库。

python3 -m pip install pyyaml
python3 code/tools/verify_all.py

本仓库不含任务集,验证链因此自动进入 code-only 档:执行不依赖任务集的六档, 其余五档以「不适用」显式列出,并说明本次验证覆盖的范围。完整十一档需要实验材料:

python3 code/tools/verify_all.py --profile full

最小用例(不依赖任务集):

from ctd_acte.engine import Engine
from ctd_acte import toc as toc_mod

engine = Engine.from_snapshot("code/data/t-irr.json")
toc = toc_mod.ToC()
claim = toc.add_claim("请求判令被告支付货款", expected_utility=120000)
toc.add_edge(claim, "fact", "2025-03-01 双方签订买卖合同")
toc.add_edge(claim, "norm", "民法典第 577 条")
toc.add_edge(claim, "evidence", "买卖合同原件")

plan = engine.shielded_plan(
    "稳",
    actions=["起诉", "申请保全", "等待对方履行"],
    triggered=["gate.escalation-risk"],
    trigger_map={"起诉": ["gate.escalation-risk"]},
    remaining=30,
    toc=toc,
)
print(plan["shield"]["allowed"], plan["quota"], plan["toc"]["coverage"])

5 验证链的覆盖范围

verify_all.py 共十一档。本仓库(不含任务集)可执行其中六档:

档 检查 所防范的问题
1 T_irr 登记表回归 登记表结构漂移,或校验器退化为从不报错
2 T_irr 漂移 闸门源演进后快照静默过期(快照与源逐字比对)
5 任务集生成器守卫(§A) 生成器守卫失效(空注入计划、锚点未命中须报错退出)
6 ACTE 内核回归 盾的两种语义、时间增广、姿态嵌套、零容忍、ToC 口径
10 插件数据一致性 插件内联表静默过期;改用自上下文读取配置的写法(真机加载期崩溃)
11 插件运行时行为(需 Node) 盾的两型语义、时间增广、委托下游,以及盾缺席时必须报警

未覆盖的档以任务集为输入,随实验材料发布:弱点目录校验、判定机复用验证、度量链标定、 姿态与消融效应、红队开关对照。

第 11 档需要 Node。找不到 Node 时该档报告未执行并以非零退出,不作静默略过。

几个套件也可以单独跑(不经验证链)。其中两个(度量链标定、策略层与消融效应)以任务集 为输入,本仓库里没有该输入,因此会打印一段"不适用"说明并以退出码 2 结束, 而不是抛异常。抛异常看起来像套件坏了,而实际情况是这一步本来就依赖实验材料。 红队提示词开关套件只有其中一组依赖决策任务集,缺输入时该组跳过、其余照跑。 verify_all.py 会自动把这几步整体列为"不适用"。

6 目录结构

code/
├── ctd_acte/          内核(不依赖第三方库、不调用模型)
│   ├── t_irr.py         T_irr 登记表与盾(限制型 / 强制型)
│   ├── posture.py       姿态 (Obj, ε)、配额映射与嵌套诊断
│   ├── toc.py           案件理论图、支撑完备性、要件覆盖度
│   ├── strategy.py      在盾内按姿态选取动作(不重新评估风险)
│   ├── engine.py        三层编排(先计算盾,再选取动作)
│   ├── metrics.py       检出、误报分级、升级事故、计划质量
│   └── output_gate.py   输出侧接地门槛:引文未逐字落到案情原文即降级
├── plugins/           DSH 运行时插件(JavaScript)
│   ├── acte-protocol.js  协议:层名、两型常量、通知位
│   ├── acte-shield.js    盾:两种语义(拦 / 催)与配置驱动
│   └── acte-plan.js      发射端:注册 acte_plan、发出 acte/shield、写取数日志
├── data/t-irr.json     T_irr 快照(附源 sha256 溯源;含法条级期限节点的判定与覆盖)
├── vendor/signature.py 注入签名判定机(只读冻结件,见 vendor/PROVENANCE.md)
├── tests/             回归套件(其中三个以任务集为输入,缺输入时按"不适用"退出)
├── tools/             校验器、生成器、验证链、红队判定、性能微基准、统计工具
└── harness.py         评测入口(可插拔臂、夹具标定、指标落盘)
method/formalization.md   形式化规范:记号、SC-MDP 定义、定理 1/1′/2/3 与证明
method/t-irr.yaml         不可逆转移登记表(声明式判定 + 穷尽校验,快照由它派生)
method/deadline-nodes.yaml 法条级程序期限节点目录(21 个节点,精确到条)
method/book-coverage.md   设计来源对照表:办案经验 → 结构命题 → 工程构件
probes/redteam-probes.json  红队探针定义(24 件,另行改写,不进主任务集)
probes/redteam-verdicts.json 红队判定产物(两配置 × 两种子的逐探针判定)
perf/perf-report.md       护栏判定开销的实测读数(微基准与会话侧)
rules/gates.yaml          闸门注册表钉版快照(供第 2 档漂移校验)

内核不调用模型,此为刻意设计:盾与姿态的取值仅依赖 T_irr 与登记表,若将其绑定至 模型调用,闸门是否生效将变为不可复现的读数。生成式部分(红队对抗循环、主张生成) 由评测入口与臂适配器接入。

7 读数解释须知

本仓库不含逐臂实验读数(见第 8 节);收录的读数只有两类,都不涉及主任务集的答案: 红队对抗探测的判定产物(probes/)与护栏开销的微基准(perf/)。 微基准读数是单机单次运行的结果(含计时器开销未扣除这一限定,见该报表 §5), 跨机器会变;可比的是工具与方法(code/tools/bench_shield.mjs 可自行复跑), 不是那几个微秒数值本身。 使用者若从论文或实验材料中获得逐臂读数,应注意以下两点,否则容易误读。

第一,误报率不宜仅看单一口径。基线的 FP(any)(存在任一报出即计为误报)均为 1.0, 属口径产物;判读应以 FP(重大)(仅重大误报计入)为准。输出侧门槛与分级口径的价值主张, 由机制与模型行为共同决定。

第二,检出率的排序随模型而变。同一任务集更换模型后,裸基线与本引擎的相对次序会发生 变化,任何比较结论均应限定于所测模型。

此外,机会面类弱点(例如抚养权窗口宜快)在各臂中几乎均未检出。该现象属任务集侧的 真实边界,论文中已如实记录。

8 实验材料

任务集与金标准、消融配置、逐臂读数与口径记账均不收录于本仓库。因此,代码中出现的 experiment/tasks、experiment/results、experiment/run 等路径指向实验材料的目录布局: 使用本仓库内核不依赖这些路径,复现论文读数则需一并取得实验材料。

两处例外已随本仓库发布,原因是它们不涉及主任务集的答案:红队探针与判定产物 (probes/,探针由既有实例另行改写、不进主任务集),以及护栏开销读数(perf/)。 期限节点的覆盖与判定不设例外:它是登记表的派生物,直接随快照发布。

盲判材料包与标注结果不属于公开范围:其中包含臂身份映射、匿名码对照与已填标注, 等同于标准答案。导出脚本已将 experiment/blind*/ 列入无条件剔除清单。

9 许可与引用

代码与文档采用 CC BY-NC-SA 4.0(署名、非商业性使用、相同方式共享),全文见 LICENSE。 第三方组件见 THIRD_PARTY_NOTICES.md,其中运行时基座 DeepSeek Harness 采用 MIT 许可, 不受本仓库非商业条款约束。

判定机 code/vendor/signature.py 为只读的共享冻结件(同一套注入签名判定在多个 任务形态间复用),来源与 sha256 见 code/vendor/PROVENANCE.md。

About

ACTE:对抗案件理论机 —— 诉讼代理智能体的姿态参数化与不可逆动作护栏(论文 F1 的算法本体:内核 + DSH 插件 + 评测 harness + 形式化规范)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages