forked from ChaiHao/BPOS-MVP
手改是**兜 AI 的错**的那一手 —— 这一轮把它从「摆在那儿但落不了地」做成真的: 件上就地改 · 保存**按地址收**,不看当下那张卡:载荷从前借道工单的 `blocks[i]` 取列名, 于是熔断卡(没有 blocks)在屏上时,人补的那一格一个字都送不出去 —— 而他要补的恰恰是把这一单卡住的那个必填格。授权面改由活动清单的台账声明把关。 · **能增删行**:错不止「这一格填错了」,还有「这一行不该在」与「漏了一行」。 删挂记号不当场抹掉(看得见、可后悔),且**删要说出来**(`drops`)—— 「没回传就是删了」会把一次不完整的回传变成一次删表。 · **必填没填按不下提交**:与放行门 L1 同一个数同一套算法;闸上摆出差在哪一行哪一格。 · 只写真改了的那几行 —— 改一格却留「修订 4 行」的痕,那句话是假的。 判据与门 · 裁量判据带谓词时**谓词说了算**:「选填缺口已补齐」基座数得出来, 人填好的目标价它照样判「客户未提供」的毛病由此消掉。 · 验收卡判据**读时现算** —— 人在成果件上补一格,判据跟着变。 · 放行门认「**办完了没有**」不认「有人写过」:从前写个 `false` 就把门推开, 于是一单没打标就进了放行门。三个数全由基座现数。 · 拒回把「活没干完」说成「数或行对不上」的毛病:判据点名的表一行都没写时直说那一步没办。 **指向两扇打不开的门,比不指还糟。** 界面不撒谎 · 日志只有三色:负责人绿 · 智能体蓝 · 系统灰(归侧五种是度量的分法,不是给人看的)。 · 验收收口答两件事:落了什么(按**交付物**点名,一份成果的几张表并成一行)、 往哪儿去(转出哪一口、带过去哪些字段);一个口都没发就直说到此为止。 · 签完到收尾之间那一段有自己的话「字已签下,正在落地」—— 中间态本来就该说出来,只是要说对。 · 消息不再被内部事件刷屏:只有从通道进来的件才谈得上「无人认领」。 · 建客户公司与联系人**一次确认落两行**;联系人编码自增不问人;卡面摆表的人读名。 A1 三案例端到端全 released:全 A 类直通 12 拍 / 客户点名跳一条 10 拍 / 新客户缺必填 14 拍。 五道门禁全绿(971 passed)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JsTDjoHovERXyy6Wmw1ALp
905 lines
109 KiB
HTML
905 lines
109 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)}
|
||
.stack{border:1px dashed var(--line);border-radius:16px;background:linear-gradient(180deg,#FAFBFD,#fff);padding:22px;margin:16px 0 20px}
|
||
.stack .cap{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--ink-4);margin-bottom:14px;text-transform:uppercase}
|
||
.layer{display:grid;grid-template-columns:92px 1fr;gap:12px;align-items:stretch;margin-bottom:10px}
|
||
.layer:last-of-type{margin-bottom:0}
|
||
.layer .lno{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;border-radius:12px;font-family:var(--mono);font-weight:800;color:#fff;padding:10px 6px;text-align:center}
|
||
.layer .lno b{font-size:15px}
|
||
.layer .lno span{font-size:9px;letter-spacing:.08em;opacity:.85;font-weight:600}
|
||
.layer.l1 .lno{background:linear-gradient(160deg,#3370FF,#245BDB)}
|
||
.layer.l2 .lno{background:linear-gradient(160deg,#7F3BF5,#5b21cf)}
|
||
.layer.l3 .lno{background:linear-gradient(160deg,#B07D2B,#8A5F1C)}
|
||
.layer.l4 .lno{background:linear-gradient(160deg,#0e857d,#0a6a64)}
|
||
.layer.l5 .lno{background:linear-gradient(160deg,#46586A,#2f3d4c)}
|
||
.layer .lbody{border:1.5px solid var(--line);border-radius:12px;background:#fff;padding:12px 14px}
|
||
.layer.l1 .lbody{border-color:var(--brand-soft);background:linear-gradient(180deg,#FBFCFF,#fff)}
|
||
.layer.l2 .lbody{border-color:#E3D3FC;background:linear-gradient(180deg,#FCFAFF,#fff)}
|
||
.layer.l3 .lbody{border-color:#E8D9B8;background:linear-gradient(180deg,#FCFAF3,#fff)}
|
||
.layer.l4 .lbody{border-color:#BFE8E4;background:linear-gradient(180deg,#F8FDFC,#fff)}
|
||
.layer.l5 .lbody{border-color:#D8DEE6;background:linear-gradient(180deg,#FAFBFC,#fff)}
|
||
.layer .ltitle{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:8px}
|
||
.layer .ltitle b{font-size:14px}
|
||
.layer .ltitle span{font-size:11px;color:var(--ink-4)}
|
||
.mods{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
|
||
.mod{border:1px solid var(--line-soft);border-radius:9px;background:#fff;padding:7px 10px;font-size:11.5px;line-height:1.5}
|
||
.mod b{display:block;font-size:11.5px}
|
||
.mod span{display:block;font-size:10px;color:var(--ink-4)}
|
||
.mod.dim{border-style:dashed;color:var(--ink-3)}
|
||
.thru{margin-top:12px;border:1.5px dashed var(--brand-soft);border-radius:12px;background:linear-gradient(180deg,#FBFCFF,#fff);padding:10px 14px;font-size:12px;color:var(--brand-deep);display:flex;gap:10px;align-items:baseline}
|
||
.thru b{white-space:nowrap}
|
||
.xcut{margin-top:12px;border:1.5px dashed #F6C6C3;border-radius:12px;background:linear-gradient(180deg,#FFFBFB,#fff);padding:10px 14px;font-size:12px;color:var(--danger);display:flex;gap:10px;align-items:baseline}
|
||
.xcut b{white-space:nowrap}
|
||
.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}
|
||
.pill{display:inline-block;font-size:10.5px;font-weight:700;border-radius:999px;padding:1px 9px;border:1px solid;white-space:nowrap}
|
||
.pill.tool{color:var(--human);background:var(--human-soft);border-color:#B7D1EA}
|
||
.pill.gate{color:#fff;background:#173A63;border-color:#0F2A4C}
|
||
.pill.appr{color:#7f3bf5;background:#f4edfe;border-color:#e3d3fc}
|
||
.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}.layer{grid-template-columns:64px 1fr}}
|
||
@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 · WORK OS · SYSTEM VOLUME</div>
|
||
<h1>操作系统:五层、引擎与边界</h1>
|
||
<p class="sub">本卷完整描述<b>系统侧</b>:交互 / 流程 / 引擎 / 调用 / 基座五层,<b>工作流引擎 = 流程引擎 + 活动基座</b>,人类工具四卡,统一事件标准,记忆系统,web + server 运行拓扑,<b>活动与系统的边界</b>,基座与治理。活动是像小程序一样在系统外开发、经活动库安装的 <b>Agent 机制</b>(Case = loop,SOP = flow),其活动侧规范见《活动模型》;本卷只写系统。</p>
|
||
<div class="meta">
|
||
<div>版本 <b>V2.15 · 系统规范</b></div>
|
||
<div>日期 <b>2026-07-24</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>两本事实 · AI Native 三重结构 · 部署边界</span></span></div>
|
||
<div class="row"><span class="n">01</span><span class="t"><b>五层总图</b><span>交互 / 流程 / 引擎 / 调用 / 基座 · 贯穿件与权力线 · 术语速览</span></span></div>
|
||
<div class="row"><span class="n">02</span><span class="t"><b>交互层</b><span>工作台五要素 · 治理台九功能</span></span></div>
|
||
<div class="row"><span class="n">03</span><span class="t"><b>流程层</b><span>流程包与工作流 · 编排五要素 · 触发器 · 构件来处</span></span></div>
|
||
<div class="row"><span class="n">04</span><span class="t"><b>引擎</b><span>流程引擎 + 活动基座六件 · 两范式一套契约 · 调度权分层 · 终态名录</span></span></div>
|
||
<div class="row"><span class="n">05</span><span class="t"><b>人类工具</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>四类能力 · 工具三来处 · 外部系统 · 工具包规范(契约 / 效应等级 / 注册两审)</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>web + server · 过程在后端 · 放行门</span></span></div>
|
||
<div class="row"><span class="n">10</span><span class="t"><b>活动与系统的边界</b><span>四象限 · 两线一门 · 系统供给 vs 活动定义</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>十四条</span></span></div>
|
||
</div>
|
||
|
||
<!-- ========== 00 ========== -->
|
||
<h2 class="ch"><span class="n">00</span>定位</h2>
|
||
<div class="ch-rule"></div>
|
||
|
||
<div class="callout brand"><b>一句话系统:</b>组织的工作被定义为可编排的<b>工作流</b>,工作流由<b>活动</b>编排而成;一个活动是一个<b>完成一项任务的 Agent 机制</b>,像小程序一样基于系统内的<b>活动基座</b>在系统外开发、安装即用;人只在责任点与放行点上出现(调度权分层见 04)。<b>活动是开发态,任务是运行态</b>——同一件东西,开发者交付的叫活动,员工工作台上跑着的叫任务。</div>
|
||
|
||
<h3 class="h3"><span class="n">0.1</span>两本事实:生意的事实 vs 工作的事实</h3>
|
||
<p class="lead">ERP / CRM 记录<b>生意的结果性事实</b>:订单成了、款收了、货发了。但对「这件事是怎么被做成的」,它们一无所知。</p>
|
||
<p>本系统记录<b>工作的过程性事实</b>:哪个触发器起的单、每一步谁在场、AI 干了哪段、人修订了什么、在哪里监听了三天、驳回过几次、最终谁放的行——即<b>任务记忆与事件流</b>(08)。这份含人机分工与认账链的轨迹,是任何 ERP 都不持有、事后也补不出来的数据;它的首要用途是增强工作质量的确定性(0.2),其次才是合规与复盘。<b>ERP 记生意的事实,本系统记工作的事实</b>——互补不重叠,这也是本系统不与 ERP 争地盘的原因;护城河不在业务数据,而在工作轨迹。</p>
|
||
|
||
<div class="fig">
|
||
<div class="figcap"><span>FIG-01 · 两本事实:生意的事实 vs 工作的事实</span><span>结果性记录 ↔ 过程性记录 · 互补不重叠</span></div>
|
||
<svg viewBox="0 0 1000 322" role="img" aria-label="ERP/CRM 记录生意的结果性事实,本系统记录工作的过程性事实(任务记忆与事件流),两本事实互补">
|
||
<style>
|
||
.oa-t{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:12px;font-weight:600;fill:#1F2933}
|
||
.oa-c{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:11px;fill:#3A4452}
|
||
.oa-m{font-family:'SF Mono',Menlo,monospace;font-size:10px;font-weight:600;letter-spacing:.12em;fill:#6A7686}
|
||
.oa-s{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:9.5px;fill:#6A7686}
|
||
.oa-ts{font-family:'SF Mono',Menlo,monospace;font-size:8.5px;fill:#98A2B0}
|
||
</style>
|
||
<text x="36" y="28" class="oa-m" fill="#46586A">ERP / CRM · 生意的结果性事实</text>
|
||
<rect x="36" y="44" width="456" height="236" rx="9" fill="#F7F9FB" stroke="#9AA7B6" stroke-width="1.4"/>
|
||
<rect x="60" y="68" width="408" height="34" rx="6" fill="#FFFFFF" stroke="#D8DEE6"/>
|
||
<circle cx="80" cy="85" r="7.5" fill="#EAF3EE" stroke="#2F5C45" stroke-width="1.3"/><path d="M76.5,85 l2.6,2.6 l4.6,-5.4" fill="none" stroke="#2F5C45" stroke-width="1.5"/>
|
||
<text x="98" y="90" class="oa-t">订单 · 已成交</text>
|
||
<text x="444" y="89" text-anchor="end" class="oa-ts">RESULT</text>
|
||
<rect x="60" y="112" width="408" height="34" rx="6" fill="#FFFFFF" stroke="#D8DEE6"/>
|
||
<circle cx="80" cy="129" r="7.5" fill="#EAF3EE" stroke="#2F5C45" stroke-width="1.3"/><path d="M76.5,129 l2.6,2.6 l4.6,-5.4" fill="none" stroke="#2F5C45" stroke-width="1.5"/>
|
||
<text x="98" y="134" class="oa-t">回款 · 已入库</text>
|
||
<text x="444" y="133" text-anchor="end" class="oa-ts">RESULT</text>
|
||
<rect x="60" y="156" width="408" height="34" rx="6" fill="#FFFFFF" stroke="#D8DEE6"/>
|
||
<circle cx="80" cy="173" r="7.5" fill="#EAF3EE" stroke="#2F5C45" stroke-width="1.3"/><path d="M76.5,173 l2.6,2.6 l4.6,-5.4" fill="none" stroke="#2F5C45" stroke-width="1.5"/>
|
||
<text x="98" y="178" class="oa-t">发货 · 已签收</text>
|
||
<text x="444" y="177" text-anchor="end" class="oa-ts">RESULT</text>
|
||
<rect x="60" y="208" width="408" height="40" rx="6" fill="#FFFFFF" stroke="#B0B8C4" stroke-width="1.2" stroke-dasharray="5 3"/>
|
||
<text x="80" y="232" class="oa-c" fill="#6A7686">这件事是<tspan font-weight="600">怎么被做成的</tspan>?<tspan fill="#8F3330" font-weight="600"> ——无记录</tspan></text>
|
||
<text x="60" y="268" class="oa-s">只记「做成了什么」,不持有过程</text>
|
||
<text x="508" y="28" class="oa-m" fill="#8A5F1C">本系统 · 工作的过程性事实(任务记忆 + 事件流)</text>
|
||
<rect x="508" y="44" width="456" height="236" rx="9" fill="#FCFAF3" stroke="#B07D2B" stroke-width="1.2"/>
|
||
<line x1="540" y1="76" x2="540" y2="252" stroke="#E3D5B8" stroke-width="1.5"/>
|
||
<circle cx="540" cy="80" r="4.5" fill="#FFFFFF" stroke="#46586A" stroke-width="1.5"/>
|
||
<text x="558" y="84" class="oa-c">触发器起单 · 工作流调起</text><text x="944" y="84" text-anchor="end" class="oa-ts">09:12</text>
|
||
<circle cx="540" cy="112" r="4.5" fill="#F7F0E0" stroke="#B07D2B" stroke-width="1.6"/>
|
||
<text x="558" y="116" class="oa-c" fill="#8A5F1C" font-weight="600">AI 草拟产出 · 读取留快照</text><text x="944" y="116" text-anchor="end" class="oa-ts">09:13</text>
|
||
<circle cx="540" cy="144" r="4.5" fill="#FFFFFF" stroke="#2F6DB5" stroke-width="1.6"/>
|
||
<text x="558" y="148" class="oa-c" fill="#173A63" font-weight="600">人驳回迭代 · 意见随卡留痕</text><text x="944" y="148" text-anchor="end" class="oa-ts">09:40</text>
|
||
<circle cx="540" cy="176" r="4.5" fill="#FFFFFF" stroke="#46586A" stroke-width="1.5"/>
|
||
<text x="558" y="180" class="oa-c">监听客户回件 · 时限三天</text><text x="944" y="180" text-anchor="end" class="oa-ts">+2D</text>
|
||
<circle cx="540" cy="208" r="4.5" fill="#FFFFFF" stroke="#46586A" stroke-width="1.5"/>
|
||
<text x="558" y="212" class="oa-c">数据事件到 · 环续跑</text><text x="944" y="212" text-anchor="end" class="oa-ts">11:02</text>
|
||
<circle cx="540" cy="240" r="4.5" fill="#EAF3EE" stroke="#2F5C45" stroke-width="1.8"/>
|
||
<text x="558" y="244" class="oa-c" fill="#2F5C45" font-weight="600">放行通过 · 草稿落事实 · 可回放</text><text x="944" y="244" text-anchor="end" class="oa-ts">11:30</text>
|
||
<text x="532" y="268" class="oa-s">谁在场 · AI 干了哪段 · 依据什么 · 谁放行——逐条留痕</text>
|
||
<line x1="36" y1="292" x2="964" y2="292" stroke="#ECEFF3"/>
|
||
<text x="36" y="312" class="oa-c" font-size="11"><tspan font-weight="600">ERP 记生意的事实,本系统记工作的事实</tspan>——互补不重叠;过程事实 = 任务记忆 + 事件流,是任何 ERP 都不持有、事后也补不出来的数据</text>
|
||
</svg>
|
||
</div>
|
||
|
||
<h3 class="h3"><span class="n">0.2</span>AI Native 的意义:让 AI 的参与增强确定性</h3>
|
||
<p class="lead">判断类工作的质量,传统上是一个随机变量:取决于谁在做、状态如何、经验是否在场。把 AI 以「加个聊天框」的方式引入,只会再放大它——产出不可复现、无法追因、责任模糊。</p>
|
||
<p>本系统对「AI Native」的定义与此相反:<b>AI 参与的目标不是替人干活,而是增强工作质量的确定性;人机协作的可审计轨迹正是达成这一目标的机制</b>。非确定性(人与 AI 的判断)被三重结构围住:<b>事前有契约</b>(契约七件,4.1)、<b>事中有门</b>(放行只属于人;流程层另有审批点)、<b>事后有痕</b>(任务记忆与事件流,可回放可归因)。围住之后,质量不取决于个体发挥,而取决于契约与业务模型——可版本化、可审计、可持续进化的<b>组织资产</b>。</p>
|
||
<div class="callout brand"><b>两级确定性,判据可测:</b><b>结构确定性</b>——无论 AI 怎么走,同一契约、同一活动基座、同一事件标准、同构留痕、有限终点(临场自由,结构铁笼);<b>质量确定性</b>——由两指标检验:自主率(干了多少)与纠正率(干坏了多少),复合为有效自主率 = 自主率 ×(1 − 纠正率)(08)。「AI 越多越确定」不靠宣称,靠仪表。</div>
|
||
|
||
<h3 class="h3"><span class="n">0.3</span>部署边界</h3>
|
||
<p>本系统服务<b>企业</b>:协调<b>员工与 AI</b> 高效开展经营活动。按<b>单次部署 ≤ 50 人、单组织</b>设计:不做多租户,治理角色由组织内兼任,一切机制的复杂度预算以此为上限。系统只对两类主数据拥有事实源——<b>员工</b>与<b>工作</b>(任务、工作流、记忆);客户、物料、订单等业务对象,或在活动声明的台账里(数据可自生长,07),或在外部系统里(以外部系统调用接入,事实源在外)。</p>
|
||
|
||
<!-- ========== 01 ========== -->
|
||
<h2 class="ch"><span class="n">01</span>五层总图</h2>
|
||
<div class="ch-rule"></div>
|
||
|
||
<div class="stack">
|
||
<div class="cap">WORK OS · 五层总图(交互 / 流程 / 引擎 / 调用 / 基座 + 贯穿件 + 权力线)</div>
|
||
<div class="layer l1">
|
||
<div class="lno"><b>交互</b><span>SURFACE</span></div>
|
||
<div class="lbody">
|
||
<div class="ltitle"><b>交互层</b><span>员工的责任面;组织的管理与编排面;零业务逻辑</span></div>
|
||
<div class="mods">
|
||
<div class="mod"><b>工作台(员工面)</b><span>五要素:任务 · 审批 · 消息 · 纪要 · 汇报 —— 责任被动响应 · 五要素同源投影(02)</span></div>
|
||
<div class="mod"><b>治理台(管理面)</b><span>九功能:任务 · 员工 · 工作流 · 触发器 · 活动库 · 工具 · 数据 · 记忆 · 系统(含 LLM 实例与通道实例)(02)</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layer l2">
|
||
<div class="lno"><b>流程</b><span>PROCESS</span></div>
|
||
<div class="lbody">
|
||
<div class="ltitle"><b>流程层</b><span>工作如何被发起、串联与裁决;编排五要素,流转零 LLM</span></div>
|
||
<div class="mods">
|
||
<div class="mod"><b>触发器(平级)</b><span>周期 / 事件 / 登记三类 —— 流程层的系统级事件监听,经调用接口起单(03 / 06)</span></div>
|
||
<div class="mod"><b>流程包 / 工作流</b><span>流程包 = 调用接口 + 两种活动(声明)+ 审批点 + 两种网关;工作流 = 其运行时实例(03)</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layer l3">
|
||
<div class="lno"><b>引擎</b><span>ENGINE</span></div>
|
||
<div class="lbody">
|
||
<div class="ltitle"><b>引擎层</b><span>工作流引擎 = 流程引擎 + 活动基座</span></div>
|
||
<div class="mods">
|
||
<div class="mod"><b>流程引擎</b><span>确定性流转:起单 · 调度节点 · 审批点卡工位 · 网关分合 —— 零 LLM;审批与网关模式由它承载</span></div>
|
||
<div class="mod"><b>活动基座</b><span>六件:契约 · 交互 · 记忆 · 数据 · 工具(调用契约)· LLM 调用 —— Agent 机制的通用运行模式(04)</span></div>
|
||
<div class="mod"><b>两范式</b><span>Case = loop(临场演绎 · 调度归 AI)· SOP = flow(照谱执行 · 调度归系统)—— 统一套执行契约</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layer l4">
|
||
<div class="lno"><b>调用</b><span>CALL</span></div>
|
||
<div class="lbody">
|
||
<div class="ltitle"><b>调用层</b><span>一切能力的注册、授权与内外交互</span></div>
|
||
<div class="mods">
|
||
<div class="mod"><b>系统调用</b><span>本系统服务与外部系统(ERP / CRM):读 = 快照留痕,写 = 过放行(07)</span></div>
|
||
<div class="mod"><b>LLM 工具</b><span>模型能力封装的工具,白名单授权 —— 与基座的 LLM 调用不同物(07)</span></div>
|
||
<div class="mod"><b>人类工具</b><span>四卡:决策 · 执行 · 补全 · 放行 —— 人在环是被调用的工具(05)</span></div>
|
||
<div class="mod"><b>通道</b><span>邮件 / IM 收发:入站经归属解析进统一事件流(06)</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layer l5">
|
||
<div class="lno"><b>基座</b><span>BASE</span></div>
|
||
<div class="lbody">
|
||
<div class="ltitle"><b>基座层</b><span>事实、记录、能力与工件的存放;零业务逻辑</span></div>
|
||
<div class="mods">
|
||
<div class="mod"><b>数据</b><span>主数据:员工 · 岗位 · 权限 · 共享对象目录</span></div>
|
||
<div class="mod"><b>台账</b><span>活动声明的业务数据表:schema 声明 · 宿主物化 · 统一治理</span></div>
|
||
<div class="mod"><b>记忆</b><span>任务记忆归档库(单单封卷)· 活动记忆库(跨单持久)(08)</span></div>
|
||
<div class="mod"><b>工具箱</b><span>功能工具之库 —— 独立开发注册入口(07 / 11)</span></div>
|
||
<div class="mod"><b>活动库</b><span>已安装活动之库 —— 独立安装卸载入口(11)</span></div>
|
||
<div class="mod"><b>流程包</b><span>治理台编排的结构定义;工作流 = 其运行时实例(03 / 11)</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="thru"><b>贯穿 · 统一事件标准</b><span>系统向活动只以统一信封抛四类事件(数据 / 时间 / 人 / 控制);一条事件流,三级消费:任务监听 → 触发器 → 消息(06)。</span></div>
|
||
<div class="thru"><b>贯穿 · 外装件两类</b><span>活动包 → 活动库,工具包 → 工具箱 —— 活动在系统外,模式在系统内;<b>改业务 = 换外装件或改流程包,不改系统</b>。</span></div>
|
||
<div class="xcut"><b>权力线 · 调度权分层</b><span>工作流 → 系统 · flow 活动 → 系统 · loop 活动 → AI · 放行 → 人 —— <b>确定交系统,临场交 AI,落地交人</b>(04)。</span></div>
|
||
</div>
|
||
|
||
<p>交互定呈现与责任,流程定结构与流转,引擎定执行,调用定能力,基座定事实。实现拓扑上,系统是 <b>web + server</b> 两侧(09)。</p>
|
||
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:130px">术语</th><th>定义</th></tr>
|
||
<tr><td><b>流程包 / 工作流</b></td><td>流程包 = <b>调用接口 + 两种活动 + 审批点 + 两种网关</b>的编排定义:治理台在系统内编排,版本化存放于基座;<b>工作流 = 流程包的运行时实例</b>(03)。</td></tr>
|
||
<tr><td><b>活动</b></td><td>一个<b>完成一项任务的 Agent 机制</b>的开发态:基于活动基座在系统外开发,经活动库安装,以声明入流;两种:案例活动(loop)与标准活动(flow)。</td></tr>
|
||
<tr><td><b>任务</b></td><td>活动的<b>运行态</b>:活动被调起的一次运行;恰有一个负责人;工作台「任务」要素的单位。</td></tr>
|
||
<tr><td><b>Agent 机制</b></td><td>活动完成任务的机制本体,范式两种:loop(临场演绎)与 flow(照谱执行);业务模型、交互内容、技能清单、Harness 与过程工作区皆随活动(《活动模型》)。</td></tr>
|
||
<tr><td><b>活动基座</b></td><td>落在系统内的通用运行模式,六件:契约 · 交互 · 记忆 · 数据 · 工具(调用契约)· LLM 调用;<b>内容归活动,笼子归系统</b>(04)。</td></tr>
|
||
<tr><td><b>活动包 / 活动库</b></td><td>活动的交付单元 / 已安装活动之库(独立的安装与卸载入口,11)。</td></tr>
|
||
<tr><td><b>工具包 / 工具箱</b></td><td>功能工具的交付单元(独立开发的代码包)/ 其注册入口与库(07 / 11)。</td></tr>
|
||
<tr><td><b>人类工具</b></td><td>调用层四种内置工具:决策 · 执行 · 补全 · 放行——<b>与 LLM 工具同列</b>;经对话流卡片到达人,回传异步(05)。</td></tr>
|
||
<tr><td><b>审批点</b></td><td>流程层的<b>通用</b>人裁节点:卡到审批人工位,通过 / 驳回,附依据;与活动级的放行不同层(03 / 05)。</td></tr>
|
||
<tr><td><b>事件信封</b></td><td>系统向活动抛事件的统一标准:ID · 类型 · 关联 · 载荷 · 时间与来源 · 留痕指针;四类:数据 / 时间 / 人 / 控制(06)。</td></tr>
|
||
<tr><td><b>任务记忆</b></td><td>一单任务的<b>会话历史</b> = 消息历史 + 引擎事件流,同轴按时间全序;只追加;续跑、审计、回放的依据与蒸馏源(08)。</td></tr>
|
||
<tr><td><b>活动记忆</b></td><td>关于一个活动的跨实例持久事实,四层结构,<b>为优化业务模型而设计</b>;记忆不载权力(08)。</td></tr>
|
||
<tr><td><b>放行</b></td><td>人对任务成果的落地裁决:放行通过 / 驳回重做 / 驳回迭代;<b>完成只出自放行通过</b>——落地预检过关才发卡,放行即落地,落地收敛终态方成(05 / 7.3 / 09)。</td></tr>
|
||
<tr><td><b>对话流 / 视图区</b></td><td>工作台-任务的交互结构:对话流是唯一回环输入口;视图区是只读呈现容器,内容由后端流控推送(09)。</td></tr>
|
||
</table></div>
|
||
|
||
<!-- ========== 02 ========== -->
|
||
<h2 class="ch"><span class="n">02</span>交互层:工作台与治理台</h2>
|
||
<div class="ch-rule"></div>
|
||
|
||
<p class="lead">交互层只有两个面:<b>工作台</b>面向员工,<b>治理台</b>面向组织的管理者。面上零业务逻辑——呈现的一切都来自下层的事实与投影。</p>
|
||
|
||
<h3 class="h3"><span class="n">2.1</span>工作台五要素</h3>
|
||
<p>工作台是员工的<b>责任面</b>:它回答「现在哪些事等我、我裁过什么、与我相关的发生了什么、我们沉淀了什么、我干了什么」。员工不需要在系统里"找工作干"——责任被系统推到工作台上,员工被动响应;主动动作只有一类:维护纪要。</p>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:70px">要素</th><th style="width:150px">性质</th><th>内容</th></tr>
|
||
<tr><td><b>任务</b></td><td>责任 · 被动响应</td><td>一个活动(<b>标准活动</b>或<b>案例活动</b>)的一次运行,落到恰一名负责人的工作台</td></tr>
|
||
<tr><td><b>审批</b></td><td>责任 · 被动响应</td><td>工作流中的<b>审批点</b>,卡到审批人工位:通过 / 驳回,附依据</td></tr>
|
||
<tr><td><b>消息</b></td><td>信息 · 被动响应</td><td>系统通知与<b>跨任务征答</b>:通知(承载触发器的邮件和消息、一般公告、提醒与告警)+ 他人任务发来的人类工具卡(以系统消息送达,就地作答,2.1)</td></tr>
|
||
<tr><td><b>纪要</b></td><td>团队主动维护上传</td><td>会议纪要等团队沉淀;决议可经<b>登记触发</b>转为工作流的启动(3.1)——登记人即来源</td></tr>
|
||
<tr><td><b>汇报</b></td><td>自动</td><td>按日、周、月、年自动总结此员工的工作汇报——由本人各任务的<b>任务日志</b>聚合生成(8.1),确认即提交,<b>零手工汇报</b></td></tr>
|
||
</table></div>
|
||
<ul class="tight">
|
||
<li><b>责任与信息分明</b>——任务与审批是责任:有完成与裁决语义,恰有其主;负责人 / 审批人的变更只经治理台改派,改派留痕并通知双方;消息是信息,不产生责任;纪要是团队的主动沉淀;汇报是系统代劳的自动产出。</li>
|
||
<li><b>活动内的人环不另立要素</b>——活动执行中对人的调用(决策、执行、补全、放行四卡,05)按被调用人分两个到达面:发给<b>负责人</b>的卡出现在该任务自己的对话流里;发给<b>其他人</b>的卡以<b>系统消息</b>送达对方的消息要素,就地作答——任务要素永远只装"我负责的任务",<b>跨人卡是一次性的解答请求,不是责任转移</b>;作答权限只及卡面与决策包,不开放任务对话流。回传经统一入口写回任务,调用与回传全程在任务侧留痕。任务侧不满意可<b>驳回重答:驳回即新发一条系统消息</b>(新卡实例,附驳回理由与原答引用),原卡闭合——每次请求与回答都是独立消息,只增不改。工作台层面的「审批」专指工作流级的审批点。</li>
|
||
<li><b>五要素同源</b>——做事与留痕是同一个动作:五要素都是同一份过程事实(任务记忆与工作流事件)在员工视角下的投影——汇报是它的时间聚合,消息是它的相关性过滤,不存在"干完活再补记录"。</li>
|
||
</ul>
|
||
|
||
<h3 class="h3"><span class="n">2.2</span>治理台九功能</h3>
|
||
<p class="lead">治理台功能清单九项——每一项对应架构中的一件,治理台由此覆盖全部五层:</p>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:130px">功能</th><th>管什么</th><th style="width:170px">对应</th></tr>
|
||
<tr><td><b>任务管理</b></td><td>运行态:任务与工作流(两级运行时实例)的在途监控、干预与控制(叫停 / 暂停 / 终止,即控制事件,06);查看任意任务的<b>任务日志</b>(8.1);<b>改派</b>——在途任务与待答卡片的负责人 / 审批人变更,改派留痕并通知双方</td><td>引擎 · 流程层</td></tr>
|
||
<tr><td><b>员工管理</b></td><td>员工、岗位、权限——<b>权限按岗位授予</b>:客体三类(数据:域.对象[.字段] / 治理功能 / 任务),动作三种(读 / 写 / 治理);任务负责人与被征答人对所涉内容天然可见;<b>停用前置检查</b>——员工停用前,其在途任务与待答卡须先改派完毕</td><td>基座 · 数据</td></tr>
|
||
<tr><td><b>工作流管理</b></td><td>设计态:流程包的五要素编排(03)与版本;<b>编排即定契约</b>——画完工作流图可导出活动开发的依赖文件(11)</td><td>流程层 · 基座 · 流程包</td></tr>
|
||
<tr><td><b>触发器配置</b></td><td>触发器的创建、配置与启停——定义<b>调用工作流的时机</b>(周期规则与事件规则);触发器与工作流平级、不属于工作流,不随流程包版本;触发器 = 流程层的系统级事件监听(06),经调用接口调起流程包</td><td>流程层 · 基座(系统自持)</td></tr>
|
||
<tr><td><b>活动库管理</b></td><td>活动包的安装、卸载、版本并存与引用查询——独立入口(11);库内按<b>业务分类(一级,组织自定)× 活动类型(标准 / 案例)</b>两维管理,两维平级、相互独立</td><td>基座 · 活动库</td></tr>
|
||
<tr><td><b>工具管理</b></td><td>工具包注册、白名单与授权、账号 / 密钥 / endpoint 配置</td><td>调用层 · 基座 · 工具箱</td></tr>
|
||
<tr><td><b>数据管理</b></td><td>主数据、共享对象目录、台账治理(脱敏、保留期、权限)</td><td>基座 · 数据与台账</td></tr>
|
||
<tr><td><b>记忆管理</b></td><td>任务记忆归档与活动记忆库的治理</td><td>基座 · 记忆</td></tr>
|
||
<tr><td><b>系统管理</b></td><td>系统配置,含 <b>LLM 实例</b>(创建自定义名称模型:Provider(开发支持的厂商枚举)/ URL / API-Key / Model name;活动以名称声明引用)、<b>通道实例</b>(邮箱、IM 接入;归属键提取规则与默认认领岗位,6.2)与<b>系统用途模型绑定</b>(系统自身的 LLM 消耗点——叙述性小结、汇报生成、蒸馏钩子——绑定专用模型实例与预算,计量入系统账、不占活动预算)管理</td><td>引擎 · 调用层</td></tr>
|
||
</table></div>
|
||
<p class="small">治理动作本身留痕入事件流——治理也被治理。</p>
|
||
|
||
<!-- ========== 03 ========== -->
|
||
<h2 class="ch"><span class="n">03</span>流程层:流程包、工作流与触发器</h2>
|
||
<div class="ch-rule"></div>
|
||
|
||
<p class="lead"><b>流程包 = 调用接口 + 两种活动 + 审批点 + 两种网关的流程编排;工作流 = 流程包的运行时实例。</b>包与实例两级对称:<b>流程包 → 工作流,活动 → 任务——包在库,实例在跑</b>。</p>
|
||
<p>编排层的基础要素有五:<b>活动(声明)、审批、网关、触发器、流程包</b>——活动、审批、网关是流程包内的节点要素,触发器与流程包是平级的顶层要素;治理台的编排就在这五种要素上进行。其中活动以<b>声明</b>入流:编排引用的是<b>活动库</b>中已安装的活动,安装与卸载走活动库的独立入口(11),不在编排中发生。</p>
|
||
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:120px">构件</th><th style="width:180px">职责</th><th>要点</th></tr>
|
||
<tr><td><b>调用接口</b></td><td>流程包的唯一出入口</td><td>声明<b>输入契约与输出声明</b>;触发器与上游系统一律经此调起;流程包声明<b>显式终点</b>,工作流完成时末端输出载荷按输出声明交付、按来源回执——登记人收消息回执,上游系统收回调</td></tr>
|
||
<tr><td><b>活动(两种)</b></td><td>责任单元</td><td><b>标准活动</b>(flow)与<b>案例活动</b>(loop);节点以<b>声明</b>引用活动库中已安装的活动,恰有一名负责人;<b>任务 = 活动的运行时实例</b>——活动被调起的一次运行即一单任务</td></tr>
|
||
<tr><td><b>审批点(通用)</b></td><td>工作流级的人裁节点</td><td>功能属性四件:<b>审批岗位</b>(复用负责人四策略解析)· <b>输入装配映射</b>(审批人所见载荷,复用边机制)· <b>驳回走向</b>(声明式:回指定节点重开新实例(带载荷映射)/ 终止,不由临场决定)· <b>催办阶梯</b>(时限机制复用:提醒 → 升级)</td></tr>
|
||
<tr><td><b>网关(两种)</b></td><td>路由</td><td><b>并行</b>(AND:分叉与汇合)与<b>异或</b>(XOR:条件路由,判定依据入事件记录);条件声明式、静态可检,不得内嵌自由逻辑</td></tr>
|
||
</table></div>
|
||
|
||
<p><b>边与载荷映射:连线即映射,画图即校验,不闭合不得发布。</b>流程包的每条边携带<b>输入装配映射</b>——上游输出口载荷字段 / 流程变量 / 起单载荷 / 常量 → 下游活动契约的 data 字段,允许 S-FEEL 表达式做转换;与触发器的字段映射同一形式(3.1)。编排画布<b>强制契约前后约束</b>:连一条边即须完成该边映射(编排器就地给出上游载荷与下游必填字段的对照,必填未映射 = 边未完成),类型兼容依两端契约 schema 当场校验;<b>存在未完成边、未满足必填或类型冲突的流程包可存草稿、不得发布</b>。两种连线情形同受此约束:引用已安装活动,对活动库中的契约校验;新活动(未开发),契约的输入输出<b>在编排中就地定义</b>、随边成形——依赖文件的输入输出声明由此生成(11.1)。AND 汇合后的同名字段必须显式指定来源分支,不做隐式合并;message 由编排声明模板(可插值载荷字段),缺省为空。</p>
|
||
|
||
<p><b>负责人与审批人解析:编排声明岗位,起单时确定性解析。</b>活动节点与审批点声明<b>岗位</b>与解析策略,策略封闭四选:<b>指定人</b>(直接绑定员工,慎用)/ <b>岗位唯一人</b> / <b>轮值</b>(岗内以在途任务数最少者优先)/ <b>来源跟随</b>(复用同一工作流内该岗位已解析出的人,保持一单一人的连续)。默认:岗位唯一人;岗上多人时按轮值。解析发生在节点起单时,结果与依据留痕;岗位空缺按该节点的失败走向处置,或转治理台待指派;运行中变更走治理台改派(02)。</p>
|
||
|
||
<p><b>失败走向:每个活动节点可声明,封闭四选,默认终止流。</b>节点以非完成终态结束(受阻、熔断、耗尽等)时,按其声明的失败走向处置:<b>终止流</b>(默认)——工作流转「异常」,通知治理台 · 任务管理,人工处置;<b>改道</b>——声明一条备选边(失败载荷 = 终态、原因码与说明,备选边同带载荷映射);<b>升审批</b>——失败落到指定审批点,由审批人裁决:重开新任务实例 / 改道 / 终止流;<b>容忍</b>(仅限 AND 分支)——显式声明该分支失败不阻汇合,静态校验其下游映射不得依赖该分支的必填字段。流程层不自动重试活动(过程内重试归 Harness);流级重做一律是人裁决后<b>重开新任务实例</b>——同一节点、新任务 ID、留痕关联,不复活旧任务。</p>
|
||
|
||
<h3 class="h3"><span class="n">3.1</span>触发器</h3>
|
||
<p><b>触发器 = 基于周期、事件或登记触发的工作流启动调用。</b>在统一事件标准下,触发器就是<b>流程层的系统级事件监听</b>(06):消费同一条事件流,动作是起单。三类:<b>周期触发</b>——再分两型:<b>日历型</b>(纯日历规则:对账日、周报周期)与<b>数据日历型</b>(按台账日期字段 + 偏移 + 过滤条件逐行起单,如「合同到期前 N 天」;<b>同一行同一日期只触发一次</b>,字段值变更后可再触发);<b>事件触发</b>(通道入站命中规则、台账数据事件);<b>登记触发</b>——人工起单的统一形态:登记人选择流程包、按调用接口 schema 填写输入(表单由 schema 自动渲染)、提交即起单;纪要决议转起单即经登记触发。</p>
|
||
<p><b>触发器输入装配</b>——事件触发的触发器配置含声明式<b>字段映射</b>:事件信封与载荷字段 → 调用接口的 data 字段;缺必填字段则起单失败、入死信。周期触发以规则求值结果装配;登记触发以登记表单为输入。</p>
|
||
<p><b>触发器与工作流是平级概念。</b>触发器的配置定义的是<b>调用工作流的时机</b>——它<b>不属于工作流</b>:不入流程包结构,不随流程包版本,配置与启停在治理台独立进行(02),配置存于基座的系统自持存储(11)。触发器只负责「起单」,经<b>调用接口</b>调起流程包、生成一条工作流;流程包与活动内部不含任何触发逻辑。同一个流程包可以被多个触发器调起,同一个触发器也只知道调用接口、不知流程内部;触发器的增删启停不改流程包的任何版本。<b>凡单必有来源</b>:每条工作流的来源可追溯——触发器即来源;纪要登记起单的,登记人即来源。</p>
|
||
|
||
<h3 class="h3"><span class="n">3.2</span>组合语义与构件来处</h3>
|
||
<ul class="tight">
|
||
<li><b>两级组合</b>——<b>流程包串活动</b>(运行时即工作流串任务),是责任级组合:每个节点有负责人、有契约、有裁决;<b>活动内 Agent 机制自治</b>,是方法级执行:怎么做由活动自带的范式与业务模型决定(《活动模型》)。流程层的流转本身零 LLM:路由、汇合、审批点的推进全部确定。</li>
|
||
<li><b>构件来处分两边</b>——<b>活动是经活动库安装进来的外部件</b>;<b>审批点、网关与触发器是系统内置的要素</b>:落在系统内,声明 / 配置即用,零开发。一个流程包里,需要开发的只有活动。</li>
|
||
<li><b>工作流状态是聚合投影</b>——由流内各任务的状态按固定规则聚合推导,流程层不另设状态机。聚合的计量对象是<b>节点实例</b>(重开产生新实例,旧实例已终,不再入算)。聚合规则:任一节点实例运行中 → <b>运行中</b>;无运行实例且存在待人 / 监听 → <b>等待中</b>;<b>全部已激活的节点实例收敛(完成或已消化)且无在途实例 → 已完成</b>——XOR 未选分支从未激活、不入集合,容忍分支以"已消化"计;被控制事件终止 → <b>已终止</b>;任一实例以非完成终态结束且其失败走向未消化(终止流待人工处置中)→ <b>异常</b>;改道、容忍与升审批一经生效即为消化,不入异常(03 失败走向)。</li>
|
||
</ul>
|
||
|
||
<p><b>声明条件的表达语言</b>——系统侧一切声明式条件(XOR 网关条件、触发器事件规则、监听过滤条件)统一采用 <b>FEEL 表达式子集(S-FEEL)</b>:比较、逻辑、算术、字符串与日期函数,无外部调用,静态可检。求值输入:网关处 = 流转载荷与流程变量;触发器处 = 事件信封与载荷字段;监听处 = 事件信封与载荷字段。周期规则 = 日历表达式 + 日历偏移(支持「日期字段 − N 天」式)。节点间的载荷映射与触发器字段映射同一形式(03 边与载荷映射)。</p>
|
||
|
||
<!-- ========== 04 ========== -->
|
||
<h2 class="ch"><span class="n">04</span>引擎:流程引擎 + 活动基座</h2>
|
||
<div class="ch-rule"></div>
|
||
|
||
<p class="lead"><b>工作流引擎 = 流程引擎 + 活动基座。</b></p>
|
||
<ul class="tight">
|
||
<li><b>流程引擎</b>——确定性流转:接收调用接口的起单、按结构调度节点、把审批点卡到人的工位、执行网关的分合、把每次流转记入事件。零 LLM、零临场;审批与网关的模式由它承载。</li>
|
||
<li><b>活动基座</b>——活动 Agent 机制的<b>通用运行模式</b>,落在操作系统内;引擎为每单任务在基座上运行该活动的 Agent 机制。</li>
|
||
</ul>
|
||
|
||
<h3 class="h3"><span class="n">4.1</span>活动基座六件</h3>
|
||
<p>活动基座对所有活动同一份。活动在系统外开发时,面对的就是这六件的接口;安装进来,跑在同一副基座上:</p>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:150px">构件</th><th style="width:270px">内容</th><th>职责</th></tr>
|
||
<tr><td><b>契约</b></td><td><b>契约七件</b>:输入(data + message)· 输出口(必发 / 选择)· 必交付物 · 验收判据(分级标注:L1 形式校验 / L2 机检 / L3 抽验 / L4 独立评审 / L5 人放行,不得谎报等级)· 禁区 · 授权边界 · 资源声明</td><td>活动对外的全部承诺;两种范式同一契约格式——"统一套执行契约"的锚点;《活动模型》自开发视角展开同一份七件清单</td></tr>
|
||
<tr><td><b>交互</b></td><td>工作台-任务的<b>对话流</b> + <b>视图区容器</b></td><td>交互的结构骨架:对话流是任务的人机时间线、一切回环输入的唯一入口;视图区是活动渲染的只读呈现容器——<b>结构归基座,内容归活动</b>。<b>控制权共同持有、按态转交</b>:活动激活时归活动(视图流控与对话输出由活动驱动),流程流转时归系统(流转、审批与终态呈现由系统驱动);输入侧不转交,永远走系统单入口</td></tr>
|
||
<tr><td><b>记忆</b></td><td><b>任务记忆</b> + <b>活动记忆</b></td><td>任务记忆 = <b>会话历史</b>(消息历史 + 引擎事件流,同轴按时间全序),框架自动记录、只追加;活动侧唯一接口 = <b>窗口配置</b>(每次 LLM 调用加载多少轮)。活动记忆 = <b>结构化记忆</b>,基座只提供<b>存与取</b>,结构归活动侧,<b>为优化业务模型而设计</b>(08)</td></tr>
|
||
<tr><td><b>数据(台账)</b></td><td>「数据域.数据对象.字段」三级寻址 + 通用事务性接口</td><td>活动对数据与台账的一切操作按<b>数据域.数据对象.字段</b>声明寻址;数据库提供<b>通用事务性接口</b>(增删改查与事务,对所有活动同一套);安装时系统检查数据表,依活动声明<b>自生长</b>。声明语义:<b>声明的是活动要用什么字段,不是对象该定义什么字段</b>——对象的实际 schema = 全部使用声明的<b>最大化合并</b>(并集);<b>定义只增不破坏</b>:声明永不缩表、不删改已有字段,清理归档是数据管理的治理动作、不经声明发生(11)。同名字段类型不一致时,以能兼容双方的<b>最宽类型</b>落地(放宽即增,不破坏),静态审提示、不阻塞;语义互斥不可兼容的极端情形才拦下,交数据管理裁决。运行中的写入落<b>任务级草稿层</b>,放行时合并入正式版(09)</td></tr>
|
||
<tr><td><b>工具(调用契约)</b></td><td>白名单工具的调用契约</td><td>活动只经调用契约使用工具;系统调用、LLM 工具、人类工具与通道皆以工具形态自调用层供给(07),功能工具经工具箱注册;授权在白名单与契约,不在活动代码</td></tr>
|
||
<tr><td><b>LLM 调用(模型)</b></td><td>声明<b>自定义模型名称</b></td><td>活动侧只声明自定义的模型名称(逻辑名);名称在系统侧创建与绑定——<b>Provider(系统通过开发支持的厂商枚举)/ URL / API-Key / Model name</b> 四元配置(治理台 · 系统管理,02);活动不触厂商与密钥;模型与版本记入留痕,行为可归因</td></tr>
|
||
</table></div>
|
||
<div class="callout brand"><b>基座即笼子:</b>契约限承诺、工具限能力、交互限入口、记忆与留痕限事实、数据限归属、LLM 调用限模型——<b>内容归活动,笼子归系统</b>。活动代码无环境能力,一切能力经调用契约注入,越权在结构上不可能。</div>
|
||
<div class="callout warn"><b>系统不提供统一沙箱:</b>过程工作区(草稿箱)由活动按需自设、不与范式绑定;系统不管草稿怎么组织,只认放行门——<b>放行前不落事实</b>(09)。权力边界由调用契约与白名单承担,不依赖运行时隔离。</div>
|
||
<p><b>预算与熔断由活动基座在环外强制执行</b>——活动仅在 Harness 配置中申报参数,不自查自守。计量口径:<b>步</b> = loop 的一次决策循环 / flow 的一个声明步;<b>token</b> = LLM 调用出入 token 累计;<b>时长</b> = <b>活跃时长</b>(Agent 机制运行与工具执行的时间;挂起、监听等待、待卡回传不计入——熔断不误杀等待中的任务;时限阶梯另用日历时长,06);<b>调人次数</b>按卡计。任一项越限,基座抛控制事件并挂起任务,处置归治理台 · 任务管理(02)。</p>
|
||
|
||
<h3 class="h3"><span class="n">4.3</span>任务终态名录(系统裁定)</h3>
|
||
<p>完成由框架裁定,终态由系统命名——任务终态是封闭枚举,<b>五名</b>:</p>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:110px">终态</th><th>语义</th><th style="width:230px">触发者</th></tr>
|
||
<tr><td><b>放行完成</b></td><td>唯一成功终态:放行通过且落地收敛,输出口已发射</td><td>放行卡 + 落地执行(7.3)</td></tr>
|
||
<tr><td><b>受阻待人</b></td><td>无法推进,封卷待治理处置——处置 = 改派 / 重开新实例 / 终止</td><td>Agent 机制申报,或治理台判定</td></tr>
|
||
<tr><td><b>停滞熔断</b></td><td>停滞检测触发:该动未动、超限仍无推进</td><td>预算执行器(04)</td></tr>
|
||
<tr><td><b>预算耗尽</b></td><td>步数 / token / 活跃时长 / 调人次数任一越限</td><td>预算执行器(04)</td></tr>
|
||
<tr><td><b>被终止</b></td><td>控制事件 · 终止,含工作流终止的级联(06)</td><td>治理台 / 负责人</td></tr>
|
||
</table></div>
|
||
<p class="small">不是终态:<b>驳回</b>(重做 / 迭代)是环内回转,任务继续;<b>叫停</b>是控制事件,挂起待恢复;<b>落地受阻</b>是运行态(7.3)。非完成终态触发节点的失败走向(03);终态分布入度量(8.3)。</p>
|
||
|
||
<h3 class="h3"><span class="n">4.2</span>两范式,一套契约;调度权分层</h3>
|
||
<p>两种活动的 Agent 机制范式不同——<b>Case 是 loop</b>(装载 CMMN + DMN 临场演绎),<b>SOP 是 flow</b>(按声明步序照谱执行)——但<b>统一套执行契约</b>:活动基座的六件对两种范式完全一致。差异被压缩到唯一一处:<b>Agent 机制的范式与业务模型的形态</b>。对流程层与交互层而言,两种活动不可区分地是"一个节点、一单任务"。</p>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:170px">对象</th><th style="width:110px">调度权</th><th>形态</th></tr>
|
||
<tr><td><b>工作流</b>(流程层)</td><td><b>系统</b></td><td>流程引擎照结构流转:路由、汇合、审批点推进,零 LLM</td></tr>
|
||
<tr><td><b>flow 范式活动</b></td><td><b>系统</b></td><td>引擎照声明步序推进,零临场调度</td></tr>
|
||
<tr><td><b>loop 范式活动</b></td><td><b>AI</b></td><td>Agent 机制在业务模型的结构上临场决断下一步</td></tr>
|
||
<tr><td><b>放行</b>(处处)</td><td><b>人</b></td><td>任务完成只出自放行通过(05);流程节点间裁决归审批人</td></tr>
|
||
</table></div>
|
||
<div class="callout brand"><b>确定交系统,临场交 AI,落地交人。</b>一个活动选 flow 还是 loop,本质就是把这件事的调度权交给系统还是交给 AI——<b>范式的边界即调度权的边界</b>;无论谁调度,放行权都不移交。</div>
|
||
|
||
<!-- ========== 05 ========== -->
|
||
<h2 class="ch"><span class="n">05</span>人类工具:四种通用卡</h2>
|
||
<div class="ch-rule"></div>
|
||
|
||
<p class="lead">活动过程中对人的调用,收敛为四种<b>人类工具</b>。定位上它们与 <b>LLM 工具同列</b>——都是调用层的内置工具(07):AI 在环内调用人,与调用任何工具同构,经调用契约、受白名单与授权约束;差别只在通道与时延——人类工具经<b>对话流</b>到达人(卡片),回传异步。这正是本系统的出发点:<b>人在环是一种被调用的工具</b>——何时调、调哪种,loop 里由 AI 临场判定,flow 里由步序声明给定;<b>人不驱动过程,人被过程调用</b>。卡片结构与回传协议归系统,内容由活动填充。</p>
|
||
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:70px">工具</th><th>AI 输出(卡面)</th><th style="width:270px">人回传</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>
|
||
|
||
<div class="fig">
|
||
<div class="figcap"><span>FIG-02 · 人类工具四卡协议</span><span>AI 组卡 → 对话流 → 人回传 → 人事件 → 环续跑</span></div>
|
||
<svg viewBox="0 0 1000 380" role="img" aria-label="人类工具四卡协议:后端 Agent 机制判定需要人并组卡,四种卡经对话流到达人的工位,人作答后回传为人事件投递回任务,环续跑">
|
||
<style>
|
||
.ob-t{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:11px;font-weight:600;fill:#1F2933}
|
||
.ob-c{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10px;fill:#3A4452}
|
||
.ob-m{font-family:'SF Mono',Menlo,monospace;font-size:10px;font-weight:600;letter-spacing:.12em;fill:#6A7686}
|
||
.ob-s{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:9px;fill:#6A7686}
|
||
</style>
|
||
<defs>
|
||
<marker id="obS" 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="obB" 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="obH" 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="52" class="ob-m" fill="#8A5F1C">Agent 机制 · server(后端)</text>
|
||
<rect x="36" y="64" width="210" height="192" rx="10" fill="#F7F0E0" stroke="#B07D2B" stroke-width="1.4"/>
|
||
<text x="52" y="92" class="ob-t" fill="#8A5F1C">判定需要人</text>
|
||
<text x="52" y="116" class="ob-s">loop:AI 临场判定</text>
|
||
<text x="52" y="134" class="ob-s">flow:步序声明给定</text>
|
||
<text x="52" y="162" class="ob-c">组卡:上下文 + 依据快照</text>
|
||
<text x="52" y="186" class="ob-s">无上下文的裸调用不得发出</text>
|
||
<text x="52" y="208" class="ob-s">调用经调用契约 · 白名单授权</text>
|
||
|
||
<text x="520" y="52" text-anchor="middle" class="ob-m" fill="#245BDB">对话流 · web(唯一回环输入口)</text>
|
||
<rect x="400" y="64" width="240" height="36" rx="7" fill="#FFFFFF" stroke="#C9D8F8" stroke-width="1.3"/>
|
||
<text x="520" y="86" text-anchor="middle" class="ob-c">决策卡 —— 分支条件选择表</text>
|
||
<rect x="400" y="110" width="240" height="36" rx="7" fill="#FFFFFF" stroke="#C9D8F8" stroke-width="1.3"/>
|
||
<text x="520" y="132" text-anchor="middle" class="ob-c">执行卡 —— 作业指导书 + 结果回填</text>
|
||
<rect x="400" y="156" width="240" height="36" rx="7" fill="#FFFFFF" stroke="#C9D8F8" stroke-width="1.3"/>
|
||
<text x="520" y="178" text-anchor="middle" class="ob-c">补全卡 —— 补全需求 + 回填表格</text>
|
||
<rect x="400" y="202" width="240" height="40" rx="7" fill="#DCEAF7" stroke="#173A63" stroke-width="1.6"/>
|
||
<text x="520" y="226" text-anchor="middle" class="ob-c" font-weight="600" fill="#173A63">放行卡 —— 成果清单 + 放行选择表</text>
|
||
<text x="520" y="258" text-anchor="middle" class="ob-s">放行通过 / 驳回重做 / 驳回迭代 —— 驳回必附意见</text>
|
||
|
||
<text x="754" y="52" class="ob-m" fill="#173A63">人 · 工位(异步)</text>
|
||
<rect x="754" y="64" width="210" height="192" rx="10" fill="#DCEAF7" stroke="#2F6DB5" stroke-width="1.4"/>
|
||
<text x="770" y="92" class="ob-t" fill="#173A63">卡上作答 · schema 校验</text>
|
||
<text x="770" y="116" class="ob-s">选择 / 回填 / 三选一</text>
|
||
<text x="770" y="140" class="ob-s">回传随卡留痕 —— 学习信号:</text>
|
||
<text x="770" y="158" class="ob-s">补全 = 缺口标注</text>
|
||
<text x="770" y="176" class="ob-s">决策 + 理由 = 偏好样本</text>
|
||
<text x="770" y="194" class="ob-s">驳回 + 意见 = 批评信号</text>
|
||
|
||
<path d="M246,140 H396" fill="none" stroke="#B07D2B" stroke-width="1.5" marker-end="url(#obB)"/>
|
||
<text x="320" y="130" text-anchor="middle" class="ob-s" fill="#8A5F1C">调用 · 卡面 = AI 的结构化输出</text>
|
||
<path d="M640,140 H750" fill="none" stroke="#46586A" stroke-width="1.5" marker-end="url(#obS)"/>
|
||
<text x="696" y="130" text-anchor="middle" class="ob-s">到达工位</text>
|
||
<path d="M859,256 V300 H141 V262" fill="none" stroke="#2F6DB5" stroke-width="1.5" marker-end="url(#obH)"/>
|
||
<text x="500" y="292" text-anchor="middle" class="ob-c" font-weight="600" fill="#173A63">人回传 → 人事件(统一信封,06)→ 投递回任务 → 环续跑</text>
|
||
|
||
<line x1="36" y1="322" x2="964" y2="322" stroke="#ECEFF3"/>
|
||
<text x="36" y="344" class="ob-c" font-size="11"><tspan font-weight="600">三规矩:调用必附上下文 · 回传即留痕 · 完成只出自「放行通过」</tspan> —— 人不驱动过程,人被过程调用</text>
|
||
<text x="36" y="364" class="ob-s">放行卡是活动级的门;流程层的审批点是另一层裁决 —— 二者不可互相替代(03)</text>
|
||
</svg>
|
||
</div>
|
||
|
||
<ul class="tight">
|
||
<li><b>调用必附上下文(必须)</b>——每张卡自带足够的依据与快照,人无需进系统翻找即可作答;无上下文的裸调用不得发出。</li>
|
||
<li><b>回传即留痕(必须)</b>——谁、何时、答了什么、依据什么,随卡入任务记忆;人的回传天然是学习信号:补全 = 缺口标注,决策 + 理由 = 偏好样本,驳回 + 意见 = 批评信号。</li>
|
||
<li><b>完成只出自放行(必须)</b>——任务的完成只能出自放行卡的「放行通过」,并在此刻触发草稿态 → 事实态的落地(09);<b>驳回重做</b> = 按原要求重新执行,<b>驳回迭代</b> = 带意见改进现稿后再提。</li>
|
||
</ul>
|
||
<div class="callout danger"><b>放行与审批点不可互相替代:</b>放行卡是<b>活动级的门</b>——保证每份产出有人认账,撤了它,产出无主;审批点是<b>流程层的裁决</b>——保证跨任务的关键走向有第三方把关,把它塞进活动,活动就失去独立性。任务完成靠放行,节点间裁决靠审批点。</div>
|
||
|
||
<!-- ========== 06 ========== -->
|
||
<h2 class="ch"><span class="n">06</span>事件:系统向活动抛出的统一标准</h2>
|
||
<div class="ch-rule"></div>
|
||
|
||
<p class="lead">活动以<b>事件监听</b>声明它对外界的一切依赖,系统按<b>统一事件标准</b>投递。监听是接口的契约:活动只声明"听什么、听到了怎么办";挂起、恢复、路由、去重全部归系统。</p>
|
||
|
||
<h3 class="h3"><span class="n">6.1</span>事件信封与四类事件</h3>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:130px">信封字段</th><th>内容</th></tr>
|
||
<tr><td><b>事件 ID</b></td><td>全局唯一,幂等键——重复投递可去重</td></tr>
|
||
<tr><td><b>类型</b></td><td>四类之一(下表)</td></tr>
|
||
<tr><td><b>关联</b></td><td>消费目标:<b>目标类型 + 目标 ID</b>(任务 / 触发器 / 工作流 / 消息收件岗位);起因:数据对象 / 卡 ID / 定时器 ID</td></tr>
|
||
<tr><td><b>载荷</b></td><td>schema 化内容,附原件指针(如邮件原文的存档地址)</td></tr>
|
||
<tr><td><b>时间与来源</b></td><td>发生时刻 · 来源(通道 / 引擎 / 工位 / 治理台)</td></tr>
|
||
<tr><td><b>留痕指针</b></td><td>事件存储位置(先持久后投递);投递入任务后另记任务记忆指针——事件流与记忆同轴;无任务目标的事件仅有存储位</td></tr>
|
||
</table></div>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:90px">类型</th><th>内容</th><th style="width:230px">例</th></tr>
|
||
<tr><td><b>数据事件</b></td><td>任务相关数据对象的写入与变更;环外回音(邮件、人工代收)经归属解析<b>归一为数据写入</b>后,以数据事件抛出——<b>活动认数据,不认通道</b>;数据事件只由<b>正式版写入</b>产生(系统写与放行写,09),草稿写不抛事件</td><td>客户回信已写入台账,附原件指针</td></tr>
|
||
<tr><td><b>时间事件</b></td><td>定时器到点:监听时限、约定时点、周期检查</td><td>等待第 3 天未回,时限事件</td></tr>
|
||
<tr><td><b>人事件</b></td><td>人类工具卡的回传到达(05),与负责人的<b>主动输入</b>——对话流自由输入:写入任务记忆,loop 作为观察,不驱动 flow 步</td><td>放行卡回传:驳回迭代 + 意见;负责人留言「客户来电改期」</td></tr>
|
||
<tr><td><b>控制事件</b></td><td>治理台与负责人的指令,三种语义:<b>暂停</b> = 可恢复冻结(监听与时限停摆)· <b>叫停</b> = 负责人紧急中断(挂起并记最重档纠正,恢复归负责人)· <b>终止</b> = 不可恢复关闭——工作流终止级联:在途任务终止、待答卡与征答消息作废、审批点撤卡</td><td>负责人叫停</td></tr>
|
||
</table></div>
|
||
|
||
<h3 class="h3"><span class="n">6.2</span>归属解析:入站到事件的规则</h3>
|
||
<p>通道入站(邮件、IM)到统一事件流之间,由<b>归属解析</b>完成路由。解析依据是通道实例配置中的<b>归属键提取规则</b>(声明式):会话 / 线程 ID、往来地址、正文模式(如单号正则)。匹配次序确定、逐级短路:</p>
|
||
<ul class="tight">
|
||
<li><b>① 线程精确匹配</b>——会话 / 线程 ID 精确匹配某在途任务的出站记录,即有主。</li>
|
||
<li><b>② 关联键匹配监听</b>——提取的关联键命中某任务监听的过滤条件,即有主。</li>
|
||
<li><b>③ 地址 + 时间窗</b>——往来地址在时间窗内匹配<b>唯一</b>在途任务,即有主;命中多个即无主。</li>
|
||
</ul>
|
||
<p class="small">提取失败或歧义一律降级为无主——<b>宁交人,不错投</b>;无主入站的"相关人" = 通道实例配置的<b>默认认领岗位</b>(治理台 · 系统管理)。有主入站归一为数据写入——写入目标由通道实例配置的<b>载荷映射</b>给定(提取字段 → 域.对象.字段,与边映射同一形式),原件存档为附件对象,以数据事件抛出。<b>有主 ≠ 必须唤醒</b>:归属解析命中的任务,事件一律写入其任务数据与任务记忆(记录);是否推进由监听命中决定——零命中时仅记录,不降级为无主、不入消息兜底(它有主,只是当下无人等它;loop 在后续观察窗口内自然可见)。消息兜底只针对无主事件。</p>
|
||
|
||
<h3 class="h3"><span class="n">6.3</span>监听声明与投递语义</h3>
|
||
<p><b>监听声明</b>——活动声明监听,两种立法:<b>静态</b>(随业务模型:loop 的前提条件、flow 的步完成条件)与<b>动态</b>(运行中由 Agent 机制临场登记,如发出报价邮件后登记"等回信"监听)。每条监听 = <b>过滤条件</b>(事件类型 + 关联键,条件用 S-FEEL,03)+ <b>处理语义</b>(loop:事件即观察;flow:事件即步的完成条件)+ <b>时限</b>(必配:到期抛时间事件——无死等,无来源又无时限的监听安装时拒绝)。</p>
|
||
|
||
<div class="fig">
|
||
<div class="figcap"><span>FIG-03 · 一条事件流,三级消费</span><span>事件源 → 归属解析与信封 → 任务监听 / 触发器 / 消息</span></div>
|
||
<svg viewBox="0 0 1000 430" role="img" aria-label="统一事件流:五类事件源经归属解析装入统一信封并持久化,依次由任务监听、触发器、消息三级消费">
|
||
<style>
|
||
.oc-t{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10.5px;font-weight:600;fill:#1F2933}
|
||
.oc-c{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10px;fill:#3A4452}
|
||
.oc-m{font-family:'SF Mono',Menlo,monospace;font-size:10px;font-weight:600;letter-spacing:.12em;fill:#6A7686}
|
||
.oc-s{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:9px;fill:#6A7686}
|
||
</style>
|
||
<defs>
|
||
<marker id="ocS" 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>
|
||
</defs>
|
||
|
||
<text x="36" y="28" class="oc-m">事件源</text>
|
||
<rect x="36" y="40" width="168" height="44" rx="7" fill="#FFFFFF" stroke="#C6D0DA" stroke-width="1.2"/>
|
||
<text x="120" y="58" text-anchor="middle" class="oc-t">通道入站</text>
|
||
<text x="120" y="76" text-anchor="middle" class="oc-s">邮件 · IM 回音</text>
|
||
<rect x="222" y="40" width="168" height="44" rx="7" fill="#FFFFFF" stroke="#C6D0DA" stroke-width="1.2"/>
|
||
<text x="306" y="58" text-anchor="middle" class="oc-t">定时器到点</text>
|
||
<text x="306" y="76" text-anchor="middle" class="oc-s">监听时限 · 周期</text>
|
||
<rect x="408" y="40" width="168" height="44" rx="7" fill="#FFFFFF" stroke="#C6D0DA" stroke-width="1.2"/>
|
||
<text x="492" y="58" text-anchor="middle" class="oc-t">人类工具卡回传</text>
|
||
<text x="492" y="76" text-anchor="middle" class="oc-s">四卡作答</text>
|
||
<rect x="594" y="40" width="168" height="44" rx="7" fill="#FFFFFF" stroke="#C6D0DA" stroke-width="1.2"/>
|
||
<text x="678" y="58" text-anchor="middle" class="oc-t">台账数据写入</text>
|
||
<text x="678" y="76" text-anchor="middle" class="oc-s">含人工代收回填</text>
|
||
<rect x="780" y="40" width="168" height="44" rx="7" fill="#FFFFFF" stroke="#C6D0DA" stroke-width="1.2"/>
|
||
<text x="864" y="58" text-anchor="middle" class="oc-t">治理台指令</text>
|
||
<text x="864" y="76" text-anchor="middle" class="oc-s">叫停 · 暂停 · 终止</text>
|
||
<path d="M120,84 V108" fill="none" stroke="#46586A" stroke-width="1.3" marker-end="url(#ocS)"/>
|
||
<path d="M306,84 V108" fill="none" stroke="#46586A" stroke-width="1.3" marker-end="url(#ocS)"/>
|
||
<path d="M492,84 V108" fill="none" stroke="#46586A" stroke-width="1.3" marker-end="url(#ocS)"/>
|
||
<path d="M678,84 V108" fill="none" stroke="#46586A" stroke-width="1.3" marker-end="url(#ocS)"/>
|
||
<path d="M864,84 V108" fill="none" stroke="#46586A" stroke-width="1.3" marker-end="url(#ocS)"/>
|
||
|
||
<rect x="36" y="112" width="928" height="58" rx="8" fill="#0F1420"/>
|
||
<text x="500" y="136" text-anchor="middle" font-family="'SF Mono',Menlo,monospace" font-size="10.5" fill="#DCE3F0">归属解析 → 事件信封:ID(幂等键) · 类型(数据 / 时间 / 人 / 控制) · 关联 · 载荷 + 原件指针 · 时间与来源 · 留痕指针</text>
|
||
<text x="500" y="156" text-anchor="middle" font-family="'SF Mono',Menlo,monospace" font-size="9.5" fill="#98A2B0">先持久后投递 —— 事件先落存储与任务记忆,再投消费方 · 同任务按序 · 至少一次 + 幂等(去重由基座代劳)</text>
|
||
|
||
<text x="500" y="192" text-anchor="middle" class="oc-s">监听与触发独立判定 · 皆未命中 → 消息兜底</text>
|
||
<path d="M176,170 V204" fill="none" stroke="#46586A" stroke-width="1.3" marker-end="url(#ocS)"/>
|
||
<path d="M500,170 V204" fill="none" stroke="#46586A" stroke-width="1.3" marker-end="url(#ocS)"/>
|
||
<path d="M824,170 V204" fill="none" stroke="#46586A" stroke-width="1.3" marker-end="url(#ocS)"/>
|
||
|
||
<rect x="36" y="208" width="280" height="118" rx="9" fill="#F7F0E0" stroke="#B07D2B" stroke-width="1.4"/>
|
||
<text x="52" y="232" class="oc-t" fill="#8A5F1C">① 任务监听 —— 推进旧单</text>
|
||
<text x="52" y="256" class="oc-s">过滤:类型 + 关联键 · 时限必配</text>
|
||
<text x="52" y="276" class="oc-s">loop:事件即观察</text>
|
||
<text x="52" y="296" class="oc-s">flow:事件即步的完成条件</text>
|
||
<text x="52" y="314" class="oc-s">投递到任务,环续跑</text>
|
||
<rect x="360" y="208" width="280" height="118" rx="9" fill="#F0F4FF" stroke="#245BDB" stroke-width="1.4"/>
|
||
<text x="376" y="232" class="oc-t" fill="#245BDB">② 触发器 —— 开新单</text>
|
||
<text x="376" y="256" class="oc-s">流程层的系统级事件监听</text>
|
||
<text x="376" y="276" class="oc-s">命中起单规则 → 经调用接口</text>
|
||
<text x="376" y="296" class="oc-s">调起一单工作流</text>
|
||
<text x="376" y="314" class="oc-s">同一事件流,不另设通路</text>
|
||
<rect x="684" y="208" width="280" height="118" rx="9" fill="#F7F9FB" stroke="#9AA7B6" stroke-width="1.4"/>
|
||
<text x="700" y="232" class="oc-t" fill="#46586A">③ 消息 —— 无主交人</text>
|
||
<text x="700" y="256" class="oc-s">落相关人的消息要素(02)</text>
|
||
<text x="700" y="276" class="oc-s">人工认领 / 代收回填</text>
|
||
<text x="700" y="296" class="oc-s">代收走同一数据写入口</text>
|
||
<text x="700" y="314" class="oc-s">回填即数据事件,再入流</text>
|
||
|
||
<line x1="36" y1="352" x2="964" y2="352" stroke="#ECEFF3"/>
|
||
<text x="36" y="374" class="oc-c" font-size="11"><tspan font-weight="600">一条事件流,三级消费</tspan> —— 活动认数据,不认通道:环外回音先归一为数据写入,再以数据事件抛给任务</text>
|
||
<text x="36" y="394" class="oc-s">处理有回执:失败重投,超限入死信 → 系统通知送达消息要素与治理台 · 悬空监听安装时拒绝 —— 无死等</text>
|
||
</svg>
|
||
</div>
|
||
|
||
<p><b>投递语义</b>——系统侧五条承诺:</p>
|
||
<ul class="tight">
|
||
<li><b>先持久后投递</b>——事件落存储与任务记忆,再投活动;任务挂起不丢事件,恢复即补投。</li>
|
||
<li><b>同任务按序</b>——同一任务的事件按发生序投递。</li>
|
||
<li><b>至少一次 + 幂等</b>——投递保证至少一次;活动侧按事件 ID 去重由基座代劳,重复投递无副作用。</li>
|
||
<li><b>处理有回执</b>——处理完成落痕;失败重投,超限入死信——死信以系统通知送达相关人的消息要素(02)与治理台 · 任务管理。</li>
|
||
<li><b>扇出与幂等</b>——同一事件可命中多个任务监听:系统为每个命中任务生成一份<b>独立投递</b>(各带投递 ID,信封「关联 = 任务 ID」保持单目标);同一事件对同一触发器至多起一单,以事件 ID 为幂等键。</li>
|
||
</ul>
|
||
<p>一条事件流,三级消费:<b>任务监听</b>(推进旧单)与<b>触发器</b>(起单规则,开新单)<b>相互独立判定</b>——同一事件可既推进旧单又起新单;<b>消息</b>是兜底:仅当既无监听命中亦无触发命中时,入站事件落相关人的消息要素(02,人工认领 / 代收)。触发器由此获得统一定义:<b>流程层的系统级事件监听</b>——监听同一条事件流,消费动作是"经调用接口调起流程包、生成新工作流"。</p>
|
||
|
||
<!-- ========== 07 ========== -->
|
||
<h2 class="ch"><span class="n">07</span>调用层与工具箱</h2>
|
||
<div class="ch-rule"></div>
|
||
|
||
<p class="lead"><b>系统调用、LLM 工具、人类工具以及通道在调用层。</b>调用层是一切能力的注册与授权之地;能力以工具形态、经活动基座的「工具(调用契约)」供给活动(04):</p>
|
||
<ul class="tight">
|
||
<li><b>系统调用</b>——本系统服务与外部系统的调用。ERP / CRM 等企业系统一律以外部调用方式接入——读取即快照留痕;写入即触达外部世界,须过放行,动作集中在放行时点落到事实(09)。</li>
|
||
<li><b>LLM 工具</b>——以模型能力封装的工具(抽取、翻译、生成等),与其他工具同列白名单、同受授权约束;与基座的「LLM 调用(模型)」不同物——后者驱动 Agent 机制自身的推理,LLM 工具是机制可调用的一种能力。</li>
|
||
<li><b>人类工具</b>——四种内置工具:决策、执行、补全、放行(05)。调用经卡片到达人(负责人 = 任务对话流;其他人 = 系统消息,2.1),回传异步回环;人是环内可调用的一种能力,同受授权约束——哪些活动能调人、调谁、调用预算(打扰上限),在契约与白名单;「调谁」按<b>岗位</b>声明,收件人以四策略解析(03),缺席走时限阶梯。</li>
|
||
<li><b>通道</b>——邮件、即时消息等收发通路。出站是触达世界的动作;入站经归属解析进入统一事件流(06)——有主的归一为数据事件抛给任务,无主的走触发器判定与消息兜底。</li>
|
||
</ul>
|
||
|
||
<h3 class="h3"><span class="n">7.1</span>工具三来处与工具箱</h3>
|
||
<p>调用层四类是<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>系统调用类能力的交付形态:按需开发的业务能力,是<b>独立开发的代码包</b>——经基座的<b>工具箱</b>注册进系统(11),入白名单;账号、密钥与 endpoint 配置随工具归组织;工具包规范见 7.3</td><td>先系统、后活动;活动只声明引用其调用契约</td></tr>
|
||
<tr><td><b>LLM 工具 · 人类工具</b></td><td><b>固化在系统里</b>,随系统迭代而更新;声明即用</td><td>白名单授权;模型实例与工位由治理台配置</td></tr>
|
||
<tr><td><b>纯工具</b></td><td>无外效应(计算、转换、操作自持台账),可随活动包自带</td><td>安装时注册进工具表、经运行时调用而留痕,不得内联绕过</td></tr>
|
||
</table></div>
|
||
<div class="callout brand"><b>数据可以自生长,权力不可以自生长。</b>台账凭 schema 声明由宿主物化,随活动进来即可"长"出来——安全,因为声明不带能力;功能工具承载权力(授权、密钥、触达世界),永远先系统、后活动。开发时序以<b>契约先行</b>解耦:缺什么工具先定调用契约,活动对着契约开发(本地 mock),平台照契约实现注册,安装静态审收口——缺口只阻塞上架,不阻塞开发。</div>
|
||
|
||
<h3 class="h3"><span class="n">7.2</span>外部系统:事实源在外</h3>
|
||
<p>ERP / CRM 等存量系统:<b>事实源永远在外</b>,以<b>外部系统调用</b>接入——注册在工具箱与白名单上的调用接口,<b>读 = 快照留痕,写 = 过放行</b>;不做库对库同步,不搬事实源。无存量系统承载的对象,以<b>台账声明物化</b>承载,数据资产随运行沉淀——混合是常态:按对象逐个选择「调用接入」或「声明物化」,活动只依赖调用契约与共享对象目录,不依赖任何具体事实源。</p>
|
||
<p><b>权力边界在此收拢:能力在调用层(注册、白名单、授权),方法在活动内(技能)。</b>技能基于工具、在活动内定义,载方法不载权力——不能扩大任何授权,只沉淀"怎么用好"(《活动模型》)。</p>
|
||
|
||
<h3 class="h3"><span class="n">7.3</span>工具包规范</h3>
|
||
<p class="lead">一个功能工具以一个<b>工具包</b>交付:独立开发的代码包,经工具箱注册进系统。工具承载权力,约束严于活动包,三面分离:<b>契约对活动,实现对系统,凭证对治理台</b>。</p>
|
||
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:150px">构成</th><th>内容</th></tr>
|
||
<tr><td><b>调用契约</b><br><span class="small">(对活动的唯一暴露面)</span></td><td>工具名(全局唯一逻辑名)· <b>描述</b>(面向 AI 的适用说明:何时用、语义、边界)· 入参 / 出参 schema · <b>效应等级(读 / 写)</b> · 错误约定(结构化错误码 + 可重试标志)· 幂等性声明 · 超时与重试默认值</td></tr>
|
||
<tr><td><b>实现</b></td><td>server 侧执行代码;运行时受限——只可访问注册申报的连接目标,无其他环境能力</td></tr>
|
||
<tr><td><b>连接配置声明</b></td><td>endpoint / 账号 / 密钥的<b>键</b>(值不入包):注册时在治理台绑定值,可按环境绑定不同实例——与 LLM 实例的名称间接层同构</td></tr>
|
||
<tr><td><b>契约测试集</b></td><td>样例入参 → 期望出参形状;注册试运行审与回归的依据</td></tr>
|
||
</table></div>
|
||
<p class="small">四件构成合成工具包的<b>包清单(manifest)</b>,与活动包清单同构(11.1);注册两审:静态审读清单,试运行审验代码。</p>
|
||
|
||
<p><b>效应等级决定运行时待遇:</b></p>
|
||
<ul class="tight">
|
||
<li><b>读类</b>——无外部效应;过程中可自由调用(白名单内),读取即快照留痕。</li>
|
||
<li><b>写类</b>——触达外部系统与世界;<b>过程中登记为动作意向</b>(入参冻结,存入草稿态),放行后由系统执行落地,执行结果回填任务记忆;契约显式预授权的写类动作可在过程中即时执行,预授权必须逐项列举。</li>
|
||
<li><b>落地预检(必须)</b>——<b>检查可落地,才允许放行</b>:发放行卡前,系统对全部动作意向执行预检——入参 schema 校验、工具可用(未停用)与授权有效、连接可达、目标预校验(工具契约含 validate 能力时)、<b>数据冲突检查</b>(草稿层所改字段与正式版的并发冲突:他单已改同一字段即预检不过,打回环内基于新正式版重拟);<b>预检全过才发放行卡</b>,卡面呈现的即已验证的动作清单;预检不过的意向打回环内修正,不发卡。放行通过即刻执行(附幂等键);预检与执行之间世界突变导致的残余失败,按工具契约重试,超限转「落地受阻」——<b>落地受阻是任务的运行态,不是终态</b>:处置后仍收敛于契约的终态名录(重试成功 → 放行完成;放弃非必交付项后收敛;叫停走控制事件);失败动作生成<b>落地失败卡</b>送负责人(重试 / 线下完成后回填 / 放弃非必交付项 / 叫停)——落地失败卡是<b>执行卡的系统预置形态</b>(作业指导 = 失败动作与原因,回填 = 处置选择),不构成第五种卡;已成动作留存不回滚;<b>输出口在落地收敛前不发射</b>——下游只见落地完成的任务。</li>
|
||
</ul>
|
||
|
||
<ul class="tight">
|
||
<li><b>注册两审(必须)</b>——静态审(签名、无动态执行、调用契约 schema 校验、效应等级核验、连接配置声明齐备)+ 试运行审(以 mock 绑定跑契约测试集,全过方可上架)。</li>
|
||
<li><b>契约演进只增不破坏(必须)</b>——出参只增字段;入参新增字段必为可选;破坏性变更 = 新工具名。版本并存,活动按声明的版本约束解析。</li>
|
||
<li><b>凭证隔离(必须)</b>——密钥与 endpoint 值只存治理台(工具管理),不入包、不入活动、不入留痕明文。</li>
|
||
<li><b>停用与下线</b>——有活动声明引用的工具不得删除;可停用——停用后调用返回结构化错误,活动按失败路径处理。</li>
|
||
<li><b>调用运行时</b>——一切调用经调用契约,入参快照、出参、时延与错误自动留痕入任务记忆;重试由系统按契约执行,写类动作执行时附幂等键;活动 Harness 对超时与重试只可收紧、不可放宽。</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>任务记忆</b>),与这类事历来是什么样(<b>活动记忆</b>)。框架站在环内一切调用的必经之路上——记录不靠自觉,靠位置。</p>
|
||
|
||
<h3 class="h3"><span class="n">8.1</span>任务记忆:一单一本</h3>
|
||
<p><b>任务记忆 = 会话历史:消息历史 + 引擎事件流</b>,同轴合流、按时间全序——Agent 机制的观察、思考、动作、结果逐条原生,引擎的流转、投递、门与卡裁决逐条结构化。四条性质(必须):</p>
|
||
<ul class="tight">
|
||
<li><b>只追加</b>——原始条目不得修改;信号可迟到,以后续条目回链原步(纠正、验收意见、客户回复都是迟到信号)。</li>
|
||
<li><b>信封盖戳</b>——每条盖版本信封:契约 / 业务模型 / 技能 / 模型版本 + 治理标记——行为可归因、历史可回放的前提。</li>
|
||
<li><b>治理先行</b>——脱敏、权限、保留期、可学习标记在留痕时刻打上;不合规的记录不得进入学习队列。</li>
|
||
<li><b>归侧</b>——每条按动作类型自动打四侧标签:机器产出 / 人产出 / 人裁决 / 世界等待——度量的口径来源,零埋点。</li>
|
||
</ul>
|
||
<p>职能四:<b>续跑</b>(挂起恢复时由此重建上下文——记忆在,环可断可续)、<b>审计</b>(发生了什么)、<b>回放</b>(换个办法,这单会不会成)、<b>蒸馏源</b>(活动记忆的唯一原料)。生命周期:随单生、只追加长、终态封卷归档(基座 · 记忆,11)。</p>
|
||
<p><b>基座接口最小:</b>任务记忆由框架自动记录,活动侧唯一可配置项是<b>窗口大小</b>——每次 LLM 调用加载多少轮会话历史;窗口之外的历史不进上下文,但完整在库——续跑、审计与回放永远对全量记录进行。</p>
|
||
|
||
<p><b>任务日志:任务记忆的两级投影。</b>日志不是另一份记录——做事与留痕是同一个动作,不存在补写日志;任务日志由任务记忆按需生成:</p>
|
||
<ul class="tight">
|
||
<li><b>结构化日志(零 LLM)</b>——以引擎事件流为骨架(启动 · 工具调用 · 卡发出与回传 · 数据写入 · 动作意向 · 放行 · 终态),按事件类型筛选、模板措辞;每条自带谁 · 何时 · 依据 · 留痕指针;任何时刻可重算,口径与源恒一致;归侧标签使其天然分栏——机器做的 / 人做的 / 人裁的 / 在等谁。</li>
|
||
<li><b>叙述性小结(LLM,可选)</b>——阶段小结与终态封卷摘要;叙述是视图不是事实,每句可溯回原始条目,不入事实库。</li>
|
||
</ul>
|
||
<p class="small">消费方:工作台「汇报」按日 / 周 / 月 / 年聚合各任务日志(02);放行卡与审批点的过程摘要取自任务日志;治理台 · 任务管理可查看任意任务的任务日志(02);对话流时间线与日志同源、不同筛选。治理约束:<b>投影不得比源暴露更多</b>——日志继承任务记忆的治理标记,按读者权限裁剪生成。</p>
|
||
|
||
<h3 class="h3"><span class="n">8.2</span>活动记忆:一类一本,为优化业务模型而设计</h3>
|
||
<p>活动记忆是关于<b>这个活动(事类)</b>的持久事实,跨全部任务实例累积——<b>结构化记忆</b>:基座只提供<b>存与取</b>(条目的写入与检索),不解释语义;结构归活动侧,标准由《活动模型》规定。<b>结构为迭代而设计——每类条目对准一个模型作用面</b>:</p>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:90px">层</th><th>存什么</th><th style="width:280px">优化谁</th></tr>
|
||
<tr><td><b>事实层</b></td><td>环境与对手方的稳定事实:端点脾性、对手方节奏(客户均值 3 天回信)、术语与实体档案</td><td>校准监听时限、判断阈值、DMN 输入项</td></tr>
|
||
<tr><td><b>模式层</b></td><td>路径统计:动作启用频次与共现序列、阶段耗时分布、技能组合效果</td><td>候选业务模型结构增量(阶段重组、新前提、新里程碑)</td></tr>
|
||
<tr><td><b>裁决层</b></td><td>纠正沉淀:每次驳回(重做 / 迭代)、叫停与裁决理由,归纳为一般化陈述</td><td>候选新前提条件、收紧验收判据、DMN 新规则行</td></tr>
|
||
<tr><td><b>例外层</b></td><td>反例与禁忌:已知失败形态、边界案例、「此处留人」标记</td><td>规则适用边界、负向条件、技能适用描述修正</td></tr>
|
||
</table></div>
|
||
<ul class="tight">
|
||
<li><b>条目三件套(必须)</b>——归纳陈述 + 证据链(指回任务记忆的具体片段,可回放)+ 候选增量(可选:落到业务模型 / 技能的具体 diff,状态:候选 / 回放中 / 已放行 / 已否决);无证据链的条目不得入库。</li>
|
||
<li><b>写入 = 蒸馏(必须)</b>——只经蒸馏钩子(终态封卷、里程碑达成时)从任务记忆归纳;人可修剪;不设直写旁路。蒸馏钩子由<b>封卷流水线</b>(系统侧运行时)在任务终态后执行:模型用系统用途绑定实例(02),失败重试与死信同统一事件标准(06),产物默认候选。</li>
|
||
<li><b>读出 = 装载</b>——任务启动时按需选摘入 Agent 机制的上下文(渐进披露);流程引擎不读活动记忆(引擎零业务)。</li>
|
||
</ul>
|
||
<div class="callout warn"><b>记忆不载权力:</b>活动记忆对行为只有参考力,没有强制力;强制力只有一条路——候选增量经回放与人放行<b>进入业务模型本身</b>(11 进化治理)。记住的影响裁量,放行的才约束行为——<b>记忆的终点不是记住,是成为模型</b>。</div>
|
||
|
||
<h3 class="h3"><span class="n">8.3</span>度量:口径挂归侧与事件流</h3>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:110px">指标</th><th>定义</th><th style="width:270px">读法</th></tr>
|
||
<tr><td><b>自主率</b></td><td>机器产出 ÷(机器产出 + 人产出);裁决与等待不进分母</td><td><b>第一指标</b>:AI 自主完成工作的比例</td></tr>
|
||
<tr><td><b>纠正率</b></td><td>按<b>提交批次</b>计:每次放行提交 = 一个产出批次;驳回重做 / 驳回迭代 / 叫停 / 裁决推翻记该批纠正;纠正率 = 被纠正批次 ÷ 提交批次</td><td><b>第二指标</b>:自主的质;与自主率成对读——单看任一都会被优化坏</td></tr>
|
||
<tr><td><b>有效自主率</b></td><td>自主率 ×(1 − 纠正率)</td><td>「AI 越多越确定」的可测判据</td></tr>
|
||
<tr><td><b>打扰率</b></td><td>每单任务调用人类工具的次数(四卡合计)</td><td>应随资产成熟而下降;人环的带宽成本</td></tr>
|
||
<tr><td><b>断点率</b></td><td>loop 中因"当下可为与目标所需交集为空"而调人或立监听的频次占比</td><td>断点聚类是业务模型迭代的首要线索</td></tr>
|
||
<tr><td><b>DMN 覆盖率</b></td><td>确定性求值(DMN 与机检)占判断次数的比例</td><td>「临场搬进确定」的进度表</td></tr>
|
||
<tr><td><b>单位成本</b></td><td>总消耗(token / 时长 / 调人)÷ 放行通过的任务数</td><td>环是否真在产出</td></tr>
|
||
<tr><td><b>终态分布</b></td><td>五个终态的占比(名录见 4.3)</td><td>非完成终态偏高 = 契约或资产有缺陷</td></tr>
|
||
</table></div>
|
||
<p class="small"><b>计量单位:归侧条目。</b>产出以任务记忆的归侧条目计(机器产出 / 人产出各按其条目数);条目粒度随活动而异但活动内恒定——指标的主用途是<b>同一活动的纵向趋势</b>(口径自洽);跨活动横比仅在同业务分类内作参考,不作考核。口径全部挂在归侧标签与事件流上——零埋点,统计即查询;指标异动是进化的扳机:纠正聚类指向活动记忆的裁决层,断点聚类指向业务模型的结构层,蒸馏候选增量走治理管线(11)。</p>
|
||
|
||
<!-- ========== 09 ========== -->
|
||
<h2 class="ch"><span class="n">09</span>运行拓扑:web + server</h2>
|
||
<div class="ch-rule"></div>
|
||
|
||
<p class="lead"><b>系统是 web + server。</b>分界原则一句话:<b>过程在后端,呈现在 web;放行是草稿态与事实态之间的门。</b></p>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:100px">侧</th><th>承载</th></tr>
|
||
<tr><td><b>web 侧</b></td><td>呈现与输入面:工作台五要素的呈现、对话流(卡片输入,唯一回环入口)、视图区(渲染后端推送的 HTML)、治理台界面。<b>零活动代码、零过程逻辑</b></td></tr>
|
||
<tr><td><b>server 侧</b></td><td><b>活动过程集中在后端</b>——Agent 机制的推进、LLM 调用与 LLM 工具、过程草拟(活动自设的工作区)、<b>视图流控</b>(AI 以 HTML 模版组织视图、推送 web)· 流程引擎(工作流流转、审批点、网关)· 触发器与通道 · 系统调用的执行 · 基座存放</td></tr>
|
||
</table></div>
|
||
<p>活动过程集中在后端,带来两条直接性质:<b>环不依赖浏览器在线</b>——负责人关掉页面,活动照常推进,任务挂起、事件补投与断点续跑天然成立(06);<b>web 是纯呈现与输入面</b>——视图由后端流控推送,输入经对话流卡片回传,浏览器端不落过程状态。</p>
|
||
<p><b>落后端系统的动作集中在活动放行时</b>:过程产物无论在活动的工作区里怎么草拟都是草稿态,不碰台账与外部系统;放行前有<b>落地预检</b>(检查可落地才允许放行,7.3),放行一刻动作落到事实——写台账、调外部系统、提交交付物;落地收敛,输出口才发射。「箱内自由,出箱有门」的边界因此是<b>逻辑的而非物理的</b>:门立在草稿态与事实态之间(草稿 → 台账 / 外部系统),与草稿箱的具体形态无关。任务记忆与留痕随过程持续归档,不受门限。</p>
|
||
|
||
<p><b>写分三类。</b>①<b>系统写</b>——入站归一、流转记录、留痕:登记的是世界已发生的事实,不过放行门,写入正式版并即时产生数据事件;②<b>草稿写</b>——任务运行中,活动对自持域台账的写入落在<b>台账的任务级草稿层</b>(读己之写:本任务可见、正式版不可见、不产生数据事件)——过程工作区的数据形态即此草稿层;③<b>放行写</b>——放行通过,草稿层合并入正式版、外部动作意向执行(7.3),<b>此刻才产生数据事件</b>;共享域写一律走放行,契约预授权的即时写是显式列举的例外。环内推进读<b>任务视图 = 正式版 + 本任务草稿层</b>,不依赖事件;跨任务监听只认正式版事件——<b>别的任务只见你放行后的事实</b>,这是「箱内自由,出箱有门」的数据语义。</p>
|
||
|
||
<p><b>草稿持久,断点可续。</b>草稿层与动作意向持久于 server 的系统自持存储——关闭页面、断线、隔天再开都不丢;没有「保存」动作,写即持久。任务做一半的续跑由三份持久状态共同保证:<b>任务记忆</b>(会话历史,按窗口重建上下文,08)、<b>草稿层</b>(截至断点的全部过程产物与动作意向)、<b>运行时实例状态</b>(loop 的模型定位与就绪集 / flow 的步序位置,11)。过程在后端:「打开任务」只是打开呈现,不是启动过程——过程要么在跑,要么挂起在等(人 / 事件 / 恢复指令);事件到达或人回传即按投递续跑(06),人打开工作台看到的永远是当前状态的投影。</p>
|
||
|
||
<!-- ========== 10 ========== -->
|
||
<h2 class="ch"><span class="n">10</span>活动与系统的边界</h2>
|
||
<div class="ch-rule"></div>
|
||
|
||
<p class="lead">两条轴把系统切成四象限:<b>物理轴</b>(web / server,09)与<b>归属轴</b>(系统 / 活动)。边界清楚,双方才能各自迭代:系统不为业务改一行,活动不越笼子半步。</p>
|
||
|
||
<div class="fig">
|
||
<div class="figcap"><span>FIG-04 · 边界四象限</span><span>物理线 × 归属线 · 交汇处是放行门</span></div>
|
||
<svg viewBox="0 0 1000 480" role="img" aria-label="边界四象限:web×系统为界面本体,web×活动为内容投影无代码,server×系统为运行时笼子,server×活动为Agent机制内容物;物理线与归属线交汇处是放行门">
|
||
<style>
|
||
.od-t{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:11px;font-weight:600;fill:#1F2933}
|
||
.od-m{font-family:'SF Mono',Menlo,monospace;font-size:10px;font-weight:600;letter-spacing:.12em;fill:#6A7686}
|
||
.od-c{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:10px;fill:#3A4452}
|
||
.od-s{font-family:'PingFang SC','Noto Sans SC',sans-serif;font-size:9.5px;fill:#6A7686}
|
||
</style>
|
||
<defs>
|
||
<marker id="odH" markerWidth="9" markerHeight="9" refX="7.5" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#173A63"/></marker>
|
||
</defs>
|
||
|
||
<text x="302" y="36" text-anchor="middle" class="od-m">系统(平台本体)</text>
|
||
<text x="761" y="36" text-anchor="middle" class="od-m" fill="#8A5F1C">活动(外装件)</text>
|
||
<text x="36" y="132" class="od-m" fill="#245BDB">web 侧</text>
|
||
<text x="36" y="334" class="od-m" fill="#46586A">server 侧</text>
|
||
|
||
<rect x="100" y="48" width="404" height="158" rx="10" fill="#F0F4FF" stroke="#C9D8F8" stroke-width="1.4"/>
|
||
<text x="116" y="74" class="od-t" fill="#245BDB">界面本体 · 系统供给</text>
|
||
<text x="116" y="100" class="od-s">工作台与治理台界面 · 五要素呈现</text>
|
||
<text x="116" y="122" class="od-s">对话流卡片渲染 · 唯一回环输入口</text>
|
||
<text x="116" y="144" class="od-s">视图区容器(净化渲染)</text>
|
||
<text x="116" y="166" class="od-s">零业务逻辑</text>
|
||
<rect x="558" y="48" width="406" height="158" rx="10" fill="#FCFAF3" stroke="#B07D2B" stroke-width="1.3" stroke-dasharray="5 3"/>
|
||
<text x="574" y="74" class="od-t" fill="#8A5F1C">内容投影 · 无代码</text>
|
||
<text x="574" y="100" class="od-s">视图 HTML —— 后端流控推送,容器渲染</text>
|
||
<text x="574" y="122" class="od-s">卡片内容 —— schema 渲染</text>
|
||
<text x="574" y="144" class="od-s">浏览器不装载活动代码</text>
|
||
<text x="574" y="166" class="od-s">不落过程状态</text>
|
||
|
||
<text x="532" y="220" text-anchor="middle" class="od-s">物理线 · web / server —— 跨线只有:视图与卡片下行 · 输入回传上行</text>
|
||
<line x1="100" y1="228" x2="964" y2="228" stroke="#98A2B0" stroke-width="1.2" stroke-dasharray="6 4"/>
|
||
|
||
<rect x="100" y="242" width="404" height="174" rx="10" fill="#F7F9FB" stroke="#46586A" stroke-width="1.4"/>
|
||
<text x="116" y="268" class="od-t">系统运行时 · 笼子</text>
|
||
<text x="116" y="294" class="od-s">流程引擎(流转 · 审批点 · 网关)</text>
|
||
<text x="116" y="316" class="od-s">活动基座六件 · 统一事件标准与投递</text>
|
||
<text x="116" y="338" class="od-s">调用层四类 · 基座六项存放</text>
|
||
<text x="116" y="360" class="od-s">放行门(草稿态 → 事实态)</text>
|
||
<text x="116" y="382" class="od-s">治理台九功能的作用面</text>
|
||
<rect x="558" y="242" width="406" height="174" rx="10" fill="#F7F0E0" stroke="#B07D2B" stroke-width="1.4"/>
|
||
<text x="574" y="268" class="od-t" fill="#8A5F1C">Agent 机制的内容物 · 跑在基座上</text>
|
||
<text x="574" y="294" class="od-s">业务模型(CMMN + DMN / 步序声明)</text>
|
||
<text x="574" y="316" class="od-s">交互内容 · 技能清单 · Harness</text>
|
||
<text x="574" y="338" class="od-s">监听声明 · 过程工作区(自设)</text>
|
||
<text x="574" y="360" class="od-s">纯工具 · 台账 schema · 蒸馏钩子</text>
|
||
<text x="574" y="382" class="od-s">活动代码无环境能力</text>
|
||
|
||
<line x1="531" y1="48" x2="531" y2="416" stroke="#98A2B0" stroke-width="1.2" stroke-dasharray="6 4"/>
|
||
<text x="531" y="306" text-anchor="middle" class="od-s" font-weight="600" fill="#173A63">放行门</text>
|
||
<rect x="523" y="314" width="16" height="32" rx="3" fill="#173A63"/>
|
||
<path d="M558,330 H545" fill="none" stroke="#173A63" stroke-width="1.8"/>
|
||
<path d="M517,330 H504" fill="none" stroke="#173A63" stroke-width="1.8" marker-end="url(#odH)"/>
|
||
|
||
<line x1="36" y1="444" x2="964" y2="444" stroke="#ECEFF3"/>
|
||
<text x="36" y="466" class="od-c" font-size="11"><tspan font-weight="600">两线一门:物理线管过程与呈现,归属线管内容与笼子;交汇处是放行门</tspan> —— 下游与他任务只见过门的事实,不见半成品</text>
|
||
</svg>
|
||
</div>
|
||
|
||
<ul class="tight">
|
||
<li><b>物理线(web / server)</b>——跨线只有两种流量:下行的视图与卡片内容(HTML + schema 数据),上行的对话流输入回传。除此之外什么都不过线,前端零过程状态。</li>
|
||
<li><b>归属线(系统 / 活动)</b>——在后端,这条线就是<b>活动基座六件的接口</b>:活动只见六件,能力一律经调用契约注入;在前端,这条线是<b>容器边界</b>:系统渲染活动的内容,不装载活动的代码。</li>
|
||
<li><b>交汇处 = 放行门</b>——草稿态(活动过程)到事实态(台账与外部系统)的唯一通道;门归系统,启门归人。</li>
|
||
</ul>
|
||
|
||
<h3 class="h3"><span class="n">10.1</span>系统供给 vs 活动定义</h3>
|
||
<div class="tbl"><table>
|
||
<tr><th>系统供给(笼子,本卷)</th><th>活动定义(内容,《活动模型》)</th></tr>
|
||
<tr><td>活动基座六件:契约格式 · 交互结构(对话流 + 视图区容器)· 记忆系统 · 数据(「数据域.数据对象.字段」三级寻址 + 通用事务性接口,安装时依声明自生长)· 工具调用契约 · LLM 调用(04)</td><td>契约内容(七件):输入(data + message)/ 输出口(必发 / 选择)/ 必交付物 / 验收判据(分级标注)/ 禁区 / 授权边界 / 资源声明(4.1)</td></tr>
|
||
<tr><td>人类工具四卡的模式与回传协议(05)</td><td>范式选择:loop 或 flow(04)</td></tr>
|
||
<tr><td>统一事件标准:信封 · 四类事件 · 归属解析 · 投递五诺(06)</td><td>业务模型:CMMN + DMN 或步序声明(04)</td></tr>
|
||
<tr><td>调用层四类:系统调用 · LLM 工具 · 人类工具 · 通道;白名单与授权;工具箱(07)</td><td>交互内容:视图模版 · 卡内容 schema · 汇报组织(04 / 09)</td></tr>
|
||
<tr><td>放行门:草稿态 → 事实态的落地时机与协议(09)</td><td>技能清单(基于工具,载方法不载权力)与监听声明(静态 + 动态,时限必配)(06 / 07)</td></tr>
|
||
<tr><td>流程层(流程包 / 工作流 · 审批点 · 网关 · 触发器)· 预算执行器(环外强制,04)</td><td>Harness 参数申报:停止条件 · 预算 · 时限 · 恢复——执行归系统(04)</td></tr>
|
||
<tr><td>基座六项存放 · 治理台九功能 · web 呈现容器(11 / 02 / 09)</td><td>过程工作区(自设)· 纯工具 · 台账 schema(声明物化)· 蒸馏钩子(04 / 08)</td></tr>
|
||
</table></div>
|
||
<p class="small">本表与《活动模型》0.2 镜像同表(行数、行序、措辞一一对应,括号内章号各随本卷)——左列是系统的承诺,右列是活动的申报;边界线即活动基座六件的接口。</p>
|
||
|
||
<!-- ========== 11 ========== -->
|
||
<h2 class="ch"><span class="n">11</span>基座与治理</h2>
|
||
<div class="ch-rule"></div>
|
||
|
||
<p class="lead"><b>基座 = 数据、台账、记忆、工具箱、活动库、流程包。</b>基座是存放层,只存事实、记录、能力与工件,零业务逻辑——与活动基座(04)不同物:活动基座是运行时的通用模式(宿主),本章基座是存放(库房)。</p>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:110px">构件</th><th>内容</th></tr>
|
||
<tr><td><b>数据</b></td><td>主数据:员工、岗位、权限、共享对象目录</td></tr>
|
||
<tr><td><b>台账</b></td><td>活动声明的业务数据表与台账:schema 声明、宿主物化、统一治理(脱敏、保留期、权限)</td></tr>
|
||
<tr><td><b>记忆</b></td><td>记忆系统的存放:任务记忆的归档库(单单封卷)与活动记忆库(跨单持久)(08)</td></tr>
|
||
<tr><td><b>工具箱</b></td><td>功能工具之库,<b>独立的开发与注册入口</b>:工具是独立开发的代码包,由此注册进调用层、入白名单;账号、密钥与 endpoint 配置随工具管理,版本并存;活动以调用契约引用</td></tr>
|
||
<tr><td><b>活动库</b></td><td>已安装活动之库,<b>独立的安装与卸载入口</b>:活动包(系统外开发,含业务模型与技能初始版)由此进出,版本并存;库内按<b>业务分类(一级,组织自定)× 活动类型(标准 / 案例)</b>两维管理,两维平级、相互独立;每活动两条版本序列:<b>包版本 × 资产版本</b>(11.3);编排层以声明引用库中活动</td></tr>
|
||
<tr><td><b>流程包</b></td><td>治理台在系统内编排的结构定义,版本化存放;<b>工作流 = 流程包的运行时实例</b></td></tr>
|
||
</table></div>
|
||
<p>一切运行都能在基座找到出处:其事实在数据与台账,其记录在记忆,其能力在工具箱,其定义在活动库与流程包。</p>
|
||
|
||
<p><b>持久层两分:系统自持 × 活动自生长。</b>基座的一切持久存储按归属分两类:</p>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:110px">归属</th><th>存什么</th><th style="width:300px">schema 谁定 · 怎么变</th></tr>
|
||
<tr><td><b>系统自持</b></td><td>主数据 · 共享对象目录 · 记忆存放(任务记忆归档库、活动记忆库)· 事件存储(统一事件流,"先持久后投递"的底座,06)· 运行时实例(工作流与任务的状态与投影)· <b>触发器配置</b>(调用工作流的时机规则,独立于流程包)· 工具箱注册表(工具、白名单、密钥与 endpoint)· 活动库与流程包(定义与版本)</td><td>系统 schema,随系统版本迭代、系统自带迁移;活动不可写结构,只经接口读写被允许的内容</td></tr>
|
||
<tr><td><b>活动自生长</b></td><td>业务台账与数据表:活动以「数据域.数据对象.字段」声明</td><td>使用声明的<b>最大化合并</b>,<b>只增不破坏</b>(版本升级声明多了就长、少了不缩,无迁移);数据随事类不随包版本,在途照旧</td></tr>
|
||
</table></div>
|
||
<p class="small">两条补充口径:<b>共享对象 = 共享域的台账</b>,不是第三类外装件——各活动声明各自<b>要用</b>的字段,对象 schema 按最大化合并自生长(首个声明创建、后续声明并入);目录只是数据管理的视图,写授权按域.对象在契约申报、白名单核准——<b>箱只有两个(工具箱、活动库),数据不设箱、数据靠域</b>;<b>过程草稿</b>(工作区,即台账的任务级草稿层与动作意向,09)是任务范围的暂存——持久于系统自持存储(断线不丢稿,写即持久)但<b>非事实</b>:放行前不落台账正式版与外部系统,放行时合并落地,随任务终态封卷处理。</p>
|
||
|
||
<h3 class="h3"><span class="n">11.1</span>开发装配流:编排 → 声明 → 编译 → 导入 → 装配</h3>
|
||
<p><b>工作流编排先于活动开发</b>——编排工作流的过程,就是定义活动契约的过程。闭环五步:</p>
|
||
<ul class="tight">
|
||
<li><b>1 · 编排定契约</b>——治理台画工作流图(五要素编排,03):节点的输入输出、依赖的工具与模型随图确定,各活动契约随编排成形;<b>边的载荷映射随图强制闭合</b>——必填未齐、类型冲突不得发布(03)。</li>
|
||
<li><b>2 · 导出依赖文件</b>——图画完、契约定好,导出开发该工作流活动库的<b>依赖文件(声明 + 编译选项)</b>:所有依赖的接口声明、模型声明、工具声明、输入输出声明。</li>
|
||
<li><b>3 · 基于声明开发</b>——系统外对着声明开发(本地 mock);按活动的编译选项编译出该工作流的<b>多个活动库 .JS</b>(每活动一个编译产物,即活动包)。</li>
|
||
<li><b>4 · 导入与管理</b>——活动库 .JS 可批量导入也可单独导入;入系统后在活动库中按<b>业务分类(一级)× 活动类型(标准 / 案例)</b>两维分类与版本管理,版本并存。</li>
|
||
<li><b>5 · 流程包装配</b>——流程包里按<b>活动名</b>装配:一键自动安装最新版本,或手动控制使用旧版本;安装两审照常收口(11.2)。</li>
|
||
</ul>
|
||
<p class="small">契约不是活动开发者单方申报,而是<b>编排给定、开发实现、安装校核</b>——工作流图是契约的母体,三方共读同一份声明。</p>
|
||
|
||
<p><b>包清单(manifest):包的自述文件。</b>活动包 = 包清单 + 代码产物(.JS)+ 资产文件;清单机器可读,系统<b>不执行代码即知包为何物</b>——导入登记、安装静态审、编排装配读的都是清单。清单六区:</p>
|
||
<div class="tbl"><table>
|
||
<tr><th style="width:130px">区</th><th>内容</th></tr>
|
||
<tr><td><b>身份</b></td><td>活动名(全局唯一)· 包版本 · 业务分类 · 活动类型(loop / flow)· SDK 版本 · 签名与校验和</td></tr>
|
||
<tr><td><b>契约</b></td><td>契约七件,声明形式(4.1)</td></tr>
|
||
<tr><td><b>声明</b></td><td>模型声明(自定义模型名)· 工具声明(调用契约引用 + 版本约束)· 台账与共享域使用声明(域.对象.字段)· 静态监听声明 · Harness 配置</td></tr>
|
||
<tr><td><b>资产初始版</b></td><td>业务模型(CMMN + 说明书 / 步序声明)· DMN · 技能 · 视图模版 · 卡 schema</td></tr>
|
||
<tr><td><b>样例集</b></td><td>样例输入 → 期望输出口与载荷形状;首装审与回归依据(11.2)</td></tr>
|
||
<tr><td><b>代码入口</b></td><td>.JS 产物的入口与校验和</td></tr>
|
||
</table></div>
|
||
<p class="small"><b>依赖文件即清单骨架</b>——编排导出定其契约区与声明区,开发补代码与资产,编译合成完整清单;<b>静态审审清单,试运行验代码</b>。工具包同构:身份 + 调用契约 + 连接配置声明 + 契约测试集 + 代码入口(7.3)。</p>
|
||
|
||
<h3 class="h3"><span class="n">11.2</span>安装治理:两个独立入口,一套两审</h3>
|
||
<p>外装件两类、两个独立入口:<b>活动包经活动库</b>安装卸载,<b>工具包经工具箱</b>注册——都不在编排中发生。安装检查两道:<b>静态审</b>(签名、无动态执行、SDK 兼容、所需调用契约与角色齐备、schema 校验)与<b>回放审</b>。安装恒为新增、版本并存;<b>在途任务按其启动时版本跑完,切换零丢单</b>;生效 / 停用 / 卸载由治理台管理。</p>
|
||
<p><b>回放审 = 确定性断言重跑。</b>新版本对历史任务记忆重演其中<b>可确定判定</b>的部分:契约 schema 校验、业务模型静态检查、DMN 决策表对历史输入重算、监听过滤与时限求值、纯工具重跑——比对新旧版结论。<b>LLM 步不重推理</b>:以历史出入参作录制回放,仅校验历史出参对新版 schema 的兼容;人的回传与外部世界的响应一律取历史录制值;写类动作只校验动作意向的构造,不执行。判定口径:<b>「旧成不坏」是生效硬门</b>——历史成功单在新版下断言全过,方可生效;「旧败能成」(历史失败单中新版断言可拦住者)为<b>报告参考项</b>,列入重演报告、不作门槛;无历史失败单天然通过。<b>首次安装无历史:免回放审,以静态审 + 样例集替代</b>(样例集为包清单一区,11.1)。</p>
|
||
<p class="small">形态类比小程序:业务装在系统里,以活动包交付——装一个新业务 = 装一个小程序,底座不为它改一行;界面容器、身份权限、记忆与卡片全由系统供给,包内无越权代码;上架有审,上线下线随时可控,包与包互不干扰,在途的单照常办完。</p>
|
||
|
||
<h3 class="h3"><span class="n">11.3</span>进化治理:候选 → 回放 → 人放行 → 可回退</h3>
|
||
<p><b>资产与包分离版本化。</b>活动库对每个活动维护两条版本序列,各有各的门、各自单写者:<b>包版本</b>管代码、契约、交互模版、Harness 声明——变更必须系统外重编,走安装两审(11.2);<b>资产版本</b>管业务模型、DMN 与技能——活动包只携初始版(安装时播种入库),此后的资产新版由本节的进化管线在系统内产生(回放 + 人放行),不重编包、不重签名。任务装载 = 包版本 + 各资产当前生效版,全部入信封,行为可归因;包新版携带的资产初始版<b>不覆盖</b>已有更高的资产版——覆盖只能是显式的资产回退治理动作。</p>
|
||
<ul class="tight">
|
||
<li><b>候选从记忆来</b>——指标异动是扳机(08):纠正聚类、模式收敛、例外累积指向活动记忆的对应层,蒸馏出候选增量(业务模型 / 技能的 diff,带证据链)。</li>
|
||
<li><b>回放先行</b>——新版本对历史任务记忆重演:旧成功单是否仍成、旧失败单是否恰被拦住;重演报告随增量入证据包。</li>
|
||
<li><b>人放行</b>——增量 diff + 重演报告过治理台;放行即生效为新版本,下一单装载即行为改变,系统零改动。</li>
|
||
<li><b>可回退</b>——版本谱系完整,行为回退 = 版本回退;每步行为可由版本信封完全归因(08)。</li>
|
||
<li><b>治理也被治理</b>——治理台的每个动作同样留痕入事件流。</li>
|
||
</ul>
|
||
|
||
<!-- ========== 12 ========== -->
|
||
<h2 class="ch"><span class="n">12</span>系统不变量</h2>
|
||
<div class="ch-rule"></div>
|
||
<ul class="checks">
|
||
<li><b>调度分层,放行归人</b>——工作流与 flow 活动的调度权归系统,loop 活动的调度权归 AI,放行权只归人:确定交系统,临场交 AI,落地交人。</li>
|
||
<li><b>责任有主</b>——任务恰一负责人,审批点恰有审批人;责任要素只在工作台出现。</li>
|
||
<li><b>一个活动 = 一个完成一项任务的 Agent 机制</b>——Case 是 loop,SOP 是 flow;业务模型、交互内容、技能清单、Harness 与过程工作区皆随活动。</li>
|
||
<li><b>两种范式,一套执行契约</b>——活动基座六件对 loop 与 flow 完全一致;差异只在范式与业务模型形态,对流程层与交互层不可区分。</li>
|
||
<li><b>编排层五要素</b>——活动(声明)、审批、网关、触发器、流程包;触发器与流程包平级,起单归触发器,结构归流程包,活动以声明入流、不含触发逻辑;<b>流程包 → 工作流,活动 → 任务:包在库,实例在跑</b>。</li>
|
||
<li><b>做事与留痕同一动作</b>——工作台五要素是同一份过程事实的五种投影。</li>
|
||
<li><b>能力在系统,方法在活动</b>——功能工具是独立开发的代码包,经工具箱注册、白名单授权;LLM 工具与人类工具固化在系统;活动只经调用契约用工具,技能基于工具在活动内定义,载方法不载权力。<b>数据可以自生长,权力不可以自生长。</b></li>
|
||
<li><b>活动在系统外,模式在系统内</b>——外装件两类:活动包经活动库安装卸载,工具包经工具箱注册;活动基座与审批、网关、触发器的模式落在系统内;活动代码无环境能力,一切能力经调用契约注入。</li>
|
||
<li><b>过程在后端,呈现在 web</b>——活动过程(LLM 调用、LLM 工具、过程草拟、视图流控)集中在 server,web 是纯呈现与输入面;落台账与外部系统的动作集中在放行时(契约显式预授权的写类动作除外,7.3),门立在草稿态与事实态之间,记录的归档不受门限。</li>
|
||
<li><b>人类工具与 LLM 工具同列</b>——决策、执行、补全、放行四种调用层内置工具,经卡片到达人(负责人走任务对话流,其他人走系统消息);系统定卡模式,活动填内容;调用必附上下文,回传即留痕,完成只出自放行通过,驳回必附意见。</li>
|
||
<li><b>事件驱动,标准统一</b>——系统向活动只以统一信封抛四类事件(数据 / 时间 / 人 / 控制);活动以监听声明依赖,监听必配时限;投递先持久后送、同任务按序、至少一次且幂等;活动认数据,不认通道。</li>
|
||
<li><b>系统恒定,业务在外装件</b>——改业务 = 换活动包 / 工具包或改流程包,不改系统;交互、引擎与基座零业务逻辑。</li>
|
||
<li><b>安装与发布恒新增</b>——活动包、工具包与流程包皆版本并存;在途任务按其启动时版本跑完,切换零丢单。</li>
|
||
<li><b>进化必过治理</b>——候选增量必经回放先行与人放行,版本可回退;治理动作亦留痕——治理也被治理。</li>
|
||
<li><b>预检放行,落地收敛</b>——检查可落地,才允许放行:预检全过才发放行卡;放行即落地(幂等键),落地收敛输出口才发射——下游只见落地完成的任务。</li>
|
||
<li><b>写分三类,草稿持久</b>——系统写(登记世界已发生的事实,免门即抛事件)、草稿写(任务级草稿层,读己之写,不抛事件)、放行写(合并落地,此刻抛事件);草稿与动作意向写即持久,断点续跑由任务记忆、草稿层与运行时实例状态三份共同保证。</li>
|
||
<li><b>包以清单自述</b>——外装件以包清单(manifest)交付,静态审审清单、试运行验代码;资产与包分离版本化,各自单写者、各有各的门。</li>
|
||
</ul>
|
||
|
||
<footer class="ft">
|
||
<span>JCAI · 操作系统 · 系统侧规范 · V2.15 · 关联《活动模型》</span>
|
||
<span>2026-07-24</span>
|
||
</footer>
|
||
|
||
</div>
|
||
</body>
|
||
</html>
|