Files
Obsidian/工具学习/车机诊断员 Agent/visual-assets.html
T
2026-11-05 14:35:04 +08:00

191 lines
17 KiB
HTML

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>车机诊断员 Agent 作业图片</title>
<style>
* { box-sizing: border-box; }
html, body { margin: 0; background: #dfe3e6; color: #17212b; font-family: "Microsoft YaHei", "Noto Sans CJK SC", Arial, sans-serif; letter-spacing: 0; }
body { padding: 48px; }
.sheet { width: 1800px; margin: 0 auto 48px; background: #f7f8f8; overflow: hidden; box-shadow: 0 12px 40px rgba(23, 33, 43, .14); }
.topbar { min-height: 226px; padding: 48px 70px 42px; background: #17212b; color: #fff; border-bottom: 14px solid #e4a11b; }
.eyebrow { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; color: #f2c55c; font-size: 24px; font-weight: 700; }
.eyebrow::before { content: ""; width: 46px; height: 6px; background: #e4a11b; }
h1 { margin: 0; font-size: 62px; line-height: 1.15; font-weight: 800; }
.subtitle { margin-top: 16px; color: #d8e0e5; font-size: 25px; line-height: 1.55; }
.content { padding: 42px 56px 50px; }
.overview { display: grid; grid-template-columns: 1.15fr 1fr 1fr; border: 2px solid #ccd3d7; background: #fff; }
.overview > div { min-height: 154px; padding: 28px 30px; border-right: 2px solid #ccd3d7; }
.overview > div:last-child { border-right: 0; }
.label { margin-bottom: 12px; color: #68747d; font-size: 20px; font-weight: 700; }
.value { font-size: 24px; line-height: 1.55; font-weight: 600; }
.section-title { display: flex; align-items: center; gap: 18px; margin: 36px 0 20px; font-size: 31px; font-weight: 800; }
.section-title .num { display: inline-grid; place-items: center; width: 46px; height: 46px; background: #1b6b61; color: #fff; font-size: 24px; }
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.step { position: relative; min-height: 280px; padding: 26px 25px 24px; border: 2px solid #cbd2d6; border-top: 7px solid #1b6b61; background: #fff; }
.step-head { display: flex; gap: 15px; align-items: flex-start; margin-bottom: 17px; }
.step-no { flex: 0 0 auto; display: grid; place-items: center; width: 46px; height: 46px; background: #e7f1ef; color: #14574f; font-size: 23px; font-weight: 800; }
.step h3 { margin: 4px 0 0; font-size: 27px; line-height: 1.35; }
.rule { position: relative; margin: 10px 0 0; padding-left: 104px; font-size: 20px; line-height: 1.55; }
.tag { position: absolute; left: 0; top: 2px; width: 90px; padding: 4px 0; text-align: center; color: #fff; font-size: 15px; line-height: 1.4; font-weight: 800; }
.must { background: #b63a3a; }
.should { background: #1b6b61; }
.may { background: #326b9c; }
.mustnot { background: #17212b; }
.bottom-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 18px; }
.panel { border: 2px solid #cbd2d6; background: #fff; }
.panel-head { padding: 17px 22px; background: #e9edef; border-bottom: 2px solid #cbd2d6; font-size: 25px; font-weight: 800; }
.panel-body { padding: 21px 24px; }
.failure-row { display: grid; grid-template-columns: 200px 1fr; padding: 11px 0; border-bottom: 1px solid #dce1e4; font-size: 19px; line-height: 1.45; }
.failure-row:last-child { border-bottom: 0; }
.failure-row strong { color: #963333; }
.check { display: flex; align-items: flex-start; gap: 13px; margin: 0 0 13px; font-size: 19px; line-height: 1.45; }
.check::before { content: "✓"; flex: 0 0 auto; display: grid; place-items: center; width: 27px; height: 27px; background: #1b6b61; color: #fff; font-size: 17px; font-weight: 800; }
.guardrail { margin-top: 18px; padding: 18px 22px; border-left: 8px solid #b63a3a; background: #f8eaea; color: #622323; font-size: 20px; line-height: 1.5; font-weight: 700; }
.footer { display: flex; justify-content: space-between; padding: 22px 56px; background: #e9edef; color: #5f6a72; font-size: 18px; }
#workflow-card { height: 2360px; }
#flowchart { height: 2700px; background: #f7f8f8; }
#flowchart .content { padding: 34px 70px 0; }
.legend { display: flex; gap: 28px; align-items: center; justify-content: flex-end; height: 60px; font-size: 19px; color: #57646d; }
.legend-item { display: flex; align-items: center; gap: 10px; }
.legend-box { width: 32px; height: 22px; border: 3px solid #1b6b61; background: #fff; }
.legend-diamond { width: 25px; height: 25px; border: 3px solid #d28c12; background: #fff8e9; transform: rotate(45deg); }
.diagram { position: relative; width: 1660px; height: 2075px; margin: 0 auto; background: #fff; border: 2px solid #cbd2d6; overflow: hidden; }
.lane { position: absolute; top: 0; bottom: 0; width: 410px; background: #f1f3f4; border-left: 2px dashed #c4ccd1; }
.lane.left { left: 0; border-left: 0; border-right: 2px dashed #c4ccd1; }
.lane.right { right: 0; }
.lane-label { position: absolute; top: 22px; color: #7a858d; font-size: 18px; font-weight: 700; }
.lane-label.main { left: 772px; }
.lane-label.exception { left: 1410px; }
.node { position: absolute; z-index: 2; display: flex; align-items: center; justify-content: center; padding: 15px 24px; text-align: center; background: #fff; border: 4px solid #1b6b61; color: #17212b; font-size: 23px; line-height: 1.42; font-weight: 700; }
.node small { display: block; margin-top: 5px; color: #65727a; font-size: 17px; font-weight: 500; }
.terminal { border-radius: 60px; border-color: #17212b; background: #17212b; color: #fff; }
.action { border-color: #1b6b61; }
.review { border-color: #326b9c; background: #edf5fb; }
.warning { border-color: #b63a3a; background: #fbefef; }
.decision { position: absolute; z-index: 2; width: 190px; height: 190px; transform: rotate(45deg); border: 4px solid #d28c12; background: #fff8e9; }
.decision > div { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; padding: 15px; transform: rotate(-45deg); text-align: center; font-size: 22px; line-height: 1.35; font-weight: 800; }
.branch-label { position: absolute; z-index: 3; padding: 3px 9px; background: #fff; color: #5c6870; font-size: 18px; font-weight: 800; }
.connectors { position: absolute; inset: 0; z-index: 1; width: 1660px; height: 2075px; }
.flow-footer { padding: 19px 70px 24px; color: #5f6a72; font-size: 18px; text-align: right; }
</style>
</head>
<body>
<section class="sheet" id="workflow-card">
<header class="topbar">
<div class="eyebrow">AGENT WORKFLOW CARD · 关卡 3</div>
<h1>车机诊断员 Agent</h1>
<div class="subtitle">从故障材料到可追踪、可验证、经人工审核的工程分析报告</div>
</header>
<main class="content">
<div class="overview">
<div><div class="label">目标</div><div class="value">还原跨层调用链,定位首个状态偏差,形成证据化结论</div></div>
<div><div class="label">输入</div><div class="value">故障描述、复现时间、日志、代码版本、测试结果</div></div>
<div><div class="label">输出</div><div class="value">时间线、根因候选、置信度、验证方案、Markdown 报告</div></div>
</div>
<div class="section-title"><span class="num">01</span>标准工作流</div>
<div class="steps">
<article class="step"><div class="step-head"><span class="step-no">1</span><h3>检查输入材料</h3></div><p class="rule"><span class="tag must">MUST</span>确认现象、时间、步骤、期望、版本和日志范围。</p><p class="rule"><span class="tag must">MUST</span>缺少关键材料时列清单并请求补充。</p></article>
<article class="step"><div class="step-head"><span class="step-no">2</span><h3>建立统一时间线</h3></div><p class="rule"><span class="tag must">MUST</span>统一时区、格式与设备时钟偏差。</p><p class="rule"><span class="tag must">MUST</span>保留原始时间戳和日志来源。</p></article>
<article class="step"><div class="step-head"><span class="step-no">3</span><h3>提取关键事件</h3></div><p class="rule"><span class="tag must">MUST</span>提取命令、状态、错误、超时、重试和回调。</p><p class="rule"><span class="tag should">SHOULD</span>去重噪声但保留异常上下文。</p></article>
<article class="step"><div class="step-head"><span class="step-no">4</span><h3>还原跨层链路</h3></div><p class="rule"><span class="tag must">MUST</span>按应用、系统服务、HAL、驱动排列调用。</p><p class="rule"><span class="tag must">MUST</span>标注每一跳输入、输出与状态。</p></article>
<article class="step"><div class="step-head"><span class="step-no">5</span><h3>定位首次偏差</h3></div><p class="rule"><span class="tag must">MUST</span>找到期望与实际状态第一次分离的位置。</p><p class="rule"><span class="tag must">MUST</span>无法定位时标记缺口并转人工。</p></article>
<article class="step"><div class="step-head"><span class="step-no">6</span><h3>生成根因候选</h3></div><p class="rule"><span class="tag must">MUST</span>列支持证据、反证、未知项和置信度。</p><p class="rule"><span class="tag mustnot">MUST NOT</span>无证据断言硬件损坏。</p></article>
<article class="step"><div class="step-head"><span class="step-no">7</span><h3>设计验证方案</h3></div><p class="rule"><span class="tag should">SHOULD</span>优先只读、可回退、最小复现实验。</p><p class="rule"><span class="tag may">MAY</span>建议补日志、单元测试或异常模拟。</p></article>
<article class="step"><div class="step-head"><span class="step-no">8</span><h3>人工审核审批</h3></div><p class="rule"><span class="tag must">MUST</span>工程师复核证据链、置信度与风险。</p><p class="rule"><span class="tag must">MUST</span>高风险操作先获得人工批准。</p></article>
<article class="step"><div class="step-head"><span class="step-no">9</span><h3>输出分析报告</h3></div><p class="rule"><span class="tag must">MUST</span>输出时间线、调用链、根因与验证方案。</p><p class="rule"><span class="tag must">MUST</span>关键结论附证据来源。</p></article>
</div>
<div class="section-title"><span class="num">02</span>失败处理与人工兜底</div>
<div class="bottom-grid">
<section class="panel">
<div class="panel-head">失败处理</div>
<div class="panel-body">
<div class="failure-row"><strong>材料不完整</strong><span>请求补充;无法补齐则输出证据不足的初步报告</span></div>
<div class="failure-row"><strong>时间无法对齐</strong><span>记录校准依据;无法校准则标记时间线不确定</span></div>
<div class="failure-row"><strong>链路证据中断</strong><span>标出最后一个已证实节点与下一段证据缺口</span></div>
<div class="failure-row"><strong>候选根因冲突</strong><span>保留反证,并设计可区分候选的验证实验</span></div>
<div class="failure-row"><strong>解析工具失败</strong><span>保留原始文件,不覆盖源数据,转人工解析</span></div>
</div>
</section>
<section class="panel">
<div class="panel-head">验收标准</div>
<div class="panel-body">
<p class="check">时间线与跨层调用链可追踪</p>
<p class="check">首个状态偏差有证据定位</p>
<p class="check">事实、推测、未知项明确分离</p>
<p class="check">根因候选含证据、反证与置信度</p>
<p class="check">高风险动作存在人工审批点</p>
<div class="guardrail">安全边界:未经人工明确批准,不修改代码、不刷机、不操作实车、不执行破坏性命令。</div>
</div>
</section>
</div>
</main>
<footer class="footer"><span>版本 1.0 · 2026-08-13</span><span>工作流、失败处理、人工兜底、验收标准</span></footer>
</section>
<section class="sheet" id="flowchart">
<header class="topbar">
<div class="eyebrow">PROCESS FLOW · 关卡 3</div>
<h1>车机诊断员 Agent 流程图</h1>
<div class="subtitle">普通步骤为方框,判断节点为菱形;分支明确标注“是 / 否”</div>
</header>
<main class="content">
<div class="legend">
<span class="legend-item"><i class="legend-box"></i>执行步骤</span>
<span class="legend-item"><i class="legend-diamond"></i>判断节点</span>
</div>
<div class="diagram">
<div class="lane left"></div><div class="lane right"></div>
<span class="lane-label main">主流程</span><span class="lane-label exception">异常 / 人工兜底</span>
<div class="node terminal" style="left:690px;top:70px;width:280px;height:70px">开始</div>
<div class="node action" style="left:560px;top:190px;width:540px;height:90px">接收故障描述、日志与代码</div>
<div class="decision" style="left:735px;top:335px"><div>关键材料<br>完整?</div></div>
<div class="node warning" style="left:1220px;top:380px;width:380px;height:110px">列出缺失项并请求补充<small>无法补齐则标记证据不足</small></div>
<div class="node action" style="left:560px;top:580px;width:540px;height:90px">统一时间与日志来源</div>
<div class="node action" style="left:560px;top:715px;width:540px;height:90px">提取命令、状态、错误、超时与回调</div>
<div class="node action" style="left:560px;top:850px;width:540px;height:100px">还原应用 → 系统服务 → HAL → 驱动调用链</div>
<div class="decision" style="left:735px;top:1010px"><div>能定位首个<br>状态偏差?</div></div>
<div class="node warning" style="left:1220px;top:1050px;width:380px;height:110px">标记证据缺口与未知项<small>只形成初步判断</small></div>
<div class="node action" style="left:560px;top:1260px;width:540px;height:105px">生成根因候选、证据、反证与置信度</div>
<div class="node action" style="left:560px;top:1410px;width:540px;height:90px">设计非破坏性验证方案</div>
<div class="decision" style="left:735px;top:1560px"><div>涉及改代码、<br>刷机或实车?</div></div>
<div class="node warning" style="left:1220px;top:1600px;width:380px;height:105px">人工审批高风险动作<small>未批准则不得执行</small></div>
<div class="node review" style="left:560px;top:1775px;width:540px;height:95px">人工审核证据链、结论与风险</div>
<div class="node action" style="left:560px;top:1910px;width:540px;height:90px">输出 Markdown 故障分析报告</div>
<div class="node terminal" style="left:690px;top:2020px;width:280px;height:50px">结束</div>
<div class="node review" style="left:1220px;top:565px;width:380px;height:105px">人工审核并输出<br>证据不足的初步报告</div>
<div class="node terminal" style="left:1270px;top:725px;width:280px;height:70px">结束</div>
<span class="branch-label" style="left:925px;top:535px">是</span>
<span class="branch-label" style="left:1085px;top:400px">否</span>
<span class="branch-label" style="left:925px;top:1210px">是</span>
<span class="branch-label" style="left:1085px;top:1070px">否</span>
<span class="branch-label" style="left:925px;top:1760px">否</span>
<span class="branch-label" style="left:1085px;top:1620px">是</span>
<svg class="connectors" viewBox="0 0 1660 2075" aria-hidden="true">
<defs><marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0,0 L12,6 L0,12 Z" fill="#53616a"/></marker></defs>
<g fill="none" stroke="#53616a" stroke-width="4" marker-end="url(#arrow)">
<path d="M830 140 V190"/><path d="M830 280 V335"/>
<path d="M830 525 V580"/><path d="M830 670 V715"/><path d="M830 805 V850"/><path d="M830 950 V1010"/>
<path d="M830 1200 V1260"/><path d="M830 1365 V1410"/><path d="M830 1500 V1560"/>
<path d="M830 1750 V1775"/><path d="M830 1870 V1910"/><path d="M830 2000 V2020"/>
<path d="M925 430 H1220"/><path d="M1410 490 V565"/><path d="M1410 670 V725"/>
<path d="M925 1105 H1220"/><path d="M1410 1160 V1740 H1100 V1775"/>
<path d="M925 1655 H1220"/><path d="M1410 1705 V1740 H1100 V1775"/>
</g>
</svg>
</div>
</main>
<div class="flow-footer">流程与《车机诊断员 Agent 工作流卡片》步骤 1-9 一致 · 版本 1.0</div>
</section>
</body>
</html>