<?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/</link>
    <description>Recent content in 文档 on HappyRock</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Thu, 09 Jul 2026 00:23:18 +0800</lastBuildDate>
    <atom:link href="/zh-cn/docs/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Hermes Web Chat MVP 实战：从0搭建自己的AI网页聊天系统（完整版）</title>
      <link>/zh-cn/docs/hermes-web-chat-mvp/</link>
      <pubDate>Thu, 09 Jul 2026 00:23:18 +0800</pubDate>
      <guid>/zh-cn/docs/hermes-web-chat-mvp/</guid>
      <description>&lt;hr&gt;&#xA;&lt;h1 id=&#34;目录&#34;&gt;目录&lt;/h1&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;第一章 为什么要做 Hermes Web Chat&#xA;&#xA;第二章 整体架构设计&#xA;&#xA;第三章 项目目录&#xA;&#xA;第四章 前端页面开发&#xA;&#xA;第五章 FastAPI Backend&#xA;&#xA;第六章 DeepSeek调用&#xA;&#xA;第七章 API设计&#xA;&#xA;第八章 OpenResty代理配置&#xA;&#xA;第九章 HTTPS部署&#xA;&#xA;第十章 Systemd部署&#xA;&#xA;第十一章 常见问题排查&#xA;&#xA;第十二章 性能优化&#xA;&#xA;第十三章 下一步升级方向&#xA;&#xA;附录A 全部源码&#xA;&#xA;附录B 完整nginx配置&#xA;&#xA;附录C 完整systemd配置&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h1 id=&#34;第一章-为什么要做-hermes-web-chat&#34;&gt;第一章 为什么要做 Hermes Web Chat&lt;/h1&gt;&#xA;&lt;p&gt;之前我们的Hermes Agent已经可以：&lt;/p&gt;&#xA;&lt;p&gt;✅ 企业微信&lt;/p&gt;&#xA;&lt;p&gt;✅ Redis Queue&lt;/p&gt;&#xA;&lt;p&gt;✅ Worker&lt;/p&gt;&#xA;&lt;p&gt;✅ DeepSeek&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;blockquote&gt;&#xA;&lt;p&gt;浏览器 → Hermes → DeepSeek&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;这是整个Hermes最轻量的一层。&lt;/p&gt;&#xA;&lt;p&gt;整体结构如下：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Browser&#xA;&#xA;     │&#xA;&#xA;     ▼&#xA;&#xA;index.html&#xA;&#xA;     │&#xA;&#xA;fetch()&#xA;&#xA;     │&#xA;&#xA;     ▼&#xA;&#xA;FastAPI&#xA;&#xA;     │&#xA;&#xA;DeepSeek SDK&#xA;&#xA;     │&#xA;&#xA;     ▼&#xA;&#xA;DeepSeek API&#xA;&#xA;     │&#xA;&#xA;返回答案&#xA;&#xA;     │&#xA;&#xA;     ▼&#xA;&#xA;Browser&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;整个链路非常简单。&lt;/p&gt;</description>
    </item>
    <item>
      <title>企业微信 AI 自动回复系统实战排障记录（Docker &#43; FastAPI &#43; Redis）</title>
      <link>/zh-cn/docs/wechatautoreplay/</link>
      <pubDate>Thu, 02 Jul 2026 04:23:18 +0800</pubDate>
      <guid>/zh-cn/docs/wechatautoreplay/</guid>
      <description>&lt;p&gt;这次问题排查覆盖了一个典型的“企业级 AI 消息链路系统”，从 Webhook → Redis 队列 → Worker → AI → 企业微信发送，全链路几乎都踩了一遍坑。&lt;/p&gt;&#xA;&lt;p&gt;整套问题最终可以总结为一句话：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;不是系统没跑，而是“多层结构 + 配置 + 缩进 + import + 启动方式”叠加导致链路断裂。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;一系统架构设计目标状态&#34;&gt;一、系统架构设计（目标状态）&lt;/h1&gt;&#xA;&lt;p&gt;整体系统设计如下：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;企业微信消息&#xA;        ↓&#xA;FastAPI Webhook（wecom-bot）&#xA;        ↓&#xA;Redis Queue（解耦）&#xA;        ↓&#xA;Worker 消费队列&#xA;        ↓&#xA;DeepSeek / AI分析&#xA;        ↓&#xA;企业微信发送接口&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h1 id=&#34;二初始现象&#34;&gt;二、初始现象&lt;/h1&gt;&#xA;&lt;p&gt;系统启动后出现以下问题：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;❌ 企业微信收不到自动回复&lt;/li&gt;&#xA;&lt;li&gt;❌ worker 容器频繁重启&lt;/li&gt;&#xA;&lt;li&gt;❌ Redis 队列有数据但无反馈&lt;/li&gt;&#xA;&lt;li&gt;❌ FastAPI 接口日志正常但无结果&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;三问题排查全过程关键坑点&#34;&gt;三、问题排查全过程（关键坑点）&lt;/h1&gt;&#xA;&lt;h2 id=&#34;1-worker-直接崩溃缺少-python-包&#34;&gt;1️⃣ Worker 直接崩溃：缺少 Python 包&lt;/h2&gt;&#xA;&lt;h3 id=&#34;错误日志&#34;&gt;错误日志：&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ModuleNotFoundError: No module named &amp;#39;app&amp;#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;原因&#34;&gt;原因：&lt;/h3&gt;&#xA;&lt;p&gt;Docker 中 Python 没有设置模块路径&lt;/p&gt;</description>
    </item>
    <item>
      <title>企业微信 AI 自动回复系统完整实施方案（可运行版本）</title>
      <link>/zh-cn/docs/wechatai/</link>
      <pubDate>Thu, 02 Jul 2026 01:23:18 +0800</pubDate>
      <guid>/zh-cn/docs/wechatai/</guid>
      <description>&lt;p&gt;下面是一篇&lt;strong&gt;完整可落地的“企业微信 AI 机器人（DeepSeek + Redis + Worker 架构）实施方案”&lt;/strong&gt;，把我自己实施已经踩过的坑（回调、队列、worker、IP白名单、发送失败等）全部整合成一套标准化步骤。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;一整体架构设计&#34;&gt;一、整体架构设计&lt;/h2&gt;&#xA;&lt;p&gt;这是一个典型的“事件驱动 + 队列解耦 + AI处理”的架构：&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;企业微信服务器&#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;Nginx / OpenResty（反向代理 + HTTPS）&#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;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 队列（wecom_queue）&#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;      ├── 调用 DeepSeek（AI生成）&#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;企业微信消息发送 API&#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;hr&gt;&#xA;&lt;h2 id=&#34;二环境准备&#34;&gt;二、环境准备&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-安装基础依赖&#34;&gt;1. 安装基础依赖&lt;/h3&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt install -y docker docker-compose&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h3 id=&#34;2-创建项目目录&#34;&gt;2. 创建项目目录&lt;/h3&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p /opt/ai/wecom-bot&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /opt/ai/wecom-bot&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h3 id=&#34;3-docker-compose-基础服务&#34;&gt;3. Docker Compose 基础服务&lt;/h3&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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;wecom-bot&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;build&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;wecom-bot&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;8000:8000&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;depends_on&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;redis&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;  &lt;span style=&#34;color:#f92672&#34;&gt;worker&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;build&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;wecom-worker&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;command&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;python -m app.worker&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;depends_on&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;redis&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;  &lt;span style=&#34;color:#f92672&#34;&gt;redis&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;redis:7-alpine&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ai-redis&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;三fastapi-回调服务核心入口&#34;&gt;三、FastAPI 回调服务（核心入口）&lt;/h2&gt;&#xA;&lt;h3 id=&#34;文件appmainpy&#34;&gt;文件：&lt;code&gt;app/main.py&lt;/code&gt;&lt;/h3&gt;&#xA;&lt;p&gt;核心职责：&lt;/p&gt;</description>
    </item>
    <item>
      <title>企业微信 &#43; DeepSeek：从0到1搭建一个可用的 AI Agent 实战记录</title>
      <link>/zh-cn/docs/wecomdeepseekaiagent/</link>
      <pubDate>Wed, 01 Jul 2026 08:23:18 +0800</pubDate>
      <guid>/zh-cn/docs/wecomdeepseekaiagent/</guid>
      <description>&lt;p&gt;在企业内部做 AI 自动化时，很多人会卡在一个最基础的问题上：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;“企业微信回调明明都通了，但就是不回复。”&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;这篇文章记录的是一次完整的实战过程：从企业微信回调接入，到 DeepSeek 驱动 AI 回复，最终跑通一个可用的 AI Agent。&lt;/p&gt;&#xA;&lt;p&gt;这不是概念，而是一套真实跑起来的系统。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;一整体目标&#34;&gt;一、整体目标&lt;/h1&gt;&#xA;&lt;p&gt;我们要做的是一个最小可用 AI Agent：&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;企业微信消息 → AI处理（DeepSeek）→ 自动回复&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;核心链路：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;企业微信&#xA;   ↓&#xA;OpenResty / Nginx&#xA;   ↓&#xA;FastAPI 服务&#xA;   ↓&#xA;DeepSeek API&#xA;   ↓&#xA;加密回复&#xA;   ↓&#xA;企业微信&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h1 id=&#34;二技术选型&#34;&gt;二、技术选型&lt;/h1&gt;&#xA;&lt;p&gt;为了保证稳定性与可维护性，选择如下组合：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;企业微信：消息入口&lt;/li&gt;&#xA;&lt;li&gt;FastAPI：回调服务&lt;/li&gt;&#xA;&lt;li&gt;wechatpy：加解密库&lt;/li&gt;&#xA;&lt;li&gt;DeepSeek：大模型能力&lt;/li&gt;&#xA;&lt;li&gt;Docker：运行环境&lt;/li&gt;&#xA;&lt;li&gt;OpenResty/Nginx：反向代理&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;三企业微信回调的本质最容易踩坑的点&#34;&gt;三、企业微信回调的本质（最容易踩坑的点）&lt;/h1&gt;&#xA;&lt;p&gt;企业微信的回调不是普通 HTTP API，而是一个&lt;strong&gt;加密通信协议&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-请求是加密的-xml&#34;&gt;1. 请求是加密的 XML&lt;/h3&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-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;xml&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;Encrypt&amp;gt;&lt;/span&gt;...&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/Encrypt&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;MsgSignature&amp;gt;&lt;/span&gt;...&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/MsgSignature&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;TimeStamp&amp;gt;&lt;/span&gt;...&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/TimeStamp&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;Nonce&amp;gt;&lt;/span&gt;...&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/Nonce&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/xml&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-必须解密后才能拿到消息内容&#34;&gt;2. 必须解密后才能拿到消息内容&lt;/h3&gt;&#xA;&lt;h3 id=&#34;3-回复必须再次加密&#34;&gt;3. 回复必须再次加密&lt;/h3&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;👉 重点：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;❗“不是收到了 HTTP 请求就结束了，而是必须完整完成加解密闭环”&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;四核心实现最终稳定版本逻辑&#34;&gt;四、核心实现（最终稳定版本逻辑）&lt;/h1&gt;&#xA;&lt;h2 id=&#34;1-解密整个-xml关键修复点&#34;&gt;1. 解密整个 XML（关键修复点）&lt;/h2&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-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;decrypted_xml &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; crypto&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;decrypt_message(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    body&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;decode(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    msg_signature,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    timestamp,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nonce&#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;strong&gt;整个 XML body&lt;/strong&gt;&#xA;❌ 不是只传 Encrypt 字段&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 Let’s Encrypt 免费为网站申请 HTTPS 证书(完整教程)</title>
      <link>/zh-cn/docs/ssl/</link>
      <pubDate>Thu, 25 Jun 2026 22:42:54 +0800</pubDate>
      <guid>/zh-cn/docs/ssl/</guid>
      <description>&lt;p&gt;📌 本文介绍如何在 Linux（Ubuntu / Debian / CentOS）服务器上，为域名配置免费的 HTTPS 证书，并自动续期。&lt;/p&gt;&#xA;&lt;p&gt;适用于：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Nginx / OpenResty&lt;/li&gt;&#xA;&lt;li&gt;PHP 网站（如论坛、Flarum）&lt;/li&gt;&#xA;&lt;li&gt;静态站点（Hugo / Vue SPA）&lt;/li&gt;&#xA;&lt;li&gt;API 服务&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;一准备条件&#34;&gt;一、准备条件&lt;/h1&gt;&#xA;&lt;h2 id=&#34;1-必须具备&#34;&gt;1️⃣ 必须具备&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;已解析好的域名（A 记录指向服务器 IP）&lt;/li&gt;&#xA;&lt;li&gt;服务器可访问 80 / 443 端口&lt;/li&gt;&#xA;&lt;li&gt;root 或 sudo 权限&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-检查域名解析&#34;&gt;2️⃣ 检查域名解析&lt;/h2&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ping forum.happyrock.cloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nslookup forum.happyrock.cloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;确认指向你的服务器 IP。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;二安装-certbot证书申请工具&#34;&gt;二、安装 Certbot（证书申请工具）&lt;/h1&gt;&#xA;&lt;p&gt;Certbot 是 Let’s Encrypt 官方推荐工具：&lt;/p&gt;&#xA;&lt;p&gt;Certbot&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;ubuntu--debian&#34;&gt;Ubuntu / Debian&lt;/h2&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install certbot python3-certbot-nginx -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;centos--rhel&#34;&gt;CentOS / RHEL&lt;/h2&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo yum install epel-release -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo yum install certbot python3-certbot-nginx -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h1 id=&#34;三申请-https-证书自动模式&#34;&gt;三、申请 HTTPS 证书（自动模式）&lt;/h1&gt;&#xA;&lt;h2 id=&#34;方式一nginx-自动配置推荐&#34;&gt;方式一：Nginx 自动配置（推荐）&lt;/h2&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo certbot --nginx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;执行后会：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker Desktop &#43; n8n &#43; Qdrant &#43; Embedding 自动入库链完整教程</title>
      <link>/zh-cn/docs/workfollow/</link>
      <pubDate>Fri, 19 Jun 2026 16:19:24 +0800</pubDate>
      <guid>/zh-cn/docs/workfollow/</guid>
      <description>&lt;hr&gt;&#xA;&lt;h1 id=&#34;-docker-desktop--n8n--qdrant--embedding-自动入库链完整教程&#34;&gt;🚀 Docker Desktop + n8n + Qdrant + Embedding 自动入库链完整教程&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;一套可以直接跑的「本地AI知识库系统」：&#xA;Webhook → Embedding → n8n处理 → Qdrant向量数据库 → 可检索知识库&#xA;结合我自己前面踩的坑（Webhook解析、vector格式、HTTP JSON错误、payload结构等），全部做成“避坑版”。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;-一整体架构&#34;&gt;🧱 一、整体架构&lt;/h1&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;用户请求(Webhook)&#xA;        ↓&#xA;n8n Workflow&#xA;        ↓&#xA;Embedding模型（Ollama / OpenAI）&#xA;        ↓&#xA;Set Node（结构标准化）&#xA;        ↓&#xA;HTTP Request（写入Qdrant）&#xA;        ↓&#xA;Qdrant Vector DB&#xA;        ↓&#xA;后续检索 / RAG&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h1 id=&#34;-二docker-desktop-启动-qdrant--n8n&#34;&gt;🐳 二、Docker Desktop 启动 Qdrant + n8n&lt;/h1&gt;&#xA;&lt;h2 id=&#34;1-docker-composeyml&#34;&gt;1️⃣ docker-compose.yml&lt;/h2&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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;version&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;3.9&amp;#34;&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;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;qdrant&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;qdrant/qdrant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;6333:6333&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;./qdrant_data:/qdrant/storage&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;  &lt;span style=&#34;color:#f92672&#34;&gt;n8n&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;n8nio/n8n&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5678:5678&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;N8N_HOST=localhost&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;N8N_PORT=5678&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;N8N_PROTOCOL=http&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;NODE_ENV=production&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;./n8n_data:/home/node/.n8n&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;</description>
    </item>
    <item>
      <title>从零搭建 AI 新闻自动化系统：Ubuntu 部署 n8n &#43; DeepSeek &#43; Hugo 实战教程</title>
      <link>/zh-cn/docs/n8n/</link>
      <pubDate>Sun, 07 Jun 2026 00:23:18 +0800</pubDate>
      <guid>/zh-cn/docs/n8n/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;作者：HappyRock&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;适合人群：开发者、独立开发者、技术管理者、AI爱好者&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;技术栈：Ubuntu + Docker + n8n + DeepSeek + Hugo&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;前言&#34;&gt;前言&lt;/h3&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;打开RSS&#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;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;整个过程往往需要 1~2 小时。&lt;/p&gt;&#xA;&lt;p&gt;而在 AI Agent 时代，这些工作已经可以交给 AI 自动完成。&lt;/p&gt;&#xA;&lt;h4 id=&#34;本文将完整记录如何从零开始&#34;&gt;本文将完整记录如何从零开始：&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ubuntu 部署 n8n&lt;/li&gt;&#xA;&lt;li&gt;配置 Docker Compose&lt;/li&gt;&#xA;&lt;li&gt;对接 DeepSeek API&lt;/li&gt;&#xA;&lt;li&gt;自动抓取 AI 新闻&lt;/li&gt;&#xA;&lt;li&gt;自动筛选和排序热点&lt;/li&gt;&#xA;&lt;li&gt;自动生成公众号内容&lt;/li&gt;&#xA;&lt;li&gt;自动输出 Hugo Markdown&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;最终形成一个属于自己的 AI 内容生产系统。&lt;/p&gt;&#xA;&lt;h3 id=&#34;一为什么选择-n8n&#34;&gt;一、为什么选择 n8n？&lt;/h3&gt;&#xA;&lt;p&gt;很多人第一次接触自动化时会遇到：&lt;/p&gt;&#xA;&lt;p&gt;Python + Crontab&#xA;Shell Script&#xA;Airflow&#xA;Jenkins&lt;/p&gt;&#xA;&lt;p&gt;这些方案虽然强大，但门槛较高。&lt;/p&gt;&#xA;&lt;p&gt;n8n 的优势在于：&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;支持AI&lt;/li&gt;&#xA;&lt;li&gt;支持Webhook&lt;/li&gt;&#xA;&lt;li&gt;支持API&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;</description>
    </item>
  </channel>
</rss>
