<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>第一篇 项目规划 on HappyRock</title>
    <link>/zh-cn/docs/wecomai/chapter-1/</link>
    <description>Recent content in 第一篇 项目规划 on HappyRock</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Thu, 02 Jul 2026 22:11:54 +0800</lastBuildDate>
    <atom:link href="/zh-cn/docs/wecomai/chapter-1/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>第一章 为什么我要做一个企业AI助手</title>
      <link>/zh-cn/docs/wecomai/chapter-1/1_why/</link>
      <pubDate>Thu, 02 Jul 2026 22:11:54 +0800</pubDate>
      <guid>/zh-cn/docs/wecomai/chapter-1/1_why/</guid>
      <description>&lt;hr&gt;&#xA;&lt;h1 id=&#34;11-ai-的浪潮已经从聊天进入应用&#34;&gt;1.1 AI 的浪潮已经从「聊天」进入「应用」&lt;/h1&gt;&#xA;&lt;p&gt;从 ChatGPT 发布开始，大语言模型的发展速度远远超出了大多数人的预期。&lt;/p&gt;&#xA;&lt;p&gt;短短几年时间里，越来越多的模型不断出现：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;DeepSeek&lt;/li&gt;&#xA;&lt;li&gt;OpenAI GPT 系列&lt;/li&gt;&#xA;&lt;li&gt;Claude&lt;/li&gt;&#xA;&lt;li&gt;Gemini&lt;/li&gt;&#xA;&lt;li&gt;Qwen&lt;/li&gt;&#xA;&lt;li&gt;Kimi&lt;/li&gt;&#xA;&lt;li&gt;以及各种开源模型&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;对于普通用户来说，这些模型更多的是一个聊天工具。&lt;/p&gt;&#xA;&lt;p&gt;但对于企业而言，真正关心的问题并不是：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;AI 能不能聊天？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;而是：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;AI 能不能帮助企业完成实际工作？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;例如：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;自动回复客户咨询&lt;/li&gt;&#xA;&lt;li&gt;自动整理会议纪要&lt;/li&gt;&#xA;&lt;li&gt;自动生成销售方案&lt;/li&gt;&#xA;&lt;li&gt;自动分析客户意图&lt;/li&gt;&#xA;&lt;li&gt;自动分类工单&lt;/li&gt;&#xA;&lt;li&gt;自动生成日报&lt;/li&gt;&#xA;&lt;li&gt;自动查询企业知识库&lt;/li&gt;&#xA;&lt;li&gt;自动完成内部审批辅助&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这些需求有一个共同特点：&lt;/p&gt;&#xA;&lt;p&gt;AI 不再只是一个聊天窗口，而是开始进入企业业务流程。&lt;/p&gt;&#xA;&lt;p&gt;真正有价值的，不是模型本身，而是模型如何与企业现有系统结合。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;12-为什么选择企业微信&#34;&gt;1.2 为什么选择企业微信&lt;/h1&gt;&#xA;&lt;p&gt;企业内部已经拥有大量的信息系统：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;ERP&lt;/li&gt;&#xA;&lt;li&gt;CRM&lt;/li&gt;&#xA;&lt;li&gt;OA&lt;/li&gt;&#xA;&lt;li&gt;工单系统&lt;/li&gt;&#xA;&lt;li&gt;知识库&lt;/li&gt;&#xA;&lt;li&gt;邮件&lt;/li&gt;&#xA;&lt;li&gt;IM&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;如果再单独开发一个新的 AI 系统，员工还需要切换平台，这无疑增加了学习成本。&lt;/p&gt;&#xA;&lt;p&gt;企业微信则天然具备几个优势：&lt;/p&gt;&#xA;&lt;p&gt;第一，它已经是企业内部的工作入口。&lt;/p&gt;&#xA;&lt;p&gt;员工每天都会使用企业微信处理工作，无需再安装新的客户端，也不需要额外培训。&lt;/p&gt;&#xA;&lt;p&gt;第二，它提供了完善的开放接口。&lt;/p&gt;&#xA;&lt;p&gt;包括：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;消息回调&lt;/li&gt;&#xA;&lt;li&gt;主动发送消息&lt;/li&gt;&#xA;&lt;li&gt;通讯录管理&lt;/li&gt;&#xA;&lt;li&gt;客户联系&lt;/li&gt;&#xA;&lt;li&gt;群机器人&lt;/li&gt;&#xA;&lt;li&gt;日程&lt;/li&gt;&#xA;&lt;li&gt;审批&lt;/li&gt;&#xA;&lt;li&gt;文档&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这些能力意味着，AI 可以真正参与到企业业务流程中，而不是停留在聊天界面。&lt;/p&gt;&#xA;&lt;p&gt;第三，它拥有完善的身份体系。&lt;/p&gt;&#xA;&lt;p&gt;企业微信中的每一位员工都拥有唯一的 UserID，AI 可以知道消息来自谁，也可以根据组织架构提供更加精准的服务。&lt;/p&gt;&#xA;&lt;p&gt;相比个人微信，这种企业级身份体系更适合构建企业 AI 应用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>第二章 系统总体架构设计</title>
      <link>/zh-cn/docs/wecomai/chapter-1/2_arg/</link>
      <pubDate>Thu, 02 Jul 2026 21:29:54 +0800</pubDate>
      <guid>/zh-cn/docs/wecomai/chapter-1/2_arg/</guid>
      <description>&lt;hr&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;优秀的系统不是一开始就设计好的，而是在不断解决真实问题的过程中逐渐演进出来的。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;如果现在回头来看整个项目，很多人可能会觉得最终的架构十分自然：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;企业微信&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ▼&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Webhook（FastAPI）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ▼&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Redis 消息队列&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ▼&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Worker&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ▼&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DeepSeek&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ▼&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;企业微信发送接口&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ▼&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;用户收到回复&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但事实上，我们最初并不是这样设计的。&lt;/p&gt;&#xA;&lt;p&gt;整个架构经历了几轮迭代，每一次调整都来自真实运行过程中暴露出来的问题。本章将完整介绍系统的设计目标、架构演进过程，以及为什么最终形成现在这种解耦、异步、可扩展的实现方式。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;21-从需求出发而不是从代码出发&#34;&gt;2.1 从需求出发，而不是从代码出发&lt;/h1&gt;&#xA;&lt;p&gt;很多开发者在接到一个需求后，第一反应是打开编辑器开始写代码。&lt;/p&gt;&#xA;&lt;p&gt;例如，当有人提出：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;“做一个企业微信 AI 自动回复。”&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;很多人的第一想法就是：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;接收企业微信消息。&lt;/li&gt;&#xA;&lt;li&gt;调用大模型接口。&lt;/li&gt;&#xA;&lt;li&gt;返回 AI 回复。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;看似没有问题。&lt;/p&gt;&#xA;&lt;p&gt;但是，真正开始分析业务后，我们会发现，这个需求远远不只是“自动回复”。&lt;/p&gt;&#xA;&lt;p&gt;如果把需求拆开来看，它至少包含以下几个方面：&lt;/p&gt;&#xA;&lt;h3 id=&#34;一消息必须能够稳定接收&#34;&gt;一、消息必须能够稳定接收&lt;/h3&gt;&#xA;&lt;p&gt;企业微信发送消息后，会主动回调我们提供的接口。&lt;/p&gt;&#xA;&lt;p&gt;因此系统必须能够：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;正确完成 URL 验证。&lt;/li&gt;&#xA;&lt;li&gt;解密企业微信加密消息。&lt;/li&gt;&#xA;&lt;li&gt;解析 XML 内容。&lt;/li&gt;&#xA;&lt;li&gt;提取发送者、消息类型和消息内容。&lt;/li&gt;&#xA;&lt;li&gt;快速响应企业微信服务器。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这里有一个非常重要的原则：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Webhook 的职责是“接收消息”，而不是“处理消息”。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;这是后续整个架构设计的核心思想。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;二消息不能丢失&#34;&gt;二、消息不能丢失&lt;/h3&gt;&#xA;&lt;p&gt;如果系统在调用 AI 时崩溃，用户消息怎么办？&lt;/p&gt;</description>
    </item>
    <item>
      <title> 第三章 技术选型与核心组件</title>
      <link>/zh-cn/docs/wecomai/chapter-1/3_skill/</link>
      <pubDate>Thu, 02 Jul 2026 20:23:18 +0800</pubDate>
      <guid>/zh-cn/docs/wecomai/chapter-1/3_skill/</guid>
      <description>&lt;p&gt;前两章主要回答的是 &lt;strong&gt;为什么做&lt;/strong&gt;、&lt;strong&gt;做什么&lt;/strong&gt;，那么从这一章开始，就真正进入技术部分。&lt;/p&gt;&#xA;&lt;p&gt;这一章的目标不是讲代码，而是让读者知道：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;为什么最终选择这一套技术栈，而不是网上那些五花八门的方案。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;这一章的定位应该属于&lt;strong&gt;架构设计篇&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;没有最好的技术，只有最适合当前阶段的技术。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;很多人在做 AI Agent 时，一开始就陷入了一个误区。&lt;/p&gt;&#xA;&lt;p&gt;今天看到 LangGraph 很火，就去研究 LangGraph；明天看到 AutoGen，又重新推倒重来；后天 MCP 火了，又开始全部重构。&lt;/p&gt;&#xA;&lt;p&gt;最后折腾了几个月，AI 没做出来，时间倒是全部浪费了。&lt;/p&gt;&#xA;&lt;p&gt;而我做这个企业微信 AI 助手时，给自己定了一条原则：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;一切技术，只为解决问题服务。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;所以，在真正开始开发之前，我先确定了整个系统应该满足哪些要求。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;31-我希望它具备哪些能力&#34;&gt;3.1 我希望它具备哪些能力？&lt;/h1&gt;&#xA;&lt;p&gt;我给整个 AI 助手列了一张需求清单。&lt;/p&gt;&#xA;&lt;p&gt;第一，它必须能够接收企业微信消息。&lt;/p&gt;&#xA;&lt;p&gt;用户发送一句话。&lt;/p&gt;&#xA;&lt;p&gt;例如：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;今天上海天气怎么样？&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;系统应该能够立即收到这条消息。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;第二，它必须能够调用大模型。&lt;/p&gt;&#xA;&lt;p&gt;收到消息之后，不是自己写死回复，而是把内容发送给 DeepSeek、OpenAI 或 Claude。&lt;/p&gt;&#xA;&lt;p&gt;例如：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;用户：&#xA;今天上海天气怎么样？&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;AI 返回：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;今天上海多云，&#xA;最高温度 32℃，&#xA;建议......&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;整个过程完全自动完成。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;第三，它必须支持上下文。&lt;/p&gt;&#xA;&lt;p&gt;不能每一句话都是新的聊天。&lt;/p&gt;&#xA;&lt;p&gt;例如：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;用户：&#xA;帮我写一封邮件&#xA;&#xA;AI：&#xA;好的，请告诉我主题。&#xA;&#xA;用户：&#xA;离职申请&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;AI 必须知道：&lt;/p&gt;&#xA;&lt;p&gt;第二句话是在继续第一句话。&lt;/p&gt;&#xA;&lt;p&gt;所以：&lt;/p&gt;&#xA;&lt;p&gt;必须保存 Session。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;第四，它必须能够调用工具（Tool）。&lt;/p&gt;&#xA;&lt;p&gt;例如：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;查天气&#xA;查数据库&#xA;发邮件&#xA;查询库存&#xA;调用 ERP&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;未来这些都会变成 AI 的能力。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
