原神愿望模拟器大聪明版
62.05M · 2026-04-23
作为经常在 Trae、Qoder、Lingma、CodeBuddy 之间切换的开发者,你可能已经积累了:
但这些配置散落在各个 IDE 的不同目录下:
# Trae 的配置在这里
.trae/rules/coding-standards.md
~/.trae-cn/skills/review-skill/
# Qoder 的配置在这里
.qoder/rules/coding-standards.md
~/.qoder/skills/review-skill/
# CodeBuddy 又在另一个路径
.codebuddy/rules/coding-standards.md
~/.codebuddy/rules/coding-standards.md # CodeBuddy 还支持全局级
更关键的是:每个 IDE 的格式要求还不一样:
| IDE | Rules frontmatter 格式 | 说明 |
|---|---|---|
| Trae | 无头部 | 直接是纯 Markdown |
| Qoder | trigger: always_on | YAML 格式包裹 |
| Lingma | trigger: always_on | 与 Qoder 相同 |
| CodeBuddy | 5 个字段(含时间戳) | 最复杂,每次同步动态生成 |
同一条 Rule,在 4 个 IDE 里需要 4 种不同的格式。手动维护?不存在的。
MSR-cli(命令名 msr-sync)的核心思路很简单:
~/.msr-repos/ # 你的 AI 配置中心
├── RULES/ # 所有规则集中存放
│ ├── coding-standards/
│ │ ├── V1/coding-standards.md
│ │ └── V2/coding-standards.md
│ ├── git-commit-convention/
│ │ └── V1/git-commit-convention.md
│ └── code-review/
│ └── V1/code-review.md
├── SKILLS/ # 所有技能集中存放
│ ├── review-skill/
│ │ └── V1/SKILL.md
│ └── doc-generator/
│ └── V1/SKILL.md
└── MCP/ # 所有 MCP 配置集中存放
├── word-reader/
│ └── V1/mcp.json
└── web-search/
└── V1/mcp.json
这个仓库就是你的 Single Source of Truth。所有配置的增删改查都在这里完成,IDE 端只是"分发目标"。
# Python 3.9+ 即可
pip install msr-sync
也支持从源码安装:
git clone
cd MSR-v2/MSR-cli
pip install -e .
msr-sync init
# 统一仓库已创建: /Users/username/.msr-repos
# 已生成默认配置文件: /Users/username/.msr-sync/config.yaml
如果你已经在某些 IDE 中有配置了,加个 --merge 一键收入囊中:
msr-sync init --merge
# 统一仓库已创建: /Users/username/.msr-repos
#
# 正在扫描已有 IDE 配置...
#
# 合并摘要(共导入 5 项配置):
# rules: trae: 2 项, codebuddy: 1 项
# skills: qoder: 1 项
# mcp: lingma: 1 项
它会自动扫描 Trae、Qoder、Lingma、CodeBuddy 四个 IDE 的用户级目录,把你已有的配置全部导入统一仓库。
支持 文件、目录、压缩包、URL 四种导入方式:
# 导入单条 Rule
msr-sync import rules ./coding-standards.md
# 已导入: coding-standards (V1)
# 导入一个 Skill(含 SKILL.md 的目录)
msr-sync import skills ./review-skill/
# 已导入: review-skill (V1)
# 导入 MCP 配置
msr-sync import mcp ./word-reader/
# 已导入: word-reader (V1)
# 从 GitHub 仓库的压缩包批量导入
msr-sync import rules
同名配置重复导入时,自动创建新版本:
# 再次导入同名 Rule
msr-sync import rules ./coding-standards-v2.md
# 已导入: coding-standards (V2)
# 全量同步到所有 IDE(全局级)
msr-sync sync
# 已同步 rule 'coding-standards' (V2) 到 trae (global)
# 已同步 rule 'coding-standards' (V2) 到 qoder (global)
# 已同步 rule 'coding-standards' (V2) 到 lingma (global)
# 已同步 rule 'coding-standards' (V2) 到 codebuddy (global)
# ...
也可以精确控制同步范围:
# 只同步 Rules 到 Trae
msr-sync sync --type rules --ide trae
# 项目级同步(同步到当前项目的 .trae/rules/ 等目录)
msr-sync sync --scope project
# 同步指定版本
msr-sync sync --type rules --name coding-standards --version V1
就这么简单。你的配置仓库和各 IDE 之间,只剩一条命令的距离。
msr-sync list
# 统一仓库配置列表
# ├── rules
# │ ├── coding-standards [V1, V2]
# │ └── code-review [V1]
# ├── skills
# │ └── review-skill [V1]
# └── mcp
# └── word-reader [V1, V2, V3]
每次导入同名配置都会自动递增版本(V1 -> V2 -> V3...),同步时默认使用最新版本,也可以指定历史版本:
# 同步最新版本(默认行为)
msr-sync sync --type rules --name coding-standards
# 已同步 rule 'coding-standards' (V2) 到 qoder (global)
# 回滚到旧版本
msr-sync sync --type rules --name coding-standards --version V1
# 已同步 rule 'coding-standards' (V1) 到 qoder (global)
不再需要的版本可以随时清理:
msr-sync remove rules coding-standards V1
# 已删除配置: rules/coding-standards/V1
这是 MSR-cli 最核心的能力。当你执行 msr-sync sync 时,工具会针对每个目标 IDE 做不同的处理。
以同一条 coding-standards Rule 为例,同步到不同 IDE 后的文件内容:
Trae — 直接写入纯 Markdown,无任何头部:
# 编码规范
## 命名规则
- 类名使用 PascalCase
- 函数名使用 camelCase
...
Qoder / Lingma — 自动添加 trigger: always_on 头部:
---
trigger: always_on
---
# 编码规范
## 命名规则
- 类名使用 PascalCase
- 函数名使用 camelCase
...
CodeBuddy — 自动添加包含时间戳的完整头部:
---
description:
alwaysApply: true
enabled: true
updatedAt: 2026-04-21T08:38:00.123456+00:00
provider:
---
# 编码规范
## 命名规则
- 类名使用 PascalCase
- 函数名使用 camelCase
...
你在统一仓库中只维护一份纯 Markdown,格式转换由工具自动完成。
MCP 同步采用 JSON 合并策略,而不是简单覆盖:
mcp.json 不存在 → 自动新建mcpServers 字段同时,工具会自动重写 MCP server 配置中的 cwd 字段,指向统一仓库中该配置版本的路径,确保 MCP 服务能在正确目录下启动。
Skills 同步是直接的目录拷贝(shutil.copytree),不涉及格式转换。如果目标已存在同名 skill,会提示确认覆盖。
~/.msr-sync/config.yaml 让你自定义默认行为:
# 统一仓库路径(支持 ~ 展开,默认 ~/.msr-repos)
# repo_path: ~/.msr-repos
# 导入时忽略的目录和文件
ignore_patterns:
- __MACOSX
- .DS_Store
- __pycache__
- .git
# 默认同步目标 IDE(不用每次都 --ide)
default_ides:
- trae
- codebuddy
# 默认同步层级
default_scope: global
设置后,msr-sync sync 就等同于 msr-sync sync --ide trae --ide codebuddy,省心省力。
对于感兴趣的同学,简单介绍一下 MSR-cli 的技术架构。
整体采用 四层分层架构:
CLI 层 (cli.py)
↓ Click 命令路由
Commands 层 (commands/)
↓ 业务编排
Core 层 (core/)
↓ 纯业务逻辑
Adapters 层 (adapters/)
↓ IDE 特定实现
各 IDE 文件系统
关键的 适配器层 使用策略模式 + 注册表模式实现:
# 抽象基类
class BaseAdapter(ABC):
def format_rule_content(self, raw_content: str) -> str: ...
def get_rules_path(self, rule_name, scope, project_dir) -> Path: ...
def supports_global_rules(self) -> bool: ...
# 每个IDE一个适配器实现
class TraeAdapter(BaseAdapter): ...
class QoderAdapter(BaseAdapter): ...
class LingmaAdapter(BaseAdapter): ...
class CodeBuddyAdapter(BaseAdapter): ...
新增一个 IDE 的支持,只需要:
BaseAdapter核心业务层完全不感知具体 IDE 的存在。
其他技术亮点:
V01 非法)、负数、空字符串等边界情况SourceResolver 统一管理临时目录,finally 确保清理init 重复执行不会破坏已有数据~/Library/Application Support/)和 Windows(%APPDATA%/)路径差异团队维护一个 GitHub 仓库,放一个打包好的压缩包:
# 成员拉取最新团队配置
msr-sync import rules
# 一键同步到自己的所有 IDE
msr-sync sync
# 一键收集 Trae 的所有配置
msr-sync init --merge
# 全部分发到 CodeBuddy
msr-sync sync --ide codebuddy
# 导入实验版本的 Rule
msr-sync import rules ./coding-standards-experimental.md
# 已导入: coding-standards (V2)
# 同步到 IDE 试用
msr-sync sync --type rules --name coding-standards
# 已同步 rule 'coding-standards' (V2) 到 trae (global)
# 不好用?回滚到 V1
msr-sync sync --type rules --name coding-standards --version V1
# 已同步 rule 'coding-standards' (V1) 到 trae (global)
给团队的每个项目统一注入 Rules 和 Skills:
# 在项目根目录执行
msr-sync sync --type rules --scope project
msr-sync sync --type skills --scope project
配置会自动写入 .trae/rules/、.qoder/rules/、.codebuddy/rules/ 等目录,团队成员各自用各自的 IDE 打开项目就能直接生效。
| IDE | 厂商 | Rules | Skills | MCP |
|---|---|---|---|---|
| Trae | 字节跳动 | |||
| Qoder | 阿里巴巴 | |||
| Lingma | 阿里巴巴 | |||
| CodeBuddy | 腾讯 |
click 和 pyyaml,轻量无负担MSR-cli 解决的不是一个复杂的技术问题,而是一个真实存在的日常痛点。
随着 AI IDE 越来越多,Rules、Skills、MCP 配置的碎片化只会越来越严重。把配置集中到一个本地仓库统一管理,按需同步到任意 IDE —— 这不仅省去了大量的重复劳动,更重要的是让你对所有的 AI 配置有了清晰的掌控感。
一条命令,配置归仓。