- 8域交付盘点(codex多实例+claude深盘、均亲验以代码+真测试为准)→收敛5类系统性病灶 - 新增 docs/mvp/1.0.0-交付计划.md:基准线A最小可用子集、8域对账矩阵、E0-E7 Epic分解、反假绿验证标准 - 进度总账加指针对齐(接口门completed≠端到端可闭环;可闭环严判完成度~55-65%) - 临时-01~04归档删除(SSE/KB物化过程文档、结论已并入memory与各.agent)、大纲清理悬空引用、临时-05并入E4 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
343 lines
23 KiB
HTML
343 lines
23 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>临时-05 · Market Agent 物化执行 Plan(人读图)</title>
|
||
<style>
|
||
:root{
|
||
--bg:#0f1419; --panel:#1a2230; --ink:#e6edf3; --muted:#9fb0c3;
|
||
--pub:#c0392b; --pubbg:#2a1a1c; --ins:#27ae60; --insbg:#16271c;
|
||
--copy:#2ecc71; --warn:#b8860b; --warnbg:#2a2410; --line:#33415a;
|
||
--accent:#4aa3ff; --accentbg:#13243a; --gate:#d97706; --gatebg:#2a1d0e;
|
||
}
|
||
*{box-sizing:border-box}
|
||
body{margin:0;background:var(--bg);color:var(--ink);
|
||
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
|
||
line-height:1.6;padding:32px 20px 64px}
|
||
.wrap{max-width:1180px;margin:0 auto}
|
||
h1{font-size:26px;margin:0 0 4px;letter-spacing:.3px}
|
||
.sub{color:var(--muted);font-size:14px;margin-bottom:6px}
|
||
.oneliner{background:var(--accentbg);border:1px solid var(--accent);border-radius:10px;
|
||
padding:14px 18px;margin:18px 0 26px;font-size:15px}
|
||
.oneliner b{color:var(--accent)}
|
||
h2{font-size:18px;margin:34px 0 14px;padding-left:10px;border-left:4px solid var(--accent)}
|
||
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin-bottom:18px}
|
||
/* 拷配置主图 */
|
||
.iso{display:grid;grid-template-columns:1fr 56px 1fr;gap:0;align-items:stretch;margin:8px 0}
|
||
.col{border-radius:12px;padding:16px}
|
||
.col.pub{background:var(--pubbg);border:1px solid var(--pub)}
|
||
.col.ins{background:var(--insbg);border:1px solid var(--ins)}
|
||
.col h3{margin:0 0 12px;font-size:15px}
|
||
.col.pub h3{color:#ff8a7a}
|
||
.col.ins h3{color:#6fe0a0}
|
||
.box{background:#0d141d;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:8px 0;font-size:13px}
|
||
.box .t{font-weight:600;margin-bottom:3px}
|
||
.box .d{color:var(--muted);font-size:12px}
|
||
.box.live{border-color:var(--pub)}
|
||
.box.copy{border-color:var(--copy);box-shadow:0 0 0 1px rgba(46,204,113,.25) inset}
|
||
.box.copy .t{color:#6fe0a0}
|
||
.arrowcol{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}
|
||
.bigarrow{font-size:30px;color:var(--copy);font-weight:700}
|
||
.arrowlbl{font-size:11px;color:var(--muted);text-align:center;margin-top:4px;max-width:54px}
|
||
.copyhint{font-size:11px;color:var(--copy);text-align:center;margin-top:8px;border-top:1px dashed var(--copy);padding-top:8px}
|
||
.verdict{margin-top:14px;background:var(--insbg);border:1px solid var(--ins);border-radius:8px;padding:12px 14px;font-size:13.5px}
|
||
.verdict b{color:#6fe0a0}
|
||
/* before/after 通用两栏 */
|
||
.ba{display:grid;grid-template-columns:1fr 1fr;gap:14px}
|
||
.ba .bad{background:var(--pubbg);border:1px solid var(--pub);border-radius:10px;padding:14px}
|
||
.ba .good{background:var(--insbg);border:1px solid var(--ins);border-radius:10px;padding:14px}
|
||
.ba h4{margin:0 0 8px;font-size:14px}
|
||
.ba .bad h4{color:#ff8a7a}
|
||
.ba .good h4{color:#6fe0a0}
|
||
.ba ul{margin:6px 0 0;padding-left:18px;font-size:13px;color:var(--muted)}
|
||
.ba li{margin:4px 0}
|
||
.tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:10px;margin-left:6px;vertical-align:middle}
|
||
.tag.new{background:#3a1418;color:#ff8a7a;border:1px solid var(--pub)}
|
||
.tag.reuse{background:#16271c;color:#6fe0a0;border:1px solid var(--ins)}
|
||
.tag.gate{background:var(--gatebg);color:#f0b250;border:1px solid var(--gate)}
|
||
/* 授权门 before/after 决策链 */
|
||
.gateflow{display:grid;grid-template-columns:1fr 1fr;gap:14px}
|
||
.gatecol{background:#0d141d;border:1px solid var(--line);border-radius:10px;padding:14px}
|
||
.gatecol.after{border-color:var(--gate)}
|
||
.gatecol h4{margin:0 0 10px;font-size:14px}
|
||
.gatecol.before h4{color:#ff8a7a}
|
||
.gatecol.after h4{color:#f0b250}
|
||
.gstep{font-size:13px;padding:6px 10px;border-radius:7px;margin:6px 0;background:#111a26;border:1px solid var(--line)}
|
||
.gstep.pass{border-color:var(--ins);color:#6fe0a0}
|
||
.gstep.fail{border-color:var(--pub);color:#ff8a7a}
|
||
.gstep.newpass{border-color:var(--gate);color:#f0b250;box-shadow:0 0 0 1px rgba(217,119,6,.2) inset}
|
||
.gstep .k{font-size:11px;color:var(--muted)}
|
||
/* 实现单元流 */
|
||
.units{display:flex;gap:0;align-items:stretch;flex-wrap:wrap}
|
||
.unit{flex:1;min-width:185px;background:#0d141d;border:1px solid var(--line);border-radius:10px;padding:14px;position:relative}
|
||
.unit.core{border-color:var(--pub);background:var(--pubbg)}
|
||
.unit.gatecore{border-color:var(--gate);background:var(--gatebg)}
|
||
.unit h4{margin:0 0 6px;font-size:14px}
|
||
.unit.core h4{color:#ff8a7a}
|
||
.unit.gatecore h4{color:#f0b250}
|
||
.unit .one{font-size:12px;color:var(--muted)}
|
||
.ufarrow{display:flex;align-items:center;font-size:22px;color:var(--accent);padding:0 5px}
|
||
/* 时序简版 */
|
||
.seq{font-size:13px}
|
||
.seq .step{display:flex;gap:10px;margin:7px 0;align-items:flex-start}
|
||
.seq .n{flex:none;width:22px;height:22px;border-radius:50%;background:var(--accentbg);border:1px solid var(--accent);
|
||
color:var(--accent);font-size:12px;display:flex;align-items:center;justify-content:center;font-weight:700;margin-top:1px}
|
||
.seq .who{flex:none;width:140px;color:var(--muted);font-size:12px}
|
||
.seq .what{flex:1}
|
||
.seq .sync{color:var(--copy);font-size:11px}
|
||
/* 决策表 */
|
||
table{width:100%;border-collapse:collapse;font-size:13px;margin-top:6px}
|
||
th,td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
|
||
th{background:#0d141d;color:var(--muted);font-weight:600}
|
||
.rec{color:#6fe0a0;font-weight:600}
|
||
/* 通用 */
|
||
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
|
||
.note{font-size:12px;color:var(--muted);margin-top:6px}
|
||
.pill{display:inline-block;background:var(--warnbg);border:1px solid var(--warn);color:#e0c060;
|
||
font-size:11px;padding:1px 8px;border-radius:10px}
|
||
.pill.red{background:#3a1418;color:#ff8a7a;border-color:var(--pub)}
|
||
.foot{color:var(--muted);font-size:12px;margin-top:30px;border-top:1px solid var(--line);padding-top:14px}
|
||
@media (max-width:820px){.iso{grid-template-columns:1fr}.arrowcol{flex-direction:row;padding:8px 0}
|
||
.ba,.grid2,.gateflow{grid-template-columns:1fr}.units{flex-direction:column}.ufarrow{transform:rotate(90deg);padding:6px 0}}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="wrap">
|
||
<h1>临时-05 · Market <span style="color:var(--copy)">Agent 物化</span> 执行 Plan</h1>
|
||
<div class="sub">拷配置 · installed 型 agent · 改授权门 · v1(执行版,待人类 review 后执行,本稿只读出代码)· 2026-06-26</div>
|
||
<div class="sub">配套正文:<code>临时-05-market-agent物化执行plan.md</code> | 姊妹方向 <code>临时-04</code>(KB D0-fork,已闭环)</div>
|
||
|
||
<div class="oneliner">
|
||
<b>一句话:</b>市场安装一个智能体后,槽位能绑进去(闸 A 已放宽),但 AI <b>运行时授权门一律拒</b> market 来源 agent——这是 agent 物化的<b>唯一真断点</b>。
|
||
拍板方向:<b>①不 fork、拷配置</b>(agent 无 KB 那类私有泄露向量:版本不可变 / 运行时不回读私有 prompt / config 即被授权出售的商品本体);
|
||
<b>②物化成 installed 型独立 agent(config 拷自发布者)+ 改运行时授权门放行</b>。物化全在<b>安装侧同步</b>完成,无任何 fork / 发布侧异步 / 外部资源。
|
||
</div>
|
||
|
||
<!-- ============ 拷配置 vs fork ============ -->
|
||
<h2>为什么 agent 不 fork、只拷配置</h2>
|
||
<div class="card">
|
||
<div class="ba">
|
||
<div class="bad">
|
||
<h4>KB 为何必须 fork(临时-04)</h4>
|
||
<ul>
|
||
<li>市场对 knowledge 零依赖 → 上架<b>不 fork</b> 任何 dataset</li>
|
||
<li>发布者活 dataset <b>上架后还能继续加私有文档</b>(KB 不冻结)</li>
|
||
<li>安装者共享活 dataset + 检索<b>整库返回</b> → 读到上架时不存在的私有 chunk</li>
|
||
<li>→ 逼出"发布侧 fork 一份只含公开快照的独立 dataset"(重活)</li>
|
||
</ul>
|
||
</div>
|
||
<div class="good">
|
||
<h4>✓ Agent 无泄露向量 → 拷下即交付</h4>
|
||
<ul>
|
||
<li>version 一经 active <b>即不可变</b>(改动只能开新版本行)</li>
|
||
<li>运行时<b>不回读</b>发布者私有 prompt,只用版本冻结 config</li>
|
||
<li>config 本就是发布者<b>亲写、上架出售的商品本体</b>(拿到=交付,非泄露)</li>
|
||
<li>→ 安装侧<b>同步拷一份 config</b> 即可,无 fork / 无外部资源 / 无异步</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="iso" style="margin-top:14px">
|
||
<div class="col pub">
|
||
<h3>发布者域(owner = 发布者)</h3>
|
||
<div class="box live">
|
||
<div class="t">发布者 muse_agent + active muse_agent_version</div>
|
||
<div class="d">config(promptTemplate / slotBindings / toolGrantIds / modelKey)· 🔒 active 即不可变</div>
|
||
</div>
|
||
<div class="copyhint">↓ A-materialize:安装侧同步拷 config(无 fork·无外部资源·无异步)</div>
|
||
</div>
|
||
<div class="arrowcol">
|
||
<div class="bigarrow">⇒</div>
|
||
<div class="arrowlbl">拷配置<br>各拷各的<br>无共享副本</div>
|
||
</div>
|
||
<div class="col ins">
|
||
<h3>安装者域(owner = 安装者)</h3>
|
||
<div class="box">
|
||
<div class="t">installed 型 muse_agent(本人所有)</div>
|
||
<div class="d">source_market_asset_id=assetId(V27 列已在、补 DO 映射)</div>
|
||
</div>
|
||
<div class="box copy">
|
||
<div class="t">⭐ active muse_agent_version</div>
|
||
<div class="d">config = <b>整体拷自发布者快照</b>(保完整性,不漏 modelKey/toolGrantIds)</div>
|
||
</div>
|
||
<div class="box" style="border-color:var(--ins)">
|
||
<div class="t" style="color:#6fe0a0">运行时 requireVisibleAgent → 取本地 config</div>
|
||
<div class="d">🟢 命中物化 agent,AI 任务可跑</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ============ 授权门 before/after(核心) ============ -->
|
||
<h2>唯一断点:运行时授权门改造(trust boundary · 本 plan 最需严防)</h2>
|
||
<div class="card">
|
||
<div class="note" style="margin-top:0;margin-bottom:10px">
|
||
<code>MuseAiTaskServiceImpl.requireVisibleAgent:329-331</code> · 三入口 <code>:220</code>(agentTest)/<code>:308</code>(override)/<code>:315</code>(slotKey→binding) 全经它。改门一处 = 三入口同时通。
|
||
</div>
|
||
<div class="gateflow">
|
||
<div class="gatecol before">
|
||
<h4>✗ 改造前(断点②)</h4>
|
||
<div class="gstep pass">agentType = system? <span class="k">→ 放行</span></div>
|
||
<div class="gstep pass">agentType = user 且 owner == 本人? <span class="k">→ 放行</span></div>
|
||
<div class="gstep fail">🔴 其余一律拒 AI_AGENT_SCOPE_FORBIDDEN<br><span class="k">market / installed 出身 agent 必拒 → 用户:AI 任务直接失败</span></div>
|
||
</div>
|
||
<div class="gatecol after">
|
||
<h4>✓ 改造后(A-runtime 放行 installed)</h4>
|
||
<div class="gstep pass">agentType = system? <span class="k">→ 放行(不回归)</span></div>
|
||
<div class="gstep pass">agentType = user 且 owner == 本人? <span class="k">→ 放行(不回归)</span></div>
|
||
<div class="gstep newpass">⭐ agentType = installed 且 owner == 本人 且 授权快照有效? <span class="k">→ 🟢 放行(新增支,三收紧点缺一不可)</span></div>
|
||
<div class="gstep fail">🔴 他人 installed / 无授权 / market 裸引用 仍拒 <span class="k">← 负路测命门</span></div>
|
||
</div>
|
||
</div>
|
||
<div class="verdict">
|
||
<b>放行三收紧点缺一不可:</b>①必须 installed 型(不放开 market 裸引用)②必须本人所有(防越权用他人 installed)③授权快照有效(防授权撤销后仍可跑)。
|
||
<b>A-verify 负路(他人 installed 必拒 / 授权失效必拒 / market 裸引用必拒)是本 plan 安全验收的命门——缺负路不算通过。</b>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ============ 五个实现单元 ============ -->
|
||
<h2>五个实现单元(各一句话)</h2>
|
||
<div class="card">
|
||
<div class="units">
|
||
<div class="unit core">
|
||
<h4>A-source <span class="tag new">扩端口</span></h4>
|
||
<div class="one"><b>扩</b>临时-04 已落的 <code>MarketAssetSourceApi</code> 支持 assetType=agent + 带回发布者 active 版本 config(决策点 D1:market 反调 ai vs ai 自读)。</div>
|
||
</div>
|
||
<div class="ufarrow">→</div>
|
||
<div class="unit">
|
||
<h4>A-materialize <span class="tag reuse">照搬 KB</span></h4>
|
||
<div class="one">绑定路径建本地 installed 型 muse_agent + active version(config 拷自发布者)+ 补 DO 映射 source_market_asset_id + 幂等 + 槽位指<b>本地 agentId</b>(去裸引用)。</div>
|
||
</div>
|
||
<div class="ufarrow">→</div>
|
||
<div class="unit gatecore">
|
||
<h4>A-runtime <span class="tag gate">trust boundary</span></h4>
|
||
<div class="one">改 <code>requireVisibleAgent</code> 放行 installed 型 + 本人 + 授权有效;三入口同时通;<b>他人/无授权必拒</b>。</div>
|
||
</div>
|
||
<div class="ufarrow">→</div>
|
||
<div class="unit">
|
||
<h4>A-naming</h4>
|
||
<div class="one">agent_type 取值统一(market_installed / installed / installed_ref 四处漂移收口)+ 同步 后端-04。</div>
|
||
</div>
|
||
<div class="ufarrow">→</div>
|
||
<div class="unit">
|
||
<h4>A-verify</h4>
|
||
<div class="one">真 PG IT(install→物化→bind→runtime 命中物化 agent)+ studio e2e + <b>授权门负路</b>。</div>
|
||
</div>
|
||
</div>
|
||
<div class="note" style="margin-top:12px">
|
||
复用 KB 已落资产:<span class="tag reuse">复用</span> <code>MarketAssetSourceApi</code>(扩,非新建)+ handoff token + <code>materializeInstalledRefKb</code> 物化形态。
|
||
不需要:<b>MarketKbListedEvent 孪生事件 / MarketAssetForkApi 写回 / 发布侧 fork 管线</b>(agent 无 fork、物化全在安装侧同步)。
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ============ 安装侧物化时序(同步) ============ -->
|
||
<h2>物化时序(安装侧同步 · 无异步 · 无外部调用)</h2>
|
||
<div class="card seq">
|
||
<div class="step"><div class="n">1</div><div class="who">用户</div><div class="what">市场安装 agent 资产(install 只记账 targetFactsWritten=false,不动)→ 跳转 ai 槽位绑定</div></div>
|
||
<div class="step"><div class="n">2</div><div class="who">ai 绑定路径</div><div class="what">消费 handoff token(闸 A 已放宽 market 型,不动)</div></div>
|
||
<div class="step"><div class="n">3</div><div class="who">A-source</div><div class="what">MarketAssetSourceApi 读资产来源 + 带回发布者 active 版本 config(assetType=agent 放行)<span class="sync"> · 一次跨 BC 读,无外部服务</span></div></div>
|
||
<div class="step"><div class="n">4</div><div class="who">A-materialize</div><div class="what">同一 @Transactional 内:幂等查 → 建 installed 型 muse_agent(agent_key 安装者维度唯一)<span class="sync"> · 同步</span></div></div>
|
||
<div class="step"><div class="n">5</div><div class="who">A-materialize</div><div class="what">建 active muse_agent_version(config 整体拷贝)→ 回写 current_version_id → 槽位 binding.agentId = 本地 installed agentId</div></div>
|
||
<div class="step"><div class="n">6</div><div class="who">A-runtime</div><div class="what">发起 AI 任务 → requireVisibleAgent 放行本地 installed agent → 取本地 config → 🟢 真跑出候选</div></div>
|
||
<div class="note" style="margin-top:10px">对照 KB:KB 这里要等上架时异步 fork 副本 dataset 就绪(重活 + forkStatus fail-closed);agent <b>全程同步、无外部调用、无中间态</b>——这是 agent 比 KB 轻得多的根本原因。</div>
|
||
</div>
|
||
|
||
<!-- ============ 决策点 ============ -->
|
||
<h2>关键决策点(待人类拍板)</h2>
|
||
<div class="card">
|
||
<table>
|
||
<thead><tr><th style="width:130px">决策</th><th>选项</th><th style="width:300px">倾向 + 理由</th></tr></thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><b>D1 config 读取途径</b><br>(核心)</td>
|
||
<td>扩 MarketAssetSourceApi 让 market 反调 ai 读端口带 config / ai 绑定路径自己读发布者 agent</td>
|
||
<td><span class="rec">market 反调 ai(A)</span>:安装侧调用对称 + 避免跨 owner 读难题;代价(market→ai 新方向)经 -api 端口+ArchUnit 可控。否决则退 B 显式处理跨 owner 读。</td>
|
||
</tr>
|
||
<tr>
|
||
<td><b>D2 拷 vs 引用</b><br>prompt 库</td>
|
||
<td>config 整体拷贝(含 promptTemplate 快照)/ 引用发布者 prompt 库</td>
|
||
<td><span class="rec">整体拷贝</span>:agent 无泄露向量 + config 即商品本体 + 版本不可变→拷下即冻结快照;引用会重新引入发布者改 prompt 影响安装者的漂移。</td>
|
||
</tr>
|
||
<tr>
|
||
<td><b>D3 agent_type</b><br>命名最终值</td>
|
||
<td>market_installed / installed / installed_ref</td>
|
||
<td><span class="rec">market_installed</span>:与 后端-04 既有文档零漂移、语义自明;与 knowledge 风格协调即可不强求同名。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>D4 授权快照承载</td>
|
||
<td>数值主键 / 字符串 envelope(VARCHAR)</td>
|
||
<td><span class="rec">字符串 envelope</span>:沿用 ADR-020,槽位 binding 已 V31 VARCHAR,物化实体一致。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>D5 installed agent<br>配额/列表可见</td>
|
||
<td>计入用户 agent 配额并列表可见 / 不计配额、列表单独分区或隐藏</td>
|
||
<td>倾向<span class="rec">列表可见标 installed 来源、配额随产品定</span>;非核心链路可后置,但 A-materialize 须明确列表查询是否纳入。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>D6 DTO 形状</td>
|
||
<td>现有 DTO 增 agent 字段 / 拆 agent 专用 DTO+方法</td>
|
||
<td><span class="rec">拆 agent 专用</span>:接口隔离,KB/agent 各取所需,与临时-04 读写分离取向一致。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>D7 召回/下架回滚</td>
|
||
<td>复用现有传播 / 本期标开放项</td>
|
||
<td>与 KB 同未触达面(临时-04 事实 7)→ <span class="rec">倾向本期标开放项</span>,不假装闭环;A-runtime 授权失效兜底部分覆盖。</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<!-- ============ 风险 + scope ============ -->
|
||
<h2>风险与边界(诚实呈现)</h2>
|
||
<div class="grid2">
|
||
<div class="card">
|
||
<h4 style="margin-top:0;color:#ff8a7a">主要风险</h4>
|
||
<ul style="font-size:13px;color:var(--muted);padding-left:18px;margin:6px 0">
|
||
<li><b style="color:var(--ink)">R1 改授权门 = trust boundary</b> <span class="pill red">必负路测</span>:最大风险是放过头(把"本人 installed"误放成任意/他人 installed/market 裸引用)。缓解:放行三收紧点 + A-verify 负路(他人/无授权/裸引用必拒)作验收命门。</li>
|
||
<li><b style="color:var(--ink)">R2 config 跨 BC 依赖方向(D1)</b>:选 A 引入 market→ai 新方向,需 ArchUnit 确认不成环。否决则退 B 显式处理跨 owner 读。</li>
|
||
<li><b style="color:var(--ink)">R3 config 拷贝完整性</b>:漏拷 modelKey/promptTemplate/toolGrantIds → 物化 agent 行为与发布者不一致(买到残品)。缓解:整体拷贝 + A-verify 真验。</li>
|
||
<li><b style="color:var(--ink)">R5 agent_key 唯一键冲突</b>:uk_muse_agent_key=(tenant_id, agent_key),直拷发布者 agent_key 会撞键 500。缓解:按安装者维度生成 agent_key,幂等查走 source_market_asset_id。</li>
|
||
<li><b style="color:var(--ink)">R4 命名漂移收口</b>:写入值与放行值不一致 → 物化了运行时仍拒(自造断点)。缓解:A-naming 单一常量 + 同步 后端-04。</li>
|
||
</ul>
|
||
</div>
|
||
<div class="card">
|
||
<h4 style="margin-top:0;color:#6fe0a0">本期不做(Scope)</h4>
|
||
<ul style="font-size:13px;color:var(--muted);padding-left:18px;margin:6px 0">
|
||
<li>KB 物化(临时-04 已闭环,不重做)</li>
|
||
<li>fork / 发布侧异步管线 / 上架事件 / 外部资源(agent 无泄露向量、全免)</li>
|
||
<li>install 侧物化(维持只记账 targetFactsWritten=false)</li>
|
||
<li>闸 A 槽位授权门(已放宽 market,不碰)</li>
|
||
<li>召回/下架回滚自动化(开放项,与 KB 同面,不假装闭环)</li>
|
||
<li>installed agent 列表/配额读模型(D5 横切待定)</li>
|
||
<li>market 两列 BIGINT 契约议题</li>
|
||
</ul>
|
||
<div class="note">DDL 判定:<b>不引入新 Flyway 迁移</b>——source_market_asset_id 列 V27 已在、仅补 MuseAgentDO 映射;授权快照沿用 V31 VARCHAR。</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ============ 与 KB 异同 ============ -->
|
||
<h2>与 KB D0-fork 的异同(速览)</h2>
|
||
<div class="card">
|
||
<table>
|
||
<thead><tr><th style="width:150px">维度</th><th>KB(临时-04,已闭环)</th><th>Agent(本 plan)</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>泄露向量</td><td><b style="color:#ff8a7a">有</b>(活 dataset 上架后能加私有文档→整库检索泄露)</td><td><b style="color:#6fe0a0">无</b>(version 不可变 + 不回读私有 prompt + config 即商品本体)</td></tr>
|
||
<tr><td>物化手段</td><td>fork 公开副本(建 dataset+复制+重索引,异步重活)</td><td><b style="color:#6fe0a0">拷配置</b>(安装侧同步拷 config,无外部资源)</td></tr>
|
||
<tr><td>发布侧工程</td><td>有(上架事件+消费者+兜底 worker+ForkApi 写回)</td><td><b style="color:#6fe0a0">无</b>(物化全在安装侧、上架侧零改动)</td></tr>
|
||
<tr><td>唯一断点</td><td>检索第四门(数据正确即通,代码几乎不改)</td><td><b style="color:#f0b250">运行时授权门</b>(必改门放行 installed,trust boundary)</td></tr>
|
||
<tr><td>改授权门</td><td>不改</td><td><b style="color:#f0b250">改</b>(A-runtime,负路测命门)</td></tr>
|
||
<tr><td>去污染/去裸引用</td><td>kb_id 去污染(assetId→本地 kbId)</td><td>槽位 agentId 去裸引用(发布者→本地 installed agentId)</td></tr>
|
||
<tr><td>共享 vs 各拷</td><td>副本仅 1 份,N 安装者共享只读</td><td>config 各拷各的,无共享(轻量 JSONB)</td></tr>
|
||
<tr><td>外部资源回滚</td><td>有(删 fork 出的副本 dataset)</td><td><b style="color:#6fe0a0">无</b>(软删本地 agent 行即可)</td></tr>
|
||
<tr><td>共同开放项</td><td colspan="2">召回回滚未触达 installed 实体(同面);e2e fixture 待对齐</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="foot">
|
||
owner 边界引 临时-02(§2.2 B' 智能体侧·§3.2 schema 增量)/ 临时-04(KB 姊妹方向)/ 架构-02(§5 智能体运行权限·§6 市场资产·§11.2 绑定授权·授权快照)/ ADR-017(Source 传播事件驱动)/ ADR-020(授权快照字符串承载)/ .agents/rules/bc-boundaries.md,本稿不重定义概念。
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html>
|