Files
JX-BPOS/docs/活动模型.html
T
JCAI Main AgentandClaude Opus 5 7cd664af3a M0: 工作区骨架 + 五道门禁 + 环境自举
- pnpm workspaces / tsconfig 双工程(node · web)/ 路径别名(§11.1)
- eslint flat(§11.3 + §12.5 可机检项)/ dependency-cruiser 基线八条 + JCAI 增补(§11.4)
- tools/module-tiers.json + gen-depcruise-tiers.ts 生成 tier-order 逐层规则
- tools/api-report.mjs 契约快照只留契约面(ADR-005)
- docker-compose(PG16)+ db/init 四 schema;种子数据五岗位五员工冻结为常量
- docs/debt.md · docs/adr/ADR-005

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
2026-07-27 00:18:58 +08:00

992 lines
115 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>活动模型 · 活动侧规范</title>
<style>
:root{
--desk:#E8ECF2;--paper:#fff;
--ink:#1F2329;--ink-2:#3a4452;--ink-3:#646A73;--ink-4:#8F959E;
--brand:#3370FF;--brand-deep:#245BDB;--brand-wash:#F0F4FF;--brand-soft:#E1EAFF;
--ai:#8A5F1C;--ai-soft:#F7F0E0;--ai-line:#B07D2B;
--human:#173A63;--human-soft:#DCEAF7;--human-line:#2F6DB5;
--ok:#278717;--ok-soft:#E8F8E4;--warn:#DE7802;--warn-soft:#FFF4E5;--danger:#D83931;--danger-soft:#FEEAE9;
--line:#DEE0E3;--line-soft:#EBEDF0;--soft:#F5F6F7;
--mono:"SF Mono","JetBrains Mono","Menlo","Roboto Mono",ui-monospace,monospace;
--sans:"PingFang SC","Noto Sans SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{background:var(--desk);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.8;-webkit-font-smoothing:antialiased;padding:32px 20px 72px;overflow-wrap:anywhere}
.doc{width:1060px;max-width:100%;margin:0 auto;background:var(--paper);padding:52px 56px 64px;border-radius:4px;box-shadow:0 14px 44px -20px rgba(20,27,34,.32)}
.hd{border-bottom:2px solid var(--ink);padding-bottom:22px;margin-bottom:8px}
.hd .kicker{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.14em;color:var(--brand-deep);background:var(--brand-wash);border:1px solid var(--brand-soft);border-radius:999px;padding:3px 12px;margin-bottom:14px}
.hd h1{font-size:31px;font-weight:700;letter-spacing:-.01em;line-height:1.25;margin:0 0 6px}
.hd .sub{font-size:15px;color:var(--ink-3);margin:0}
.hd .meta{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:16px;font-family:var(--mono);font-size:11px;color:var(--ink-4)}
.hd .meta b{color:var(--ink-2);font-weight:600}
h2.ch{font-size:22px;font-weight:700;letter-spacing:-.005em;margin:52px 0 4px}
h2.ch .n{font-family:var(--mono);font-size:.8em;color:var(--brand-deep);margin-right:.55em}
.ch-rule{height:2px;background:linear-gradient(90deg,var(--brand),#7F3BF5);border-radius:2px;width:64px;margin:0 0 16px}
h3.h3{font-size:15.5px;font-weight:700;margin:28px 0 10px}
h3.h3 .n{font-family:var(--mono);font-size:.82em;color:var(--brand-deep);margin-right:.5em}
p{margin:0 0 12px}
p.lead{font-size:15px;color:var(--ink-2)}
b{font-weight:600}
ul.tight{margin:6px 0 14px;padding-left:20px}
ul.tight li{margin:4px 0}
.small{font-size:12px;color:var(--ink-3)}
code{font-family:var(--mono);font-size:.9em;background:var(--soft);border:1px solid var(--line-soft);border-radius:5px;padding:1px 6px}
.callout{border:1px solid;border-radius:10px;padding:12px 16px;margin:14px 0;font-size:13px;line-height:1.8}
.callout.brand{background:var(--brand-wash);border-color:var(--brand-soft);color:var(--brand-deep)}
.callout.ok{background:var(--ok-soft);border-color:#bfedb4;color:var(--ok)}
.callout.warn{background:var(--warn-soft);border-color:#fbd9a5;color:var(--warn)}
.callout.danger{background:var(--danger-soft);border-color:#f6c6c3;color:var(--danger)}
.tbl{margin:12px 0 18px;border:1px solid var(--line-soft);border-radius:10px;overflow:hidden}
table{border-collapse:collapse;width:100%;font-size:12.5px}
th{background:var(--soft);color:var(--ink-2);font-weight:700;text-align:left;padding:9px 12px;border-bottom:1.5px solid var(--line);white-space:nowrap}
td{padding:9px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}
tr:last-child td{border-bottom:0}
td.mono,.mono{font-family:var(--mono);font-size:11.5px}
.steps{counter-reset:st;margin:12px 0 18px;padding:0;list-style:none}
.steps li{position:relative;padding:10px 14px 10px 46px;border:1px solid var(--line-soft);border-radius:10px;margin-bottom:8px;background:#fff}
.steps li::before{counter-increment:st;content:counter(st);position:absolute;left:14px;top:12px;width:20px;height:20px;border-radius:999px;background:var(--brand);color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;display:grid;place-items:center}
.checks{margin:8px 0 16px;padding:0;list-style:none}
.checks li{position:relative;padding:6px 12px 6px 32px;border-bottom:1px dashed var(--line-soft);font-size:13px}
.checks li::before{content:"☐";position:absolute;left:8px;top:6px;color:var(--brand);font-size:14px}
.checks li:last-child{border-bottom:0}
.toc{border:1px solid var(--line-soft);border-radius:12px;padding:6px 0;margin:18px 0 4px}
.toc .row{display:grid;grid-template-columns:52px 1fr;gap:10px;align-items:baseline;padding:7px 16px;border-bottom:1px dashed var(--line-soft);font-size:13px}
.toc .row:last-child{border-bottom:0}
.toc .row .n{font-family:var(--mono);font-size:11px;color:var(--brand-deep);font-weight:700}
.toc .row .t b{font-weight:600}
.toc .row .t span{color:var(--ink-4);font-size:11.5px;margin-left:8px}
.fig{margin:18px 0 14px;border:1px solid #D8DEE6;padding:10px 14px 12px;background:#fff}
.fig .figcap{display:flex;justify-content:space-between;gap:10px;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;color:#6A7686;padding:2px 4px 10px}
.fig svg{display:block;width:100%;height:auto}
.ft{margin-top:56px;padding-top:16px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;font-family:var(--mono);font-size:10.5px;color:var(--ink-4)}
@media (max-width:900px){.doc{padding:32px 22px}}
@media print{body{background:#fff;padding:0}.doc{box-shadow:none;width:auto}}
</style>
</head>
<body>
<div class="doc">
<header class="hd">
<div class="kicker">JCAI · ACTIVITY MODEL</div>
<h1>活动模型:活动的定义与两范式运行</h1>
<p class="sub">本卷完整描述<b>活动侧</b>:一个活动 = 一个<b>完成一项任务的 Agent 机制</b>——怎么定义(契约与业务模型)、怎么运行(<b>loop / flow</b> 两范式)、怎么交互(卡与视图)、怎么沉淀(技能与记忆)、怎么交付(活动包与安装)。系统侧机制(事件投递、流程层、治理台、度量、终态裁定)见《操作系统》;本卷只写活动。</p>
<div class="meta">
<div>版本 <b>V2.0 · 活动规范</b></div>
<div>日期 <b>2026-07-25</b></div>
<div>读者 <b>活动开发者(Coding Agent)</b></div>
<div>关系 <b>关联《操作系统》</b></div>
</div>
</header>
<div class="toc">
<div class="row"><span class="n">00</span><span class="t"><b>定位与边界</b><span>Agent 机制 · 小程序类比 · 四象限 · 供给与定义两清单</span></span></div>
<div class="row"><span class="n">01</span><span class="t"><b>契约:活动的接口</b><span>输入(data + message)· 输出口(必发 / 选择)· 终态五名 · 接口最小性</span></span></div>
<div class="row"><span class="n">02</span><span class="t"><b>范式:loop 与 flow</b><span>规范名 · 范式边界即调度权边界 · 选型判据 · 活动内容物</span></span></div>
<div class="row"><span class="n">03</span><span class="t"><b>loop · 业务模型</b><span>CMMN + DMN 运行结构 · 构件语义 · 三铁律 · DMN 四则 · 装载</span></span></div>
<div class="row"><span class="n">04</span><span class="t"><b>loop · 运行机制</b><span>CMMN 生命周期 · Enabled ≠ Active · 语义引擎 × Agent 回路 · 双向驱动 · 监听映射</span></span></div>
<div class="row"><span class="n">05</span><span class="t"><b>flow · 步序声明</b><span>四种步型 · 条件与上升规则 · 事件即步条件 · 失败声明给定</span></span></div>
<div class="row"><span class="n">06</span><span class="t"><b>人类工具的调用</b><span>四卡 · 调用时机 · 跨人卡与驳回重答 · 预检放行,落地收敛</span></span></div>
<div class="row"><span class="n">07</span><span class="t"><b>交互内容</b><span>视图流控(HTML 模版)· 卡内容 schema · 汇报组织 · web 零活动代码</span></span></div>
<div class="row"><span class="n">08</span><span class="t"><b>技能</b><span>封装格式 · 三层软硬 · 装配语义 · 载方法不载权力</span></span></div>
<div class="row"><span class="n">09</span><span class="t"><b>记忆与迭代</b><span>任务记忆 · 活动记忆四层 · 蒸馏与装载 · 迭代业务模型即迭代行为</span></span></div>
<div class="row"><span class="n">10</span><span class="t"><b>Harness · 验收分级 · 工作区</b><span>预算熔断 · 停滞检测 · 控制三语义 · L1–L5 · 任务级草稿层</span></span></div>
<div class="row"><span class="n">11</span><span class="t"><b>活动包与开发</b><span>内容物 · 工具三来处 · 编排先行与依赖文件 · 安装两审 · 暗耦合禁令</span></span></div>
<div class="row"><span class="n">12</span><span class="t"><b>合规判据</b><span>通用 17 条 · loop 8 条 · flow 6 条</span></span></div>
</div>
<!-- ========== 00 ========== -->
<h2 class="ch"><span class="n">00</span>定位与边界</h2>
<div class="ch-rule"></div>
<p class="lead"><b>一个活动 = 一个完成一项任务的 Agent 机制。</b>活动像小程序:基于系统内<b>活动基座</b>的六件接口(契约 · 交互 · 记忆 · 数据 · 工具调用契约 · LLM 调用)<b>在系统外独立开发</b>,经<b>活动库</b>的独立入口安装进系统,即可被流程层以声明引用;卸载同走此入口,系统内不写活动代码。活动是<b>开发态</b>,任务是<b>运行态</b>——活动被调起的一次运行,即落到恰一名负责人工作台上的一单任务。</p>
<div class="callout warn"><b>边界声明:活动不含触发器。</b>活动之上是流程层:流程包 = 调用接口 + 两种活动 + 审批点(通用)+ 网关(两种,并行 / 异或);<b>工作流 = 流程包的运行时实例,任务 = 活动的运行时实例</b>——包在库,实例在跑;触发器与流程包平级——触发器是流程层的系统级事件监听,经调用接口调起流程包、生成工作流。活动自<b>输入</b>始(由调用方给定)、至<b>终态</b>止(连同交付物交回调用方);工作流如何被触发、如何衔接,归《操作系统》。活动对调用方只暴露契约,对内完全自治。</div>
<div class="callout brand"><b>行为公式:行为 = 引擎(契约, 业务模型, 技能, 记忆)。</b>引擎与活动基座是<b>不动点</b>——通用、零业务、对所有活动同一份;一切业务行为差异,必须可归因于契约、业务模型、技能与记忆的版本差异。业务模型按范式取形:loop = CMMN + DMN 案例模型,flow = 步序声明。因此<b>迭代业务模型,就是迭代这个活动的行为</b>:改模型即改行为,零代码;模型增量可 diff、可回放、可放行、可回退(09)。</div>
<h3 class="h3"><span class="n">0.1</span>活动与系统的边界:四象限</h3>
<p>两条轴把全部职责分干净:<b>物理轴</b>(web 前端 / server 后端——过程在后端,呈现在 web)与<b>归属轴</b>(系统平台本体 / 活动外装件)。四个象限,边界各有判据:</p>
<div class="tbl"><table>
<tr><th style="width:110px"></th><th>系统(平台本体)</th><th>活动(外装件)</th></tr>
<tr><td><b>web · 前端</b></td><td>工作台与治理台的界面本体:五要素呈现、对话流时间线与卡片渲染、视图区容器、统一输入入口</td><td><b>无代码,只有内容投影</b>:后端推送的视图 HTML 与卡片内容,由系统容器渲染、净化,无脚本执行权</td></tr>
<tr><td><b>server · 后端</b></td><td>流程引擎(流转 · 审批点 · 网关)· 活动基座六件 · 统一事件标准与投递 · 调用层四类工具 · 基座存放 · 放行门</td><td><b>活动的内容物,跑在基座之上</b>:业务模型 · 交互内容(模版)· 技能清单 · Harness · 监听声明 · 纯工具 · 台账 schema · 过程工作区</td></tr>
</table></div>
<ul class="tight">
<li><b>物理线(横)</b>——跨线只有两种流量:下行的视图与卡片内容(HTML + schema 数据),上行的对话流输入回传;前端零过程状态。</li>
<li><b>归属线(纵)</b>——后端段是<b>活动基座接口</b>:活动只见六件,能力一律经调用契约注入;前端段是<b>容器边界</b>:系统渲染活动的内容,不装载活动的代码。</li>
<li><b>两线交汇 = 放行门</b>——草稿态(活动过程)到事实态(台账与外部系统)的唯一通道;放行前不落事实(10)。</li>
</ul>
<h3 class="h3"><span class="n">0.2</span>系统供给什么,活动定义什么</h3>
<div class="tbl"><table>
<tr><th style="width:50%">系统供给(模式在系统内,零开发)</th><th>活动定义(内容随活动,系统外开发)</th></tr>
<tr><td>活动基座六件:契约格式 · 交互结构(对话流 + 视图区容器)· 记忆系统 · 数据(「数据域.数据对象.字段」三级寻址 + 通用事务性接口,安装时依声明自生长)· 工具调用契约 · LLM 调用</td><td>契约内容(七件):输入(data + message)/ 输出口(必发 / 选择)/ 必交付物 / 验收判据(分级标注)/ 禁区 / 授权边界 / 资源声明(01)</td></tr>
<tr><td>人类工具四卡的模式与回传协议(06)</td><td>范式选择:loop 或 flow(02)</td></tr>
<tr><td>统一事件标准:信封 · 四类事件 · 归属解析 · 投递五诺(04 / 05)</td><td>业务模型:CMMN + DMN 或步序声明(03 / 05)</td></tr>
<tr><td>调用层四类:系统调用 · LLM 工具 · 人类工具 · 通道;白名单与授权;工具箱</td><td>交互内容:视图模版 · 卡内容 schema · 汇报组织(07)</td></tr>
<tr><td>放行门:草稿态 → 事实态的落地时机与协议</td><td>技能清单(基于工具,载方法不载权力)与监听声明(静态 + 动态,时限必配)(08 · 04 / 05)</td></tr>
<tr><td>流程层(流程包 / 工作流 · 审批点 · 网关 · 触发器)· 预算执行器(环外强制)</td><td>Harness 参数申报:停止条件 · 预算 · 时限 · 恢复——执行归系统(10)</td></tr>
<tr><td>基座六项存放 · 治理台九功能 · web 呈现容器</td><td>过程工作区(自设)· 纯工具 · 台账 schema(声明物化)· 蒸馏钩子(10 / 11 / 09)</td></tr>
</table></div>
<p class="small">本表与《操作系统》10.1 镜像同表——行数、行序、措辞一一对应,括号内章号各随本卷。</p>
<p><b>统一套执行契约</b>:上表左列对 loop 与 flow 完全一致——两范式的差异被压缩到唯一一处:<b>Agent 机制的范式与业务模型的形态</b>。对流程层与交互层而言,两种活动不可区分地是"一个节点、一单任务"。</p>
<div class="fig">
<div class="figcap"><span>FIG-01 · 活动与系统的边界 · 四象限</span><span>物理线(web / server) × 归属线(系统 / 活动) · 交汇 = 放行门</span></div>
<svg viewBox="0 0 1000 430" role="img" aria-label="四象限:web×系统为界面本体,web×活动为内容投影无代码,server×系统为流程引擎与活动基座等机制,server×活动为跑在基座上的活动内容物;两线交汇处是放行门">
<style>
.av-t{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10.5px;font-weight:600;fill:#1F2933}
.av-c{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10px;fill:#3A4452}
.av-m{font-family:'SF Mono',Menlo,monospace;font-size:10px;font-weight:600;letter-spacing:.12em;fill:#6A7686}
.av-s{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:8.5px;fill:#6A7686}
</style>
<text x="315" y="40" text-anchor="middle" class="av-m" fill="#46586A">系统 · 平台本体</text>
<text x="741" y="40" text-anchor="middle" class="av-m" fill="#8A5F1C">活动 · 外装件</text>
<text x="70" y="120" text-anchor="middle" class="av-m" fill="#173A63">web</text>
<text x="70" y="136" text-anchor="middle" class="av-s">前端 · 呈现</text>
<text x="70" y="280" text-anchor="middle" class="av-m" fill="#173A63">server</text>
<text x="70" y="296" text-anchor="middle" class="av-s">后端 · 过程</text>
<rect x="110" y="56" width="410" height="140" rx="10" fill="#F7F9FB" stroke="#9AA7B6" stroke-width="1.3"/>
<text x="126" y="82" class="av-t" fill="#173A63">工作台 · 治理台(界面本体)</text>
<text x="126" y="104" class="av-s">五要素呈现 · 对话流时间线与卡片渲染</text>
<text x="126" y="120" class="av-s">视图区容器 · 统一输入入口</text>
<text x="126" y="142" class="av-s" font-weight="600" fill="#3A4452">零活动代码 · 零过程状态</text>
<rect x="536" y="56" width="410" height="140" rx="10" fill="#FCFAF3" stroke="#B07D2B" stroke-width="1.3"/>
<text x="552" y="82" class="av-t" fill="#8A5F1C">内容投影(无代码)</text>
<text x="552" y="104" class="av-s">后端推送的视图 HTML 与卡片内容</text>
<text x="552" y="120" class="av-s">容器渲染 · 净化 · 无脚本执行权</text>
<text x="552" y="142" class="av-s" font-weight="600" fill="#8A5F1C">活动到达前端的是投影,不是程序</text>
<rect x="110" y="212" width="410" height="150" rx="10" fill="#FFFFFF" stroke="#46586A" stroke-width="1.5"/>
<text x="126" y="238" class="av-t" fill="#46586A">系统机制(模式在系统内)</text>
<text x="126" y="260" class="av-s">流程引擎(流转 · 审批点 · 网关)· 活动基座六件</text>
<text x="126" y="276" class="av-s">统一事件标准与投递 · 调用层四类 · 基座存放</text>
<text x="126" y="298" class="av-s" font-weight="600" fill="#3A4452">放行门:草稿态 → 事实态的唯一通道</text>
<rect x="536" y="212" width="410" height="150" rx="10" fill="#FFF" stroke="#B07D2B" stroke-width="1.5"/>
<text x="552" y="238" class="av-t" fill="#8A5F1C">活动的内容物(跑在基座之上)</text>
<text x="552" y="260" class="av-s">业务模型(CMMN + DMN / 步序声明)· 交互内容(模版)</text>
<text x="552" y="276" class="av-s">技能清单 · Harness · 监听声明 · 纯工具 · 台账 schema</text>
<text x="552" y="298" class="av-s" font-weight="600" fill="#8A5F1C">能力一律经调用契约注入 —— 越权在结构上不可能</text>
<line x1="528" y1="50" x2="528" y2="368" stroke="#98A2B0" stroke-width="1.2" stroke-dasharray="6 4"/>
<line x1="104" y1="204" x2="952" y2="204" stroke="#98A2B0" stroke-width="1.2" stroke-dasharray="6 4"/>
<circle cx="528" cy="204" r="6" fill="#2F6DB5"/>
<text x="542" y="200" class="av-s" font-weight="600" fill="#173A63">放行门(两线交汇)</text>
<text x="36" y="382" class="av-s">物理线(横):跨线只有下行视图与卡片、上行对话流输入</text>
<text x="520" y="382" class="av-s">归属线(纵):后端 = 基座接口 · 前端 = 容器边界</text>
<rect x="36" y="392" width="928" height="30" rx="6" fill="#0F1420"/>
<text x="500" y="411" text-anchor="middle" font-family="'SF Mono',Menlo,monospace" font-size="10.5" fill="#DCE3F0">过程在后端,呈现在 web · 内容归活动,笼子归系统 · 放行是草稿态与事实态之间的门</text>
</svg>
</div>
<!-- ========== 01 ========== -->
<h2 class="ch"><span class="n">01</span>契约:活动的接口</h2>
<div class="ch-rule"></div>
<p class="lead">契约是活动对调用方暴露的<b>全部真相</b>,也是对 Agent 机制的全部授权;两种范式同一契约格式——这是「统一套执行契约」的锚点。契约必须在活动启动前冻结;运行中不得变更——变更即新版本。</p>
<div class="tbl"><table>
<tr><th style="width:120px">契约构成</th><th>内容</th><th style="width:230px">要求</th></tr>
<tr><td><b>输入口</b></td><td>单一入口:<b>data</b>(结构化载荷,按 schema)+ <b>message</b>(委托消息,自然语言)(1.1)</td><td>data 必须机器可校验,缺项不得启动;message 可为空</td></tr>
<tr><td><b>输出口</b></td><td>必发口(完成必发,可多口 → 并行)+ 选择组(恰发一口 → 分支),每口各带交付物 schema(1.2)</td><td>调用方仅凭口名与 schema 即可衔接下游</td></tr>
<tr><td><b>必交付物</b></td><td>放行前必须齐备的产出清单——放行卡「成果清单」的来源(06)</td><td>缺一不得提交放行</td></tr>
<tr><td><b>禁区</b></td><td>不得做什么的负面清单</td><td>应短而硬;负面清单优于正面枚举</td></tr>
<tr><td><b>验收判据</b></td><td>什么算合格,逐条标注验证等级 L1–L5(10);loop 可引用业务模型的完成判据与 DMN 规则(03)</td><td>两个陌生人对同一产出应给出相同判定</td></tr>
<tr><td><b>授权边界</b></td><td>AI 可自决的范围(金额、折扣、措辞等);预授权动作清单;调人预算(打扰上限)</td><td>超出边界必须调「人·决策」;预授权必须显式列举</td></tr>
<tr><td><b>资源声明</b></td><td>工具调用契约引用、技能引用、业务模型引用、角色,与预算上限(步数 / token / 时长 / 调人次数)</td><td>装配不齐不得启动;预算触顶即熔断(10)</td></tr>
</table></div>
<h3 class="h3"><span class="n">1.1</span>输入:单一入口,data + message</h3>
<p>活动必须只声明<b>一个输入口</b>;一单任务恰接收一份输入。输入由两部分构成:</p>
<ul class="tight">
<li><b>data(结构化载荷)</b>——按契约 input schema 校验,缺项不得启动。这是流程层能静态检查的拼接面:上游输出口的 schema 对得上,活动就接得住。</li>
<li><b>message(委托消息)</b>——调用方附带的自然语言说明:意图、背景、特殊要求;可为空。message 计入 Agent 机制的初始观察、全程留痕;它往往承载「这一单的特殊性」。</li>
</ul>
<div class="callout warn"><b>message 是输入,不是改约:</b>message 不得携带扩大授权的效力——与契约冲突时,契约优先。AI 依 message 调整的只能是路径与语境;禁区、授权边界与验收判据不因 message 而变。</div>
<p class="small">设计依据:schema 承载可结构化的确定,message 承载不可结构化的语境;两者合一,活动才既可静态编排、又不失临场委托——如同工单之于表格与备注栏。</p>
<h3 class="h3"><span class="n">1.2</span>输出口:必发(并行)与选择(分支)</h3>
<p>活动的业务产出经<b>输出口</b>交回调用方。契约声明一组输出口,每口:口名 + 交付物 schema + 发射语义。发射语义两类:</p>
<div class="tbl"><table>
<tr><th style="width:150px">发射语义</th><th>规则</th><th style="width:230px">流程层用途</th></tr>
<tr><td><b>必发口(AND)</b></td><td>每次「放行完成」必发;可声明多口,同时发射,各携各的载荷</td><td>并行衔接:多个下游各取所需</td></tr>
<tr><td><b>选择组(XOR)</b></td><td>组内恰发一口;选择由环内决断,<b>在放行卡上随放行一并确认</b>(06)</td><td>分支路由:调用方据口名分流</td></tr>
</table></div>
<p>完成时的发射集合 = 全部必发口 + 每个选择组各一口;每口载荷各过其 schema 与验收判据;<b>发射发生在放行通过且落地收敛之后</b>(06)。非完成终态(受阻 / 熔断 / 耗尽 / 被终止)不发任何业务口,走<b>异常出口</b>(阻因 + 残局快照)。</p>
<div class="callout danger"><b>业务分支走输出口,运行异常走终态。</b>「审核拒绝」是业务结局,必须建模为选择组的一口、随放行发射——不得用「受阻」等异常终态编码业务分支;反之,预算耗尽不是业务结局,不得伪装成输出口。终态描述「这次运行怎么收场」,输出口描述「产出流向哪里」。</div>
<h3 class="h3"><span class="n">1.3</span>终态</h3>
<p>终态是<b>契约层的收场名</b>,封闭<b>五名</b>——终态由系统裁定,权威名录见《操作系统》4.3;范式内的状态映射见 04(loop)与 05(flow):</p>
<div class="tbl"><table>
<tr><th style="width:130px">终态</th><th>语义</th><th style="width:270px">交回调用方的载荷</th></tr>
<tr><td><b>放行完成</b></td><td>唯一成功终态:放行通过<b>且落地收敛</b>,输出口已发射(06)</td><td>发射集合(必发口 + 选中口)+ 各口载荷 + 放行记录</td></tr>
<tr><td><b>受阻待人</b></td><td>无法推进(监听时限走完 / 断点无解),封卷待治理处置:改派后恢复 / 重开新实例 / 终止</td><td>阻因 + 当前残局快照</td></tr>
<tr><td><b>停滞熔断</b></td><td>连续无进展,Harness 强制止损;不可恢复</td><td>停滞证据 + 残局快照</td></tr>
<tr><td><b>预算耗尽</b></td><td>任一预算上限触顶;不可恢复</td><td>消耗清单 + 残局快照</td></tr>
<tr><td><b>被终止</b></td><td>控制事件 · 终止(负责人 / 治理台;含工作流终止的级联)</td><td>终止原因 + 残局快照</td></tr>
</table></div>
<p class="small">不是终态:<b>驳回</b>(重做 / 迭代)是放行卡的环内回转——携意见回环,任务继续,不出活动;<b>叫停</b>是控制事件(10)——转挂起待纠偏,处置后恢复,或由负责人终止(→ 被终止),叫停必留痕为最重档纠正信号;<b>落地受阻</b>是运行态——落地失败卡(执行卡的系统预置形态)处置后仍收敛于本名录(06)。</p>
<div class="callout brand"><b>接口最小性:</b>调用方与活动之间只有三样东西过界——启动时的<b>输入(data + message)</b>、结束时的<b>终态与输出口载荷</b>、运行中的<b>状态投影(只读)</b>。调用方不得干预环内路径;环不得感知流程拓扑。活动之于流程包,如函数定义之于调用点;任务之于工作流,如一次调用之于一次执行。</div>
<!-- ========== 02 ========== -->
<h2 class="ch"><span class="n">02</span>范式:loop 与 flow</h2>
<div class="ch-rule"></div>
<p class="lead">Agent 机制的范式,规范名两种:<b>loop / flow</b>。范式回答一个问题——<b>这件事的下一步由谁定</b>:</p>
<div class="tbl"><table>
<tr><th style="width:80px">范式</th><th style="width:130px">活动</th><th>机制</th><th style="width:220px">业务模型</th><th style="width:80px">调度权</th></tr>
<tr><td><b>loop</b></td><td>案例活动(Case)</td><td><b>临场演绎</b>:在业务模型给出的结构上感知、决断、行动,循环推进直到判据收敛</td><td>CMMN + DMN 案例模型:事理、前提、判据与可计算判断(03)</td><td><b>AI</b></td></tr>
<tr><td><b>flow</b></td><td>标准活动</td><td><b>照谱执行</b>:按声明步序确定推进,零临场调度</td><td>步序声明(05)</td><td><b>系统</b></td></tr>
</table></div>
<div class="callout brand"><b>范式的边界即调度权的边界。</b>一个活动选 flow 还是 loop,本质就是把这件事的调度权交给系统还是交给 AI——确定交系统,临场交 AI,落地交人;无论谁调度,放行权都不移交。放行、留痕、记忆、事件、卡片协议对两范式完全一致(00)。</div>
<h3 class="h3"><span class="n">2.1</span>选型判据</h3>
<div class="tbl"><table>
<tr><th style="width:90px">选</th><th>判据</th><th>典型</th></tr>
<tr><td><b>flow</b></td><td>路径可枚举且稳定:全部步骤能写成序列,条件能写成任务数据上的确定性谓词,无临场裁量点</td><td>对账、开票、资料归集、例行巡检</td></tr>
<tr><td><b>loop</b></td><td>路径须临场:判断、协作、创造类工作,对手方与信息不确定,每单走法不同——但事理可建模(前提、判据、量的推导)</td><td>报价谈判、异常处理、方案撰写、客诉处置</td></tr>
</table></div>
<ul class="tight">
<li><b>两种都是合法终身形态</b>——不设"必然结晶"论:标准活动不是案例活动的归宿,案例活动也不是标准活动的过渡;选哪种由事的性质决定,不由方法论偏好决定。</li>
<li><b>一处装不下就用 loop</b>——flow 里只要出现一处"由 AI 决定怎么办",这个活动就不该是 flow(05 的上升规则);反之,loop 中反复走出的确定子序列以技能的结晶片段脚本承载(08),不必改范式。</li>
<li><b>改选范式即新版本</b>——范式随活动包版本声明;改范式经活动库安装两审(11),在途任务按其启动版本跑完。</li>
</ul>
<p class="small">术语约定:flow 是活动内部的步序范式(方法级,中途无责任交接),与流程层的「工作流」(流程包的运行时实例,责任级编排:节点有负责人、有审批点)不同层。本卷以中文「流程包 / 工作流」专指流程层,以英文小写 loop / flow 专指活动范式。</p>
<h3 class="h3"><span class="n">2.2</span>活动的内容物</h3>
<p>无论哪种范式,活动的内容物同一清单——全部随活动定义与交付,跑在基座之上:</p>
<ul class="tight">
<li><b>业务模型</b>——这件事的结构,按范式取形(上表);业务模型是活动记忆优化的对象——迭代业务模型,就是迭代这个活动的行为(09)。</li>
<li><b>交互内容</b>——何时调人、卡里给什么、视图区呈现什么、汇报怎么组织(07)。</li>
<li><b>技能清单</b>——基于工具、在活动内定义的方法经验;载方法,不载权力(08)。</li>
<li><b>Harness</b>——停止条件、预算与熔断、监听时限、中断与恢复(10);Harness 在活动内,每个活动的确定性边界随活动交付,不依赖外部编排兜底。</li>
<li><b>过程工作区(可选)</b>——台账的任务级草稿层,组织由活动自设,不绑范式;写即持久,放行前不落事实(10)。</li>
</ul>
<!-- ========== 03 ========== -->
<h2 class="ch"><span class="n">03</span>loop · 业务模型:CMMN + DMN</h2>
<div class="ch-rule"></div>
<p class="lead">技能承载「怎么做」(方法),业务模型承载「这件事是什么、什么决定什么」(事理)。loop 活动的业务模型是<b>案例模型</b>,格式为 <b>CMMN</b>(配套 <b>DMN</b> 承载量与推导)——选共识标准而非私有格式:LLM 天然读写,XML 可校验、可 diff、可版本。案例模型是<b>运行时的权威结构</b>:装载即结构——阶段怎么展开、前提何时满足、计划项处于何态,由语义引擎按 CMMN 规范对着这份 XML 忠实推进(04);AI 坐案例工作者的座位——感知、规划、汇报按任务数据 / 阶段 / 里程碑组织;<b>人给这个座位建的模型,AI 继承</b>。</p>
<h3 class="h3"><span class="n">3.1</span>构件语义</h3>
<div class="tbl"><table>
<tr><th style="width:200px">CMMN 构件</th><th>在本卷中承载</th></tr>
<tr><td><b>CaseFile / Items</b></td><td><b>任务数据</b>:自持台账与共享对象的映射——事的数据中心;运行中的写入落<b>任务级草稿层</b>(读己之写),放行时合并正式版;正式版写入(系统写与放行写)即<b>数据事件</b>,按统一事件标准抛回活动(04)。</td></tr>
<tr><td><b>Stage</b></td><td><b>阶段</b>:生命周期的分组结构(展开即 create 子项)与叙事骨架;多 onPart 汇合即回齐(04)。</td></tr>
<tr><td><b>Task + Discretionary</b></td><td><b>合法动作空间</b>:计划项对应工具 / 技能 / 调人;非裁量项由前提推到 Enabled,裁量项从 planning table 由 Agent 临场规划入场;<b>触达世界与关键交付者必须 manualActivationRule = true</b>(04)。</td></tr>
<tr><td><b>Milestone</b></td><td><b>里程碑</b>:业务阶段的命名达成——occur 即迁移事件留痕;既是视图与汇报的投影定义源(07),也可被其他前提监听、参与前推(04)。</td></tr>
<tr><td><b>EntryCriterion(前提)</b></td><td><b>前提与因果</b>:「先什么后什么」——onPart + ifPart,由语义引擎按规范求值:满足即 Enabled;语义性前提交 Agent 评估(04);L2 机检规则的来源之一(10)。</td></tr>
<tr><td><b>ExitCriterion(完成判据)</b></td><td>计划项的 complete / exit 条件;接契约验收判据与放行卡的成果清单。</td></tr>
<tr><td><b>Role</b></td><td>岗位绑定:调人时卡投递到哪个工位。</td></tr>
<tr><td><b>DecisionTask → DMN</b></td><td><b>量与推导</b>:决策需求图(DRD)即依赖图,决策表(FEEL)承载可计算推导与规则(3.3)。</td></tr>
</table></div>
<p><b>双表示,同版本</b>:<b>CMMN XML</b> 是机器面——语义引擎以它为运行结构:推进生命周期、求值前提、维护 Enabled 集;<b>案例说明书</b>是叙事面——Agent 读它理解业务、组织汇报、向人解释,渐进披露(常驻梗概,按事下钻)。两面同版本发布,不允许分叉:说明书是 XML 的叙事投影,迭代时一起放行。</p>
<h3 class="h3"><span class="n">3.2</span>三铁律与约束力收缩</h3>
<ul class="tight">
<li><b>语义归引擎,裁量归 Agent,强制归门(必须)</b>——CMMN 语义由引擎忠实执行:前提满足即 Enabled,这是规范而非越权;manual 项的启动永远归 Agent;强制力只在验收分级与放行处生效(门 = 放行卡与判据,06 / 10)。引擎只推规范、不代裁量、不代把关。</li>
<li><b>载事理,不载权力(必须)</b>——白名单、授权边界与禁区在契约;案例模型不得扩大它们。</li>
<li><b>叙事框架(应)</b>——AI 的规划与汇报、视图区的呈现结构,应以案例模型的阶段与里程碑组织(07)。</li>
</ul>
<p><b>约束力收缩机制</b>:纠正与驳回的理由,蒸馏入<b>活动记忆 · 裁决层</b>(09),归纳为候选前提条件 / 完成判据 / DMN 规则 → 回放检验(历史成功单皆满足、失败单恰被拦)→ 人放行 → 入案例模型新版本 → 从此由 L2 机检承担。<b>每挨一次纠正,约束就有机会从人的判断收缩为机器的校验</b>——纠正的减少因此有了因果机制,不只是统计现象。</p>
<h3 class="h3"><span class="n">3.3</span>DMN:判断的确定性化</h3>
<p>DMN 承担一件事:<b>把装得下的判断从 LLM 手里拿走</b>。DRD 声明「定什么需要知道什么」,决策表(FEEL)声明「知道了怎么定」——两者合起来,判断成为确定性求值:</p>
<ul class="tight">
<li><b>能算的不问 LLM(必须)</b>——输入齐备的决策表由语义引擎确定性求值;同输入必同结论,零方差、零 token。</li>
<li><b>DRD 即缺口演绎(应)</b>——输入不齐时,DRD 指出缺什么:可查的调工具、可算的先算上游决策、只有人知道的调人、在世界侧的立监听——双向驱动的后拉遍历(04),主要就是走 DRD。</li>
<li><b>决策留痕(必须)</b>——每次求值留痕:输入快照 + 决策表版本 + 命中规则行;决策可回放、可归因。</li>
<li><b>结论不可静默覆写(必须)</b>——DMN 结论对 Agent 是约束性输入;认为结论不合理时只有两条路:超出授权的走「人·决策」,规则本身有病的提迭代提案(09)——不允许 LLM 悄悄绕开确定性结论。</li>
</ul>
<div class="callout brand"><b>智能的分工线:</b>DMN 装得下的,是已经被组织想清楚的判断——确定性执行;LLM 负责的,是 DMN 还装不下的判断——临场推理。<b>迭代的方向是把后者不断搬进前者</b>:每一条从纠正中蒸馏出的决策规则,都是一块从「临场」搬进「确定」的判断。</div>
<h3 class="h3"><span class="n">3.4</span>装载:一单任务开始时引擎读什么</h3>
<div class="tbl"><table>
<tr><th style="width:170px">装载件</th><th style="width:180px">来源</th><th>进哪里</th></tr>
<tr><td><b>契约</b></td><td>活动包(冻结)</td><td>目标与授权:输入 / 输出口 / 禁区 / 验收判据 / 预算</td></tr>
<tr><td><b>案例模型 · XML</b></td><td>活动库(版本)</td><td><b>语义引擎</b>:运行结构本体——生命周期 · 前提 · 判据 · 里程碑</td></tr>
<tr><td><b>案例模型 · 说明书</b></td><td>活动库(同版本)</td><td><b>Agent 上下文</b>:叙事面,渐进披露</td></tr>
<tr><td><b>DMN(DRD + 决策表)</b></td><td>活动库(版本)</td><td>语义引擎(确定性求值)+ Agent(依赖演绎的参照)</td></tr>
<tr><td><b>技能目录</b></td><td>活动库(技能引用)</td><td>Agent:适用描述索引,按事装配正文与脚本(08)</td></tr>
<tr><td><b>活动记忆(选摘)</b></td><td>基座 · 记忆库</td><td><b>Agent 上下文</b>:按模型定位选摘持久事实,渐进披露(09);语义引擎不读</td></tr>
<tr><td><b>任务数据映射</b></td><td>契约数据声明</td><td>CaseFileItem ↔ 台账与共享对象——模型的数据脚落到真实存储</td></tr>
</table></div>
<p class="small">版本全部记入信封——从此每一步的行为可完全归因(09 行为可归因公式)。</p>
<!-- ========== 04 ========== -->
<h2 class="ch"><span class="n">04</span>loop · 运行机制</h2>
<div class="ch-rule"></div>
<p class="lead">loop 的运行 = <b>CMMN 语义引擎(下层,零 LLM)× Agent 回路(上层,临场裁量)</b>。状态的权威是 CMMN 规范的标准生命周期:活动不定义状态,模型不发明状态——装载哪个模型,状态空间就是规范为那类计划项规定的那一副;引擎按规范推进,守卫(时限 / 预算 / 预授权 / 监听)仅可参数化。</p>
<h3 class="h3"><span class="n">4.1</span>生命周期:CMMN 标准</h3>
<div class="tbl"><table>
<tr><th style="width:150px">案计划(整案)五态</th><th>语义</th></tr>
<tr><td><b>Active</b></td><td>运行中:创建即入,整案唯一的做功状态。</td></tr>
<tr><td><b>Completed</b></td><td>完成:必要计划项全部收敛,<b>放行通过且落地收敛</b>——判据全绿不等于完成(06 / 10)。</td></tr>
<tr><td><b>Suspended</b></td><td>挂起:受阻待组织处置(时限走完 / 断点无解),或叫停后待纠偏;可恢复——恢复由事件驱动(人事件 / 数据事件 / 时间事件 / 控制事件)。</td></tr>
<tr><td><b>Terminated</b></td><td>终止:停滞熔断 / 预算耗尽 / 被终止(控制事件 · 终止,含工作流级联);携原因码交回调用方,不可恢复。</td></tr>
<tr><td><b>Failed</b></td><td>失败:运行异常;由人恢复重跑或转终止。</td></tr>
</table></div>
<div class="tbl"><table>
<tr><th style="width:150px">计划项八态</th><th>语义</th></tr>
<tr><td><b>Available</b></td><td>已随阶段入场,entry 前提未满足。</td></tr>
<tr><td><b>Enabled</b></td><td>前提满足、manualActivationRule = true:<b>可启动而未启动</b>——引擎推进的终点,Agent 裁量的起点。</td></tr>
<tr><td><b>Disabled</b></td><td>Agent 规划裁量弃用(此单不走这条);可 reenable。</td></tr>
<tr><td><b>Active</b></td><td>执行中:Agent 启动(manualStart),或纯机内项自动启动(start)。</td></tr>
<tr><td><b>Suspended</b></td><td>挂起(Harness / 叫停 / 随父级);恢复由事件驱动。</td></tr>
<tr><td><b>Failed</b></td><td>执行异常;是否重跑由人裁定。</td></tr>
<tr><td><b>Completed</b></td><td>完成:exit 判据满足;关键交付项的完成经验收分级与放行(10 / 06)。</td></tr>
<tr><td><b>Terminated</b></td><td>终止:exit 前提触发退出,或随父级级联终止。</td></tr>
</table></div>
<p class="small">里程碑与事件监听器只有一条主迁移:<b>Available →(occur)→ Completed</b>——前提满足 / 件到 / 到点即达成留痕;里程碑达成本身是迁移事件,可被其他前提监听——里程碑因此参与前推(4.3),不只是投影。契约终态(01)的映射:放行完成 = 案计划 Completed(放行通过且落地收敛);受阻待人 = Suspended + 阻因,封卷待治理处置(改派后恢复 / 重开新实例 / 终止);停滞熔断 · 预算耗尽 = Terminated + 原因码;被终止 = Terminated(控制事件 · 终止,含工作流级联);Failed 是规范补齐的运行异常格,与业务终态分开;驳回是迁移不是状态——相关计划项重新入场(repetitionRule 新实例),记为纠正信号。</p>
<ul class="tight">
<li><b>原理一 · Enabled ≠ Active(必须)</b>——「就绪 ≠ 执行」的 CMMN 原生形:引擎按规范推进到 <b>Enabled</b>(可启动)为止;凡触达世界或产出关键交付的计划项必须 <b>manualActivationRule = true</b>,进入 <b>Active</b>(执行)永远出自 Agent 的裁量启动(manualStart,留痕);automatic 仅限纯机内项(只读 / 纯计算)。规范推进不是执行,启动才是执行。</li>
<li><b>语义忠实(必须)</b>——生命周期与前提语义严格循 CMMN 规范;引擎不得私改迁移拓扑,活动与模型不得发明状态。</li>
<li><b>迁移必留痕(必须)</b>——每次生命周期迁移记入任务记忆:触发者 · 依据(前提 / 裁量 / 放行 / Harness)。</li>
<li><b>终局唯放行与 Harness(必须)</b>——案计划 Completed 必经放行卡;Terminated 只出自 Harness 与负责人;AI 不得产生终局迁移。</li>
</ul>
<div class="callout brand"><b>投影随语义走。</b>调用方与流程层看到的任务状态 = <b>案计划状态 + 原因码</b>的只读投影;业务进展(「报价已发」「等客户确认」)= 里程碑与任务数据的投影,由语义引擎按模型维护、经视图流控呈现(07)。并行支线即多个 Active 的阶段,各持各的计划项状态——聚合语义就是 CMMN 的父子级联本身,不另设规则。</div>
<h3 class="h3"><span class="n">4.2</span>语义引擎 × Agent 回路</h3>
<p>两层的耦合点是<b>任务数据与记忆</b>:任务数据是驱动耦合——Agent 写数据(落任务级草稿层,读己之写),引擎对本任务的前提求值读<b>任务视图 = 正式版 + 本任务草稿层</b>,不依赖事件;跨任务监听只认放行后的正式版事件;任务记忆是记录同轴——引擎的每次迁移与求值、Agent 的每个决断,同轴记入(09)。引擎向上发布 <b>Enabled 集</b>与红绿灯,Agent 向下启动计划项、写任务数据。每一步行动属于且仅属于三型之一:<b>调工具</b>(系统调用与 LLM 工具)、<b>调人</b>(四卡之一,06)、<b>立监听</b>(AI 不能调用世界,对世界只有两种合法姿势:触达它——动作,落在放行;等它——监听,4.4)。</p>
<div class="tbl"><table>
<tr><th style="width:150px">语义引擎(下层)</th><th>内容</th></tr>
<tr><td><b>生命周期推进</b></td><td>按 CMMN 规范维护案计划与全部计划项的迁移(4.1)——迁移即事件、事件必留痕;装载的 XML 就是运行结构,引擎不得私改。</td></tr>
<tr><td><b>前提求值</b></td><td>onPart 听任务数据变化(环内 = 任务视图的写入;环外回音 = 归属解析后的正式版数据事件)与计划项迁移,ifPart 对<b>任务视图</b>确定性求值:entry 满足 → Enabled;exit 满足 → 完成 / 退出。语义性 ifPart(不可机算的前提)标记「待裁量评估」,交上层。</td></tr>
<tr><td><b>DMN 求值</b></td><td>DecisionTask 与判据引用的决策表,输入齐备即确定性求值,结论与命中规则行留痕(03)。</td></tr>
<tr><td><b>判据预检</b></td><td>完成判据与验收判据的 L1 / L2 部分持续预检,红绿灯挂在 Enabled 集旁——Agent 与视图区随时可见「还差什么」。</td></tr>
<tr><td><b>Enabled 集发布</b></td><td>当下可启动的计划项(含 planning table 上可规划的裁量候选)· 目标缺口(未绿的判据 / 未达的里程碑)· 阶段位置;发布给 Agent 回路与视图流控(07)。</td></tr>
</table></div>
<ol class="steps">
<li><b>定位</b>——案计划走到哪里:Active 的阶段、Enabled 集、里程碑与判据的红绿灯。</li>
<li><b>择向</b>——判据后拉:目标还缺什么;前提前推:当下能启动什么;取交集(4.3)。</li>
<li><b>决断</b>——在交集中定夺:manualStart 某个 Enabled 项(启动留痕)/ 从 planning table 规划裁量项入场 / 评估语义性前提(评估留痕,可回放可归因)/ disable 弃用某项——或判定成果已齐,提交放行(06)。</li>
<li><b>行动</b>——执行 Active 的任务:装配技能、调工具、调人;一切能力经调用契约,触达外部世界的动作集中在放行时落地;预算由 Harness 扣减(10)。</li>
<li><b>写数据</b>——产出落为任务数据写入:<b>任务级草稿层</b>(读己之写,不抛事件,10),过程同轴入任务记忆;引擎对任务视图求值前提、按规范推进,回到定位。</li>
</ol>
<div class="fig">
<div class="figcap"><span>FIG-02 · loop 引擎总图</span><span>装载 → 语义引擎(Enabled 集) × Agent 回路 → 能力与门 → 放行落地 · 事件驱动</span></div>
<svg viewBox="0 0 1000 500" role="img" aria-label="loop 引擎总图:契约、案例模型、DMN、技能、活动记忆、任务数据映射装载入引擎;下层 CMMN 语义引擎零 LLM 按规范推进并发布 Enabled 集,上层 Agent 回路定位择向决断行动写数据;能力经调用契约,成果经放行卡落到事实态;统一事件驱动推进">
<style>
.al-t{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10.5px;font-weight:600;fill:#1F2933}
.al-c{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10px;fill:#3A4452}
.al-m{font-family:'SF Mono',Menlo,monospace;font-size:10px;font-weight:600;letter-spacing:.12em;fill:#6A7686}
.al-s{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:8.5px;fill:#6A7686}
</style>
<defs>
<marker id="alS" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#46586A"/></marker>
<marker id="alB" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#B07D2B"/></marker>
<marker id="alH" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#2F6DB5"/></marker>
</defs>
<text x="36" y="30" class="al-m">装载 · 版本入信封</text>
<rect x="36" y="40" width="180" height="272" rx="10" fill="#FFFFFF" stroke="#46586A" stroke-width="1.4"/>
<rect x="52" y="56" width="148" height="30" rx="7" fill="#DCEAF7" stroke="#2F6DB5" stroke-width="1.2"/>
<text x="126" y="75" text-anchor="middle" class="al-s" font-weight="600" fill="#173A63">契约(冻结)</text>
<rect x="52" y="94" width="148" height="38" rx="7" fill="#F7F0E0" stroke="#B07D2B" stroke-width="1.2"/>
<text x="126" y="109" text-anchor="middle" class="al-s" font-weight="600" fill="#8A5F1C">案例模型 CMMN</text>
<text x="126" y="124" text-anchor="middle" class="al-s">XML + 说明书(同版本)</text>
<rect x="52" y="140" width="148" height="30" rx="7" fill="#F7F0E0" stroke="#B07D2B" stroke-width="1.2"/>
<text x="126" y="159" text-anchor="middle" class="al-s" font-weight="600" fill="#8A5F1C">DMN(DRD + 决策表)</text>
<rect x="52" y="178" width="148" height="30" rx="7" fill="#F7F0E0" stroke="#B07D2B" stroke-width="1.2"/>
<text x="126" y="197" text-anchor="middle" class="al-s" font-weight="600" fill="#8A5F1C">技能目录</text>
<rect x="52" y="216" width="148" height="30" rx="7" fill="#F7F0E0" stroke="#B07D2B" stroke-width="1.2"/>
<text x="126" y="235" text-anchor="middle" class="al-s" font-weight="600" fill="#8A5F1C">活动记忆 · 选摘</text>
<rect x="52" y="254" width="148" height="30" rx="7" fill="#F5F6F7" stroke="#C6D0DA" stroke-width="1.2"/>
<text x="126" y="273" text-anchor="middle" class="al-s" font-weight="600" fill="#46586A">任务数据映射</text>
<text x="52" y="300" class="al-s">七件之要:结构进引擎,叙事进上下文</text>
<path d="M216,180 H250" fill="none" stroke="#46586A" stroke-width="1.5" marker-end="url(#alS)"/>
<rect x="254" y="40" width="420" height="170" rx="10" fill="#FCFAF3" stroke="#B07D2B" stroke-width="1.5"/>
<text x="270" y="64" class="al-t" fill="#8A5F1C">Agent 回路(上层)· 调度权归 AI</text>
<rect x="270" y="78" width="68" height="26" rx="13" fill="#F7F0E0" stroke="#B07D2B"/><text x="304" y="95" text-anchor="middle" class="al-s" font-weight="600" fill="#8A5F1C">定位</text>
<path d="M338,91 H348" stroke="#B07D2B" stroke-width="1.2" marker-end="url(#alB)"/>
<rect x="352" y="78" width="68" height="26" rx="13" fill="#F7F0E0" stroke="#B07D2B"/><text x="386" y="95" text-anchor="middle" class="al-s" font-weight="600" fill="#8A5F1C">择向</text>
<path d="M420,91 H430" stroke="#B07D2B" stroke-width="1.2" marker-end="url(#alB)"/>
<rect x="434" y="78" width="68" height="26" rx="13" fill="#F7F0E0" stroke="#B07D2B"/><text x="468" y="95" text-anchor="middle" class="al-s" font-weight="600" fill="#8A5F1C">决断</text>
<path d="M502,91 H512" stroke="#B07D2B" stroke-width="1.2" marker-end="url(#alB)"/>
<rect x="516" y="78" width="68" height="26" rx="13" fill="#F7F0E0" stroke="#B07D2B"/><text x="550" y="95" text-anchor="middle" class="al-s" font-weight="600" fill="#8A5F1C">行动</text>
<path d="M584,91 H594" stroke="#B07D2B" stroke-width="1.2" marker-end="url(#alB)"/>
<rect x="598" y="78" width="60" height="26" rx="13" fill="#F7F0E0" stroke="#B07D2B"/><text x="628" y="95" text-anchor="middle" class="al-s" font-weight="600" fill="#8A5F1C">写数据</text>
<text x="270" y="132" class="al-s">manualStart · 语义前提评估 · 技能装配 · 调人 / 立监听 —— 决断留痕</text>
<text x="270" y="152" class="al-s">上下文:说明书 + 活动记忆选摘 + 任务记忆窗口</text>
<text x="270" y="178" class="al-s" font-weight="600" fill="#8A5F1C">循环推进,直到判据收敛 → 提交放行</text>
<path d="M330,258 V214" fill="none" stroke="#46586A" stroke-width="1.5" marker-end="url(#alS)"/>
<text x="344" y="240" class="al-s">发布 Enabled 集 + 红绿灯</text>
<path d="M560,214 V258" fill="none" stroke="#B07D2B" stroke-width="1.5" marker-end="url(#alB)"/>
<text x="574" y="240" class="al-s" fill="#8A5F1C">manualStart · 写任务数据</text>
<rect x="254" y="258" width="420" height="120" rx="10" fill="#FFFFFF" stroke="#161B22" stroke-width="1.5"/>
<text x="270" y="282" class="al-t">CMMN 语义引擎(下层)· 零 LLM</text>
<text x="270" y="304" class="al-s">生命周期推进 · 前提求值 · DMN 求值 · 判据预检</text>
<text x="270" y="322" class="al-s">迁移即事件 · 求值留痕 —— 循规范,不代裁量、不代放行</text>
<text x="270" y="344" class="al-s" font-weight="600" fill="#3A4452">数据 / 时间事件驱动推进;Enabled 集持续发布</text>
<text x="712" y="30" class="al-m">能力与门(经调用契约)</text>
<rect x="712" y="40" width="252" height="44" rx="8" fill="#F5F6F7" stroke="#98A2B0" stroke-width="1.2"/>
<text x="726" y="58" class="al-s" font-weight="600" fill="#3A4452">工具(调用契约)</text>
<text x="726" y="74" class="al-s">系统调用 · LLM 工具 · 通道出站</text>
<rect x="712" y="94" width="252" height="44" rx="8" fill="#DCEAF7" stroke="#2F6DB5" stroke-width="1.3"/>
<text x="726" y="112" class="al-s" font-weight="600" fill="#173A63">人类工具四卡</text>
<text x="726" y="128" class="al-s">决策 · 执行 · 补全 · 放行(06)</text>
<rect x="712" y="148" width="252" height="44" rx="8" fill="#F5F6F7" stroke="#98A2B0" stroke-width="1.2"/>
<text x="726" y="166" class="al-s" font-weight="600" fill="#3A4452">监听登记</text>
<text x="726" y="182" class="al-s">静态(模型)+ 动态(临场)· 时限必配</text>
<path d="M674,120 H708" fill="none" stroke="#B07D2B" stroke-width="1.5" marker-end="url(#alB)"/>
<path d="M838,192 V236" fill="none" stroke="#2F6DB5" stroke-width="1.5" marker-end="url(#alH)"/>
<rect x="712" y="240" width="252" height="52" rx="8" fill="#DCEAF7" stroke="#2F6DB5" stroke-width="1.5"/>
<text x="726" y="260" class="al-s" font-weight="600" fill="#173A63">放行卡 —— 成果清单 + 放行选择表</text>
<text x="726" y="278" class="al-s" fill="#173A63">通过 / 驳回重做 / 驳回迭代(人)</text>
<path d="M838,292 V316" fill="none" stroke="#2F6DB5" stroke-width="1.5" marker-end="url(#alH)"/>
<rect x="712" y="320" width="252" height="52" rx="8" fill="#E8F8E4" stroke="#278717" stroke-width="1.4"/>
<text x="726" y="340" class="al-s" font-weight="600" fill="#278717">事实态:台账 · 外部系统</text>
<text x="726" y="358" class="al-s" fill="#2F5C45">放行前不落事实 —— 动作集中在放行时</text>
<rect x="36" y="340" width="180" height="56" rx="8" fill="#FAFBFC" stroke="#98A2B0" stroke-width="1.1" stroke-dasharray="5 3"/>
<text x="52" y="360" class="al-s" font-weight="600" fill="#46586A">统一事件(系统投递)</text>
<text x="52" y="378" class="al-s">数据 / 时间 / 人 / 控制</text>
<path d="M216,368 H248" fill="none" stroke="#46586A" stroke-width="1.4" marker-end="url(#alS)"/>
<text x="36" y="430" class="al-s">两层耦合:任务数据 = 驱动耦合 · 任务记忆 = 记录同轴;Enabled ≠ Active —— 规范推进不是执行,启动才是执行</text>
<rect x="36" y="444" width="928" height="30" rx="6" fill="#0F1420"/>
<text x="500" y="463" text-anchor="middle" font-family="'SF Mono',Menlo,monospace" font-size="10.5" fill="#DCE3F0">行为 = 引擎(契约, 业务模型, 技能, 记忆) —— 引擎与基座不动,模型演进:迭代案例模型,就是迭代这个活动的行为</text>
</svg>
</div>
<h3 class="h3"><span class="n">4.3</span>双向驱动:开展与完成</h3>
<p>任务如何被结构驱动着<b>开展</b>、又被结构收束着<b>完成</b>——答案是两股方向相反的力:</p>
<ul class="tight">
<li><b>前提前推(开展)</b>——写任务数据留痕(草稿层),语义按规范传播:任务视图变化 → 前提满足 → 新计划项 Enabled(里程碑 occur 亦是迁移,可再触发前提):可为空间像漏斗一样随进展展开。前推回答「<b>当下能启动什么</b>」。</li>
<li><b>判据后拉(完成)</b>——完成判据与里程碑构成目标集;Agent 沿 DMN 依赖图(DRD)与前提依赖反向遍历:目标缺什么 → 缺口由什么推出 → 落到一个 Enabled 的计划项。后拉回答「<b>该启动什么</b>」。</li>
</ul>
<div class="callout brand"><b>导航即交集,断点即人环。</b>下一步 = 当下可为(Enabled 集)∩ 目标所需——两集有交,择优启动(技能引路);<b>交集为空即断点</b>:目标所需的缺口无法由任何 Enabled 项补足——这正是调人(缺口只有人知道 → 补全卡)或立监听(缺口在世界侧 → 前提与时间监听,从模型给出)的判定时机。<b>调人与监听的时机从「感觉」变成「依赖图上的断点」</b>——可留痕、可回放、可归因。</div>
<p><b>完成的收束</b>:判据逐项转绿(L1 / L2 由语义引擎预检,L3 实证、L4 评审按分级执行,10)→ 全绿即提交放行(发卡前过落地预检,06),成果清单 = 判据逐条核对 + 生命周期快照(阶段与里程碑达成)+ 关键步引用 → 放行通过、落地收敛,案计划 Completed,发射输出口。<b>开展是 Enabled 空间的展开,完成是判据缺口的收敛</b>——一开一收,任务被结构从两端夹着走完。</p>
<div class="fig">
<div class="figcap"><span>FIG-03 · 双向驱动</span><span>前提前推(当下可为) × 判据后拉(目标所需) → 交集导航 · 断点即人环</span></div>
<svg viewBox="0 0 1000 400" role="img" aria-label="双向驱动:左侧前提前推把满足条件的计划项推入 Enabled,右侧完成判据与里程碑后拉出目标所需,Agent 取交集决定启动哪项,交集为空的断点即调人或立监听的判定点">
<style>
.ad-t{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10.5px;font-weight:600;fill:#1F2933}
.ad-c{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10px;fill:#3A4452}
.ad-m{font-family:'SF Mono',Menlo,monospace;font-size:10px;font-weight:600;letter-spacing:.12em;fill:#6A7686}
.ad-s{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:8.5px;fill:#6A7686}
</style>
<defs>
<marker id="adS" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#46586A"/></marker>
<marker id="adB" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#B07D2B"/></marker>
<marker id="adG" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#2F5C45"/></marker>
</defs>
<rect x="36" y="36" width="928" height="42" rx="9" fill="#E8F8E4" stroke="#bfedb4" stroke-width="1.3"/>
<text x="56" y="62" class="ad-c" font-weight="600" fill="#278717">目标集:判据 A ✓ · 判据 B ✗ · 判据 C ✗ ‖ 里程碑 M1 ✓ · M2 ○ —— 由完成判据与里程碑构成,语义引擎持续预检</text>
<text x="36" y="116" class="ad-m" fill="#8A5F1C">前提前推 · 当下可为</text>
<rect x="36" y="128" width="330" height="190" rx="10" fill="#FCFAF3" stroke="#B07D2B" stroke-width="1.3"/>
<text x="52" y="152" class="ad-s">数据事件传播,前提满足即 Enabled:</text>
<rect x="52" y="164" width="132" height="28" rx="7" fill="#F7F0E0" stroke="#B07D2B"/><text x="118" y="182" text-anchor="middle" class="ad-s" font-weight="600" fill="#8A5F1C">✓ 成本已核</text>
<path d="M184,178 H208" stroke="#B07D2B" stroke-width="1.3" marker-end="url(#adB)"/>
<rect x="211" y="164" width="132" height="28" rx="7" fill="#FFFFFF" stroke="#B07D2B" stroke-width="1.2"/><text x="277" y="182" text-anchor="middle" class="ad-s" font-weight="600" fill="#8A5F1C">Enabled:拟报价</text>
<rect x="52" y="204" width="132" height="28" rx="7" fill="#F7F0E0" stroke="#B07D2B"/><text x="118" y="222" text-anchor="middle" class="ad-s" font-weight="600" fill="#8A5F1C">✓ 客户已识别</text>
<path d="M184,218 H208" stroke="#B07D2B" stroke-width="1.3" marker-end="url(#adB)"/>
<rect x="211" y="204" width="132" height="28" rx="7" fill="#FFFFFF" stroke="#B07D2B" stroke-width="1.2"/><text x="277" y="222" text-anchor="middle" class="ad-s" font-weight="600" fill="#8A5F1C">Enabled:查信用</text>
<rect x="52" y="244" width="132" height="28" rx="7" fill="#F5F6F7" stroke="#C6D0DA"/><text x="118" y="262" text-anchor="middle" class="ad-s">Available:发报价</text>
<text x="52" y="298" class="ad-s">可为空间随进展展开 —— 回答「当下能做什么」</text>
<text x="634" y="116" class="ad-m" fill="#2F5C45">判据后拉 · 目标所需</text>
<rect x="634" y="128" width="330" height="190" rx="10" fill="#F6FBF5" stroke="#7FA98B" stroke-width="1.3"/>
<text x="650" y="152" class="ad-s">沿 DRD 与前提依赖,自目标反向遍历:</text>
<rect x="650" y="164" width="120" height="28" rx="7" fill="#E8F8E4" stroke="#2F5C45"/><text x="710" y="182" text-anchor="middle" class="ad-s" font-weight="600" fill="#2F5C45">判据 B:价格合规</text>
<path d="M770,178 H794" stroke="#2F5C45" stroke-width="1.3" marker-end="url(#adG)"/>
<rect x="797" y="164" width="150" height="28" rx="7" fill="#FFFFFF" stroke="#7FA98B"/><text x="872" y="182" text-anchor="middle" class="ad-s">需:报价额(DMN 可算)</text>
<path d="M872,192 V204" stroke="#2F5C45" stroke-width="1.2" marker-end="url(#adG)"/>
<rect x="797" y="206" width="150" height="28" rx="7" fill="#FFFFFF" stroke="#7FA98B"/><text x="872" y="224" text-anchor="middle" class="ad-s">需:付款条件 ← 客户信用</text>
<path d="M795,224 C760,230 740,240 726,248" stroke="#8F3330" stroke-width="1.3" stroke-dasharray="4 3" marker-end="url(#adS)"/>
<rect x="650" y="246" width="120" height="34" rx="7" fill="#FEEAE9" stroke="#f6c6c3"/><text x="710" y="261" text-anchor="middle" class="ad-s" font-weight="600" fill="#D83931">缺口:信用未知</text>
<text x="710" y="274" text-anchor="middle" class="ad-s" fill="#8F3330">任何可为动作补不了</text>
<text x="650" y="298" class="ad-s">目标缺什么、由什么推出 —— 回答「该做什么」</text>
<rect x="402" y="168" width="196" height="110" rx="12" fill="#F0F4FF" stroke="#C9D8F8" stroke-width="1.4"/>
<text x="500" y="194" text-anchor="middle" class="ad-t" fill="#245BDB">Agent · 交集导航</text>
<text x="500" y="218" text-anchor="middle" class="ad-c" font-size="9.5">当下可为 ∩ 目标所需</text>
<text x="500" y="236" text-anchor="middle" class="ad-c" font-weight="600" font-size="9.5" fill="#245BDB">→ 下一步:查信用</text>
<text x="500" y="262" text-anchor="middle" class="ad-s" fill="#8F3330">交集为空 = 断点 → 调人 / 立监听</text>
<path d="M366,214 H398" fill="none" stroke="#B07D2B" stroke-width="1.5" marker-end="url(#adB)"/>
<path d="M634,214 H602" fill="none" stroke="#2F5C45" stroke-width="1.5" marker-end="url(#adG)"/>
<line x1="36" y1="344" x2="964" y2="344" stroke="#ECEFF3"/>
<text x="36" y="366" class="ad-c" font-size="11"><tspan font-weight="600">开展是就绪空间的展开,完成是判据缺口的收敛</tspan> —— 前推给能做,后拉给该做;断点给出调人与监听的时机,全程留痕</text>
<text x="36" y="386" class="ad-s">缺口只有人知道 → 补全卡;缺口在世界侧 → 立监听(前提 + 时间监听从模型给出);缺口可算 → DMN 求值;缺口可查 → 调工具</text>
</svg>
</div>
<h3 class="h3"><span class="n">4.4</span>监听映射:CMMN 件 × 统一事件标准</h3>
<p>loop 的监听全部落在 CMMN 原生件上,再由系统的<b>统一事件标准</b>(信封 · 四类事件 · 投递五诺,见《操作系统》)投递——<b>前提 = 静态监听</b>(随案例模型声明),<b>临场立监听 = 动态监听</b>(运行中由 Agent 登记,如发出报价邮件后登记"等回信");活动认数据,不认通道:</p>
<div class="tbl"><table>
<tr><th style="width:110px">监听四问</th><th>CMMN 件 × 事件标准</th></tr>
<tr><td><b>听什么</b></td><td><b>前提</b> = onPart(监听哪个任务数据项的写入 / 变更,或哪个计划项的迁移)+ ifPart(内容条件,FEEL 求值)。「凭什么认出就是它」由模型给出——对应事件信封的关联键过滤。</td></tr>
<tr><td><b>从哪来</b></td><td><b>数据事件</b>:环外回音(邮件解析 / 人工代收)经系统归属解析<b>归一为任务数据写入</b>后抛出——通道对前提不可见;写入层去重,处理幂等(按事件 ID)。</td></tr>
<tr><td><b>听多久</b></td><td><b>时间监听(TimerEventListener)= 时限,必配</b>:到点抛时间事件,按声明走催办(契约预授权的模板催办)→ 换道 → 升级(案计划 Suspended · 受阻待人)。无死等。</td></tr>
<tr><td><b>怎么齐</b></td><td><b>Stage 汇合</b>:一个前提多 onPart = 全齐(AND);多个前提 = 任一(OR);定额与多次回件用 repetitionRule。</td></tr>
</table></div>
<ul class="tight">
<li><b>回音四来处,机制归一</b>——工位的人(卡回传 → 人事件,写数据)、世界(客户 / 供应商回件经通道解析写数据)、时间(时限到点)、别的环(其结果由调用方写入任务数据)——全部以事件形态到达,监听只认事件。</li>
<li><b>人工代收</b>——环外的话经电话等非结构化途径到达时,相关岗位的人按数据项 schema 代为回填,走同一写入口;<b>代收是转述,不是判断</b>——原话与代收人意见分开留痕。</li>
<li><b>监听中是健康态</b>——有时限、有阶梯,与停滞(该动没动)分别对待(10);挂起期间事件不丢,恢复即补投(系统投递承诺)。</li>
</ul>
<div class="callout warn"><b>悬空监听禁止,安装时拒绝:</b>凡 onPart 监听的数据项,必须存在至少一条可达的写入来源(通道映射 / 卡回传产出 / 环内动作产出 / 调用方回填);凡等环外处,必须配时间监听。无来源又无时限的监听即「幽灵等待」——永不苏醒的支线,安装静态审(11)必须拒绝。</div>
<!-- ========== 05 ========== -->
<h2 class="ch"><span class="n">05</span>flow · 步序声明</h2>
<div class="ch-rule"></div>
<p class="lead">flow 是活动内的确定性范式:业务模型 = <b>步序声明</b>——一条谱;引擎照谱执行,零临场调度,<b>调度权归系统</b>。flow 与 loop 共用同一副基座六件、同一契约格式、同一事件标准、同一记忆与留痕、同一放行——差异只有一处:<b>下一步由声明给定,不由 AI 决断</b>。LLM 在 flow 里可以出现,但只以「被调用的工具」出现,不是调度者。</p>
<h3 class="h3"><span class="n">5.1</span>步序声明模型</h3>
<p>一条步序 = 有序的步列表 + 简单条件。每步声明六件:<b>步名 · 步型 · 入参映射</b>(取自任务数据 / 上步出参)<b>· 出参写入</b>(落任务数据,草稿态)<b>· 完成条件 · 失败策略</b>。步型四种:</p>
<div class="tbl"><table>
<tr><th style="width:130px">步型</th><th>内容</th><th style="width:250px">完成条件</th></tr>
<tr><td><b>工具步</b></td><td>调一个白名单工具:系统调用(读取即快照留痕;触达外部世界者按契约预授权执行,或产出落草稿、集中在放行时落地)</td><td>同步:调用返回即完成</td></tr>
<tr><td><b>LLM 步</b></td><td>固定模板 + schema 出参的模型调用(抽取 / 生成 / 转换);<b>模板与出参 schema 随声明版本冻结</b>,出参过 schema 校验</td><td>同步:出参校验通过即完成</td></tr>
<tr><td><b>人类工具步</b></td><td>四卡之一,卡内容与出现时机由声明给定——如「步 4:人·执行,作业指导书 + 结果回填表」;末步通常是放行卡(06)</td><td>异步:<b>人事件</b>(卡回传)即步完成条件</td></tr>
<tr><td><b>纯工具步</b></td><td>包内纯计算 / 转换 / 对自持台账的操作(无外效应);注册进工具表、经运行时调用而留痕</td><td>同步:返回即完成</td></tr>
</table></div>
<p><b>异步步的完成条件 = 监听</b>:等外部回件的步声明数据事件监听(如「发出对账单 → 听回执写入」),等人的步以人事件为完成条件,等时点的步以时间事件为完成条件——同一统一事件标准,<b>时限必配</b>:到点抛时间事件,按声明走催办或兜底;无死等。</p>
<h3 class="h3"><span class="n">5.2</span>顺序、条件与上升规则</h3>
<ul class="tight">
<li><b>顺序</b>——步按声明序执行;可声明确定的并行组(组内步无依赖、全完成再继续)。</li>
<li><b>简单条件</b>——允许条件跳步与条件执行,条件必须是<b>任务数据上的确定性谓词</b>(如「金额 &lt; 1 万 → 跳过步 4」);由引擎求值,零 LLM。</li>
<li><b>复杂路由上升(必须)</b>——出现多路业务分支、临场判断的路由、不可谓词化的条件:<b>不得在 flow 内表达</b>。两条出路:上升为流程层的网关与多活动编排(责任级),或该活动改用 loop 范式(方法级临场)。flow 的谱必须全程可静态检查。</li>
</ul>
<h3 class="h3"><span class="n">5.3</span>失败与缺口:声明给定,不临场</h3>
<ul class="tight">
<li><b>重试策略(必须)</b>——每步声明重试次数与间隔;重试仍败,按声明走下一步:<b>转人兜底</b>(改发人类工具卡:人·执行或人·决策,卡内容随声明)或<b>受阻待人</b>(挂起,携阻因)。</li>
<li><b>无临场兜底(必须)</b>——flow 内不得出现「由 AI 决定怎么办」的失败处理;需要临场,即说明该活动不该是 flow(2.1)。</li>
<li><b>控制事件同权</b>——叫停 / 暂停 / 终止对 flow 任务同样有效(10);挂起恢复后自当前步续跑,事件补投。</li>
</ul>
<p class="small">终态映射(01):放行完成 = 末步放行卡「放行通过」;受阻待人 = 声明的兜底转人或时限升级;停滞熔断 / 预算耗尽 = Harness 强制(10);驳回 = 放行卡驳回,按声明回到指定步重做或携意见迭代。</p>
<h3 class="h3"><span class="n">5.4</span>flow 的留痕、记忆与迭代</h3>
<p>每步的执行、入出参、重试与失败,同一任务记忆标准(09):只追加、信封盖戳、治理先行、归侧。flow 活动同样有活动记忆——事实层校准重试与时限参数,裁决层沉淀<b>步序修订候选</b>(步增删、条件阈值、卡内容修订);候选经回放与人放行进入步序声明新版本:<b>修订步序,就是迭代这个活动的行为</b>(09)。</p>
<div class="fig">
<div class="figcap"><span>FIG-04 · flow 步序执行</span><span>四种步型 · 谓词跳步 · 异步步 = 监听 · 失败声明给定 · 末步放行</span></div>
<svg viewBox="0 0 1000 404" role="img" aria-label="flow 步序执行:工具步、LLM 步、条件谓词、人类工具步、纯工具步依声明序推进;异步步以事件为完成条件且时限必配;失败按声明重试与兜底;末步放行卡通过后落地事实态并发射输出口">
<style>
.af-t{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10.5px;font-weight:600;fill:#1F2933}
.af-c{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10px;fill:#3A4452}
.af-m{font-family:'SF Mono',Menlo,monospace;font-size:10px;font-weight:600;letter-spacing:.12em;fill:#6A7686}
.af-s{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:8.5px;fill:#6A7686}
</style>
<defs>
<marker id="afS" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#46586A"/></marker>
<marker id="afB" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#B07D2B"/></marker>
<marker id="afH" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#2F6DB5"/></marker>
</defs>
<text x="36" y="30" class="af-m">步序声明 · 一条谱</text>
<text x="964" y="30" text-anchor="end" class="af-s" font-weight="600" fill="#46586A">引擎照谱推进 · 零临场调度 · 调度权归系统</text>
<rect x="36" y="60" width="140" height="64" rx="9" fill="#F5F6F7" stroke="#98A2B0" stroke-width="1.3"/>
<text x="50" y="84" class="af-s" font-weight="600" fill="#3A4452">1 · 工具步</text>
<text x="50" y="102" class="af-s">读 ERP · 快照留痕</text>
<path d="M176,92 H198" fill="none" stroke="#46586A" stroke-width="1.4" marker-end="url(#afS)"/>
<rect x="202" y="60" width="140" height="64" rx="9" fill="#FCFAF3" stroke="#B07D2B" stroke-width="1.3"/>
<text x="216" y="84" class="af-s" font-weight="600" fill="#8A5F1C">2 · LLM 步</text>
<text x="216" y="102" class="af-s">抽取 · 模板 + schema</text>
<path d="M342,92 H364" fill="none" stroke="#46586A" stroke-width="1.4" marker-end="url(#afS)"/>
<rect x="368" y="60" width="170" height="64" rx="9" fill="#FFFFFF" stroke="#98A2B0" stroke-width="1.2" stroke-dasharray="5 3"/>
<text x="382" y="84" class="af-s" font-weight="600" fill="#3A4452">3 · 条件(确定性谓词)</text>
<text x="382" y="102" class="af-s">金额 &lt; 1 万 → 跳过步 4</text>
<path d="M538,92 H560" fill="none" stroke="#46586A" stroke-width="1.4" marker-end="url(#afS)"/>
<rect x="564" y="60" width="180" height="64" rx="9" fill="#DCEAF7" stroke="#2F6DB5" stroke-width="1.4"/>
<text x="578" y="84" class="af-s" font-weight="600" fill="#173A63">4 · 人类工具步 · 执行卡</text>
<text x="578" y="102" class="af-s" fill="#173A63">作业指导书 + 结果回填</text>
<path d="M744,92 H766" fill="none" stroke="#46586A" stroke-width="1.4" marker-end="url(#afS)"/>
<rect x="770" y="60" width="120" height="64" rx="9" fill="#F5F6F7" stroke="#98A2B0" stroke-width="1.3"/>
<text x="784" y="84" class="af-s" font-weight="600" fill="#3A4452">5 · 纯工具步</text>
<text x="784" y="102" class="af-s">汇总核对</text>
<path d="M453,56 C560,24 740,24 830,56" fill="none" stroke="#B07D2B" stroke-width="1.3" stroke-dasharray="5 3" marker-end="url(#afB)"/>
<text x="640" y="20" text-anchor="middle" class="af-s" fill="#8A5F1C">跳步(谓词为真)</text>
<path d="M654,124 V166" fill="none" stroke="#2F6DB5" stroke-width="1.3" stroke-dasharray="4 3" marker-end="url(#afH)"/>
<rect x="520" y="170" width="200" height="64" rx="9" fill="#FFFFFF" stroke="#2F6DB5" stroke-width="1.1" stroke-dasharray="5 3"/>
<text x="534" y="190" class="af-s" font-weight="600" fill="#173A63">异步步 · 完成条件 = 监听</text>
<text x="534" y="208" class="af-s">人事件即步完成 · 时限必配</text>
<text x="534" y="224" class="af-s">到点 → 催办 / 兜底(声明给定)</text>
<path d="M830,124 V166" fill="none" stroke="#2F6DB5" stroke-width="1.5" marker-end="url(#afH)"/>
<rect x="740" y="170" width="224" height="56" rx="9" fill="#DCEAF7" stroke="#2F6DB5" stroke-width="1.5"/>
<text x="754" y="192" class="af-s" font-weight="600" fill="#173A63">放行卡 —— 成果清单 + 放行选择表</text>
<text x="754" y="210" class="af-s" fill="#173A63">通过 / 驳回重做 / 驳回迭代(人)</text>
<path d="M852,226 V248" fill="none" stroke="#2F6DB5" stroke-width="1.5" marker-end="url(#afH)"/>
<rect x="740" y="252" width="224" height="44" rx="9" fill="#E8F8E4" stroke="#278717" stroke-width="1.4"/>
<text x="754" y="278" class="af-s" font-weight="600" fill="#278717">事实态落地(放行时)· 发射输出口</text>
<rect x="36" y="252" width="464" height="56" rx="9" fill="#FFF4E5" stroke="#fbd9a5" stroke-width="1.3"/>
<text x="52" y="274" class="af-s" font-weight="600" fill="#DE7802">失败策略 · 声明给定,不临场</text>
<text x="52" y="294" class="af-s" fill="#8a5a10">每步:重试 N 次 → 超限 → 按声明兜底:转人类工具卡 / 受阻待人</text>
<rect x="36" y="320" width="928" height="34" rx="8" fill="#F5F6F7" stroke="#C6D0DA" stroke-width="1.1"/>
<text x="52" y="342" class="af-s" font-weight="600" fill="#3A4452">复杂路由不入 flow:多路分支 · 并行汇合 · 临场判断 → 上升为流程层网关编排,或改用 loop 范式(2.1 / 5.2)</text>
<rect x="36" y="366" width="928" height="30" rx="6" fill="#0F1420"/>
<text x="500" y="385" text-anchor="middle" font-family="'SF Mono',Menlo,monospace" font-size="10.5" fill="#DCE3F0">步序即业务模型 —— 修订步序,即迭代此活动的行为;谱内确定,谱外过放行</text>
</svg>
</div>
<!-- ========== 06 ========== -->
<h2 class="ch"><span class="n">06</span>人类工具的调用</h2>
<div class="ch-rule"></div>
<p class="lead">人在环是<b>一种被调用的工具</b>——四种人类工具与 LLM 工具同列,都是调用层的内置工具:AI 调用人与调用任何工具同构,经调用契约、受白名单与授权约束;差别只在通道与时延——卡经<b>对话流</b>(负责人)或<b>系统消息</b>(其他人)到达人,回传异步(人事件)。人是工具表里带宽最小、延迟最高、不可并发的工具,但携带两样机器没有的东西:<b>环外的知识,与裁决的权力</b>。卡片结构与回传协议归系统,内容由活动填充(schema 在契约与交互内容中给出,07)。</p>
<div class="tbl"><table>
<tr><th style="width:80px">工具</th><th>AI 输出(卡面)</th><th style="width:250px">人回传</th></tr>
<tr><td><b>决策</b></td><td><b>分支条件选择表</b>:可选分支、各自条件与后果、依据快照、AI 建议</td><td>选定分支,可附理由</td></tr>
<tr><td><b>执行</b></td><td><b>作业指导书 + 结果回填表格</b>:做什么、怎么做、完成标准</td><td>按表回填结果,凭证随附</td></tr>
<tr><td><b>补全</b></td><td><b>补全需求 + 回填表格</b>:缺什么、为何需要、格式要求</td><td>按表回填</td></tr>
<tr><td><b>放行</b></td><td><b>成果清单 + 放行选择表</b>:交付物、验收判据逐条核对与依据</td><td>三选一:<b>放行通过 / 驳回重做 / 驳回迭代</b>,驳回必附意见</td></tr>
</table></div>
<ul class="tight">
<li><b>调用时机</b>——loop 里由 AI 临场判定(断点即人环:缺口只有人知道 → 补全;超出授权 → 决策;数字化未及 → 执行;成果齐备 → 放行,04);flow 里由步序声明给定(05)。</li>
<li><b>到达面两路</b>——发给<b>负责人</b>的卡出现在该任务的对话流;发给<b>其他人</b>的卡以<b>系统消息</b>送达其消息要素、就地作答——跨人卡是<b>一次性的解答请求,不是责任转移</b>:作答权限只及卡面与决策包,不开放任务对话流;「调谁」按<b>岗位</b>声明,收件人由系统按解析策略确定(《操作系统》03),缺席走时限阶梯。回传经统一入口写回任务,调用与回传全程在任务侧留痕。<b>驳回重答 = 新发一条系统消息</b>(新卡实例,附驳回理由与原答引用,原卡闭合)——每次请求与回答都是独立消息,只增不改。</li>
<li><b>调用必附上下文(必须)</b>——每张卡自带足够的依据与快照,人无需进系统翻找即可作答;无上下文的裸调用,基座必须拒发。</li>
<li><b>回传即留痕、即学习信号(必须)</b>——谁、何时、答了什么、依据什么,随卡入任务记忆;补全 = 缺口标注,决策 + 理由 = 偏好样本,执行回填 = 结果确认,驳回 + 意见 = 批评信号——活动记忆 · 裁决层的原料(09)。</li>
<li><b>回传按 schema 校验</b>——经系统单入口协议回环,以<b>人事件</b>抛回活动:loop 中即观察 + 数据写入,flow 中即步完成条件。</li>
<li><b>防打扰</b>——调人预算(打扰上限)在契约授权边界;同一缺口攒批调用,能推进的先推进。</li>
</ul>
<div class="callout brand"><b>完成只出自放行,放行必先预检(必须)。</b>任务的完成只能出自放行卡的「放行通过」——判据全绿只是可提交,认账永远是人的动作。发放行卡前,系统对全部待落地动作执行<b>落地预检</b>(schema · 工具可用与授权 · 连接可达 · 数据冲突)——<b>检查可落地,才允许放行</b>:预检全过才发卡,成果清单即已验证的动作清单,预检不过的项打回环内修正。放行通过即刻落地(写台账、调外部系统,附幂等键),<b>落地收敛才发射输出口,终态方成「放行完成」</b>;残余失败转落地失败卡——执行卡的系统预置形态,不构成第五种卡(《操作系统》7.3)。<b>驳回重做</b> = 按原要求重新执行;<b>驳回迭代</b> = 带意见改进现稿后再提。放行卡是活动级的门,与流程层的审批点不同层:任务完成靠放行,节点间裁决靠审批点(《操作系统》)。</div>
<p class="small">loop 中的调人落为类型化的 HumanTask 计划项:调用即 Active(阻塞),回传写任务数据 + 抛人事件,完成驱动前提、下游随之解锁——调人与等回音在结构上是同一件事:立一个监听,听人。</p>
<!-- ========== 07 ========== -->
<h2 class="ch"><span class="n">07</span>交互内容</h2>
<div class="ch-rule"></div>
<p class="lead">交互的<b>结构归基座,内容归活动</b>:基座供给对话流(任务的人机时间线、一切回环输入的唯一入口)与视图区容器(只读呈现);活动填充三样内容——<b>视图模版、卡内容 schema、汇报组织</b>。</p>
<div class="tbl"><table>
<tr><th style="width:130px">交互内容</th><th>活动定义什么</th><th style="width:270px">约束</th></tr>
<tr><td><b>视图模版</b></td><td>视图区呈现的 <b>HTML 模版</b>:事态全景、进展、成果预览;<b>流控由 AI 在后端执行</b>——按局面选模版、填数据、决定下一屏呈现什么,推送 web</td><td><b>模版是内容不是代码</b>:web 零活动代码,容器渲染净化、无脚本执行权;视图区只读、零回环输入</td></tr>
<tr><td><b>卡内容 schema</b></td><td>四卡的内容定义:决策卡的分支与条件怎么列、执行卡的指导书与回填表、补全卡的字段、放行卡的成果清单结构</td><td>卡片骨架与回传协议归系统;无自定义内容的活动必须仍可运行——schema 自动渲染兜底</td></tr>
<tr><td><b>汇报组织</b></td><td>过程汇报与汇报工件怎么组织:loop 按案例模型的阶段与里程碑,flow 按步序位置;日 / 周期汇报的素材由任务记忆聚合</td><td>汇报是投影,不是另一份事实——一切汇报可溯回任务记忆与任务数据</td></tr>
</table></div>
<ul class="tight">
<li><b>控制权按态转交(必须)</b>——视图区容器与对话区输出框的控制权由<b>活动与系统共同持有</b>:任务激活(Agent 机制运行)时归<b>活动</b>——视图流控与对话输出由活动驱动;流程流转(节点间、审批点、终态前后)时归<b>系统</b>——流转、审批与终态回执由系统呈现。转交随引擎的激活 / 完成事件自动发生,活动不感知交接。</li>
<li><b>输入单入口(必须)</b>——输入侧<b>不参与转交</b>:全部人类输入永远经系统的对话流卡片协议回传;视图区不得产生回环输入;浏览性交互(切换 / 筛选 / 展开)由前端容器本地处理,不回后端。</li>
<li><b>负责人可主动输入</b>——对话流的自由输入是人事件的第二形态(卡回传之外):写入任务记忆,loop 作为观察进入后续窗口;不驱动 flow 步。叫停等指令走控制事件,不经自由输入(10)。</li>
<li><b>视图流控随范式</b>——loop:AI 按定位与局面临场组织视图流;flow:按步序位置推送声明的模版;两者对 web 同构——web 只渲染推来的内容。</li>
<li><b>时间线一致(应)</b>——对话流时间线应与任务记忆一致:时间线即任务记忆的可读投影。</li>
</ul>
<!-- ========== 08 ========== -->
<h2 class="ch"><span class="n">08</span>技能:方法经验的封装格式</h2>
<div class="ch-rule"></div>
<p class="lead">工具用法的方法经验,以<b>技能(Skill)</b>为封装格式,<b>基于工具、在活动内定义</b>。一个技能 = <b>适用描述</b>(何时适用)+ <b>方法正文</b>(怎么判断、怎么编排工具)+ <b>结晶片段脚本</b>(可选:反复出现的确定性子序列)+ <b>知识引用</b>(可选:深层材料,按需下钻)。白名单回答「能用什么」(权力),技能回答「怎么用好」(方法)——棋子确定,棋谱是资产。</p>
<div class="callout warn"><b>定位声明:技能不是独立范式。</b>它没有自己的约束体系——留痕、治理、权力边界与生命周期全部继承本规范:内容软(方法正文自由,用不用由 AI 决断),边框硬(装配入信封 · 脚本注册留痕 · 不得扩权 · 版本过进化关口)。技能是活动内部的构件格式,不与活动并立。</div>
<div class="tbl"><table>
<tr><th style="width:110px">层</th><th style="width:190px">性质</th><th>语义</th></tr>
<tr><td><b>工具白名单</b></td><td><b>硬约束</b>(权力,契约定)</td><td>不在名单调不动;越权在结构上不可能。</td></tr>
<tr><td><b>技能清单</b></td><td><b>软资源</b>(方法,包声明)</td><td>每单任务可装配的技能集合确定、入信封;AI 可用可不用——<b>可以越谱,不可越权</b>;清单版本化,随进化演进。</td></tr>
<tr><td><b>临场路径</b></td><td>自由(由事决定,loop)</td><td>受上两层约束;走出的新路,经蒸馏可成新技能(09)。</td></tr>
</table></div>
<ul class="tight">
<li><b>装配语义</b>——loop:AI 按适用描述临场装配(渐进披露:常驻上下文仅有技能目录,按事加载正文、按需下钻引用);flow:技能编入步序——结晶片段脚本即纯工具步照谱执行。技能被<b>装配 / 调用</b>,不称「触发」——触发器一词专属流程层。</li>
<li><b>载方法,不载权力(必须)</b>——技能不得扩大白名单、授权边界与禁区;技能提及的工具不在本活动白名单者,不可调。与 message 同一逻辑:方法不是改约。</li>
<li><b>脚本按纯工具规矩(必须)</b>——技能捆绑的脚本必须注册进工具表、经运行时调用而留痕、无环境能力;不得成为绕过留痕的暗道。</li>
<li><b>装配入信封(必须)</b>——每步装配了哪些技能及其版本,记入任务记忆的信封;回放与归因依赖之。</li>
<li><b>两级组合不混</b>——流程包串活动(责任级:节点有负责人、有审批点、有契约);环内装配技能(方法级:无门无责任)。需要独立负责人与放行的做活动,纯方法复用做技能;技能不能替代活动,活动不应退化为单技能空壳。</li>
</ul>
<!-- ========== 09 ========== -->
<h2 class="ch"><span class="n">09</span>记忆与迭代</h2>
<div class="ch-rule"></div>
<p class="lead">基座的记忆系统两分:<b>任务记忆</b>(会话历史——这一单里发生过什么)× <b>活动记忆</b>(结构化记忆——这类事历来是什么样)。基座的接口最小:任务记忆只有<b>窗口配置</b>,活动记忆只有<b>存与取</b>;框架站在环内一切调用的必经之路上:记录不靠自觉,靠位置。本章讲活动侧怎么用它们:装载、蒸馏,以及记忆如何走向业务模型的迭代。</p>
<h3 class="h3"><span class="n">9.1</span>任务记忆:当前任务的全过程</h3>
<p><b>任务记忆是当前活动实例的会话历史</b>,两股同轴合流、按时间全序:<b>消息历史</b>——Agent 机制的原生逐条记录(观察 · 思考 · 动作 · 结果;flow 中即每步的执行记录),回路跑过即存在;<b>引擎事件流</b>——结构化事件(生命周期迁移 · 前提与 DMN 求值 · 卡与放行裁决 · 步执行)。四条性质:</p>
<ul class="tight">
<li><b>只追加(必须)</b>——原始条目不得修改;信号可迟到(放行裁决 · 后续修订 · 客户回复),以后续条目<b>回链原步</b>累加,不改写因果。</li>
<li><b>信封盖戳(必须)</b>——每条盖版本信封:契约 / 业务模型 / 技能版本 + 定位(loop:阶段 · 目标项;flow:步序位置)+ 治理标记;行为可归因、历史可回放的前提。</li>
<li><b>治理先行(必须)</b>——脱敏、权限、保留期、可学习标记在留痕时刻打上;不合规的记录不得进入蒸馏队列。</li>
<li><b>归侧(必须)</b>——每条按动作类型自动推导执行侧标签(机器产出 / 人产出 / 人裁决 / 世界等待);度量口径归《操作系统》,零埋点。</li>
</ul>
<p><b>四项职能</b>:<b>续跑</b>——挂起恢复与事件补投时,由任务记忆重建上下文:记忆在,环可断可续;<b>审计</b>——发生了什么:谁 · 何时 · 依据什么;<b>回放</b>——换个办法,这单会不会成(反事实评估与模型增量的重演底盘,9.3);<b>蒸馏源</b>——活动记忆的唯一原料(9.2)。</p>
<p><b>活动侧唯一接口 = 窗口配置</b>——每次 LLM 调用加载多少轮会话历史,由活动声明(随 Harness 配置);窗口之外的历史不进上下文,但完整在库——续跑、审计与回放永远对全量记录进行。</p>
<p class="small"><b>生命周期</b>:随单生,只追加长,终态封卷归档。<b>与任务数据之别</b>:任务数据是<b>事的数据</b>(业务事实,引擎推进的依据);任务记忆是<b>过程的记录</b>(怎么走到这里)。数据写入本身作为事件同轴进入任务记忆——一次写,两处义。</p>
<h3 class="h3"><span class="n">9.2</span>活动记忆:活动的持久事实</h3>
<p><b>活动记忆是关于这个活动(事类)的持久事实</b>,跨全部任务实例累积——活动的长期经验体。它的结构不是自由笔记:<b>每类条目对准业务模型的一个作用面,使记忆天然是 CMMN / DMN 与步序声明优化的原料堆</b>:</p>
<div class="tbl"><table>
<tr><th style="width:96px">层</th><th>存什么</th><th style="width:300px">优化谁</th></tr>
<tr><td><b>事实层</b></td><td>环境与对手方的稳定事实:系统端点脾性、对手方节奏(「该客户均值 3 天回信」)、术语与实体档案</td><td>校准时间监听的时限 · 前提 ifPart 阈值 · DMN 输入项;flow 的重试与时限参数</td></tr>
<tr><td><b>模式层</b></td><td>路径与组合的统计:裁量项启用频次与共现序列、阶段 / 步耗时分布、技能组合效果</td><td>候选结构增量:裁量项转常项 · 新前提依赖 · 阶段重组 · 新里程碑;flow 的步序修订</td></tr>
<tr><td><b>裁决层</b></td><td>纠正的沉淀:每次驳回 / 否决 / 叫停的理由,归纳为一般化陈述</td><td>候选新前提条件 · 收紧完成判据 · DMN 新规则行——约束力收缩的原料堆(03)</td></tr>
<tr><td><b>例外层</b></td><td>反例与禁忌:已知失败形态、边界案例、「此处留人」标记</td><td>DMN 规则的适用边界 · 前提负向条件 · 技能适用描述修正——防泛化过度</td></tr>
</table></div>
<ul class="tight">
<li><b>条目三件套(必须)</b>——每条活动记忆 = <b>归纳陈述</b> + <b>证据链</b>(指回任务记忆的具体片段,可回放)+ <b>候选增量</b>(可选:落到业务模型 / 技能的具体 diff,状态:候选 / 回放中 / 已放行 / 已否决)。<b>无证据链的条目不得入库</b>——记忆必须可追溯到经历。</li>
<li><b>写入 = 蒸馏(必须)</b>——活动记忆只经蒸馏写入:终态封卷与里程碑达成时,蒸馏钩子从任务记忆归纳;人可修剪。不设直写旁路。</li>
<li><b>基座接口 = 存与取</b>——活动记忆是<b>结构化记忆</b>,基座只提供条目的存入与检索、不解释语义;四层结构与条目三件套是本卷规定的活动侧结构标准,由活动经蒸馏与装载维护。</li>
<li><b>读出 = 装载</b>——按定位选摘相关条目入 Agent 上下文(渐进披露,3.4);<b>语义引擎不读活动记忆</b>——引擎零业务,记忆是 Agent 侧的输入。</li>
<li><b>记忆不载权力(必须)</b>——活动记忆对行为只有参考力,没有强制力;强制力的唯一路径是候选增量经回放与人放行<b>进入业务模型本身</b>(9.3)。<b>记住的影响裁量,放行的才约束行为。</b></li>
</ul>
<div class="fig">
<div class="figcap"><span>FIG-05 · 记忆双系:任务记忆 × 活动记忆</span><span>一单一本 × 一类一本 · 蒸馏与装载 · 候选增量 → 回放 → 人放行 → 模型新版</span></div>
<svg viewBox="0 0 1000 420" role="img" aria-label="记忆双系:任务记忆按时间记录本单消息历史与引擎事件流,每条盖信封戳,终态封卷归档;经蒸馏写入活动记忆的事实、模式、裁决、例外四层;活动记忆经装载选摘回到下一单上下文;各层产生候选增量,经回放与人放行进入业务模型新版,下一单装载即行为改变">
<style>
.am-t{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10.5px;font-weight:600;fill:#1F2933}
.am-c{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10px;fill:#3A4452}
.am-m{font-family:'SF Mono',Menlo,monospace;font-size:10px;font-weight:600;letter-spacing:.12em;fill:#6A7686}
.am-s{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:8.5px;fill:#6A7686}
</style>
<defs>
<marker id="amS" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#46586A"/></marker>
<marker id="amB" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#B07D2B"/></marker>
<marker id="amH" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#2F6DB5"/></marker>
<marker id="amG" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#2F5C45"/></marker>
</defs>
<text x="36" y="30" class="am-m">任务记忆 · 一单一本(消息历史)</text>
<rect x="36" y="40" width="380" height="252" rx="10" fill="#FFFFFF" stroke="#46586A" stroke-width="1.4"/>
<text x="52" y="62" class="am-s">消息历史 + 引擎事件流 · 同轴合流 · 时间全序</text>
<rect x="52" y="74" width="280" height="24" rx="6" fill="#FCFAF3" stroke="#B07D2B" stroke-width="1.1"/>
<text x="64" y="90" class="am-s" font-weight="600" fill="#8A5F1C">观察 —— 工具返回 · 人的回传 · 数据快照</text>
<rect x="52" y="104" width="280" height="24" rx="6" fill="#FCFAF3" stroke="#B07D2B" stroke-width="1.1"/>
<text x="64" y="120" class="am-s" font-weight="600" fill="#8A5F1C">思考 —— 计划摘要 · 有界披露</text>
<rect x="52" y="134" width="280" height="24" rx="6" fill="#FCFAF3" stroke="#B07D2B" stroke-width="1.1"/>
<text x="64" y="150" class="am-s" font-weight="600" fill="#8A5F1C">动作 / 结果 —— 启动 · 调人 · 写任务数据</text>
<rect x="52" y="164" width="280" height="24" rx="6" fill="#EEF3F8" stroke="#9AB0C6" stroke-width="1.1"/>
<text x="64" y="180" class="am-s" font-weight="600" fill="#173A63">引擎事件 —— 迁移 · 求值 · 步执行 · 放行裁决</text>
<rect x="52" y="194" width="280" height="24" rx="6" fill="#EAF3EE" stroke="#7FA98B" stroke-width="1.1"/>
<text x="64" y="210" class="am-s" font-weight="600" fill="#2F5C45">迟到信号 —— 驳回 · 客户回复 ↩ 回链原步</text>
<path d="M338,74 V218" fill="none" stroke="#98A2B0" stroke-width="1.2"/>
<text x="346" y="140" class="am-s" font-weight="600" fill="#46586A">信封戳</text>
<text x="346" y="154" class="am-s">版本 × 治理</text>
<text x="52" y="240" class="am-s">归侧:机器产出 / 人产出 / 人裁决 / 世界等待 —— 口径归《操作系统》</text>
<text x="52" y="258" class="am-s">治理先行:脱敏 · 权限 · 保留期 · 可学习标记 —— 留痕时刻打上</text>
<text x="52" y="278" class="am-s" font-weight="600" fill="#3A4452">只追加 · 终态封卷归档 —— 摘要是视图,不是记忆本体</text>
<path d="M420,112 H576" fill="none" stroke="#B07D2B" stroke-width="2" marker-end="url(#amB)"/>
<text x="498" y="100" text-anchor="middle" class="am-c" font-weight="600" fill="#8A5F1C">蒸馏钩子</text>
<text x="498" y="130" text-anchor="middle" class="am-s">终态封卷 / 里程碑达成</text>
<path d="M580,196 H424" fill="none" stroke="#46586A" stroke-width="1.6" marker-end="url(#amS)"/>
<text x="502" y="184" text-anchor="middle" class="am-c" font-weight="600" fill="#3A4452">装载(3.4)</text>
<text x="502" y="214" text-anchor="middle" class="am-s">按定位选摘 · 渐进披露</text>
<text x="584" y="30" class="am-m">活动记忆 · 一类一本(持久事实)</text>
<rect x="584" y="40" width="380" height="252" rx="10" fill="#FFFFFF" stroke="#161B22" stroke-width="1.5"/>
<text x="600" y="62" class="am-s">跨单累积 —— 每层对准业务模型的一个作用面</text>
<rect x="600" y="74" width="348" height="38" rx="6" fill="#F5F6F7" stroke="#C6D0DA" stroke-width="1.1"/>
<text x="612" y="89" class="am-s" font-weight="600" fill="#3A4452">事实层 · 端点脾性 · 对手方节奏 · 术语档案</text>
<text x="612" y="104" class="am-s">→ 校准时限 · ifPart 阈值 · DMN 输入项 · 重试参数</text>
<rect x="600" y="118" width="348" height="38" rx="6" fill="#FCFAF3" stroke="#B07D2B" stroke-width="1.1"/>
<text x="612" y="133" class="am-s" font-weight="600" fill="#8A5F1C">模式层 · 裁量项频次 · 共现序列 · 阶段 / 步耗时</text>
<text x="612" y="148" class="am-s">→ 候选结构增量:转常项 · 新前提 · 阶段重组 · 步序修订</text>
<rect x="600" y="162" width="348" height="38" rx="6" fill="#DCEAF7" stroke="#2F6DB5" stroke-width="1.1"/>
<text x="612" y="177" class="am-s" font-weight="600" fill="#173A63">裁决层 · 驳回 / 否决 / 叫停的理由归纳</text>
<text x="612" y="192" class="am-s">→ 候选前提条件 · 收紧判据 · DMN 规则行(03)</text>
<rect x="600" y="206" width="348" height="38" rx="6" fill="#FEEAE9" stroke="#f6c6c3" stroke-width="1.1"/>
<text x="612" y="221" class="am-s" font-weight="600" fill="#8F3330">例外层 · 失败形态 · 边界案例 · 留人标记</text>
<text x="612" y="236" class="am-s">→ 规则适用边界 · 负向条件 · 防泛化过度</text>
<text x="600" y="262" class="am-s">条目 = 归纳陈述 + 证据链(指回任务记忆)+ 候选增量</text>
<text x="600" y="280" class="am-s" font-weight="600" fill="#3A4452">写入唯蒸馏(人可修剪) · 语义引擎不读 —— Agent 侧输入</text>
<path d="M875,292 V312" fill="none" stroke="#46586A" stroke-width="1.4" marker-end="url(#amS)"/>
<rect x="800" y="316" width="150" height="32" rx="7" fill="#FCFAF3" stroke="#B07D2B" stroke-width="1.3"/>
<text x="875" y="336" text-anchor="middle" class="am-s" font-weight="600" fill="#8A5F1C">候选增量(diff)</text>
<path d="M796,332 H750" fill="none" stroke="#46586A" stroke-width="1.4" marker-end="url(#amS)"/>
<rect x="616" y="316" width="130" height="32" rx="7" fill="#F5F6F7" stroke="#98A2B0" stroke-width="1.2"/>
<text x="681" y="336" text-anchor="middle" class="am-s" font-weight="600" fill="#46586A">回放重演(9.3)</text>
<path d="M612,332 H566" fill="none" stroke="#46586A" stroke-width="1.4" marker-end="url(#amS)"/>
<rect x="432" y="316" width="130" height="32" rx="7" fill="#DCEAF7" stroke="#2F6DB5" stroke-width="1.4"/>
<text x="497" y="336" text-anchor="middle" class="am-s" font-weight="600" fill="#173A63">人放行 · 进化关口</text>
<path d="M428,332 H382" fill="none" stroke="#2F6DB5" stroke-width="1.4" marker-end="url(#amH)"/>
<rect x="168" y="316" width="210" height="32" rx="7" fill="#EAF3EE" stroke="#2F5C45" stroke-width="1.4"/>
<text x="273" y="336" text-anchor="middle" class="am-s" font-weight="600" fill="#2F5C45">模型新版:CMMN / DMN / 步序 / 技能</text>
<path d="M164,332 H120" fill="none" stroke="#2F5C45" stroke-width="1.4" stroke-dasharray="5 3" marker-end="url(#amG)"/>
<text x="38" y="326" class="am-s" fill="#2F5C45">下一单装载</text>
<text x="38" y="342" class="am-s" fill="#2F5C45">行为改变(9.3)</text>
<rect x="36" y="372" width="928" height="30" rx="6" fill="#0F1420"/>
<text x="500" y="391" text-anchor="middle" font-family="'SF Mono',Menlo,monospace" font-size="10.5" fill="#DCE3F0">记忆不载权力 —— 记住的影响裁量,放行的才约束行为;记忆的终点不是记住,是成为模型</text>
</svg>
</div>
<h3 class="h3"><span class="n">9.3</span>迭代业务模型,即迭代活动行为</h3>
<p>引擎与基座是不动点,进化的全部作用面收敛到可版本工件:<b>业务模型</b>(结构与判据)与<b>技能</b>(方法)。迭代单位是<b>模型增量</b>——一份可 diff 的变更:</p>
<div class="tbl"><table>
<tr><th style="width:210px">模型增量类型</th><th>改变的行为</th></tr>
<tr><td><b>+ 前提条件</b>(loop)</td><td>动作解锁时机变化——某些步从此必须等前提;开展的漏斗收紧或放宽</td></tr>
<tr><td><b>+ 完成判据 / 收紧判据</b></td><td>目标集变化——后拉方向改变;此前靠人裁的合格线沉为 L2 机检(约束力收缩)</td></tr>
<tr><td><b>+ DMN 规则行 / 新决策表</b>(loop)</td><td>一块判断从临场搬进确定</td></tr>
<tr><td><b>阶段重组 / 里程碑增删</b>(loop)</td><td>叙事与汇报结构变化;投影定义随之更新</td></tr>
<tr><td><b>裁量项转常项 / 动作空间调整</b>(loop)</td><td>裁量域增删(与技能清单、白名单联动核对)</td></tr>
<tr><td><b>步序修订</b>(flow)</td><td>步增删、条件阈值、重试与时限参数、卡内容修订——谱变了,照谱的行为随之变</td></tr>
</table></div>
<ol class="steps">
<li><b>蒸馏</b>——驳回、否决、叫停、断点的证据(活动记忆 · 裁决层与模式层),蒸馏为候选模型增量(diff)。</li>
<li><b>回放重演</b>——新模型对历史任务记忆重演:旧成功单在新模型下是否仍全绿?旧失败单是否恰被新条件拦住?断点是否减少?——回放先行。</li>
<li><b>人放行</b>——增量 diff + 重演报告作为证据包,过进化关口;XML 与步序声明可 diff 审查,说明书同步更新。</li>
<li><b>生效</b>——模型新版入活动库;<b>下一单任务装载即行为改变,引擎零改动</b>;在途任务按其信封版本跑完。</li>
<li><b>可回退</b>——版本谱系完整;行为回退 = 版本回退。</li>
</ol>
<div class="callout brand"><b>行为可归因公式:任何一步的行为 = 引擎版本 × 契约版本 × 业务模型版本 × 技能版本 × 输入与任务记忆前缀。</b>各项全部入信封——两单行为不同,必可归因到某一项的差异;模型 diff 完全解释行为 diff。这就是「迭代业务模型 = 迭代活动行为」的可审计形态。</div>
<!-- ========== 10 ========== -->
<h2 class="ch"><span class="n">10</span>Harness · 验收分级 · 过程工作区</h2>
<div class="ch-rule"></div>
<h3 class="h3"><span class="n">10.1</span>Harness:活动的运行框架</h3>
<p>Harness 在活动内、随活动交付——每个活动的确定性边界不依赖外部编排兜底。四件:</p>
<div class="tbl"><table>
<tr><th style="width:150px">件</th><th>内容</th></tr>
<tr><td><b>停止条件</b></td><td>什么算走完:loop = 判据收敛提交放行;flow = 谱走完(末步放行);加上五终态的收场判定(01)。</td></tr>
<tr><td><b>预算与熔断</b></td><td>步数 / token / 时长 / 调人次数四类上限取自契约资源声明,由基座在环外强制——<b>不得由活动代码自查自守</b>;任一触顶即熔断(预算耗尽)。<b>停滞检测</b>:loop = Enabled 集与任务数据皆无变化、且无监听在等的空转;flow = 当前步长期无进展且无监听在等——转受阻或熔断;错误与耗尽不得计为成功。</td></tr>
<tr><td><b>监听时限</b></td><td>一切监听必配时限(04 / 05);监听中是健康态,与停滞分开判定。</td></tr>
<tr><td><b>中断与恢复</b></td><td><b>控制事件</b>:叫停(转挂起待纠偏,留痕为最重档纠正信号)、暂停、终止(负责人 / 治理台);恢复由事件驱动——挂起期间事件不丢,恢复即补投、断点续跑(任务记忆重建上下文)。</td></tr>
</table></div>
<h3 class="h3"><span class="n">10.2</span>验收分级:L1–L5</h3>
<p>契约的验收判据逐条标注验证等级——这是放行卡「成果清单」上每条核对的成色标记:</p>
<div class="tbl"><table>
<tr><th style="width:70px">级</th><th style="width:130px">谁验</th><th>什么</th></tr>
<tr><td><b>L1</b></td><td>引擎 · 自动</td><td>形式:schema 校验、必交付物齐备、格式完整</td></tr>
<tr><td><b>L2</b></td><td>引擎 · 自动</td><td>机检:规则与阈值——loop 的前提 ifPart 与 DMN 判据即 L2 的沉入处;约束力收缩的终点</td></tr>
<tr><td><b>L3</b></td><td>环内 · 实证</td><td>抽验:试算、干跑、交叉核对——用证据说话</td></tr>
<tr><td><b>L4</b></td><td>独立评审</td><td>LLM 评审者独立评审;<b>生成者不得自评</b>;等级不得谎报(L4 不得标注为 L1–L3)</td></tr>
<tr><td><b>L5</b></td><td><b>人 · 放行</b></td><td>责任关:放行卡三选一——质量关可全自动,责任关永远是人</td></tr>
</table></div>
<p class="small">loop 中 L1 / L2 由语义引擎持续预检(红绿灯);flow 中 L1 / L2 是步完成条件的一部分。L1–L4 是质量关,L5 是责任关——判据全绿只是可提交,完成只出自放行通过(06)。</p>
<h3 class="h3"><span class="n">10.3</span>过程工作区</h3>
<p><b>台账的任务级草稿层——可选、组织自设、不绑范式。</b>任务过程产物落在<b>台账的任务级草稿层</b>:同一套「数据域.数据对象.字段」寻址与事务接口,<b>读己之写</b>——本任务可见、正式版不可见、不产生数据事件;引擎的前提求值读<b>任务视图 = 正式版 + 本任务草稿层</b>(04),跨任务监听只认放行后的正式版事件。要不要草稿、按什么 schema 草拟、怎么组织版本,由活动按需设计;系统只认放行门:<b>放行前不落事实</b>——草稿不碰台账正式版与外部系统,放行通过草稿合并入正式版、动作意向执行(06),此刻才产生数据事件。<b>写即持久,断点可续</b>:草稿层与动作意向持久于系统自持存储,没有「保存」动作;任务做一半的续跑由三份持久状态共同保证——<b>任务记忆</b>(按窗口重建上下文,09)、<b>草稿层</b>(截至断点的过程产物与动作意向)、<b>运行时实例状态</b>(loop 的模型定位与就绪集 / flow 的步序位置);打开任务只是打开呈现,过程在后端要么在跑、要么挂起在等。任务记忆与留痕随过程持续归档,不受门限。</p>
<!-- ========== 11 ========== -->
<h2 class="ch"><span class="n">11</span>活动包与开发</h2>
<div class="ch-rule"></div>
<p class="lead">一个活动以<b>一个活动包</b>交付:系统外独立开发、独立测试、独立版本,经<b>活动库</b>的独立入口安装进系统。原则:<b>内容可以有,权力不能有</b>——包内不得持有任何环境能力,一切能力经活动基座的调用契约注入。</p>
<h3 class="h3"><span class="n">11.1</span>包内容物</h3>
<div class="tbl"><table>
<tr><th style="width:170px">内容物</th><th>说明</th></tr>
<tr><td><b>契约声明</b></td><td>输入 / 输出口 / 必交付物 / 禁区 / 验收判据(分级标注)/ 授权边界 / 资源声明(01)</td></tr>
<tr><td><b>范式与业务模型</b></td><td>loop:CMMN XML + 案例说明书(同版本)+ DMN;flow:步序声明(02 / 03 / 05)</td></tr>
<tr><td><b>交互内容</b></td><td>视图 HTML 模版 · 四卡内容 schema · 汇报组织(07)</td></tr>
<tr><td><b>技能</b></td><td>技能初始版随包播种,以 ID 引用为主、不内嵌——内嵌会使技能升级被迫走发包流程(08)</td></tr>
<tr><td><b>监听声明(静态)</b></td><td>loop 的前提与时间监听 / flow 的步完成条件;时限必配(04 / 05)</td></tr>
<tr><td><b>Harness 配置</b></td><td>停止条件 · 预算参数 · 时限阶梯 · 失败策略(10)</td></tr>
<tr><td><b>纯工具</b></td><td>无外效应的计算 / 转换 / 自持台账操作;安装时注册进工具表、经运行时调用而留痕,不得内联绕过</td></tr>
<tr><td><b>台账 schema</b></td><td>活动数据的使用声明,按<b>数据域.数据对象.字段</b>三级寻址;<b>声明的是要用什么字段,不是对象该定义什么字段</b>——对象 schema = 全部使用声明的最大化合并,<b>只增不破坏</b>(版本升级声明多了就长、少了不缩,无迁移);同名字段类型不一致,以能兼容双方的<b>最宽类型</b>落地(放宽即增,静态审提示不阻塞;语义互斥才拦下,交数据管理裁决);共享域同理;操作走基座的通用事务性接口——<b>数据可以自生长</b></td></tr>
<tr><td><b>模型声明</b></td><td>活动使用的 LLM 以<b>自定义模型名称</b>(逻辑名)声明;名称背后的实例在系统侧创建绑定(Provider 枚举 / URL / API-Key / Model name,治理台 · 系统管理)——活动不触厂商与密钥;安装静态审核对名称已绑定</td></tr>
<tr><td><b>蒸馏钩子</b></td><td>终态封卷 / 里程碑达成时,从任务记忆归纳活动记忆条目(09)</td></tr>
<tr><td><b>样例集</b></td><td>样例输入 → 期望输出口与载荷形状;首次安装审(无历史任务记忆时替代回放审)与回归的依据——与工具包的契约测试集同构</td></tr>
</table></div>
<div class="callout warn"><b>功能工具不随包。</b>按需开发的业务能力工具是独立开发的代码包,经基座的<b>工具箱</b>注册进系统(工具规范另定),账号 / 密钥 / endpoint 配置随工具归组织;活动只声明引用其<b>调用契约</b>。<b>数据可以自生长(schema 声明、宿主物化),权力不可以自生长</b>——功能工具永远先系统、后活动。<b>LLM 工具与人类工具固化在系统里</b>,随系统迭代而更新,声明即用;纯工具可随包。</div>
<h3 class="h3"><span class="n">11.2</span>开发时序:编排先行,基于声明开发</h3>
<ul class="tight">
<li><b>编排定契约</b>——<b>工作流编排先于活动开发</b>:治理台画工作流图(编排五要素),节点的输入输出、依赖的工具与模型随图确定——<b>编排工作流的过程,就是定义活动契约的过程</b>;契约是编排给定、开发实现、安装校核的,工作流图是契约的母体。<b>边的载荷映射随图强制闭合</b>——连一条边即须完成上游载荷 → 下游 data 字段的映射,必填未映射、类型冲突的流程包不得发布;新活动的输入输出声明在编排中就地定义、随边成形(《操作系统》03)。</li>
<li><b>导出依赖文件</b>——工作流图画完、契约定好,导出开发该工作流活动库的<b>依赖文件(声明 + 编译选项)</b>:所有依赖的<b>接口声明、模型声明、工具声明、输入输出声明</b>。</li>
<li><b>基于声明开发与编译</b>——系统外对着声明开发(本地开发宿主:mock 工具表 + 模拟工位(四卡)+ 回放夹具);按活动的<b>编译选项</b>编译出该工作流的<b>多个活动库 .JS</b>——每活动一个编译产物,即活动包。</li>
<li><b>导入与装配</b>——活动库 .JS 可<b>批量导入</b>也可<b>单独导入</b>,在活动库中按<b>业务分类(一级)× 活动类型(标准 / 案例)</b>两维分类与版本管理;流程包里按<b>活动名</b>装配:<b>一键自动安装最新版本,或手动控制使用旧版本</b>。</li>
<li><b>工具缺口仍契约先行</b>——缺功能工具先定调用契约,活动对声明开发、平台照契约实现注册,两边并行;缺口只阻塞上架(静态审收口),不阻塞开发。</li>
</ul>
<h3 class="h3"><span class="n">11.3</span>安装:活动库入口与两审</h3>
<ul class="tight">
<li><b>静态审</b>——声明齐备(契约 / 业务模型 / Harness)、工具调用契约核对(装不齐不上架)、schema 校验、无越权代码(无环境能力、无动态执行)、悬空监听拒绝(4.4)、模版无脚本。</li>
<li><b>回放审</b>——新版本先在历史任务记忆上重跑:旧败能成、旧成不坏,方可生效(09 同一重演底盘)。</li>
<li><b>版本语义</b>——安装恒为新增、版本并存;在途任务按其启动时版本跑完;生效 / 停用 / 卸载由治理台的活动库管理执行。</li>
<li><b>资产与包分离版本化</b>——每活动两条版本序列,各有各的门、各自单写者:<b>包版本</b>管代码 / 契约 / 交互模版 / Harness 声明,变更必系统外重编、走本节两审;<b>资产版本</b>管业务模型 / DMN / 技能——包只携<b>初始版</b>(安装时播种入库),此后资产新版由进化管线在系统内产生(回放 + 人放行,09),不重编包;任务装载 = 包版本 + 各资产当前生效版,全部入信封,行为可归因;包新版携带的资产初始版<b>不覆盖</b>已有更高资产版——覆盖只能是显式的资产回退治理动作。</li>
</ul>
<div class="callout danger"><b>暗耦合禁令:</b>活动间<b>不得共享自持域的数据表</b>。甲活动写表、乙活动直读,输入 / 输出契约即成谎言——流程层的静态检查被表旁路架空。跨活动的事实只有两条路:经<b>输出口载荷</b>交付(流转的事实),或落<b>共享域</b>(沉淀的事实):`共享域.对象.字段`——各活动声明各自要用的字段,schema 最大化合并自生长;写授权按域.对象在契约申报、白名单核准;目录是治理台数据管理的视图。</div>
<!-- ========== 12 ========== -->
<h2 class="ch"><span class="n">12</span>合规判据</h2>
<div class="ch-rule"></div>
<h3 class="h3"><span class="n">12.1</span>通用判据(两范式同守,17 条)</h3>
<ul class="checks">
<li><b>契约冻结</b>——必须携带机器可校验的输入 / 输出 schema 与验收判据;运行中不得变更契约,变更即新版本。</li>
<li><b>无触发器</b>——活动不得内含触发逻辑;启动只经调用方传入输入。</li>
<li><b>输入唯一</b>——恰一个输入口,一单任务恰接收一份输入;data 必过 schema 校验,message 不得扩大授权边界。</li>
<li><b>业务分支走输出口</b>——业务性的多路结局必须以输出口(必发 / 选择组)表达并随放行发射;不得用异常终态编码业务分支。</li>
<li><b>恰一负责人</b>——每单任务必须绑定恰一个负责人;无人环、多人环不得出现。</li>
<li><b>完成只出自放行</b>——完成必须且只能由放行卡「放行通过」产生;判据全绿不等于完成;不得存在其他产生「完成」的路径。</li>
<li><b>放行前不落事实</b>——过程产物皆为草稿态;写台账、调外部系统、发射输出口集中在放行时点;契约显式预授权的模板动作除外,预授权必须显式列举。</li>
<li><b>预检先于放行,落地收敛方成完成</b>——发放行卡前必须完成落地预检(schema · 工具可用与授权 · 连接可达 · 数据冲突),<b>检查可落地才允许放行</b>,预检不过打回环内、不发卡;放行通过即刻落地(附幂等键),落地收敛输出口才发射、终态方成「放行完成」;残余失败走落地失败卡,不得静默成功。</li>
<li><b>调人必附上下文</b>——四卡必须携带依据与快照;裸调用必须被基座拒发;调人预算由契约声明并由 Harness 强制。</li>
<li><b>监听必配时限</b>——一切监听必须声明时限;无来源又无时限的监听,安装静态审必须拒绝。</li>
<li><b>事件幂等</b>——活动对事件的处理必须按事件 ID 幂等;重复投递无副作用。</li>
<li><b>留痕完整</b>——任务记忆只追加、信封盖戳、治理先行、归侧标注;原始条目不得修改,信号以回链累加。</li>
<li><b>记忆不载权力</b>——活动记忆只有参考力;约束力只经候选增量 + 回放 + 人放行进入业务模型,不得以记忆条目直接拦截或强制。</li>
<li><b>蒸馏唯一写入</b>——活动记忆只经蒸馏钩子写入,条目必挂证据链;无证据链的条目不得入库。</li>
<li><b>验收等级不得谎报</b>——每条验收判据必须标注真实等级;L4 不得标注为 L1–L3;生成者不得自评。</li>
<li><b>无越权代码</b>——活动包不得持有环境能力;一切能力必须经活动基座的调用契约注入。</li>
<li><b>活动数据私有</b>——台账必须以 schema 声明、由宿主物化并施治理;活动间不得共享数据表,跨活动事实经输出口或共享对象。</li>
</ul>
<h3 class="h3"><span class="n">12.2</span>loop 判据(8 条)</h3>
<ul class="checks">
<li><b>生命周期循 CMMN 规范</b>——案计划 / 计划项 / 里程碑三副标准生命周期;引擎与活动均不得私改迁移拓扑、不得发明状态;守卫仅可参数化。</li>
<li><b>Enabled ≠ Active</b>——引擎推进到 Enabled 为止;触达世界与关键交付的计划项必须 manualActivationRule = true,启动必出自 Agent 且留痕。</li>
<li><b>语义忠实</b>——语义引擎零 LLM、循规范推进;每次迁移与前提求值留痕;语义性前提的裁量评估作为记录留痕。</li>
<li><b>能算的不问 LLM</b>——机算前提与 DMN 由语义引擎确定性求值;同输入必同结论。</li>
<li><b>结论不可静默覆写</b>——DMN 结论是约束性输入;异议只走「人·决策」或迭代提案。</li>
<li><b>模型载事理不载权力</b>——案例模型不得扩大白名单、授权边界与禁区。</li>
<li><b>断点判定留痕</b>——调人与立监听必须以「交集为空」的依赖断点为判定依据,判定过程可回放。</li>
<li><b>双表示同版本</b>——CMMN XML 与案例说明书同版本发布,不允许分叉;迭代一起放行。</li>
</ul>
<h3 class="h3"><span class="n">12.3</span>flow 判据(6 条)</h3>
<ul class="checks">
<li><b>步序声明完整</b>——每步的步型 / 入参映射 / 出参写入 / 完成条件 / 失败策略必须齐备;缺项不得上架。</li>
<li><b>零临场调度</b>——运行中不得由 LLM 决定步序、跳步或兜底;LLM 只以被调用工具出现。</li>
<li><b>条件必谓词</b>——条件跳步与条件执行必须是任务数据上的确定性谓词,由引擎求值。</li>
<li><b>复杂路由上升</b>——多路业务分支、临场判断的路由不得在 flow 内表达;必须上升为流程层网关编排,或改用 loop 范式。</li>
<li><b>失败路径声明给定</b>——重试策略与兜底(转人 / 受阻)必须在声明中给定;不得临场发明失败处理。</li>
<li><b>LLM 步模板冻结</b>——LLM 步的模板与出参 schema 随声明版本冻结;出参必过 schema 校验。</li>
</ul>
<footer class="ft">
<span>JCAI · 活动模型 · 活动侧规范 · V2.0 · 关联《操作系统》</span>
<span>2026-07-25</span>
</footer>
</div>
</body>
</html>