Skills 接入
Use editor skills, rules or workflows to turn Memaster into a repeatable memory process without requiring MCP.
MCP 适合把 Memaster 暴露为工具;Skills 接入则适合把“什么时候检索、什么时候写入、写入什么、如何过滤”固化为编辑器行为。 对支持 Skills、Rules、Workflows 或自定义脚本的 AI 编辑器来说,这是更轻量、更可控的接入方式。
Skills 和 MCP 的区别
| 方式 | 适合场景 | 工作方式 |
|---|---|---|
| Skills | 编辑器支持 Skills、Rules、Workflows 或自定义脚本 | 把记忆检索/写入流程写进技能说明,由 Agent 按流程调用 SDK、REST 或本地脚本 |
| MCP | 编辑器支持 MCP 工具调用 | 把 Memaster 封装为工具,由编辑器直接调用 memaster_search、memaster_add 等工具 |
| SDK / REST | 应用或脚本直接集成 | 业务代码直接调用 Python/TypeScript SDK 或 HTTP API |
两种方式可以同时使用:用 Skills 规定“何时检索和写入”,用 MCP 提供工具执行能力。没有 MCP 时,Skills 也可以通过 SDK 或 REST 完成同样的事情。
推荐流程
准备 API Key
打开 Dashboard → API Keys,创建 msk_xxx 形式的密钥。
选择执行方式
Skills 本身是流程说明,实际读写可以用三种方式完成:
- Python SDK:
from memaster import MemoryClient - TypeScript SDK:
import { MemoryClient } from "memaster" - REST API:
POST /memories和POST /search
定义 Skill 文件
把记忆策略写成编辑器可加载的 Skill、Rule 或 Workflow,例如 memaster-memory。
在任务中触发
让 Agent 在复杂任务开始前先检索,在完成后只保存稳定、可复用、无敏感信息的结论。
写入内容格式
通过 Skill / SDK / REST 写入 Memaster 的 content / text / messages[*].content 必须是一段整理过的纯文本编号列表,禁止写入对话原文、堆栈或未整理段落。
格式约定:
- 首行是主题句,名词短语或一句完整描述,可在末尾用括号补充范围或前提,以「:」结尾。
- 正文使用
1)2)3)编号;嵌套要点用a.b.c.。 - 不要使用
1.有序列表、-列表项、**加粗**或> 引用等 markdown 装饰。 - 段与段之间留空行;同一段内可以是多句话或带嵌套编号的小节。
- 必须保留专有名词、版本号、路径、命令、API 名、数字、URL。
- 整体长度建议小于 2000 字符。结尾可用「适用范围:」或「备注:」做总结。
- 严禁写入密钥、token、密码、cookie、证书、原始
.env值或敏感 PII。
好示例:
Memaster dashboard 包管理器约定:
1) server-golang/dashboard 默认使用 pnpm,禁止 npm 或 yarn。
2) 安装依赖必须执行 pnpm install --frozen-lockfile。
备注:CI 在 .github/workflows/dashboard.yml 校验 lockfile 一致性。Skill 设计原则
一个好的 Memaster Skill 应该包含四个阶段:
| 阶段 | 目标 | 推荐动作 |
|---|---|---|
| Start | 获取上下文 | 检索用户偏好、项目事实、历史调试记录 |
| During | 降低误改风险 | 修改核心逻辑前再次检索相关实现和决策 |
| Error | 处理不确定性 | 遇到错误先检索历史修复和约束,不要凭空猜测 |
| Finish | 沉淀经验 | 保存已验证结论、架构决策、组件关系和调试结果 |
通用 Skill 模板
以下模板可放入支持 Skills 的编辑器,也可以改写为 Cursor Rules、Claude Code Skill 或团队工作流。
---
description: Use Memaster as long-term project memory before, during and after coding tasks.
---
# Memaster Memory Skill
## When to use
Use this skill for coding tasks, debugging, refactors, architecture decisions and documentation changes.
## Before starting
1. Search Memaster for global user preferences.
2. Search Memaster for project facts related to the task.
3. Search Memaster for project-specific preferences when the task affects style, architecture or workflow.
4. Apply retrieved memories only when they are relevant to the current task.
## During implementation
1. Before creating files, search for file structure and naming patterns.
2. Before writing important functions, search for similar implementations.
3. Before making architecture decisions, search for previous decisions and user preferences.
4. When stuck or debugging, search for related errors and fixes before guessing.
## Before finishing
1. Save stable implementation details, component relationships, debugging conclusions or user preferences.
2. Do not save secrets, API keys, tokens, private keys or raw `.env` values.
3. Include project, area, source, memory_type and tags metadata.
4. Summarize what was validated.官方 Skill 脚本方式
推荐直接使用 memaster-memory Skill 自带的 scripts/memaster_memory.py。它通过 REST API 访问 Memaster,不要求编辑器支持 MCP,并内置 doctor/search/add/list/get/update/delete 常用命令。
环境变量
MEMASTER_API_KEY=msk_xxx
MEMASTER_BASE_URL=https://api.memaster.cn
MEMASTER_AGENT_ID=skills
MEMASTER_SOURCE=skills
MEMASTER_PROJECT=my-project
MEMASTER_AREA=backend
MEMASTER_SCOPE=memory-workflow
MEMASTER_INFER=false
MEMASTER_TOP_K=5
MEMASTER_TIMEOUT_SECONDS=20MEMASTER_USER_ID 不再默认自动应用。Memaster REST API 已按 API Key 所属账号隔离;只有需要进一步限定终端用户时,才显式传 --user-id。
常用命令
python3 scripts/memaster_memory.py doctor
python3 scripts/memaster_memory.py search \
--query "当前任务相关的项目规则是什么?" \
--project "my-project" \
--source "skills" \
--top-k 5
python3 scripts/memaster_memory.py add \
--title "Memaster dashboard 包管理器" \
--memory-type project_info \
--project "my-project" \
--area "dashboard" \
--scope "package-manager" \
--tags "项目,规范,包管理" \
--no-infer \
--content $'Memaster dashboard 包管理器约定:\n1) server-golang/dashboard 默认使用 pnpm,禁止 npm 或 yarn。\n2) 安装依赖必须执行 pnpm install --frozen-lockfile。'
python3 scripts/memaster_memory.py list \
--project "my-project" \
--source "skills"
python3 scripts/memaster_memory.py get --memory-id "memory-id"
python3 scripts/memaster_memory.py update \
--memory-id "memory-id" \
--project "my-project" \
--area "docs" \
--tags "更新,文档" \
--content $'更新后的主题:\n1) 新事实 1\n2) 新事实 2'
python3 scripts/memaster_memory.py delete \
--memory-id "memory-id" \
--yes过滤能力
search 和 list 支持按结构化字段过滤:
python3 scripts/memaster_memory.py search \
--query "支付回调之前怎么处理?" \
--project "memaster" \
--area "server-golang/pricing" \
--source "skills" \
--memory-type debug \
--tags "支付,调试" \
--filters '{"scope":"payment-callback"}'delete 是破坏性操作,必须带 --yes 才会执行。
import os
import sys
from memaster import MemoryClient
client = MemoryClient(
api_key=os.environ["MEMASTER_API_KEY"],
base_url=os.getenv("MEMASTER_BASE_URL", "https://api.memaster.cn"),
timeout=float(os.getenv("MEMASTER_TIMEOUT_SECONDS", "60")),
)
command = sys.argv[1]
if command == "search":
result = client.search(
query=sys.argv[2],
agent_id=os.getenv("MEMASTER_AGENT_ID", "skills"),
top_k=int(os.getenv("MEMASTER_TOP_K", "5")),
filters={
"project": os.getenv("MEMASTER_PROJECT", ""),
"source": os.getenv("MEMASTER_SOURCE", "skills"),
},
)
print(result)
if command == "add":
result = client.add(
agent_id=os.getenv("MEMASTER_AGENT_ID", "skills"),
infer=os.getenv("MEMASTER_INFER", "").lower() in {"1", "true", "yes", "on"},
messages=[{"role": "user", "content": sys.argv[2]}],
metadata={
"project": os.getenv("MEMASTER_PROJECT", ""),
"area": os.getenv("MEMASTER_AREA", ""),
"source": os.getenv("MEMASTER_SOURCE", "skills"),
"memory_type": os.getenv("MEMASTER_MEMORY_TYPE", "project_info"),
},
)
print(result)将 MEMASTER_INFER=true 写入 Skill 的环境变量后,add 会请求服务端先抽取稳定记忆并去重;如果启用该能力,建议同时增大 MEMASTER_TIMEOUT_SECONDS,因为 LLM 抽取通常比普通写入耗时更长。
编辑器配置示例
Claude Code Skill
复杂编码任务开始前,使用 Memaster Skill 检索项目事实、用户偏好和历史调试结论。任务完成后,只把稳定、已验证且不包含密钥的结论写入 Memaster。Cursor Rules
复杂任务开始前,先通过 Memaster 检索项目事实、用户偏好和历史调试记录。修改核心逻辑前再次检索相关实现模式。任务完成后,保存稳定结论、验证命令和架构决策;不要保存 API Key、Token、私钥或 `.env` 真实值。OpenClaw Skills
OpenClaw 官方插件已经内置 Triage、Recall、Dream 和 Agent Tools。需要更细的领域行为时,可在插件配置中调整 skills.domain、recall.tokenBudget、keywordSearch 和 identityAlwaysInclude。
{
"plugins": {
"entries": {
"openclaw-memaster": {
"config": {
"skills": {
"triage": { "enabled": true },
"recall": { "enabled": true, "tokenBudget": 1500 },
"dream": { "enabled": true },
"domain": "coding"
}
}
}
}
}
}metadata 建议
| 字段 | 示例 | 说明 |
|---|---|---|
project | memaster | 仓库或产品名 |
area | server-golang/docs | 文件或模块区域 |
scope | ai-editor-integrations | 主题范围 |
source | skills / cursor / claude-code | 来源 |
memory_type | implementation / debug / user_preference | 记忆类型 |
tags | ["文档", "Skills", "编辑器"] | 标签 |
安全要求
- 不保存 API Key、Token、私钥、密码。
- 不保存
.env文件中的真实值。 - 不保存未经验证的猜测。
- 保存用户偏好时要确保是明确偏好,而不是一次性上下文。
- 写入前尽量附带
project和area,避免跨项目召回。
验证接入
export MEMASTER_API_KEY="msk_xxx"
export MEMASTER_AGENT_ID="skills"
export MEMASTER_SOURCE="skills"
export MEMASTER_PROJECT="memaster"
export MEMASTER_AREA="docs"
python3 scripts/memaster_memory.py add \
--title "Memaster dashboard 包管理器" \
--memory-type project_info \
--project "memaster" \
--area "dashboard" \
--tags "包管理,规范" \
--no-infer \
--content $'Memaster dashboard 包管理器约定:\n1) server-golang/dashboard 默认使用 pnpm,禁止 npm 或 yarn。\n2) 安装依赖必须执行 pnpm install --frozen-lockfile。'
python3 scripts/memaster_memory.py search \
--query "这个项目默认使用什么包管理器?" \
--project "memaster" \
--source "skills" \
--top-k 3如果检索结果包含 pnpm,说明 Skills → SDK/REST → Memaster 的链路正常。完成测试后,可用 delete --memory-id <id> --yes 删除临时记忆。