Harness 层的下一战:AI Agent 的跨平台人格与记忆架构

MCP 标准化了工具调用,AGENTS.md 正在统一指令格式——但 Agent 的灵魂、记忆、知识,每个平台还是各管各的。该有人管管了。


30 秒读完

痛点: 你用 8 个 AI Agent 平台(OpenClaw、Claude Code、Codex、Cursor、Windsurf、Copilot、Trae、CatPaw),每个平台有自己的配置文件格式。换一个平台,Agent 就失忆——人格没了、偏好没了、好不容易教会的东西全没了。

本质: 不是文件格式问题,是架构问题——身份、记忆、知识没有统一的跨平台层。

解决方案:agent-sync — 一个 CLI,把 AI Agent 的身份、记忆、知识定义在一个地方(universal-agent/),自动同步到所有平台。

三层架构:

  1. 身份 — Soul → Identity → User(一个源头,按平台适配)
  2. 记忆 — 热(自动采集)→ 温(自动提炼)→ 冷(需确认才沉淀)
  3. 指令+技能 — Directives(怎么思考)+ Skills(怎么做),都需要你确认

和 agentinit 的区别: agentinit 只管规则同步。agent-sync 管的是身份 + 记忆 + 知识 + 技能——完整的 Agent 生命周期。

离线可用: 内网 Git + 本地 Obsidian,不需要任何云服务。


我们卡在哪

2026 年,AI Agent 的 Harness 层已经跑通了三件事:

  1. 工具标准化 — MCP 被所有主流平台采纳,一个协议搞定工具调用
  2. 指令格式收敛 — AGENTS.md 成为 Codex、OpenCode、Windsurf 兼容的事实标准
  3. 沙箱与权限 — 各平台的审批模式、隔离机制基本成熟

但有一个问题没人解决:你换了工具,Agent 就失忆了。

在 Claude Code 里你教了它用 pnpm、写中文注释、走 feature branch 工作流。切到 Cursor,这些全没了——你得重新写一遍 .cursorrules。OpenClaw 知道你的沟通偏好和风险提示,Copilot 一点都不知道。每个工具都是白纸,每次都要从零培养。

这不是体验问题,这是架构问题。

同一件事,8 种文件名

先看现状:

概念OpenClawClaude CodeCodexCursorWindsurfCopilotTraeCatPaw
人格/指令SOUL.mdCLAUDE.mdAGENTS.md.cursorrules.windsurfrulescopilot-instructions.mdtrae-rules.mdcatpaw-rules
记忆MEMORY.mdAuto MemoryCascade MemoryMemoriesAgentic Memory
配置层级3 层3 层1 层4 模式2 层2 层1 层1 层
工具Skills/MCPMCPMCPMCPMCPMCPMCP
开源部分

本质都一样——告诉 AI 你是谁、项目怎么工作、该怎么做。但格式、位置、语法全部不同。

八个平台的真实差异

上表已经列出了基本信息。以下是踩完坑之后对几个重点平台的评价。其他平台(Codex、Windsurf、Copilot、Trae、CatPaw)要么配置极简(一个文件搞定),要么没有人格/记忆概念——核心问题都一样:没有跨平台统一层

OpenClaw — 唯一认真对待「灵魂」的

SOUL.md → 元人格:行为边界、核心信条
IDENTITY.md → 具体人格:名字、风格、价值观
USER.md → 用户画像:服务对象是谁

OpenClaw 把「灵魂」做成了和「规则」平级的一等公民。SOUL.md 里写的是 “你不是用户的代言人”、“先试再问”,不是编码规范。这让 AI 有了性格,不是只有服从。

这是目前唯一原生支持人格分层的平台。缺点是格式非标准,只有 OpenClaw 生态能读。

Claude Code — 配置体系最成熟

全局 ~/.claude/CLAUDE.md → 项目 CLAUDE.md → .claude/rules/*.md
Auto Memory → AI 自动从交互中学习偏好

三层配置 + Auto Memory,用起来最舒服。但人格和规则混在 CLAUDE.md 里——“用 pnpm” 和 “说话别端着” 写在同一个文件,身份和指令不分家。

Cursor — 作用域控制最灵活

.cursor/rules/*.mdc → 4 种激活模式
  alwaysApply / 智能应用 / globs 匹配 / 手动 @引用

Cursor 的 .mdc 激活模式是所有平台里最精细的作用域控制——写 React 的规则只在 .tsx 文件触发,API 规范只在 api/ 目录生效。社区甚至有人用 rules 创建了完整人格(比如 “Luna” persona)。

但 Cascade Memory 是个痛点,持久化记忆需要社区插件补。

架构:三层分离

各平台差异在表层(文件名、格式),深层处理的是同一组问题:身份、记忆、知识。该把它们拆开。

第一层:人格(Identity)

人格是分层的,不是复制的:

Soul → 元人格
  行为边界、核心信条、气质
  平台无关,所有 AI 通用

Identity → 具体人格
  名字、沟通风格、价值观
  根据平台微调,核心不变

User Context → 用户画像
  服务对象、偏好、状态
  所有平台共享同一份

在一个源头定义,其他平台引用。 不是复制,是映射。

OpenClaw 是目前唯一原生支持这个分层的平台。其他平台通过适配器翻译:SOUL.md 里写的”你不是用户的代言人”,到 CLAUDE.md 里变成一段行为约束,到 .cursorrules 里变成一条 guardrail——同一个意思,不同表达。

第二层:记忆(Memory)

按时效和密度分三层:

热记忆(每次对话)
  自动采集:观察、日志、决策
  ↓ 需要 Reflector 提炼
温记忆(跨会话)
  核心画像 + 关键偏好 + 风险提示
  压缩到 ~100 行,任何平台秒加载
  ↓ 需要 GC 清理
冷记忆(长期知识)
  Obsidian / Notion / 知识库
  文章、剪藏、研究笔记

为什么不是两层?两层的问题是:对话记忆会丢,文件记忆会涨。温记忆的存在是为了把核心信息压缩到任何平台都能快速加载的体积

context-infrastructure 项目有一个很好的两级 Pipeline:Observer(L1)自动采集 → Reflector(L2)提炼晋升 → GC 过期记录。晋升门槛:跨项目通用 + 多次验证 + 有明确适用场景。这个设计值得借鉴。

第三层:指令 + 技能(Directives + Skills)

两个不同的东西:

Directives — 我怎么思考

不是 SOUL 里的「我是谁」,而是「我怎么思考」。不是公开知识(像 “Python 的 list comprehension 语法”),而是个人的决策偏好和认知沉淀。比如「设计哲学的天花板决定了系统的上限」——这是价值观判断,不是事实陈述。

Skills — 我会做什么

不是”我怎么想”,而是”我怎么操作”。可复用的工具流程和标准操作。比如「用 Jina Reader 抓网页 → 存 Obsidian Clippings/」——这是可执行的操作序列。

按领域组织,带唯一 ID 和路由索引:

directives/
├── INDEX.md              # 路由索引 + 关键词触发
├── ai/                   # AI 协作领域
├── technical/            # 技术决策
├── management/           # 管理哲学
└── cross-domain/         # 跨域隐喻

skills/
├── jina-clip/SKILL.md    # 网页剪藏流程
├── deploy/SKILL.md       # 部署标准操作
└── review/SKILL.md       # 代码审查 checklist

INDEX.md 做路由——“管理 AI” 这个关键词自动触发 AI 领域的相关指令。Agent 不用每次读全部文件,按需检索就行。

外挂大脑

Obsidian(或 Notion、Logseq)作为「查看层」覆盖在 Agent 执行层之上:

Agent 工作空间(执行层)      知识库(查看层)
├── SOUL.md                 ├── (引用,不复制)
├── IDENTITY.md             ├── (引用,不复制)
├── MEMORY.md               ├── (引用,不复制)
├── directives/             ├── directives/ ← 同一份数据
├── memory/diary/ ─软链─→  └── 日记/diary/

Agent 工作空间是 AI 的世界——读写文件来工作。知识库是人的世界——浏览、搜索、反思。数据只有一份,入口不同。

agent-sync

把以上架构变成一个 CLI:

┌──────────────────────────────────────────┐
│          universal-agent/(Git 仓库)      │
│                                           │
│  人格: soul → identity → user            │
│  记忆: 热 → 温 → 冷                      │
│  指令: directives/(索引 + 详情)          │
│  技能: skills/(MCP + SKILL.md)          │
└──────────────────┬───────────────────────┘
                   │
              agent-sync
             (双向适配)
                   │
   ┌───────┬───────┼───────┬────────┐
   ↓       ↓       ↓       ↓        ↓
OpenClaw  Claude  Codex  Cursor  Windsurf  Copilot

一个命令同步所有平台。改了 SOUL.md,CLAUDE.md、AGENTS.md、.cursorrules 自动刷新。记忆通过 Git 在平台间流转。

agentinit 的区别:agentinit 只管规则文件同步。我们管的是身份 + 记忆 + 知识 + 技能——完整的 Agent 生命周期。

记忆→技能的自动发现

温记忆中反复出现的操作模式,Reflector 会自动识别为 skill 候选:

claude-mem 观察记录(热)
       ↓ Reflector.collect_observations()
温记忆 core.md(每条自动分类)
       ↓ category = procedure / tool_pattern
       ↓ Reflector.discover_skill_candidates()
  只提取可重复流程类条目 + 出现次数 >= 2
       ↓ agent-sync skills discover
  列出候选,问用户确认
       ↓ --confirm
  skill-creator 生成 skills/<name>/SKILL.md 脚手架

不是所有观察都能变成 skill。Reflector 在晋升温记忆时就分类(insight / procedure / tool_pattern / preference),只有 procedure 和 tool_pattern 才会被推荐为 skill 候选。用户确认后才创建,避免噪声。

详细的架构设计文档见 → agent-sync Architecture Spec(GitHub)

不适用的场景

说清楚边界:

  • 纯规则场景(代码审计、CI lint)不需要人格,只需要规则
  • 团队协作需要的是共识和 code review 标准,不是个人认知沉淀
  • 单平台用户用不上跨平台同步

离线 & 内网环境

agent-sync 完全支持离线使用,不依赖任何云服务:

  • Git 同步:用内网 GitLab CE、Gitea 或任何自建 Git,不需要 GitHub
  • 知识库:Obsidian 本地 vault,不走外网
  • 记忆采集:只配 OpenClaw 源(markdown 文件),跳过 claude-mem
  • 冷知识输出:公司内只沉淀到 directives/,不绑 Obsidian;个人环境可以绑
# memory.yaml — 公司/离线模式
sources:
  - type: openclaw
    path: ../memory/    # 纯本地 markdown 文件

全程无外部 API 调用,无云服务依赖。

参考