Self-evolving skills lib for coding agents.
$ npx -y skills add SkillNerds/xskill --agent claude-code
English · 简体中文
📄 论文:xskill: Team-Level Skill Distillation, Sharing, and Evolution for Coding Agents · PDF(19 页)
“同事的coding agent已经做过的事情,你为什么不能直接拿来用?”
xskill是企业级的团队skill演进方案,支持轨迹自动蒸馏Skill,基于轨迹画像推送Skill,支持导入团队skillhub进行推荐,支持skill评价。
只要团队里有一个人在自己的会话里搞定了某个问题,这个解法就会变成一条技能——其他人的 agent 自动拿到。没人需要专门写文档。
笔记本上用 Claude Code、服务器上用 Codex、IDE 里用 Cursor。xskill 从它们全部收集脱敏后的轨迹,进化出同一个共享技能库,再把结果同步回你用的每一个 agent。
没有一个共享、自我改进的技能库,每个开发者都在孤岛里重复解决同样的问题。xskill 把这些被浪费的、隔离的努力,变成可以复利累积的共享经验。
[!NOTE] xskill全流程都是Agentic-Centric的管线。首先将轨迹按照内部意图拆分为子轨迹(轨迹原子),然后对轨迹原子进行聚类并分配到对应的skill,原子积攒足够后就会触发skill编辑产出新的skill版本。 不同的skill版本会在真实的用户流量上进行测试,用户体验分高的胜出作为主版本继续迭代,每一次改动都有版本、可回滚。细节见
docs/agent.md。
xskill是一套无监督的skill蒸馏方案,其不需要构建数据集就可以完成进化。
目前版本的算法管线精度表现如下:
在目前已完成的三项评测中,xskill 均高于 SkillOpt,平均分领先 5.58。
为了尽量还原真实的团队使用场景,评测环境通过 namespace 隔离部署了:
xskill-clientxskill-server[!IMPORTANT] XSkill 无需显式监督信号即可持续进化。 SkillOpt 强依赖 ValSet 提供进化所需的监督信号。 在 ALFWorld 的 Epoch 2、3、4 中,ValSet 均出现精度溢出,导致进化失败,是其算法缺陷。
xskill 支持切换算法内核来驱动技能进化,详见下方「可选:切换算法内核」。
如果只想具备检索轨迹的能力,不打算蒸馏任何skill:
pip install xskill # Python 3.9+
xskill init # 扫描本机 agent,转换会话;不必填模型
xskill traj search 内存泄漏
xskill traj read <traj_id> # 按行号读原文
如果你有LLM API,不只想要轨迹检索,可以尝试开始skill蒸馏能力:
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:
base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
model: text-embedding-v4
api_key: YOUR_KEY
dim: 0
上面这一段 llm 就是大家共用的默认模型。已经在用的配置不用改,继续这样写完全没问题。
如果你想给流水线里的拆分、聚类、编辑各自换一个模型或地址,可以再加一段可选的 llm_agents。不写也没关系。某个阶段或某个字段没写的话,会先看看有没有 llm_skill,再回到 llm。xskill generate 还是用 llm 和 llm_skill,不会去读 llm_agents。改完这几段之后重启一下 xskill serve 就好。
# 可选。不写这段的话,三个阶段都继续用上面的 llm
llm_agents:
split:
model: qwen-plus
cluster:
model: deepseek-v4-flash
edit:
base_url: http://localhost:8000/v1
model: local-skill-editor
api_key: local
再跑一次 xskill serve, 它会自动识别你机器上每一个受支持的 agent 并开始运行,收集agent的轨迹并将skill推送到对应的harness下。
[!NOTE] 单人模式下,你将会丢失很多精心设计的特性,因此只建议在以下情况进行使用。 1.希望能够自动将之前高频工作流串联成skill 2.每天有高强度的Agent运行需求
服务器管理员在服务器配置config.yaml后运行中心化进程:
xskill serve --server # 会打印connect join命令,复制给组内同事便可。
普通用户执行:
xskill connect <host:port> --token <token> --name <工号/姓名>
默认全部上传;只想上传部分项目时 xskill privacy mode allowlist,再到项目目录里 xskill privacy allow,xskill privacy status 查看每个项目的判定。server 端 team.server.privacy_mode: allowlist 可要求全员白名单(客户端需本版本及以上)。
connect 成功后,指南会装进本机已探测到的 Claude Code、Codex、Cursor 等 agent。在对应 agent 里输入 /xskill-helper,就可以查 generate、search、升级这些用法。没有地址和 token 时,把上面这条命令当示例,向你们自己的 server 管理员要 host、token 和工号,不要连外网公开实例。
在config.yaml中可以填写管理员身份:
dashboard:
enabled: true
public: true
password: ""
admins:
- admin_name_1 # 管理员<工号/姓名>
- admin_name_2
admin_password: admin_passwd_123
然后再在任意一台pc上输入:
xskill dashboard
就可以打开并登录管控面面板(身份自动识别),管理员可以进行如下操作:
普通用户可以:
generate 不是凭空创作 Skill:它会从 team server 上已有且有权访问的轨迹中提取经验,自然语言指令只用来描述想生成或改写什么。连接到支持 generate 的 team server 后,可以这样创建 Skill:
xskill generate "创建一个排查 Python 内存泄漏的 Skill,包含常用诊断命令"
同一个命令也能基于轨迹改写已有 Skill;在指令中写明 Skill 名称和修改目标即可:
xskill generate "改写现有的 python-memory-debug Skill,补充 Windows 排查步骤"
需要代理优先参考指定用户的历史轨迹时,使用 --name;多个工号或用户 ID 以逗号分隔。省略该参数时,代理可以在 server 授权的全部轨迹范围内检索:
xskill generate --name alice,bob "根据这些用户的成功案例生成数据库迁移 Skill"
任务可能会先等待 SkillEdit 池的空闲席位。CLI 会持续输出排队和运行日志;完成后,生成或改写的 Skill 会直接提交到主干,并 pin 到发起人的推荐列表。如果 CLI 提示 server 版本过旧,请联系管理员升级 team server。
除了由服务端根据画像自动推荐 Skill 之外,客户端也可以按需主动搜索、下载与上传技能:
xskill search <关键词> # 搜索技能库,返回匹配技能与 ID
xskill download <skill-id> # 交互式选择要安装的目标 agent
xskill download <skill-id> --agent claude-code --agent codex -y # 命令行非交互式安装
xskill upload ./my-skill # 将本地技能目录打包上传至团队共享库
xskill search <关键词> --download # 临时检索并下载至本地轮转槽位
搜索默认结合关键词与语义向量进行混合排序;download 会将指定技能持久化安装至对应 agent;upload 则可将团队成员编写的有效技能一键发布至团队共享库。
开发过程中遇到疑难问题时,可直接检索团队成员或本机历史会话(轨迹)及提炼出的原子任务(Atom),参考前人已走通的上下文与排查命令:
xskill traj search "内存泄漏排查" # 检索历史会话轨迹
xskill traj search --name alice,bob "内存泄漏" # 指定只检索特定成员的轨迹
xskill traj read <traj_id> --offset-start 1 --offset-end 100 # 按行号阅读会话原文
xskill atom search "OAuth token 刷新" # 检索已切分的原子任务片段
xskill atom read <atom_id> # 查看该 Atom 对应的会话内容
在未连接团队服务端时,xskill traj search 同样支持检索本机各 agent 的历史会话;也可运行 xskill init 进行交互式扫描与初始化。已连接团队服务时,默认发起团队检索,如需仅看本机可追加 --local 参数。
Xskill支持导入skillhub并将海量skill纳入推荐和评价, 服务器管理员只需要配置~/.xskill/config.yaml:
skillhub:
enabled: true
dir: /root/.xskill/skillhub_skills
然后将公司内网skillhub随意放置到该目录下(支持多个skillhub),xskill就会自动探测skill并纳入推荐,将相关skill自动推送给指定的用户.
xskill 默认使用内置 native 内核(拆分、归类、编辑三个代理)驱动技能进化。团队模式下,管理员可以在设置页把 kernel_id 切换为第三方内核(如 OpenEarth),让外部算法接管"轨迹 ready 之后生成 Skill"这一环节,其余流程不变。切换是可选的,不写 kernel 段时一切照旧。
操作步骤和详细说明见 算法内核使用指南。
| Agent | 状态 | 轨迹采集 | 技能安装 |
|---|---|---|---|
| Claude Code | ✅ 已验证 | ~/.claude/projects/ | 软链 → ~/.claude/skills/<name>/ |
| Codex CLI | ✅ 已验证 | ~/.codex/sessions/ + ~/.codex/archived_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/ |
| DeepSeek Harness (dsh) | 🟡 已实现 | ~/.dsh/sessions/(明文与默认 zstd 会话均可) | 软链 → ~/.dsh/skills/<name>/ |
| 任何其他 agent | 手动 | SDK xskill.adapters.submit_trajectory | 拷贝/软链 SKILL.md 目录 |
| 术语 | 含义 |
|---|---|
| Trajectory(轨迹) | 一次 agent 运行会话的完整记录,Xskill维护了一套庞大的解析生态层。 |
| TrajectoryAtom(轨迹原子) | 轨迹里最小的、单一意图的切片,是生成skill的原料。 |
| Skill(技能) | 一个 SKILL.md 加可选脚本,各自在独立的 git 目录里带版本。 |
| Canary(灰度) | 当前技能与新候选版本在真实流量上的 A/B 对比测试。 |
| UX score(体验分) | 某条技能在某个原子上服务用户的好坏,由交互本身打 1–10 分。灰度保留分更高的那个版本。 |
v0.7.0:Generate 读轨迹改为 traj_search、traj_cards、atom_search、read_traj,wiki 可增量记进度;xskill init 可跳过连接,已连接用户再跑不会断连。v0.6.32a1:流水线按新轨迹先拆先归;看板可热改席位和配额比,不重启 agent-worker;有 generate 在等大模型时硬优先;已达触发条件的 import 技能优先占编辑座。v0.6.31:xskill rebuild --force 不再因 .git/objects 非空中断;全量 rebuild 会留下 xskill import 纳入的技能,只清蒸馏产物。v0.6.30:team xskill import 后钉到发起人推荐列表;技能库登录后可点空心星 pin 进自己的推荐流,并标出推给我、已钉状态;import 后技能立即出现在技能库清单。v0.6.30a3:xskill generate 排队和执行时 CLI 及时打出状态,不再干等;旧安装账本混入倒退序号时仍能 import 并装回 harness。v0.6.30a2:修复 team xskill generate 上下文压缩后代理忘掉已执行工作。v0.6.30a1:team 模式新增 xskill generate 按指令写技能到主干;新增 xskill import 纳入已有技能。v0.6.29:修复推荐回填问题。v0.6.29a6:milvus变更为可选VDB;支持 DashBoard选择skill推送个数,支持Dashboard查询Skill的用户灰度情况;v0.6.29a5:引入 Milvus Lite 向量索引。v0.6.29a4:Dashboard 新增「我的」页,普通用户默认进入,贡献去向与世界消息支持分页浏览;支持回收client端推荐变更导致产生的孤儿skill。v0.6.29a3:推荐引擎优化。xskill is a Claude Code plugin with 2 hand-picked skills, indexed on Flowy in the Agent Memory category. Install it with the command on its page. It includes using-xskill, xskill-dev. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it