Skip to content

Latest commit

 

History

History
32 lines (20 loc) · 3.17 KB

File metadata and controls

32 lines (20 loc) · 3.17 KB

项目总结 (Project Summary)

1. 为什么做这个项目(背景与痛点)

在用 OpenClaw 跑各种工作流的时候,我发现一个很尴尬的问题:大家都会从 ClawHub 上去下载别人写好的 Skill,但这些“通用版”的 Skill 很多时候到了自己的电脑上就会“水土不服”。

别人的浏览器操作习惯、页面元素的等待时间、或者是一些特定的重试逻辑,跟我个人的工作环境往往不一样。每次运行,AI 总要在同一个地方绊倒、修正、重试,这不仅浪费时间,还白白消耗 token。如果每次都要自己去扒源码、改配置文件,那用 AI 提效的初衷就本末倒置了。

所以我就在想:能不能让这个 Skill 越用越聪明? 如果我在使用的时候,它能在后台悄悄记下它遇到的坑和自动修正的操作,等次数多了,它就自己生成一个针对我个人习惯的“补丁”打到代码里去。这样,一个通用的 Skill 就能慢慢进化成了我的“专属私人助理”。这就是 skill-evolution-plugin 的由来。

2. 它是怎么工作的(核心流程)

这个插件的运行思路其实很简单,主要就分为三步走:

  1. 默默观察(Interceptor): 插件会作为一个拦截器挂在每一次的 Skill 执行流程上。它不干预正常的运行,只负责记日记——把每一次工具的调用、返回结果、特别是发生“报错后重试”、“自动修正参数”的行为记录下来,存成一个本地的日志文件 (execution-log.jsonl)。为了安全,我也加了脱敏机制,确保密码这类敏感信息不会被记下来。

  2. 找规律(Analyzer): 当同一个 Skill 跑了很多次之后,分析器就会介入。它会翻看最近的日志,如果发现同一个地方(比如某个按钮的点击)连续多次都被重新定位或者超时重试,它就会把这些规律“聚类”起来,认定这是一个“优化机会”,并生成一份人类能看懂的分析报告。

  3. 打补丁(Patch Manager): 找到规律后,它会生成一个统一格式的 Diff 补丁文件。然后借助 diff 工具,直接把这些优化逻辑(比如增加等待时间、替换特定的选择器)安全地应用到本地的 SKILL.md 文件里。从此,下次再跑这个 Skill,它就再也不会在同一个地方摔跤了。

3. 用到了哪些技术

为了保持轻量和方便接入现有的 Node.js 体系,我选择了以下技术栈:

  • 基础运行环境:Node.js >= 16.0
  • 补丁处理库diff (NPM 包)。这是业界标准的文本差异对比和合并工具,我用它来生成标准的 unified diff 并安全地 applyPatch 到文件里。
  • 命令行界面commanderchalk。用来快速搭了一个简单的 CLI 工具 (skill-evolution),方便我自己随时查看分析报告和打补丁状态,并且输出好看的彩色终端日志。
  • 日志存储:纯本地的 JSONL (JSON Lines) 格式。轻量且方便追加写入。为了防止日志太大撑爆内存,我也手写了一套截取末尾 5MB 分块读取的逻辑,没用什么复杂的数据库,主打一个简单好维护。