34.4 高级功能

生成模型:Claude Opus 4.6 (anthropic/claude-opus-4-6) Token 消耗:输入 ~365k tokens,输出 ~5k tokens(本节)


基础骨架搭建完成后,本节为 MiniClaw 添加三个进阶功能:记忆系统、技能系统和 Cron 调度。这些功能参考了 OpenClaw 的对应实现(第 20-22 章),但进行了大幅简化。

34.4.1 添加记忆系统(向量搜索)

Markdown 记忆

OpenClaw 的记忆系统基于"纯 Markdown 即记忆"的理念(第 20 章)。MiniClaw 采用同样的方法:

// src/memory/markdown.ts

import fs from "node:fs";
import path from "node:path";

const MEMORY_DIR = path.join(process.cwd(), ".miniclaw", "memory");

export class MarkdownMemory {
  constructor() {
    fs.mkdirSync(MEMORY_DIR, { recursive: true });
  }

  // 保存长期记忆
  save(key: string, content: string) {
    const filePath = path.join(MEMORY_DIR, `${key}.md`);
    fs.writeFileSync(filePath, content, "utf-8");
  }

  // 追加日志记忆
  appendLog(content: string) {
    const date = new Date().toISOString().split("T")[0];
    const filePath = path.join(MEMORY_DIR, `${date}.md`);
    const entry = `\n## ${new Date().toLocaleTimeString()}\n\n${content}\n`;
    fs.appendFileSync(filePath, entry, "utf-8");
  }

  // 加载所有记忆作为上下文
  loadAll(): string {
    const files = fs.readdirSync(MEMORY_DIR)
      .filter(f => f.endsWith(".md"))
      .sort();
    const contents = files.map(f => {
      const content = fs.readFileSync(path.join(MEMORY_DIR, f), "utf-8");
      return `# ${f}\n${content}`;
    });
    return contents.join("\n\n---\n\n");
  }
}

记忆工具

将记忆操作暴露为 Agent 可调用的工具:

向量搜索增强(可选)

对于需要语义搜索的场景,可以集成嵌入向量:

34.4.2 添加技能系统

OpenClaw 的技能系统(第 21 章)允许动态加载能力模块。MiniClaw 实现一个简化版:

技能文件格式与 OpenClaw 的 SKILL.md 兼容:

加载后的技能会被拼接到 Agent 的系统提示中:

34.4.3 添加 Cron 调度

参考 OpenClaw 的 Cron 系统(第 18 章),实现一个简单的定时任务调度器:

配置文件驱动的定时任务:

Cron 工具

让 Agent 自己也能创建定时任务:


本节小结

  1. Markdown 记忆 以文件为单位存储长期记忆和日志,通过关键词搜索检索。

  2. 向量搜索增强 可选集成 OpenAI Embeddings,实现语义级的记忆检索。

  3. 技能系统 通过 SKILL.md 文件定义额外能力,动态加载并拼接到系统提示中。

  4. Cron 调度 使用 cron 库实现定时任务,支持配置文件和 Agent 工具两种创建方式。

  5. 所有高级功能都遵循"可选增强"原则——核心功能不依赖它们,但加入后能显著提升助手的实用性。

Last updated