forked from ChaiHao/BPOS-MVP
- 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
992 lines
115 KiB
HTML
992 lines
115 KiB
HTML
<!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>(如「金额 < 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">金额 < 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>
|