Distill reusable Skills from AI Agent execution trajectories
Project description
让你的 coding agent 的技能,从每一次真实会话里自我进化——你只管写代码。
跨会话、跨 agent、跨设备、跨同事。经验持续累积,技能不断生长。
English · 简体中文
📄 论文:xskill: Team-Level Skill Distillation, Sharing, and Evolution for Coding Agents · PDF(19 页)
✨ 为什么需要 xskill
你的 coding agent 每次碰到熟悉的问题,都从头再推一遍。你要么重新讲一遍,要么手动维护一个提示词库——而这个库没人盯着就会慢慢烂掉。xskill 让这些活儿消失:
- 🚀 装起来快——
pip install xskill,一个配置文件,搞定。 - 💬 你只管写代码——它在后台观察你的真实会话,把"管用的做法"自动蒸馏成
SKILL.md,你的 agent 自动加载。零额外操作。 - 🧬 自我进化,不是自卖自夸——新版技能只有在真实流量上确实让用户体验更好,才会取代旧版。由用户体验驱动,而不是让大模型给自己打分。
- 👥 团队放大器——一个人解决,全队复用。团队越大,进化越快、越准。
🔁 一人解决,全队复用
只要团队里有一个人在自己的会话里搞定了某个问题,这个解法就会变成一条技能——其他人的 agent 自动拿到。没人需要专门写文档。
🧩 跨越每一个 agent 与设备——同一个技能库
笔记本上用 Claude Code、服务器上用 Codex、IDE 里用 Cursor。xskill 从它们全部收集脱敏后的轨迹,进化出同一个共享技能库,再把结果同步回你用的每一个 agent。
🌱 孤岛 → 集体进化
没有一个共享、自我改进的技能库,每个开发者都在孤岛里重复解决同样的问题。xskill 把这些被浪费的、隔离的努力,变成可以复利累积的共享经验。
🏗 架构
几个职责很窄的 LLM agent 在干活:一个把轨迹拆成单一意图的原子(Atom);一个把每个原子路由到某条技能;一个在技能攒够素材后重写 SKILL.md;还有一个在真实流量上对新版本做 A/B 测试、留下胜出者。每条技能都是它自己的 git 仓库,所以每一次改动都有版本、可回滚。细节见 docs/agent.md。
🚀 快速开始
路径 A —— 单人、本地
pip install xskill # Python 3.9+
xskill serve # 写出 ~/.xskill/config.yaml,然后退出
打开 ~/.xskill/config.yaml,填两个模型端点(一个 LLM,一个 embedding 向量模型):
skill_dir: ~/.xskill/skill
llm:
base_url: https://api.deepseek.com
model: deepseek-v4-flash
api_key: YOUR_KEY
embedding:
# DeepSeek 没有 embedding,用 DashScope / OpenAI / Ollama,例如:
base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
model: text-embedding-v4
api_key: YOUR_KEY
dim: 0
再跑一次 xskill serve——它会自动识别你机器上每一个受支持的 agent 并开始监听。要把旧轨迹归档回填进来:
xskill registry add /path/to/trajectories
路径 B —— 团队模式(最有杀伤力的用法)
一台机器当 server,其他人作为轻量 client 加入,大家对着同一个进化中的技能库工作。
xskill serve --server # 打印一个加入 token
xskill connect <host:port> --token <token> # 在每个同事的机器上运行
- 悄悄蒸馏你的高手——一个人的解法自动到达全队。
- 任何工作流都能接——Codex、Claude Code、Cursor IDE 随便选,大家加入同一个库,跨工具同步。
- 轨迹保持私有——会话在上传前已脱敏。
- A/B 驱动的进化——一处改动先在每个人身上度量,再决定要不要扩散。人越多,进化越快越准。
- 专家可以手动教——本地改一条技能,会作为
user-staging/<client_id>拉进 server,喂给下一轮进化。
🪄 懒人安装 —— 把下面这段贴给你的 AI 助手
已经在用 Claude Code / Codex / Cursor 之类的编码 agent?把下面整段(填好服务器地址和 token)直接发给它,它会帮你装好并配置成开机常驻,不用手动敲命令。
请帮我安装并常驻运行 xskill —— 一个把编码 agent 操作轨迹蒸馏成可复用 skill、并在团队内共享的工具。
环境要求 Python 3.9+,先执行 `python --version` 确认;低于 3.9 或没装,就停下让我先装 Python。
1) 安装(版本优先 a5,没有则自动退 a4;先用默认/内部源,失败再走官方 PyPI):
pip install "xskill>=0.6.0a4,<0.6.0a6"
若上一条报错(源里找不到包/版本),改用官方源重试同一条:
pip install --index-url https://pypi.org/simple/ "xskill>=0.6.0a4,<0.6.0a6"
(pip 命令不存在就换成 py -m pip 或 python3 -m pip;装完执行 `pip show xskill` 把版本贴给我)
2) 首次连接团队服务器(只需带一次 token,会把连接信息写进 ~/.xskill/team_client.json):
xskill connect <服务器地址:端口> --token <TOKEN>
看到一行 `connected: client_id=...` 即成功;随后停掉它(Ctrl+C),后续交给常驻任务。
3) 配置成「开机自动启动 + 崩溃自动重启 + 不限运行时长」。常驻跑的是不带 token 的
`xskill connect`(复用已存连接)。按我的操作系统选一种:
- Windows:用「计划任务」AtLogOn 触发、ExecutionTimeLimit 0、失败每分钟重启,执行 xskill。
- macOS:用 launchd 的 LaunchAgent(KeepAlive=true,RunAtLoad=true)。
- Linux:用 systemd --user 服务(Restart=always,WantedBy=default.target)。
4) 验证:常驻任务/服务处于 Running;再等约 10 分钟,确认 ~/.xskill/clients/ 下出现以
服务器地址命名的目录、且 cursor.json 在更新(轨迹有约 10 分钟去抖窗口,刚连上不会立刻上传)。
说明:xskill connect 是常驻轮询进程,服务器若重启它会自动重连,无需我干预;只有换服务器地址
或换了 token 时,才需要重跑一次第 2 步带 token 的命令。全部完成后,把已安装版本号、client_id、
常驻任务状态告诉我。
把
<服务器地址:端口>和<TOKEN>换成团队管理员给你的值(server 端xskill serve --server启动时会打印 token)。切勿把真实 token 写进任何公开仓库或聊天记录。
🔌 与你的 agent 协同
| Agent | 状态 | 轨迹采集 | 技能安装 |
|---|---|---|---|
| Claude Code | ✅ 已验证 | ~/.claude/projects/ |
软链 → ~/.claude/skills/<name>/ |
| Codex CLI | ✅ 已验证 | ~/.codex/sessions/ |
软链 → ~/.agents/skills/<name>/ |
| OpenCode | ✅ 已验证 | SQLite ~/.local/share/opencode/opencode.db |
软链 → ~/.agents/skills/<name>/ |
| OpenClaw | 🟡 已实现 | ~/.openclaw/agents/ |
拷贝 → ~/.agents/skills/<name>/ |
| Cursor | 🟡 已实现 | ~/.cursor/projects/*/agent-transcripts/ |
软链 → ~/.cursor/skills/<name>/ |
| Trae | 🟡 已实现 | IDE state.vscdb / CLI trajectory_*.json |
软链 → ~/.trae-cn/skills/、~/.trae/skills/ |
| 任何其他 agent | 手动 | SDK xskill.adapters.submit_trajectory |
拷贝/软链 SKILL.md 目录 |
📖 概念
| 术语 | 含义 |
|---|---|
| Trajectory(轨迹) | 一次 agent 运行——一段会话的完整记录(traj_*.md)。 |
| Atom(原子) | 轨迹里最小的、单一意图的切片。路由在这一层发生。 |
| Skill(技能) | 一个 SKILL.md 加可选脚本,各自在独立的 git 目录里带版本。 |
| Canary(灰度) | 当前技能与新候选版本在真实流量上的 A/B 对比测试。 |
| UX score(体验分) | 某条技能在某个原子上服务用户的好坏,由交互本身打 1–10 分。灰度保留分更高的那个版本。 |
🗺 路线图
- 更多 agent 适配——Goose、OpenHands、Aider
- 更成熟的用户画像与推荐
- 原生 MCP server 接口(把技能作为工具暴露)
- 浏览技能库、查看 canary 数据的 Web UI
- 技能市场——导入/导出可移植的技能包
- 多租户技能库(按团队的
skill_dir)
📰 动态
- 2026-05-29 —— 新增 Trae IDE / Trae Agent 适配。
- 2026-05-23 ——
v0.5.0:团队模式(client-server)、轨迹脱敏、Python 3.9、运行时不再需要git二进制。 - 2026-05-20 —— MIT 开源;上线 PyPI:
pip install xskill。 - 2026-05-12 —— 支持 Claude Code、Codex、OpenCode;接通 OpenClaw 与 Cursor。
💬 社区
关于 coding-agent 技能的问题、想法、踩坑故事——来一起聊。扫码加微信群:
|
💬 微信交流群 扫码进群 · 一起聊 coding agent 技能 |
🙏 致谢
xskill 站在更广泛的 trajectory-to-skill 研究方向之上(港大 OpenSpace、阿里 Trace2Skill、华东师范 AutoSkill 等),也建立在它所接入的 agent 生态之上——Claude Code、Codex、OpenCode、Cursor、OpenClaw、Trae。
🤝 贡献
欢迎提 Issue 和 PR——尤其是新的 agent 适配。具体见仓库说明。
📝 引用
@misc{xskill2026,
title = {xskill: Team-Level Skill Distillation, Sharing, and Evolution for Coding Agents},
author = {SkillNerds},
year = {2026},
howpublished = {\url{https://github.com/SkillNerds/xskill}}
}
📄 许可证
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xskill-0.6.1a2.tar.gz.
File metadata
- Download URL: xskill-0.6.1a2.tar.gz
- Upload date:
- Size: 4.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8dbdee36afea3f0014e91bf53bddab60606f9c0935ed2a430e943035236e79a0
|
|
| MD5 |
84a4affb25939bac12f083ebf722954a
|
|
| BLAKE2b-256 |
69703d4f22a8362fd38aa404810a8e2873e02cd5b95ee0c8071082efe507d049
|
File details
Details for the file xskill-0.6.1a2-py3-none-any.whl.
File metadata
- Download URL: xskill-0.6.1a2-py3-none-any.whl
- Upload date:
- Size: 333.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
368250b8a0235344730cde162a6f2fe47605882a2ca9a8a4fa67ad157dd98225
|
|
| MD5 |
68cd6a37b3da37c27a3f7314e7514800
|
|
| BLAKE2b-256 |
694ba7b7fab58033ed2a549f97d4acc2432fe162dc8c5d1d249885cd83edf9e4
|