Files
JX-BPOS/docs/archive/操作系统.html
ChaiHaoandClaude Opus 5 259192f736 人手改的那一手真正落得下去;界面不撒谎那几处补齐
手改是**兜 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
2026-08-02 13:41:44 +08:00

905 lines
109 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>操作系统 · 系统侧规范</title>
<style>
:root{
--desk:#E8ECF2;--paper:#fff;
--ink:#1F2329;--ink-2:#3a4452;--ink-3:#646A73;--ink-4:#8F959E;
--brand:#3370FF;--brand-deep:#245BDB;--brand-wash:#F0F4FF;--brand-soft:#E1EAFF;
--ai:#8A5F1C;--ai-soft:#F7F0E0;--ai-line:#B07D2B;
--human:#173A63;--human-soft:#DCEAF7;--human-line:#2F6DB5;
--ok:#278717;--ok-soft:#E8F8E4;--warn:#DE7802;--warn-soft:#FFF4E5;--danger:#D83931;--danger-soft:#FEEAE9;
--line:#DEE0E3;--line-soft:#EBEDF0;--soft:#F5F6F7;
--mono:"SF Mono","JetBrains Mono","Menlo","Roboto Mono",ui-monospace,monospace;
--sans:"PingFang SC","Noto Sans SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{background:var(--desk);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.8;-webkit-font-smoothing:antialiased;padding:32px 20px 72px;overflow-wrap:anywhere}
.doc{width:1060px;max-width:100%;margin:0 auto;background:var(--paper);padding:52px 56px 64px;border-radius:4px;box-shadow:0 14px 44px -20px rgba(20,27,34,.32)}
.hd{border-bottom:2px solid var(--ink);padding-bottom:22px;margin-bottom:8px}
.hd .kicker{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.14em;color:var(--brand-deep);background:var(--brand-wash);border:1px solid var(--brand-soft);border-radius:999px;padding:3px 12px;margin-bottom:14px}
.hd h1{font-size:31px;font-weight:700;letter-spacing:-.01em;line-height:1.25;margin:0 0 6px}
.hd .sub{font-size:15px;color:var(--ink-3);margin:0}
.hd .meta{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:16px;font-family:var(--mono);font-size:11px;color:var(--ink-4)}
.hd .meta b{color:var(--ink-2);font-weight:600}
h2.ch{font-size:22px;font-weight:700;letter-spacing:-.005em;margin:52px 0 4px}
h2.ch .n{font-family:var(--mono);font-size:.8em;color:var(--brand-deep);margin-right:.55em}
.ch-rule{height:2px;background:linear-gradient(90deg,var(--brand),#7F3BF5);border-radius:2px;width:64px;margin:0 0 16px}
h3.h3{font-size:15.5px;font-weight:700;margin:28px 0 10px}
h3.h3 .n{font-family:var(--mono);font-size:.82em;color:var(--brand-deep);margin-right:.5em}
p{margin:0 0 12px}
p.lead{font-size:15px;color:var(--ink-2)}
b{font-weight:600}
ul.tight{margin:6px 0 14px;padding-left:20px}
ul.tight li{margin:4px 0}
.small{font-size:12px;color:var(--ink-3)}
code{font-family:var(--mono);font-size:.9em;background:var(--soft);border:1px solid var(--line-soft);border-radius:5px;padding:1px 6px}
.callout{border:1px solid;border-radius:10px;padding:12px 16px;margin:14px 0;font-size:13px;line-height:1.8}
.callout.brand{background:var(--brand-wash);border-color:var(--brand-soft);color:var(--brand-deep)}
.callout.ok{background:var(--ok-soft);border-color:#bfedb4;color:var(--ok)}
.callout.warn{background:var(--warn-soft);border-color:#fbd9a5;color:var(--warn)}
.callout.danger{background:var(--danger-soft);border-color:#f6c6c3;color:var(--danger)}
.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>