<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>墨梅博客 - Category: technical tutorial</title>
        <link>https://momei.app/</link>
        <description>Momei Blog - AI-driven, natively internationalized developer blog platform.</description>
        <lastBuildDate>Sun, 28 Jun 2026 10:46:24 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Momei Blog</generator>
        <language>en-US</language>
        <image>
            <title>墨梅博客 - Category: technical tutorial</title>
            <url>https://momei.app/logo.png</url>
            <link>https://momei.app/</link>
        </image>
        <copyright>© 2026 墨梅博客. All rights reserved.</copyright>
        <atom:link href="https://momei.app/feed/category/tech-tutorial.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[An In-Depth Experience of Automated AI Assistant Usage Based on Hermes Agent]]></title>
            <link>https://momei.app/en-US/posts/hermes-agent-docker-deployment-deepseek-v4-feishu</link>
            <guid isPermaLink="false">https://momei.app/en-US/posts/hermes-agent-docker-deployment-deepseek-v4-feishu</guid>
            <pubDate>Sun, 28 Jun 2026 10:46:24 GMT</pubDate>
            <description><![CDATA[From Docker deployment to practical usage, a comprehensive guide on self-hosting the Hermes Agent AI assistant—integrating with Feishu, configuring MCP search, and cost-effective access to DeepSeek V4 Flash—with complete experience and tips.]]></description>
            <content:encoded><![CDATA[<p><img src="https://oss.cmyr.dev/momei-files/posts/67c372e294c04f09/image/20260628104521175-8u65sj0.png" alt="An In-Depth Experience of Automated AI Assistant Usage Based on Hermes Agent" /></p><blockquote>
<p><strong>Summary</strong>: This article documents the process of deploying Hermes Agent to Docker, integrating it with Feishu, configuring tinyfish-mcp search, and pairing it with the cost-effective DeepSeek V4 Flash solution, along with two weeks of in-depth real-world usage. It is suitable for readers with some Docker experience who want to set up a self-hosted AI assistant.</p>
</blockquote>
<p>In the previous blog post <a href="https://momei.app/posts/2026-24-caomei-weekly-hermes-agent-momei-weekly"><em>Hermes Agent AI Assistant and Momei Blog Updates | 2026 Week 24 Caomei Weekly Report</em></a>, we briefly mentioned <a href="https://github.com/NousResearch/hermes-agent">Hermes Agent</a>. This time, we’ll provide a comprehensive deployment and usage report based on real-world experience over the past few weeks.</p>
<blockquote>
<p>Official documentation: <a href="https://hermes-agent.nousresearch.com/docs/zh-Hans/">https://hermes-agent.nousresearch.com/docs/zh-Hans/</a></p>
</blockquote>
<h2 id="deployment" tabindex="-1"><a class="header-anchor" href="#deployment">Deployment</a></h2>
<p>First, similar to OpenClaw, to use Hermes Agent, you need to deploy it first.</p>
<p>Given the extensive permissions required by such AI assistants, it is <strong>strongly discouraged</strong> to deploy them on personal computers. If deployment is necessary, it is recommended to use a containerized environment like Docker to isolate it from the host system, minimizing risks such as accidental file deletion or security breaches.</p>
<blockquote>
<p>Docker containers themselves serve as security boundaries.</p>
</blockquote>
<p>Next, let’s walk through the steps to deploy Hermes Agent using Docker.</p>
<p>Some preliminary preparations are required, including a Linux server, Docker, and an LLM API key.</p>
<h3 id="requirements" tabindex="-1"><a class="header-anchor" href="#requirements">Requirements</a></h3>
<ul>
<li><strong>Server</strong>: Linux (preferably at least 2 cores and 4GB RAM, otherwise it may freeze)</li>
<li><strong>Docker</strong>: Docker and docker-compose must be installed</li>
<li><strong>API Key</strong>: At least one LLM provider’s API key (e.g., DeepSeek, OpenAI)</li>
<li><strong>Messaging Gateway</strong>: Here, we’ll use Feishu as an example (you can choose any supported <a href="https://hermes-agent.nousresearch.com/docs/zh-Hans/user-guide/messaging/">messaging platform</a>, such as QQ, WeCom, DingTalk, etc.)</li>
</ul>
<h3 id="installation" tabindex="-1"><a class="header-anchor" href="#installation">Installation</a></h3>
<p>In the appropriate directory on the server, write the following <code>docker-compose.yml</code> configuration file.</p>
<pre><code class="language-yml">#
# Hermes Agent — Docker Compose Deployment
</code></pre>
<h1 id="configuration-deepseek-v4-flash-lark-websocket" tabindex="-1"><a class="header-anchor" href="#configuration-deepseek-v4-flash-lark-websocket">Configuration: DeepSeek V4 Flash + Lark WebSocket</a></h1>
<h1 id="" tabindex="-1"><a class="header-anchor" href="#"></a></h1>
<p>services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes
restart: unless-stopped
volumes:
- ./hermes_data:/opt/data
env_file:
- .env
environment:
# ---- User Permissions ----
- HERMES_UID=${HERMES_UID:-1000}
- HERMES_GID=${HERMES_GID:-1000}
# ---- DeepSeek Provider ----
- DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}
# ---- Lark Channel (WebSocket Mode) ----
- FEISHU_APP_ID=${FEISHU_APP_ID}
- FEISHU_APP_SECRET=${FEISHU_APP_SECRET}
- FEISHU_DOMAIN=feishu
- FEISHU_CONNECTION_MODE=websocket
# ---- Lark Security Whitelist (Highly Recommended) ----
- FEISHU_ALLOWED_USERS=${FEISHU_ALLOWED_USERS}
# ---- Recommended: Set home chat for cron/notifications ----
- FEISHU_HOME_CHANNEL=${FEISHU_HOME_CHANNEL}
# - GATEWAY_ALLOW_ALL_USERS=${GATEWAY_ALLOW_ALL_USERS:-false}
- GATEWAY_ALLOWED_USERS=${GATEWAY_ALLOWED_USERS}
- OPENCODE_GO_API_KEY=${OPENCODE_GO_API_KEY}
command:[“gateway”, “run”]</p>
<pre><code>
Here, DeepSeek V4 Flash is selected as the backend AI model, and Feishu (Lark) is used as the frontend interaction client. The Web dashboard is not used here, so no ports are exposed—all messages are sent and received via Feishu. All data is saved to the `hermes_data` directory under the current path (this differs from the official setup, which defaults to `~/.hermes/`; a custom mount is used here for easier backups).

Of course, the above configuration is still incomplete because the corresponding environment variables are missing.

Create a `.env` file in the same directory with the following configuration. Be sure to replace the values with your actual credentials.

```ini
# === DeepSeek API ===
# Apply at https://platform.deepseek.com
DEEPSEEK_API_KEY=sk-xxxx

# === Feishu App Credentials ===
# Apply at https://open.feishu.cn/app. Refer to the guide below for details.
FEISHU_APP_ID=cli_xxxx
FEISHU_APP_SECRET=xxxxx
FEISHU_DOMAIN=feishu
FEISHU_CONNECTION_MODE=websocket

# === Feishu Allowlist (comma-separated user open_ids) ===
FEISHU_ALLOWED_USERS=ou_xxxx

# === Optional: Home Chat ID (for cron job results and notifications) ===
# FEISHU_HOME_CHANNEL=oc_xxx
# Allowed user IDs.
# GATEWAY_ALLOWED_USERS=xxx
# For first-time use, it's recommended to allow all users, but ensure the app is only accessible to you!
GATEWAY_ALLOW_ALL_USERS=true 
</code></pre>
<p>Additionally, you need to create a <code>config.yaml</code> file in the <code>hermes_data</code> directory with the following content:</p>
<pre><code class="language-yaml">model:
  provider: deepseek
  default: deepseek-v4-flash
</code></pre>
<blockquote>
<p>You can also use any <a href="https://hermes-agent.nousresearch.com/docs/zh-Hans/integrations/providers">supported AI provider</a>.</p>
</blockquote>
<p>Of course, you can also configure it via the command line. Use the following command to enter the setup wizard, which will prompt you to enter the API key and write it to <code>./hermes_data/.env</code>:</p>
<pre><code class="language-sh">docker run -it --rm \
  -v ./hermes_data:/opt/data \
  nousresearch/hermes-agent setup
</code></pre>
<h3 id="integrating-with-the-feishu-platform" tabindex="-1"><a class="header-anchor" href="#integrating-with-the-feishu-platform">Integrating with the Feishu Platform</a></h3>
<p>Here, you will need a Feishu app credential and the user’s <code>open_id</code>. First, let’s go over how to create a Feishu intelligent agent application.</p>
<p>Log in to the <a href="https://open.feishu.cn/app">Feishu Developer Backend</a>. On the homepage, you will see an entry for <code>Create Feishu Intelligent Agent Application</code> pinned at the top. If it’s not there, you can also click the <code>Create Enterprise Self-Built Application</code> entry below to create one.</p>
<p><img src="https://oss.cmyr.dev/images/20260628000643113.png" alt="Feishu Developer Backend - Create Intelligent Agent Application Entry"></p>
<p>Then, you will see a page to set the avatar and name. Simply click <code>Create Now</code>.</p>
<p><img src="https://oss.cmyr.dev/images/20260628000617122.png" alt="Feishu Developer Backend - Create Intelligent Agent Application"></p>
<p>After that, you will immediately see the <code>App ID</code> and <code>App Secret</code>. Copy these into your environment variables.</p>
<p><img src="https://oss.cmyr.dev/images/20260628000747468.png" alt="image-20260628000747412"></p>
<p>Next, execute the following command in the project directory to enable the Hermes Agent Docker image:</p>
<pre><code class="language-sh">docker compose up -d 
</code></pre>
<p>At this point, you can send a message to the bot to verify whether the integration was successful.</p>
<p><img src="https://oss.cmyr.dev/images/20260628001752563.png" alt="image-20260628001752386"></p>
<p>If there is no response, it is usually because the <code>Feishu Security Whitelist</code> and <code>Allowed User IDs</code> have not been configured.</p>
<p>In this case, you can temporarily set <code>GATEWAY_ALLOW_ALL_USERS</code> to <code>true</code>, then directly ask the AI for the user’s <code>open_id</code> and fill it into <code>FEISHU_ALLOWED_USERS</code> and <code>GATEWAY_ALLOWED_USERS</code>.</p>
<blockquote>
<p>You can also directly check the logs in <code>logs/gateway.log</code>.</p>
</blockquote>
<p><img src="https://oss.cmyr.dev/images/20260628002340089.png" alt="image-20260628002340001"></p>
<h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage">Usage</a></h2>
<p>Once the AI is capable of replying through the Feishu channel, it can be officially put into use.</p>
<p>For example, you can start by introducing yourself to it—it will remember and later reference this information directly.</p>
<p><img src="https://oss.cmyr.dev/images/20260628003453006.png" alt="image-20260628003452887"></p>
<p>Here are some usage tips.</p>
<h3 id="deploying-search-mcp" tabindex="-1"><a class="header-anchor" href="#deploying-search-mcp">Deploying Search MCP</a></h3>
<p>As we all know, an AI model without search tools remains rather limited. In my actual usage, the triggering probability for search-based tools is around 80%~90%. For tasks like research, exploration, and verification, they are practically essential. Therefore, I chose to integrate <a href="https://github.com/CaoMeiYouRen/tinyfish-mcp">tinyfish-mcp</a>, which works exceptionally well.</p>
<blockquote>
<p>Refer to the official documentation for deploying tinyfish-mcp.</p>
</blockquote>
<p>After deploying tinyfish-mcp, configure it in <code>config.yaml</code>.</p>
<pre><code class="language-yml">mcp_servers:
  tinyfish-search:
    url: &quot;https://tinyfish.example.com/mcp&quot;
    headers:
      Authorization: &quot;Bearer xxxxxx&quot;
</code></pre>
<p><img src="https://oss.cmyr.dev/images/20260628004015715.png" alt="image-20260628004015611"></p>
<h3 id="using-cost-effective-ai-models" tabindex="-1"><a class="header-anchor" href="#using-cost-effective-ai-models">Using Cost-Effective AI Models</a></h3>
<p>While some may use Hermes Agent for programming, most interactions involve chatting. In such cases, high-end models are unnecessary, and the expenses associated with premium models are non-negligible. Therefore, it’s advisable to use cost-effective AI models, such as the high-performance DeepSeek V4 Flash instead of DeepSeek V4 Pro. If programming is truly needed, you can then call specialized AI tools like Claude Code or OpenCode.</p>
<p>Personally, I highly recommend using <a href="https://opencode.ai/go?ref=T6C9392XGM">OpenCode Go</a> to call DeepSeek V4 Flash, as it offers even better pricing than DeepSeek’s official rates.</p>
<blockquote>
<p>The above link includes my referral code. By registering through this link, both you and I will receive some free usage credits.</p>
<p>OpenCode Go official documentation: <a href="https://opencode.ai/docs/zh-cn/go">https://opencode.ai/docs/zh-cn/go</a></p>
</blockquote>
<p>The principle is simple: OpenCode Go costs only $10 per month but provides $60 worth of credits.</p>
<p>Although OpenCode Go’s DeepSeek V4 Pro hasn’t yet synced with DeepSeek’s official 60% discount, the pricing for DeepSeek V4 Flash is the same. This means you can effectively use $60 worth of DeepSeek V4 Flash for just $10, making it one of the most cost-effective options among AI models.</p>
<p>Additionally, OpenCode Go can be paired with Qwen3.7 Plus to handle image recognition tasks, making it one of the most budget-friendly AI model bundles available.</p>
<p><img src="https://oss.cmyr.dev/images/20260628010217867.png" alt="image-20260628010217783"></p>
<p>If you use OpenCode Go, you’ll need to update the environment variables accordingly, for example:</p>
<pre><code class="language-ini">OPENCODE_GO_API_KEY=xxxx
</code></pre>
<p>Also, the <code>model.provider</code> field in <code>config.yaml</code> should be modified as follows:</p>
<pre><code class="language-yaml">model:
  provider: opencode-go
  default: deepseek-v4-flash
</code></pre>
<h3 id="configuring-vision-models" tabindex="-1"><a class="header-anchor" href="#configuring-vision-models">Configuring Vision Models</a></h3>
<p>If you’re using the DeepSeek V4 series as the primary AI model backend for Hermes Agent, you may encounter an issue: DeepSeek V4 currently doesn’t support image recognition, meaning it can’t interpret the images you send, which affects the user experience.</p>
<p>In the Hermes Agent, it supports setting up a separate vision model. Therefore, you can configure the <code>auxiliary.vision.model</code> field in <code>config.yaml</code> to use AI models like <code>qwen3.7-plus</code> that support image recognition, compensating for the limitations of DeepSeek V4 Flash.</p>
<pre><code class="language-yml">auxiliary:
  vision:
    provider: opencode-go
    model: qwen3.7-plus
</code></pre>
<p><img src="https://oss.cmyr.dev/images/20260614220340272.png" alt="image-20260614220340115"></p>
<h3 id="automated-memory-organization" tabindex="-1"><a class="header-anchor" href="#automated-memory-organization">Automated Memory Organization</a></h3>
<p>Hermes Agent supports scheduled tasks. To enhance its autonomous learning capability, you can configure it to automatically scan conversations from the past 24 hours every midnight and extract reusable knowledge, eliminating the need for manual intervention.</p>
<blockquote>
<p>Example prompt: “Scan all conversations from the past 24 hours and extract reusable knowledge…”</p>
</blockquote>
<p>One minor issue is that cron jobs cannot directly write to Memory, meaning the Agent’s memory cannot be modified directly. Therefore, an indirect solution is required—using the <code>file</code> tool to write to <code>reusable-knowledge.json</code> as a file-level knowledge base.</p>
<h3 id="sending-messages-in-markdown" tabindex="-1"><a class="header-anchor" href="#sending-messages-in-markdown">Sending Messages in Markdown</a></h3>
<p>Due to limitations in Feishu, tables cannot be rendered in messages. To address this, you can convert them into markdown files and send them as attachments. This resolves formatting issues and avoids unsupported markdown characters in messages.</p>
<blockquote>
<p>You can directly instruct the AI to send attachments in markdown format or automatically convert detected table characters into markdown attachments.</p>
</blockquote>
<p><img src="https://oss.cmyr.dev/images/20260614220405504.png" alt="image-20260614220405355"></p>
<h2 id="some-user-experience" tabindex="-1"><a class="header-anchor" href="#some-user-experience">Some User Experience</a></h2>
<p>Now, let’s talk about my experience using Hermes Agent over this period.</p>
<p>First, it’s incredibly powerful and highly effective.</p>
<p>Initially, my expectation was that it would be a highly customizable alternative to Doubao, but it turns out to be far more capable than Doubao.</p>
<p>Why?</p>
<p>Doubao can’t execute code, operate files, or perform scheduled self-checks—whereas Hermes Agent integrates all these features into a single interface, which is why it’s more user-friendly than Doubao.</p>
<p>On one hand, the search quality issue is resolved through the self-built <a href="https://github.com/CaoMeiYouRen/tinyfish-mcp">tinyfish-mcp</a>. On the other hand, the report quality problem is addressed via <a href="https://github.com/CaoMeiYouRen/cmyr-skills-agents/tree/master/skills/super-search">super-search</a>. It’s safe to say this is the foundation for surpassing the result quality of most AI search tools.</p>
<p>Next is the scheduled task system.</p>
<p>I’ve personally used low-code visual platforms like n8n. While writing a scheduled task isn’t overly complex, manually scripting and connecting nodes can still be a hassle. Writing scripts from scratch is also tedious. With Hermes Agent, a single command can make it write its own script, and if issues arise, it can even fix them itself—making the experience incredibly smooth.</p>
<p>And these are just the most basic features of Hermes Agent. At its core, Hermes Agent is a self-deployable AI assistant that can easily integrate into most workflows. Adding it to a work group is the simplest way to use it (though proper permission controls are a must). From there, just let time do its thing—the more you interact with it, the better it gets.</p>
<p>Even if you can’t immediately find the perfect use case, you can simply treat it as an AI chat tool. Ask it questions, and it can even help summarize insights for you.</p>
<h2 id="final-thoughts" tabindex="-1"><a class="header-anchor" href="#final-thoughts">Final Thoughts</a></h2>
<p>There isn’t much left to say. Once AI can reply via Feishu channels, all that’s left is to use it more. Whenever you encounter a problem, just ask the AI—it can even solve issues on its own, automating entire workflows.</p>
<p>It’s no coincidence that self-deployable personal AI Agent frameworks like OpenClaw have exploded in popularity—it’s a genuine necessity. In the future, we’ll undoubtedly see more projects like Hermes Agent emerge to meet user demands.</p>
<p>With AI assistants like Hermes Agent, the potential for automation is beyond imagination. It can fully replace manual operations. Whether this means <strong>replacement</strong> or <strong>liberation</strong> is a matter of perspective.</p>
<p>See you next time—bye!</p>
<hr>
<p>You can subscribe to updates from Caomei’s blog through the following channels:</p>
<ul>
<li><strong>Blog</strong>: <a href="https://blog.cmyr.ltd">Caomei Youren’s Blog</a></li>
<li><strong>Momei Blog</strong>: <a href="https://momei.app">Momei Blog</a></li>
<li><strong>RSS</strong>: <a href="https://blog.cmyr.ltd/atom.xml">Caomei Youren’s Blog RSS</a></li>
<li><strong>WeChat Official Account</strong>: <a href="https://oss.cmyr.dev/images/20241025184516839-21n2ctv.png">Caomei Youren’s Backyard</a></li>
<li><strong>Email Subscription</strong>: <a href="https://listmonk.cmyr.dev/subscription/form">Caomei Youren’s Blog Subscription</a></li>
</ul>
<h2 id="past-issues" tabindex="-1"><a class="header-anchor" href="#past-issues">Past Issues</a></h2>
<ul>
<li><a href="https://blog.cmyr.ltd/archives/2026-24-caomei-weekly-hermes-agent-momei-weekly.html">2026-06-14 Hermes Agent AI Assistant &amp; Momei Blog Updates | Caomei Weekly Issue #24, 2026</a></li>
<li><a href="https://blog.cmyr.ltd/archives/2026-23-caomei-weekly-momei-blog-1-19-0-release-copilot-price-increase-alternative.html">2026-06-07 Momei Blog 1.19.0 Release &amp; Copilot Price Increase Alternatives | Caomei Weekly Issue #23, 2026</a></li>
<li><a href="https://blog.cmyr.ltd/archives/2026-22-caomei-weekly-super-search-momei-open-source.html">2026-05-31 AI Super Search &amp; Momei Blog Open-Source Updates | Caomei Weekly Issue #22, 2026</a></li>
</ul>
]]></content:encoded>
            <author>草梅友仁</author>
            <category>technical tutorial</category>
            <enclosure length="687405" type="audio/mpeg" url="https://oss.cmyr.dev/momei-files/posts/67c372e294c04f09/audio/tts/20260628103537990-zj6uji6.mp3"/>
        </item>
    </channel>
</rss>