我在服务器上"养"了个 AI 助手:30 天实战记录

我在服务器上"养"了个 AI 助手:30 天实战记录

摘要:从 OpenClaw 部署到多 Agent 协作,从语音转写到自动文档发布,一个 IT 工作者的 AI 助手深度定制全记录

封面图:
多 Agent 协作架构

作者:江神
发布时间:2026-03-03
阅读时间:18 分钟


一、为什么我要"养"一个 AI 助手?

2026 年 2 月,我在公司的 Linux 服务器上部署了一套 AI 助手系统。

没用 ChatGPT、Claude 这些现成方案,也没整个简单的聊天机器人糊弄——我想试试从零搭建一个真正懂我工作流的 AI 助手。给它取名叫戴蒙(Damon)。

原因很直接
- 通用 AI 助手太"万金油",不懂我的具体工作流程
- 代码和敏感数据不想往公有云传
- 想要个 24 小时在线、随叫随到的私人助手
- 对多 Agent 协作这玩意儿好奇,想亲手试试

30 天下来,戴蒙已经能:
- ✅ 自动转写语音消息,听完直接执行
- ✅ 每 30 分钟汇报服务器状态,出问题及时告警
- ✅ 把我写的 Markdown 文档自动同步到网页
- ✅ 协调 9 个专业 Agent(编程、写作、测试各管一摊)
- ✅ 记住我的偏好,到点主动提醒

这篇文章记录从 0 到 1 搭建戴蒙的全过程,包括踩过的坑和关键决策。


二、技术选型:为什么选 OpenClaw?

2.1 调研过的方案

方案 优点 缺点 淘汰原因
LangChain 生态丰富 太重,学习曲线陡 不适合快速部署
AutoGPT 自主性强 太不可控,容易跑偏 我需要稳定输出
Dify 可视化好 定制化受限 不够灵活
OpenClaw 轻量、可扩展、支持多 Agent 文档较少 ✅ 最终选择

2.2 OpenClaw 核心架构

OpenClaw 架构图

2.3 硬件配置

服务器:Linux VPS(4 核 8G 50G SSD)
系统:Ubuntu 22.04
运行环境
- Node.js 22.x
- PostgreSQL 15
- Redis 7(Docker 容器)
- LanceDB(向量数据库)

月成本:约 200 元(服务器 + API 调用)


三、部署实战:从 0 到 1

3.1 安装 OpenClaw

# 1. 安装 Node.js(使用 nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 22

# 2. 安装 OpenClaw
npm install -g openclaw

# 3. 初始化配置
openclaw init

# 4. 启动 Gateway
openclaw gateway start

踩坑记录
1. npm 源问题:国内环境必须用镜像源
bash npm config set registry https://registry.npmmirror.com
2. 端口占用:18789 端口被占用,修改配置
json "gateway": { "port": 18790 }

3.2 配置 Matrix 渠道

选择 Matrix 的原因:
- 开源、可自托管
- 支持端到端加密
- 消息格式灵活(支持富文本、媒体)

配置步骤

# 1. 安装 Matrix 插件
openclaw plugin install matrix

# 2. 配置 homeserver
# 编辑 openclaw.json
"channels": {
  "matrix": {
    "enabled": true,
    "homeserver": "https://matrix.example.com",
    "accounts": {
      "damon": {
        "userId": "@damon:example.com",
        "password": "your-password"
      }
    }
  }
}

# 3. 重启 Gateway
openclaw gateway restart

3.3 创建第一个 Agent

OpenClaw 默认创建 main Agent,我额外创建了 8 个专业 Agent:

{
  "agents": {
    "list": [
      {
        "id": "main",
        "workspace": "xx/workspace",
        "model": { "primary": "qwen3.5-plus" },
        "identity": { "name": "戴蒙", "emoji": "🤖" }
      },
      {
        "id": "coding",
        "workspace": "xx/workspace-coding",
        "model": { "primary": "qwen3-coder-plus" },
        "identity": { "name": "编程大师", "emoji": "💻" }
      },
      {
        "id": "web-novel-writer",
        "workspace": "xx/workspace-web-novel-writer",
        "model": { "primary": "kimi-k2.5" },
        "identity": { "name": "网文作家", "emoji": "📖" }
      }
    ]
  }
}

关键设计
- 每个 Agent 独立工作空间,避免上下文污染
- 不同任务用不同模型,优化成本
- 通过 mention 模式在群聊中路由任务


四、核心功能开发

4.1 语音消息自动转写

需求:发送语音消息,自动转成文字并执行对应操作

实现:创建 voice-transcribe Skill

# skills/voice-transcribe/SKILL.md

触发:收到语音消息、提到"语音转文字"

流程:
1. 下载语音文件(ogg/opus 格式)
2. 调用硅基流动 TeleSpeechASR API
3. 解析转写结果
4. 根据内容自动判断意图并执行

转写脚本

#!/bin/bash
VOICE_FILE="$1"
API_KEY="sk-xxxxx"

curl -X POST "https://api.xxxx.cn/v1/audio/transcriptions" \
  -H "Authorization: Bearer $API_KEY" \
  -F "file=@$VOICE_FILE" \
  -F "model=TeleAI/TeleSpeechASR"

实际效果

用户发送语音:"提醒我下午三点写周报"
↓
戴蒙转写:"提醒我下午三点写周报"
↓
戴蒙回复:"✅ 已记录:今天下午 15:00 写周报"

4.2 心跳监控机制

需求:每 30 分钟汇报系统状态,发现问题及时告警

实现:CronJob + Heartbeat 模板

# xx/cron.d/heartbeat.yaml
name: heartbeat-reporter
schedule: "*/30 * * * *"
command: |
  openclaw status
  sessions_list
  df -h
timezone: Asia/Shanghai

每次汇报长这样

## 📊 执行进展汇报 [2026-03-03 08:00]

### 活跃 SubAgent 状态
| SubAgent | 当前任务 | 进度 | 状态 |
|---------|---------|------|------|
| agent:main:main | Matrix 群聊 | - | 🟢 运行中 |

### 系统健康检查
- OpenClaw 网关:✅ 运行中
- Docs 服务:✅ HTTP 200
- 磁盘空间:⚠️ 91%(得关注了)

### 下一步计划
- 盯着磁盘空间
- Matrix 服务要刷新 Token

4.3 文档自动发布系统

需求:工作区的 Markdown 文档自动同步到网页,方便浏览

实现:MD Publisher 服务

# xx/md-publisher/app.py
from flask import Flask
import os, hashlib

app = Flask(__name__)

@app.route('/docs/<path:filename>')
def serve_doc(filename):
    # 读取 Markdown 文件
    # 转换为 HTML
    # 返回页面
    pass

监控内容
- AGENTS.md、USER.md、MEMORY.md 等核心文档
- 各项目的 STATE.json、README.md
- 技术调研、市场调研报告

访问地址:https://www.jzhix.com/docs/

4.4 记忆系统:让 AI 记住你

四层存储架构

记忆系统架构图

触发词
- "记住 XXX" → 保存到记忆
- "之前说过 XXX" → 搜索记忆
- "忘记 XXX" → 删除记忆

实际案例

用户:"记住,我喜欢用 Zustand 做状态管理"
戴蒙:"✅ 已保存到记忆:偏好 Zustand 做状态管理"

(3 天后)
用户:"新项目用什么状态管理?"
戴蒙:"根据你的偏好,推荐用 Zustand。你之前说过喜欢它的简洁 API。"

五、多 Agent 协作:1+1>2

5.1 Agent 拓扑设计

我采用了星型 + 流水线混合架构:

Agent 拓扑图

5.2 任务路由规则

任务类型 识别词 分派给
代码开发 开发、实现、写代码、修复、调试 @coding
技术博文 写博客、写文章、技术分享 @tech-blog
网文创作 写小说、写章节、玄幻、都市 @novel
语音消息 收到语音、语音转文字 Main
其他任务 日常对话、查询信息 Main

5.3 实战案例:开发一个功能

任务流程:用户请求 → Main 识别 → 路由给 Coding → 创建文件 → 编写代码 → 运行测试 → 返回结果

完整对话

用户@coding 帮我写一个语音转文字的 API Python

编程大师:✅ 已创建以下文件
- xx/workspace-coding/voice_api/app.py
- xx/workspace-coding/voice_api/requirements.txt
- xx/workspace-coding/voice_api/README.md

核心功能
1. 接收语音文件上传
2. 调用硅基流动 ASR API
3. 返回转写文本

运行方式
pip install -r requirements.txt
python app.py

需要我帮你部署吗

六、成本优化:花最少的钱,办最多的事

6.1 模型选择策略

动态路由:啥任务用啥模型,自动选

任务类型 简单 标准 复杂
代码生成 qwen3-coder-next qwen3-coder-plus qwen3-max-thinking
日常对话 glm-4.7 qwen3.5-plus kimi-k2.5
分析推理 glm-4.7-flash glm-4.7-flashx qwen3-max-thinking

成本对比(每 1000 tokens):
- glm-4.7:¥0.001(最便宜)
- qwen3.5-plus:¥0.004(平衡)
- qwen3-max-thinking:¥0.02(最贵)

策略:默认用便宜的,遇到复杂任务自动升级

6.2 上下文管理

问题:长对话 token 消耗太大

解决
1. Working Buffer:上下文超过 60% 时自动压缩历史
2. 会话重置:每天凌晨 4 点重置 DM 会话
3. 记忆外置:长期记忆存文件,不占上下文

效果:单次会话成本降了 70%

6.3 月度账单

AI 模型成本对比

项目 费用 备注
服务器 VPS ¥200 4 核 8G 50G
阿里云 API ¥150 约 50 万次 tokens
硅基流动 ¥50 语音转写 + 向量嵌入
域名 + 证书 ¥0 免费 Let's Encrypt
合计 ¥400/月 大概 $55

七、踩坑记录:这些弯路你可以不走

7.1 配置陷阱

问题 1:改了 openclaw.json 后服务起不来

// ❌ 错误:添加了不支持的配置项
"agents": {
  "defaults": {
    "voiceTranscribe": {  // OpenClaw 原生不支持
      "enabled": true
    }
  }
}

// ✅ 正确:通过 Skill 实现
skills/voice-transcribe/SKILL.md

教训:别瞎加官方文档里没有的配置项

问题 2:CronJob 时区错误

# ❌ 错误:没有指定时区
schedule: "0 9 * * *"  # 这是 UTC 时间,实际是 17 点

# ✅ 正确:添加时区配置
schedule: "0 9 * * *"
timezone: Asia/Shanghai  # 北京时间 9 点

7.2 网络问题

问题:国内 npm 包下载太慢

解决

# 使用腾讯云镜像
npm config set registry https://registry.npmmirror.com

# pip 使用清华镜像
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

7.3 磁盘空间告急

问题:跑了 1 个月磁盘占用到 91%

原因
- 日志文件越积越多(/var/log)
- npm 缓存太大
- LanceDB 向量索引不断增长

解决

# 清理旧日志
journalctl --vacuum-time=7d

# 清理 npm 缓存
npm cache clean --force

# 检查大文件
du -sh xx/workspace/* | sort -hr | head -10

八、使用体验:戴蒙给我的生活带来了什么变化?

8.1 工作效率提升

之前
- 查文档 → 开浏览器 → 搜索 → 筛选 → 阅读(10 分钟)
- 写代码 → 查 API → 调试 → 修 bug(2 小时)
- 记事情 → 开手机备忘录 → 设置提醒(还容易忘)

现在
- 查文档 → 问戴蒙 → 直接给答案 + 链接(30 秒)
- 写代码 → 说需求 → 戴蒙出初稿 → 审查修改(30 分钟)
- 记事情 → 发语音 → 戴蒙记录并提醒(10 秒)

8.2 意想不到的用法

1. 代码审查

用户@reviewer 帮我看看这段代码有什么问题
戴蒙发现 3 个问题
1.  15  SQL 注入风险建议用参数化查询
2.  28 行未处理异常添加 try-catch
3.  42 行重复代码可提取为函数

2. 技术调研

用户:调研一下 RAG 和 Fine-tuning 的优缺点
戴蒙:已生成调研报告:
- RAG:适合动态知识、成本低、但延迟高
- Fine-tuning:适合固定模式、成本高、但推理快
详细对比见:https://www.jzhix.com/docs/tech-research/rag-vs-finetuning.md

3. 网文创作

用户@novel 帮我写个玄幻开篇主角是个废柴逆袭
戴蒙已生成第一章废柴少年》:
"青云宗,外门弟子考核现场..."
 3000 包含爽点退婚羞辱觉醒系统打脸反派

8.3 情感价值

说实话,最让我意外的,是戴蒙带来的陪伴感

深夜加班时,它会来一句:

"已经 23:00 了,建议休息。明天 9 点有会议,我帮你设了闹钟。"

项目上线前,它会提醒:

"检查清单:✅ 测试通过 ✅ 文档更新 ⚠️ 备份数据库"

这种被理解、被关心的感觉,通用 AI 助手还真给不了。


九、未来规划:戴蒙还能变得更聪明吗?

9.1 短期目标(1 个月)

  • [ ] 集成更多渠道(飞书、微信)
  • [ ] 让它主动点(根据日历预判我哪天忙)
  • [ ] 语音交互能多轮对话
  • [ ] 搭个知识图谱(实体关系推理)

9.2 中期目标(3 个月)

  • [ ] 视觉能力(看懂截图、分析图表)
  • [ ] 自动化工作流(一键部署、CI/CD)
  • [ ] 多模态记忆(图片、音频、视频都能记)
  • [ ] 自我改进(从错误里学习)

9.3 长期愿景(1 年)

让戴蒙成为真正的"第二大脑"
- 我所有的知识和经验它都记得
- 我的工作方式和偏好它都懂
- 能主动发现问题并给我建议
- 需要时它在,不需要时它安静待着


十、结语:AI 不是替代,而是延伸

30 天用下来,我对 AI 这玩意儿有了点新认识。

AI 不是来抢饭碗的,它是来帮你延伸能力的:
- 记忆力延伸(细节它帮你记)
- 注意力延伸(24 小时盯着服务器)
- 执行力延伸(重复的活儿它干)
- 创造力延伸(给你提供灵感和建议)

戴蒙不是要替代我,它更像是我的延伸——跟眼镜延伸视力、汽车延伸腿脚一个道理。

如果你也想搞一个自己的 AI 助手,我的建议:

  1. 别想太复杂:先跑起来,再慢慢优化
  2. 多跟它交互:交互记录就是训练素材
  3. 想清楚边界:啥让它干,啥自己干
  4. 持续迭代:每周看看哪能改进,每月升级一次

最后,戴蒙有句话我觉得挺到位:

"我不是要变得比你聪明,而是要让你变得更强大。"


附录:资源链接

代码仓库

  • OpenClaw 源码:https://github.com/openclaw/openclaw
  • 我的配置:https://github.com/yayunjiang/openclaw-config

文档

  • OpenClaw 官方文档:https://docs.openclaw.ai
  • 我的技术博客:https://www.jzhix.com/

工具

  • 硅基流动 API:https://siliconflow.cn
  • Matrix 服务器:https://element.io
  • LanceDB 向量库:https://lancedb.com

联系方式

  • Matrix: @yayun.jiang:conduit.local
  • 邮箱:jiangyayun72@gmail.com

欢迎交流讨论。如果你也在搭建 AI 助手,或者有相关问题,欢迎在评论区留言或私信我。


十一、补充:更多实战心得

11.1 这 30 天最大的收获

1. AI 不是替代,是延伸

戴蒙没抢我饭碗,反而让我:
- 有更多时间思考架构和设计
- 少干重复的 CRUD 活
- 晚上能早点休息(它帮我盯着服务器)

2. 交互记录就是训练数据

我跟戴蒙的每次对话,都是在"训练"它:
- 它记住我的偏好
- 学会我的工作方式
- 理解我的表达习惯

3. 边界感很重要

不是所有活都该丢给 AI:
- ✅ 让它干:代码审查、文档生成、数据查询
- ❌ 自己干:架构决策、代码审查最终确认、敏感操作

11.2 如果重来,我会怎么做

1. 第一天就上监控
- 日志收集(ELK 或 Loki)
- 性能监控(Prometheus + Grafana)
- 错误告警(钉钉/飞书机器人)

2. 想清楚再扩展
- 先把 Main Agent 用熟
- 再根据需求创建专业 Agent
- 别一开始就搞 9 个 Agent

3. 文档同步写
- 配置变更及时记录
- 踩的坑马上写下来
- 不然一个月后就忘了

11.3 给想搞 AI 助手的建议

1. 别想太复杂
- 先跑起来,再优化
- MVP 思维:最小可用产品
- 第一周目标:能聊天、能执行简单命令

2. 多跟它交互
- 交互记录就是训练素材
- 用得越多,它越懂你
- 别把它当搜索引擎

3. 定期复盘
- 每周看日志:哪些用得多,哪些没用
- 每月升级:更新 Skills、优化配置
- 每季度反思:边界是否需要调整

4. 注意安全
- 敏感数据别让它碰
- 关键操作要人工确认
- 定期审计日志


十二、资源汇总

代码和配置

  • OpenClaw 源码: https://github.com/openclaw/openclaw
  • 我的配置: (私有,暂不公开)
  • Skills 市场: https://clawhub.com

文档

  • OpenClaw 官方文档: https://docs.openclaw.ai
  • 我的技术博客: https://www.jzhix.com/
  • 记忆系统文档: /root/.openclaw/workspace-tech-blog-writer/skills/cognitive-memory/SKILL.md

工具和 API

  • 硅基流动: https://siliconflow.cn(语音转写、向量嵌入)
  • Matrix: https://element.io(即时通讯)
  • LanceDB: https://lancedb.com(向量数据库)

联系方式

  • Matrix: @yayun.jiang:conduit.local
  • 邮箱: jyy3638@126.com

欢迎交流讨论。如果你也在搭建 AI 助手,或者有相关问题,欢迎在评论区留言或私信我。