[{"data":1,"prerenderedAt":320},["ShallowReactive",2],{"page-/post/daily/change-your-old-code-into-skill":3,"surrounding-page":311},{"id":4,"title":5,"author":6,"body":7,"date":299,"description":292,"extension":300,"group":6,"lastmod":301,"meta":302,"navigation":303,"path":304,"rawbody":305,"seo":306,"showTitle":6,"stem":307,"tags":308,"versions":6,"__hash__":310},"content/post/daily/change-your-old-code-into-skill.md","没用的旧代码不要丢，放到SKILL里继续用",null,{"type":8,"value":9,"toc":291},"minimark",[10,14,18,26,29,37,44,53,61,67,74,81,91,94,100,132,135,138,154,165,170,180,187,193,199,205,216,219,226,236,241,244,249,258,261,264,267,270,273,279,282,285,288],[11,12,13],"h2",{"id":13},"前言",[15,16,17],"p",{},"没用的旧代码不要丢，也不要放在转转上回收😄",[15,19,20,21,25],{},"放到",[22,23,24],"code",{},"SKILL","里当做一个脚本来用说不定会更合适。",[11,27,24],{"id":28},"skill",[30,31,32],"blockquote",{},[15,33,34,36],{},[22,35,24],{},"是AI编程助手（如OpenCode）中的一种可复用工作流机制。它诞生的背景是：传统的Prompt工程中，开发者需要反复编写相似的指令和上下文说明，既低效又容易遗漏细节。SKILL将\"意图描述 + 详细要求 + 工具脚本\"打包成一个可被AGENT智能识别和调用的单元，让过往积累的代码、脚本和工作流程得以在AI时代继续发挥价值。",[15,38,39],{},[40,41],"img",{"alt":42,"src":43},"SKILL 概念图","/illustrations/skill-reuse-old-code/illustration-skill-concept.png",[15,45,46,48,49,52],{},[22,47,24],{},"从前端的概念上来理解，类似于一个",[22,50,51],{},"composable","。",[15,54,55,56,60],{},"它可以是一段写好的Prompt，也可以有单个脚本（函数），也可以是多个脚本，所以比单纯的",[57,58,59],"strong",{},"函数复用","要更灵活和多变一些。",[15,62,63],{},[40,64],{"alt":65,"src":66},"SKILL 像 Composable","/illustrations/skill-reuse-old-code/illustration-composable-concept.png",[15,68,69,70,73],{},"那它和",[22,71,72],{},"MCP","（MCP只是协议，但下文MCP同时指代背后的服务）有什么区别呢",[15,75,76,77,80],{},"MCP就类似于一张「入场券」，仅仅是提供给",[57,78,79],{},"Agent","调用此服务的接口。",[15,82,83,84,86,87,90],{},"在调用",[22,85,72],{},"时，往往需要你先写一段",[22,88,89],{},"Prompt","，交待背景、角色、要做什么，然后AGENT再去调用MCP，拿到结果，按你说的要求整理和执行下一步动作。",[15,92,93],{},"SKILL好就好在，它可以记住你这一套操作，是真正的复用。",[15,95,96],{},[40,97],{"alt":98,"src":99},"MCP vs SKILL 流程对比","/illustrations/skill-reuse-old-code/illustration-mcp-vs-skill.png",[15,101,102,103,106,107,109,110,113,114,117,118,113,121,123,124,127,128,131],{},"在执行一项任务前，你的",[57,104,105],{},"意图","就是这个",[22,108,24],{},"的",[22,111,112],{},"description","。你的",[57,115,116],{},"要求","就是它的",[22,119,120],{},"SKILL.md",[57,122,72],{},"，也就是那个",[57,125,126],{},"输出结果明确的服务或脚本","，同样可以用在",[22,129,130],{},"SKILL/scripts","里。",[15,133,134],{},"所以，以前对自己有用的服务、脚本，到今天依然可用。仅仅是换了一种调用方式",[11,136,137],{"id":137},"职能细化",[15,139,140,141,144,145,148,149,151,152,52],{},"在 ",[22,142,143],{},"opencode","/",[22,146,147],{},"claudecode"," 中",[22,150,24],{},"的调用方式，类比传统的服务/古法编程，从明确的函数调用、接口请求，变成了AGENT语义理解并调用",[22,153,24],{},[15,155,156],{},[57,157,158,159],{},"传统：后端提供接口 => ",[160,161,162],"a",{"href":162,"rel":163},"https://api.example.com/get/xxx",[164],"nofollow",[15,166,167],{},[57,168,169],{},"SKILLS: SKILL/description",[15,171,172,173,176,177,179],{},"当给",[22,174,175],{},"AGENT/Primary","阐述我们的要求时，它会理解和规划你的要求，并且查看SKILLS里的",[57,178,112],{},"是否在你的要求内，如果有SKILL符合，则使用SKILL来完成。",[30,181,182],{},[15,183,184],{},[57,185,186],{},"所以Description就是给AGENT的接口文档",[15,188,189],{},[40,190],{"alt":191,"src":192},"Description 就是接口文档","/illustrations/skill-reuse-old-code/illustration-description-as-api.png",[15,194,195,196,198],{},"此时SKILL里的SKILL.md刚刚被加载到上下文，它就会开始执行这个SKILL里的任务，所以你在这个SKILL.md才是你最详细的要求，以及完成后要做什么。而不是一开始就发一大段",[22,197,89],{},"，发现有问题之后，再说你哪里哪里理解的不对，是这样那样。",[15,200,201,202],{},"多个SKILL之间可以在其内部的任务要求中达到串联协作，或者通过一个SKILL把其他SKILL串联。注意，",[57,203,204],{},"串联的前提是AGENT能够从你的任务描述中理解应该使用哪个具体的SKILL。。",[15,206,207,208,211,212,215],{},"在",[22,209,210],{},"Vscode","中用",[22,213,214],{},"Github Copilot","编程时，大模型经常会犯一些无语的错误。",[15,217,218],{},"比如，总是要生成文档。写个东西，二话不说文档先写一长串，或者是做完用文档总结一下。当然，这只是某些模型的特点。",[15,220,221,222,225],{},"再比如，写完代码，格式乱了、错行了，TS类型错了。这种错误经常出现。它不知道用项目自带的",[22,223,224],{},"lint","命令修复，哪怕你写到某个它默认会携带到上下文里的md文档里。因为一个窗口做的任务太多了，不知道哪次对话就把某个要求给丢了。",[15,227,228,229,231,232,235],{},"这些错误在我使用了",[22,230,143],{}," + ",[22,233,234],{},"ohmyopencode"," 之后就很少出现了。原因应该也是职能的细化，使其大模型工作效率提高了不少。工具的进化也让上下文问题优化了许多。",[15,237,238],{},[57,239,240],{},"所以，学的慢学的晚也不是坏事了，眼一闭一睁，问题已经在源头被解决了。",[11,242,243],{"id":243},"能力扩展",[15,245,246,248],{},[22,247,24],{},"放在代码里仅仅是提高准确性和复用率，（个人感觉）放在非编程领域可能会更好使一些。",[15,250,207,251,253,254,257],{},[22,252,24],{},"之前，普遍用",[22,255,256],{},"workflow","来编排自己的各种任务，（比如n8n）以达到自动化的效果。这让原本就有赚钱业务的人更加赚钱。",[15,259,260],{},"SKILL的能力不在workflow之下。",[15,262,263],{},"假如发一篇文章原本的模式是这样的：",[15,265,266],{},"先让A开发一个脚本、服务，完成抓取数据、处理数据等需求。然后由A把数据发给B，B负责润色文案，交给C去处理文章配图，最后交给D勘误和审核，然后再进行多平台发布。",[15,268,269],{},"有个AI之后，A肯定是不要了，大模型写出来的更快更好。B也不要了，AI自己润色。C也不要了，AI生图。D也不要了，AI勘误。多平台发布，以前就是聚合平台，现在还继续用。",[15,271,272],{},"所以只需要你一个人，把ABCD之间的调度（使用自然语言）粘合在一起。ABCD要做什么是固定的，产出也是固定的。你也不必把他们所有的工作职能都放在自己这，只需要明确：**进行到哪一步，去找谁解决。**最后再配个监理，持续敲打。",[15,274,275],{},[40,276],{"alt":277,"src":278},"工作流简化对比","/illustrations/skill-reuse-old-code/illustration-workflow-simplified.png",[15,280,281],{},"你看，非编程领域是不是可以先一步下岗了。😄",[283,284],"hr",{},[15,286,287],{},"一点SKILL的小思考",[15,289,290],{},"🔚",{"title":292,"searchDepth":293,"depth":293,"links":294},"",2,[295,296,297,298],{"id":13,"depth":293,"text":13},{"id":28,"depth":293,"text":24},{"id":137,"depth":293,"text":137},{"id":243,"depth":293,"text":243},"2026-01-15T19:31:33.000Z","md","2026-01-16T07:11:29.554Z",{},true,"/post/daily/change-your-old-code-into-skill","---\ntitle: 没用的旧代码不要丢，放到SKILL里继续用\ndate: \"2026-01-15T19:31:33.000Z\"\nlastmod: \"2026-01-16T07:11:29.554Z\"\ntags: [\"AI\"]\n---\n\n## 前言\n\n没用的旧代码不要丢，也不要放在转转上回收😄\n\n放到`SKILL`里当做一个脚本来用说不定会更合适。\n\n## SKILL\n\n> `SKILL`是AI编程助手（如OpenCode）中的一种可复用工作流机制。它诞生的背景是：传统的Prompt工程中，开发者需要反复编写相似的指令和上下文说明，既低效又容易遗漏细节。SKILL将\"意图描述 + 详细要求 + 工具脚本\"打包成一个可被AGENT智能识别和调用的单元，让过往积累的代码、脚本和工作流程得以在AI时代继续发挥价值。\n\n![SKILL 概念图](/illustrations/skill-reuse-old-code/illustration-skill-concept.png)\n\n`SKILL`从前端的概念上来理解，类似于一个`composable`。\n\n它可以是一段写好的Prompt，也可以有单个脚本（函数），也可以是多个脚本，所以比单纯的**函数复用**要更灵活和多变一些。\n\n![SKILL 像 Composable](/illustrations/skill-reuse-old-code/illustration-composable-concept.png)\n\n那它和`MCP`（MCP只是协议，但下文MCP同时指代背后的服务）有什么区别呢\n\nMCP就类似于一张「入场券」，仅仅是提供给**Agent**调用此服务的接口。\n\n在调用`MCP`时，往往需要你先写一段`Prompt`，交待背景、角色、要做什么，然后AGENT再去调用MCP，拿到结果，按你说的要求整理和执行下一步动作。\n\nSKILL好就好在，它可以记住你这一套操作，是真正的复用。\n\n![MCP vs SKILL 流程对比](/illustrations/skill-reuse-old-code/illustration-mcp-vs-skill.png)\n\n在执行一项任务前，你的**意图**就是这个`SKILL`的`description`。你的**要求**就是它的`SKILL.md`。你的**MCP**，也就是那个**输出结果明确的服务或脚本**，同样可以用在`SKILL/scripts`里。\n\n所以，以前对自己有用的服务、脚本，到今天依然可用。仅仅是换了一种调用方式\n\n## 职能细化\n\n在 `opencode`/`claudecode` 中`SKILL`的调用方式，类比传统的服务/古法编程，从明确的函数调用、接口请求，变成了AGENT语义理解并调用`SKILL`。\n\n**传统：后端提供接口 => https\\://api.example.com/get/xxx**\n\n**SKILLS: SKILL/description**\n\n当给`AGENT/Primary`阐述我们的要求时，它会理解和规划你的要求，并且查看SKILLS里的**description**是否在你的要求内，如果有SKILL符合，则使用SKILL来完成。\n\n> **所以Description就是给AGENT的接口文档**\n\n![Description 就是接口文档](/illustrations/skill-reuse-old-code/illustration-description-as-api.png)\n\n此时SKILL里的SKILL.md刚刚被加载到上下文，它就会开始执行这个SKILL里的任务，所以你在这个SKILL.md才是你最详细的要求，以及完成后要做什么。而不是一开始就发一大段`Prompt`，发现有问题之后，再说你哪里哪里理解的不对，是这样那样。\n\n多个SKILL之间可以在其内部的任务要求中达到串联协作，或者通过一个SKILL把其他SKILL串联。注意，**串联的前提是AGENT能够从你的任务描述中理解应该使用哪个具体的SKILL。。**\n\n在`Vscode`中用`Github Copilot`编程时，大模型经常会犯一些无语的错误。\n\n比如，总是要生成文档。写个东西，二话不说文档先写一长串，或者是做完用文档总结一下。当然，这只是某些模型的特点。\n\n再比如，写完代码，格式乱了、错行了，TS类型错了。这种错误经常出现。它不知道用项目自带的`lint`命令修复，哪怕你写到某个它默认会携带到上下文里的md文档里。因为一个窗口做的任务太多了，不知道哪次对话就把某个要求给丢了。\n\n这些错误在我使用了`opencode` + `ohmyopencode` 之后就很少出现了。原因应该也是职能的细化，使其大模型工作效率提高了不少。工具的进化也让上下文问题优化了许多。\n\n**所以，学的慢学的晚也不是坏事了，眼一闭一睁，问题已经在源头被解决了。**\n\n## 能力扩展\n\n`SKILL`放在代码里仅仅是提高准确性和复用率，（个人感觉）放在非编程领域可能会更好使一些。\n\n在`SKILL`之前，普遍用`workflow`来编排自己的各种任务，（比如n8n）以达到自动化的效果。这让原本就有赚钱业务的人更加赚钱。\n\nSKILL的能力不在workflow之下。\n\n假如发一篇文章原本的模式是这样的：\n\n先让A开发一个脚本、服务，完成抓取数据、处理数据等需求。然后由A把数据发给B，B负责润色文案，交给C去处理文章配图，最后交给D勘误和审核，然后再进行多平台发布。\n\n有个AI之后，A肯定是不要了，大模型写出来的更快更好。B也不要了，AI自己润色。C也不要了，AI生图。D也不要了，AI勘误。多平台发布，以前就是聚合平台，现在还继续用。\n\n所以只需要你一个人，把ABCD之间的调度（使用自然语言）粘合在一起。ABCD要做什么是固定的，产出也是固定的。你也不必把他们所有的工作职能都放在自己这，只需要明确：\\*\\*进行到哪一步，去找谁解决。\\*\\*最后再配个监理，持续敲打。\n\n![工作流简化对比](/illustrations/skill-reuse-old-code/illustration-workflow-simplified.png)\n\n你看，非编程领域是不是可以先一步下岗了。😄\n\n***\n\n一点SKILL的小思考\n\n🔚\n",{"title":5,"description":292},"post/daily/change-your-old-code-into-skill",[309],"AI","4xkSf2rPDD_33ufTZRJ2a1fPZZ62Um-s8TvMoTbxAkc",[312,316],{"title":313,"path":314,"stem":315},"OpenClaw 安装入门（Windows）","/post/zzao/openclaw/openclaw-install-windows","post/zzao/openclaw/openclaw-install-windows",{"title":317,"path":318,"stem":319},"假设你是AI，你的Skill应该是什么样的","/post/zzao/ai-skill-structure","post/zzao/ai-skill-structure",1779005085229]