给项目做一层可演进的 AI Skills 系统

给项目做一层可演进的 AI Skills 系统

最近我在一个持续迭代的项目里,慢慢遇到了一个很具体的问题:

AI 越来越懂这个项目,但这些理解大多停留在一次次对话里,不稳定,也不容易复用。

项目小的时候,这个问题并不明显。很多背景我自己记得住,AI 也能靠最近几轮对话接上。

但随着功能越来越多,这个问题开始反复出现:

  • 同一块模块背景,要一遍遍重新解释
  • 某些关键文件、关键入口、关键边界,这次知道,下次不一定优先想到
  • 已经沉淀下来的经验散落在脑子里、对话里、零碎文档里,没有统一入口

也就是说,我真正遇到的问题不是"AI 不会写代码",而是:

项目知识没有一个适合 AI 协作的组织方式。

我遇到的问题

我最先想到的办法其实很自然:

  • 既然有些知识会重复讲
  • 那就把它们写成 Skill
  • 以后触发 Skill,不就能直接复用了吗

但这个方向很快暴露出几个问题:

  • 项目知识变化快,全局 Skill 很容易过时
  • 不是每一份项目经验都值得升级成真正的全局 Skill
  • 模块一多,就很容易出现"全局 Skill 越建越多"的情况
  • 一旦全局层变重,维护成本和触发噪音都会变高

所以我很快否掉了"把项目知识直接大量做成全局 Skill"这条路。

我怎么想到这套方案

后来我开始反过来想:

问题的关键,也许不是"缺少全局 Skill",而是"项目内缺少统一入口"。

于是我先在仓库里整理出一套 docs/skills/

  • 每份文档对应一个问题域或模块
  • 不追求大而全,只回答最关键的问题
  • 遇到某类问题时,先读哪份文档、先看哪几个文件、先看哪类测试,都尽量说清楚

这样做之后,项目知识第一次有了一个稳定落点,而且它和代码天然放在同一个仓库里:

  • 改代码的人可以顺手改文档
  • 文档版本会跟着代码走
  • AI 和协作者可以共用同一套入口

但新的问题也马上出现了:

项目里有了 docs/skills/,AI 怎么知道先去看它?

这时候我意识到,我真正需要的也许不是很多全局 Skill,而是一个很薄的全局 Skill

于是我做了一个全局 router skill,名字叫 project-skill-finder

它不存项目知识,只做一件事:

  • 先去当前项目里找 docs/skills/INDEX.md
  • 再根据索引决定该读哪一两份项目文档
  • 如果没有 INDEX.md,就退化到枚举 docs/skills/*.mdskills/*.md
  • 如果整个项目都没有这些文档,就静默退化,不阻塞工作

这个设计一出来,我自己就觉得顺了很多。因为它把职责拆开了:

  • 全局层只负责发现
  • 项目层负责沉淀知识

而且上下文也不会一下子被塞满。先看索引,再按需读最相关的 1-2 份文档,比把一堆内容全塞进上下文稳得多。

这里还有一个很容易被问到的问题:
既然很多 Agent 已经有 memory,为什么还要做这个?

我现在的理解是:

  • memory 更像"AI 记住了什么"
  • project skills 更像"项目知识如何被正式组织起来"

也就是说,memory 更适合记偏好、协作习惯和长期上下文;而项目 Skill 更适合承载:

  • 这个问题域先看哪份文档
  • 这块模块先读哪几个文件
  • 关键测试入口在哪里
  • 常见边界和坑是什么

两者不是替代关系,而是分工关系:

  • memory 记住人和协作习惯
  • project skills 承载项目知识
  • 全局 router skill 负责把项目知识发现出来

最后落下来的结构

做到这里,我其实已经有了一套"能跑"的结构:

  1. 项目内 docs/skills/

    把项目知识收拢到仓库里,让它和代码一起演进。

  2. 一个全局的 project-skill-finder

    不负责背项目知识,只负责发现项目里的 Skill 文档。

  3. 一份 Skill 使用统计表

    不只记录"有没有用过",还记录"有没有帮助"和"没帮助的原因"。

统计表大概会长成这样:

Skill used_count helpful_count not_useful_count not_useful_reasons last_used_at notes
SSH_AND_EXECUTION.md 8 6 2 too_broad,outdated_content 2026-04-11 13:09:50 jump 和 deploy 入口有帮助,但 Windows 段落需要继续收紧。
COMMAND_SYSTEM.md 5 5 0 - 2026-04-10 21:14:03 对路由、子命令和 suggestion 问题定位很快。
RENDERING_SYSTEM.md 4 2 2 too_shallow,missing_key_files 2026-04-09 18:32:11 能提供背景,但对局部刷新问题的落点还不够直接。

这里我最看重的其实不是"用了多少次",而是另外两个问题:

  • 哪些 Skill 真正帮上了忙
  • 哪些 Skill 被用了,但没帮上忙,为什么

比如 not_useful_reasons 里,可以记录:

  • description_unclear
  • wrong_trigger
  • outdated_content
  • missing_key_files
  • too_shallow
  • too_broad
  • poor_examples

有了这一层之后,Skill 就不再只是"写了放着",而是开始变成一个可以持续观察、持续修正的系统。

为什么这套方法值得继续打磨

这套方法最让我满意的地方,不是"很完整",而是"很能长"。

它不是一开始就要设计一个很重的系统,而是:

  • 先从一两份项目文档开始
  • 再补一个统一入口
  • 再加一个很薄的全局发现器
  • 最后再加上观察和优化机制

也就是说,这不是一次性大建设,而是一套可以随着项目慢慢长起来的结构。

我现在越来越觉得,很多 AI 协作方案之所以后面会失效,不是因为思路错了,而是因为一开始就太重、太理想化。

而这套方法相对稳的地方就在于:

  • 全局层很薄
  • 项目层可版本化
  • 统计层可反馈

结语

我不是先想到要做一套 AI Skills 系统,而是在不断遇到"知识散、入口弱、效果不可见"这些问题之后,才一步步把它逼出来。到最后,它变成了一套我自己很愿意继续维护的结构:

  • 全局 Skill 负责发现
  • 项目文档负责沉淀
  • 统计机制负责持续优化

对我来说,这比直接堆很多全局 Skill,或者单独维护一份大而全的文档,都更适合真实项目里长期协作的节奏。

源码

对应skill源码已经放到Gitcode和Github

Gitcode: https://gitcode.com/arvinrong/agent-skills

Github: https://github.com/ArvinRong/agent-skills

相关推荐
wayz112 小时前
Day 1:机器学习基础与评估指标
人工智能·机器学习
啦啦啦!2 小时前
c++AI大模型接入SDK项目
开发语言·数据结构·c++·人工智能·算法
东北洗浴王子讲AI2 小时前
GPT-5.4在自动化测试与质量保障中的创新应用实践
人工智能·gpt·自然语言处理·chatgpt
淬炼之火2 小时前
笔记:对MoE混合专家模型的学习和思考
人工智能·笔记·学习·语言模型·自然语言处理
憨波个2 小时前
【说话人日志】从固定输出到可变说话人数:EEND-EDA
人工智能·深度学习·音频·语音识别
sali-tec2 小时前
C# 基于OpenCv的视觉工作流-章49-人脸检测
图像处理·人工智能·opencv·算法·计算机视觉
人工智能AI技术2 小时前
“小飞贼”Little Snitch杀入Linux,内核级流量拦截
人工智能
永霖光电_UVLED2 小时前
CEA-Leti 和 CEA-List 已宣布与 Powerchip 半导体制造公司 (PSMC) 合作
人工智能·生成对抗网络·汽车·制造·激光
ai产品老杨2 小时前
异构计算时代的安防底座:基于 x86/ARM 双架构与多芯片适配的 AI 视频云平台架构解析
arm开发·人工智能·架构