Files
wiki/简历AI技术讲解.html
zdh c677393d08
Deploy Wiki to Production / deploy (push) Has been cancelled
feat: 入库 17 个新报告页
- 银行业Agent建设方案/报告/ 4 篇:建设方案 · 智能中台 · 意图识别 · 合规风险
- 研发型企业AI转型方案/报告/ 9 篇:角色矩阵(交互版) · 培训1-6课 · 角色矩阵 · 实操培训 · 培训路线图
- AI Agent 驾驭工程/报告/ 1 篇:Harness Engineering 全面解析
- 简历AI技术讲解.html + .md
- Dify部署分析报告.html
2026-06-20 22:38:20 +08:00

522 lines
28 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>简历 AI 技术讲解 — Agent · Skills · RAG · AI Coding</title>
<style>
:root {
--color-primary: #0078D4; --color-primary-hover: #106EBE; --color-primary-active: #005A9E; --color-primary-bg: #DEECF9;
--color-success: #107C10; --color-success-bg: #DFF6DD; --color-success-border: #A7E3A1;
--color-warning: #FF8C00; --color-warning-bg: #FFF4CE; --color-warning-border: #FFD335;
--color-error: #FF4D4F; --color-error-bg: #FDE7E9; --color-error-border: #EEACB2;
--bg: #FAF9F8; --bg-container: #FFFFFF; --bg-elevated: #F3F2F1;
--border: #E1DFDD; --border-light: #EDEBE9;
--text-primary: #201F1E; --text-secondary: #605E5C; --text-tertiary: #8A8886;
--radius-xs: 2px; --radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px;
--shadow-sm: 0 0 2px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.14);
--shadow-md: 0 0 2px rgba(0,0,0,0.12), 0 2px 4px rgba(0,0,0,0.14);
--header-h: 64px; --sidebar-w: 260px;
}
*{margin:0;padding:0;box-sizing:border-box;}
body{font-family:'Segoe UI Variable Text','Segoe UI',system-ui,-apple-system,BlinkMacSystemFont,'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;background:var(--bg);color:var(--text-primary);line-height:1.57;font-size:14px;}
::-webkit-scrollbar{width:6px;height:6px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}
/* ===== Header ===== */
.header{position:fixed;top:0;left:0;right:0;height:var(--header-h);background:rgba(255,255,255,0.85);backdrop-filter:blur(24px) saturate(125%);border-bottom:1px solid var(--border-light);display:flex;align-items:center;padding:0 2rem;z-index:100;}
.header .menu-btn{width:36px;height:36px;border:none;background:none;cursor:pointer;border-radius:var(--radius-sm);display:none;align-items:center;justify-content:center;flex-shrink:0;padding:0;color:var(--text-secondary);margin-right:8px;}
.header .menu-btn:hover{background:var(--bg-elevated);}
.header .menu-btn svg{width:20px;height:20px;}
.header .back-link{margin-right:16px;font-size:13px;color:var(--color-primary);text-decoration:none;flex-shrink:0;}
.header .back-link:hover{text-decoration:underline;}
.header h1{font-size:18px;font-weight:700;background:linear-gradient(135deg,#0078D4 0%,#2B88D8 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;}
/* ===== Sidebar ===== */
.sidebar{position:fixed;top:var(--header-h);left:0;bottom:0;width:var(--sidebar-w);background:var(--bg-container);border-right:1px solid var(--border);overflow-y:auto;padding:1.25rem 0;z-index:90;}
.sidebar .toc-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);padding:0 1.25rem;margin-bottom:.75rem;font-weight:600;}
.sidebar nav a{display:block;padding:.45rem 1.25rem;color:var(--text-secondary);text-decoration:none;font-size:13px;line-height:1.4;border-left:2px solid transparent;transition:all .15s;}
.sidebar nav a:hover,.sidebar nav a.active{color:var(--color-primary);background:var(--color-primary-bg);}
.sidebar nav a.active{border-left-color:var(--color-primary);font-weight:600;}
/* ===== Sidebar overlay (mobile) ===== */
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.3);z-index:85;}
/* ===== Main ===== */
.main{margin-left:var(--sidebar-w);margin-top:var(--header-h);padding:32px 40px 64px;max-width:1100px;}
h2{font-size:22px;line-height:30px;padding-bottom:8px;border-bottom:1px solid var(--border);margin:40px 0 20px;color:var(--color-primary);scroll-margin-top:calc(var(--header-h) + 1rem);}
h3{font-size:18px;line-height:26px;margin:28px 0 12px;color:var(--text-primary);scroll-margin-top:calc(var(--header-h) + 1rem);}
h4{font-size:15px;line-height:22px;margin:20px 0 8px;color:var(--text-secondary);font-weight:600;}
p{margin:8px 0 16px;color:var(--text-secondary);}
strong{color:var(--text-primary);}
blockquote{background:var(--color-primary-bg);border-left:4px solid var(--color-primary);margin:16px 0;padding:12px 20px;border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:14px;color:var(--text-primary);}
.table-wrap{overflow-x:auto;margin:20px 0;border:1px solid var(--border);border-radius:var(--radius-md);}
table{width:100%;border-collapse:collapse;font-size:13px;}
th,td{padding:10px 14px;border:1px solid var(--border);text-align:left;vertical-align:top;line-height:1.5;}
th{background:var(--bg-elevated);font-weight:700;color:var(--text-primary);white-space:nowrap;font-size:12px;}
td{background:var(--bg-container);color:var(--text-secondary);}
ul,ol{margin:8px 0 16px 20px;color:var(--text-secondary);}
li{margin-bottom:6px;line-height:1.6;}
ul ul,ol ol{margin-top:4px;margin-bottom:4px;}
code{font-family:'Cascadia Code','Fira Code','SF Mono',Consolas,monospace;background:var(--bg-elevated);padding:2px 6px;border-radius:var(--radius-xs);font-size:12.5px;color:var(--color-primary);}
pre{background:#1E1E1E;color:#D4D4D4;padding:16px 20px;border-radius:var(--radius-md);overflow-x:auto;margin:16px 0;font-size:13px;line-height:1.6;font-family:'Cascadia Code','Fira Code','SF Mono',Consolas,monospace;}
pre code{background:transparent;padding:0;color:inherit;font-size:inherit;}
.diagram{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:20px 24px;margin:20px 0;font-family:'Cascadia Code','Fira Code','SF Mono',Consolas,monospace;font-size:12px;line-height:1.7;white-space:pre;overflow-x:auto;color:var(--text-secondary);}
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:16px;margin:20px 0;}
.card{background:var(--bg-container);border:1px solid var(--border);border-radius:var(--radius-md);padding:20px 24px;box-shadow:var(--shadow-sm);}
.card h4{font-size:15px;font-weight:700;margin:0 0 12px;color:var(--text-primary);}
.card p,.card li{font-size:13px;}
.tag{display:inline-block;padding:1px 8px;border-radius:10px;font-size:10px;font-weight:600;margin-right:4px;}
.tag-blue{background:var(--color-primary-bg);color:var(--color-primary);border:1px solid #91CAFF;}
.tag-green{background:var(--color-success-bg);color:var(--color-success);border:1px solid var(--color-success-border);}
.footer{text-align:center;padding:28px 0;color:var(--text-tertiary);font-size:13px;border-top:1px solid var(--border-light);margin-top:40px;}
/* ===== Tablet: narrower sidebar, smaller main ===== */
@media(max-width:1024px){
:root{--sidebar-w:220px;}
.main{padding:24px 28px 48px;max-width:100%;}
.card-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));}
}
/* ===== Mobile: hide sidebar, show hamburger ===== */
@media(max-width:768px){
:root{--sidebar-w:0;}
.header .menu-btn{display:flex;}
.sidebar{transform:translateX(-100%);transition:transform var(--fluent-duration-normal,167ms) cubic-bezier(0.8,0.0,0.2,1.0);}
.sidebar.open{transform:translateX(0);}
.sidebar-overlay.show{display:block;}
.main{margin-left:0;padding:20px 16px 40px;}
.card-grid{grid-template-columns:1fr;}
.header h1{font-size:15px;}
.diagram{font-size:10px;padding:14px 16px;}
pre{font-size:11px;padding:12px 14px;}
}
</style>
</head>
<body>
<header class="header">
<button class="menu-btn" id="menuBtn" aria-label="菜单" onclick="toggleSidebar()">
<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z" clip-rule="evenodd"/></svg>
</button>
<a href="./index.html" class="back-link">← 返回知识库</a>
<h1>简历 AI 技术讲解</h1>
</header>
<!-- Sidebar overlay (mobile) -->
<div class="sidebar-overlay" id="sidebarOverlay" onclick="closeSidebar()"></div>
<!-- Sidebar -->
<aside class="sidebar" id="sidebar">
<div class="toc-label">章节导航</div>
<nav>
<a href="#s1">1. Agent 智能体</a>
<a href="#s2">2. Skills 编排系统</a>
<a href="#s3">3. RAG 知识库</a>
<a href="#s4">4. Function Calling</a>
<a href="#s5">5. Prompt Engineering</a>
<a href="#s6">6. AI Coding 工具链</a>
<a href="#s7">7. AI 视觉(YOLO</a>
<a href="#s8">8. LangChain</a>
<a href="#s9">9. MCP 协议</a>
<a href="#s10">10. 技术组合全景</a>
</nav>
</aside>
<!-- Main content -->
<div class="main">
<p style="font-size:15px;margin-top:4px;">
本文针对<a href="./张德海_简历.html" style="color:var(--color-primary);">张德海简历</a>中涉及的 AI 相关经验,
深入讲解背后的技术原理、架构设计与落地实践。覆盖 Agent 智能体、Skills 编排、RAG 知识库、Function Calling、
Prompt Engineering、AI Coding 工具链、AI 视觉、LangChain 及 MCP 协议九大技术领域。
</p>
<!-- 1. Agent -->
<h2 id="s1">1. Agent 智能体</h2>
<h3>是什么</h3>
<p>
Agent(智能体)是能够<strong>自主感知环境、制定计划、调用工具、执行多步任务</strong>的 AI 程序。
与传统的"一问一答"式聊天机器人不同,Agent 具备<strong>自主决策能力</strong>——它在执行过程中自我反思、
调整策略,遇到错误时自动重试或换方案。
</p>
<h3>核心架构:ReAct 循环</h3>
<div class="diagram">
用户输入 → Agent 大脑(LLM) → 思考(Reasoning) → 选择工具(Tool Selection)
→ 执行(Action) → 观察结果(Observation) → 继续思考或输出最终答案</div>
<p>这是 <strong>ReActReasoning + Acting)循环</strong>,Agent 在此循环中反复迭代,直到完成任务或达到终止条件。</p>
<h3>简历中的对应实践</h3>
<ul>
<li><strong>自主决策 Agent</strong>:让 LLM 不只是回答问题,而是像员工一样完成完整任务(例如"分析上季度供热能耗异常并出报告")</li>
<li><strong>多 Agent 协作</strong>:多个 Agent 像团队一样分工——一个负责任务拆解与分发,多个执行 Agent 并行工作,汇总 Agent 整合结果。冲突仲裁机制解决结论不一致问题</li>
<li><strong>Function Calling / Tool Use</strong>:Agent 通过调用外部 API/工具与真实世界交互——查数据库、发邮件、调摄像头、控制设备</li>
<li><strong>上下文管理与会话记忆</strong>:维护长对话的上下文窗口,通过摘要、压缩、向量记忆等技术让 Agent 记住之前的交互</li>
<li><strong>安全护栏(Guardrails</strong>:限制 Agent 行为边界——不能删除生产数据、不能发送未经审核的外部邮件、预算上限控制</li>
</ul>
<!-- 2. Skills -->
<h2 id="s2">2. Skills 编排系统</h2>
<h3>是什么</h3>
<p>
Skills 编排是将<strong>业务能力封装为独立的、可插拔的"技能模块"</strong>,由 LLM 根据用户意图<strong>自动路由</strong>到对应 Skill 执行。
</p>
<h3>与 Agent 的关系</h3>
<div class="diagram">
Agent 智能体(大脑 / 决策层)
├── Skill 1: 数据查询(查 MySQL / 时序库)
├── Skill 2: 报表生成(生成 PDF / Excel
├── Skill 3: 消息推送(企业微信 / 邮件 / 短信)
├── Skill 4: 审批流程(调用 OA 接口)
├── Skill 5: 视频分析(调用 YOLO 模型)
└── Skill 6: 能耗预测(调 ML 模型)</div>
<p>Agent 负责<strong>理解意图 + 决策调度</strong>Skills 负责<strong>具体执行</strong></p>
<h3>简历中的对应实践</h3>
<ul>
<li><strong>可插拔 Skills 框架</strong>:新业务能力以 Skill 插件形式注册,支持热加载——不停机就能上线新能力</li>
<li><strong>LLM 自动路由与编排</strong>:用户说"查一下天津项目上个月的能耗",Agent 自动识别并编排"数据查询 Skill → 能耗预测 Skill → 报表生成 Skill"</li>
<li><strong>行业定制 Skill</strong>:医疗 DRGs(疾病诊断相关分组)分析、供热能耗预测等垂直领域 Skill</li>
</ul>
<!-- 3. RAG -->
<h2 id="s3">3. RAG 知识库(检索增强生成)</h2>
<h3>是什么</h3>
<p>
RAGRetrieval-Augmented Generation)是让 LLM <strong>先检索相关文档,再基于检索结果生成回答</strong>的技术。
它解决了 LLM 的两大痛点:
</p>
<ul>
<li><strong>知识截止日期</strong>:模型训练数据有截止时间,不知道最新信息</li>
<li><strong>幻觉问题</strong>:没有知识支撑时容易编造,RAG 让回答有据可查</li>
</ul>
<h3>完整 Pipeline</h3>
<div class="diagram">
文档摄入 → 解析(PDF/Word/HTML) → 文本分块(Chunking) → Embedding 向量化 → 存入向量数据库
用户提问 → Embedding 向量化 → 向量相似度检索 → 召回 Top-K 相关文档块 → 拼入 Prompt → LLM 生成回答</div>
<h3>简历中的对应实践</h3>
<h4>向量数据库选型</h4>
<div class="card-grid">
<div class="card">
<h4>Milvus <span class="tag tag-blue">生产级</span></h4>
<p>开源分布式向量数据库,支持十亿级向量检索,混合查询(标量+向量),适合大规模生产环境。</p>
</div>
<div class="card">
<h4>Chroma <span class="tag tag-green">轻量级</span></h4>
<p>轻量级向量数据库,Python 原生,嵌入式运行,适合原型开发和小规模场景。</p>
</div>
<div class="card">
<h4>FAISS <span class="tag tag-blue">算法库</span></h4>
<p>Meta 开源的向量相似度搜索库,纯算法层面,GPU 加速,支持多种索引类型(IVF/HNSW/PQ)。</p>
</div>
</div>
<h4>混合检索(Hybrid Search</h4>
<p>同时使用<strong>语义检索</strong>(向量相似度)+ <strong>关键词检索</strong>BM25/Elasticsearch+ <strong>元数据过滤</strong>(按日期、分类、来源筛选),取长补短,提升召回精度。</p>
<h4>实际场景</h4>
<ul>
<li><strong>制度问答</strong>:员工问"年假怎么算",RAG 从公司制度文档中检索并给出准确条款</li>
<li><strong>民政 AI 客服</strong>:市民问低保申请条件,从民政知识库检索婚姻/低保/养老/残疾/殡葬政策</li>
<li><strong>合同审查</strong>:上传合同 → 检索相关法规和先例条款 → AI 标注风险项</li>
<li><strong>辅助诊断</strong>:输入病症描述 → 检索相似病例和诊疗指南 → 辅助医生决策</li>
</ul>
<!-- 4. Function Calling -->
<h2 id="s4">4. Function Calling / Tool Use</h2>
<h3>是什么</h3>
<p>
让 LLM <strong>输出结构化的函数调用请求</strong>,而不是自然语言,从而实现与外部系统的精确对接。
</p>
<h3>工作原理</h3>
<div class="diagram">
用户: "帮我查一下张三的社保缴纳记录"
LLM 输出(JSON 格式):
{
"function": "query_social_security",
"parameters": {
"name": "张三",
"date_range": "2024-01-01~2024-12-31"
}
}
业务系统执行 → 返回结构化结果 → LLM 用自然语言呈现给用户</div>
<h3>与传统 API 调用的区别</h3>
<p>
传统方式是 <code>if-else 意图识别 + 槽位填充</code>,覆盖有限。Function Calling 让 LLM 自主决定
<strong>要不要调函数、调哪个函数、用什么参数</strong>,灵活度大幅提升。
</p>
<!-- 5. Prompt Engineering -->
<h2 id="s5">5. Prompt Engineering</h2>
<h3>是什么</h3>
<p>
<strong>提示工程</strong>——设计、优化和管理 LLM 的输入提示,以引导模型产出期望的输出。
这是一个<strong>工程化</strong>的过程,不是简单的"写好提示词"。
</p>
<h3>关键技术</h3>
<div class="table-wrap">
<table>
<thead><tr><th>技术</th><th>说明</th></tr></thead>
<tbody>
<tr><td><strong>Few-shot Prompting</strong></td><td>在 Prompt 中给出几个示例,让模型学会输出格式和风格</td></tr>
<tr><td><strong>Chain-of-Thought</strong></td><td>要求模型"一步步思考",显著提升推理任务准确率</td></tr>
<tr><td><strong>System Prompt 设计</strong></td><td>设定角色、行为约束、输出格式等系统级指令</td></tr>
<tr><td><strong>Prompt 模板化</strong></td><td>类似代码模板,变量替换 + 条件分支,工程化管理</td></tr>
<tr><td><strong>Prompt 优化与 A/B 测试</strong></td><td>不同 Prompt 效果对比,迭代优化</td></tr>
<tr><td><strong>Token 预算控制</strong></td><td>平衡上下文长度与成本——摘要压缩、动态裁剪</td></tr>
</tbody>
</table>
</div>
<!-- 6. AI Coding -->
<h2 id="s6">6. AI Coding 工具链</h2>
<div class="card-grid">
<div class="card">
<h4>Claude Code</h4>
<p>Anthropic 出品的<strong>终端原生 AI 编程助手</strong>,运行在命令行环境:</p>
<ul>
<li>可直接读写文件、执行 Shell、操作 Git,不止是"建议代码"</li>
<li>Agent 模式:给定任务自主规划步骤、执行、验证</li>
<li>支持 MCP 协议接入外部工具和数据源</li>
<li>支持 Hooks 机制在特定事件触发自定义逻辑</li>
</ul>
</div>
<div class="card">
<h4>GitHub Copilot</h4>
<p>微软/GitHub 的 AI 编程助手,深度集成 IDE:</p>
<ul>
<li>代码补全:根据上下文实时建议下一行/下一段代码</li>
<li>Chat 面板:IDE 内对话式编程</li>
<li>Agent 模式:自主规划多文件编辑、运行终端命令</li>
<li>代码审查:PR 级别的 AI Review</li>
</ul>
</div>
<div class="card">
<h4>Cursor</h4>
<p>基于 VS Code 深度定制的 AI-first IDE</p>
<ul>
<li>全文件上下文感知:不只是当前文件,而是整个项目</li>
<li>Composer:多文件协同编辑</li>
<li>Apply 模式:AI 修改直接应用到代码</li>
<li>Rules 系统:项目级/用户级行为约束</li>
</ul>
</div>
<div class="card">
<h4>Windsurf</h4>
<p>Codeium 出品的 AI IDE</p>
<ul>
<li>Cascade:流式 AI 交互,边生成边应用</li>
<li>强调实时协作和上下文保持</li>
</ul>
</div>
<div class="card">
<h4>Aider</h4>
<p>开源命令行 AI 编程工具:</p>
<ul>
<li>Git 原生:每次修改自动 commit,形成干净的变更历史</li>
<li>多模型支持:可对接 OpenAI、Anthropic、本地模型</li>
<li>地图文件(Map):生成仓库结构图帮助 LLM 理解项目</li>
<li>多文件编辑:一次对话可修改多个文件</li>
</ul>
</div>
<div class="card">
<h4>AI 代码审查 &amp; 自动测试生成</h4>
<ul>
<li><strong>AI Code Review</strong>:PR/MR 阶段由 AI 自动审查代码质量、安全漏洞、性能问题</li>
<li><strong>自动测试生成</strong>:AI 分析代码逻辑自动生成单元测试、集成测试用例,提升覆盖率</li>
</ul>
</div>
</div>
<!-- 7. AI 视觉 -->
<h2 id="s7">7. AI 视觉(计算机视觉)</h2>
<h3>YOLOYou Only Look Once</h3>
<p>实时目标检测算法,核心特点:</p>
<ul>
<li><strong>单次推理</strong>:一次前向传播同时完成目标定位 + 分类,速度极快</li>
<li><strong>版本迭代</strong>YOLOv5 → YOLOv8 → YOLOv10/YOLO11,精度和速度持续提升</li>
<li><strong>实际场景</strong>:视频监控中的人/车/物检测、安防异常行为识别</li>
</ul>
<h3>简历中的应用</h3>
<ul>
<li><strong>视频智能识别</strong>:对接 GB/T 28181 国标视频流,实时分析监控画面</li>
<li><strong>自定义模型训练部署</strong>:针对特定场景(供热站仪表读数、工地安全帽检测)训练专属模型</li>
<li><strong>视频融合平台</strong>:国标视频接入 + AI 识别叠加,形成智能安防方案</li>
</ul>
<!-- 8. LangChain -->
<h2 id="s8">8. LangChain</h2>
<h3>是什么</h3>
<p>
LangChain 是 LLM 应用开发框架,提供标准化的<strong>链(Chain</strong><strong>Agent</strong>
<strong>工具(Tool</strong><strong>记忆(Memory</strong><strong>检索器(Retriever</strong>等抽象。
它统一了不同 LLM 提供商(OpenAI/Anthropic/本地模型)的接口,简化了 RAG、Agent 等模式的实现。
</p>
<h3>核心组件</h3>
<pre><code># Chain:将多个步骤串联
chain = prompt | llm | output_parser
# Agent + Tools:让 LLM 学会用工具
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import Tool
from langchain.memory import ConversationBufferMemory
from langchain.vectorstores import Milvus
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)</code></pre>
<!-- 9. MCP -->
<h2 id="s9">9. MCP 协议(Model Context Protocol</h2>
<h3>是什么</h3>
<p>
Anthropic 推出的<strong>开放标准协议</strong>,定义了 AI 模型与外部工具/数据源之间的统一通信方式。
可以理解为<strong>"AI 世界的 USB-C 接口"</strong>
</p>
<h3>架构</h3>
<div class="diagram">
AI 应用(Host
↓ MCP 协议
MCP 客户端(Claude Code / Cursor 等)
↓ JSON-RPC over stdio/SSE
MCP 服务器(工具提供方)
├── 数据库 MCP Server → PostgreSQL / MySQL
├── 文件系统 MCP Server → 本地文件
├── API MCP Server → GitHub / Jira / Slack
└── 自定义 MCP Server → 企业内部系统</div>
<h3>意义</h3>
<p>
在 MCP 之前,每个 AI 工具都要单独对接每个外部系统(M×N 的集成复杂度)。MCP 标准化后,工具只需实现一次 MCP Server,
所有支持 MCP 的 AI 应用都能使用(M+N 的复杂度)。
</p>
<!-- 10. 全景 -->
<h2 id="s10">10. 技术组合全景</h2>
<p>简历中的 AI 能力不是孤立的,它们在实际项目中形成一条完整链路:</p>
<div class="diagram" style="line-height:1.8;">
┌─────────────────────────────────────────────────────────┐
│ 应用层(场景) │
│ 智能客服 │ 制度问答 │ 合同审查 │ 能耗预测 │ 视频安防 │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Agent 智能体层(决策) │
│ 意图识别 → 任务规划 → Skills 路由 → 多 Agent 协作 │
│ Function Calling / Tool Use │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Skills 编排层(执行) │
│ 数据查询 │ 报表生成 │ 消息推送 │ 审批流 │ 视频分析 │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ 知识 / 数据层(支撑) │
│ RAG 知识库(Milvus/Chroma) │ 向量检索 │ 混合检索 │
│ 时序数据库 │ 业务数据库 │ 文档 Pipeline │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ 基础设施层 │
│ LLM API │ Prompt Engineering │ LangChain │
│ AI Coding 工具链 │ MCP 协议 │ 模型训练 / 部署 │
└─────────────────────────────────────────────────────────┘</div>
<blockquote>
<strong>核心理念</strong>:让 AI 不只是"聊天",而是真正能干活——查数据、调系统、出报告、审合同、看监控。
这也正是简历中反复强调的"<strong>AI 应用落地</strong>"的含义。
</blockquote>
<footer class="footer">
基于 <a href="./张德海_简历.html" style="color:var(--color-primary);">张德海简历</a> AI 相关经验整理 · 2026-06
</footer>
</div>
<script>
/* ===== Scroll spy — highlight active sidebar link ===== */
(function(){
const navLinks = document.querySelectorAll('.sidebar nav a');
const headings = [];
navLinks.forEach(a => {
const id = a.getAttribute('href').slice(1);
const el = document.getElementById(id);
if (el) headings.push({ el, a });
});
function onScroll(){
let current = null;
const offset = 80; // header height + a bit
for (const { el, a } of headings) {
if (el.getBoundingClientRect().top <= offset) {
current = a;
}
}
navLinks.forEach(a => a.classList.remove('active'));
if (current) current.classList.add('active');
}
window.addEventListener('scroll', onScroll, { passive: true });
onScroll();
})();
/* ===== Mobile sidebar toggle ===== */
function toggleSidebar(){
const sidebar = document.getElementById('sidebar');
const overlay = document.getElementById('sidebarOverlay');
sidebar.classList.toggle('open');
overlay.classList.toggle('show');
}
function closeSidebar(){
const sidebar = document.getElementById('sidebar');
const overlay = document.getElementById('sidebarOverlay');
sidebar.classList.remove('open');
overlay.classList.remove('show');
}
/* Close sidebar when a nav link is clicked (mobile) */
document.querySelectorAll('.sidebar nav a').forEach(a => {
a.addEventListener('click', () => {
if (window.innerWidth <= 768) closeSidebar();
});
});
</script>
</body>
</html>