乐于分享
好东西不私藏

我的第一个 OpenClaw Skill:让 AI 帮我自动填写工作日报

我的第一个 OpenClaw Skill:让 AI 帮我自动填写工作日报

作为一名每天需要在 MES 系统里填写工作日报的开发者,我一直想着能不能让 AI 帮我完成这件重复的小事。最近我尝试用 VS Code 的 Copilot Skill 功能开发了一个专属工具,整个过程踩了不少坑,今天把这段经历完整记录下来,希望对想动手写自己第一个 Skill 的同学有帮助。

什么是 Copilot Skill?

VS Code Copilot(OpenClaw)支持一种叫做 Skill 的扩展机制。简单说,你可以把一个复杂的、重复的工作流程”打包”成一个 Skill,之后只需在 Chat 里输入 /skill名称,AI 就会按照你预设的步骤引导你完成任务,甚至直接调用脚本执行操作。

Skill 的核心文件结构非常简单:

skills/ └── holly-daily-report/     ├── SKILL.md     └── scripts/         └── submit_report.ps1

SKILL.md 是 AI 发现和理解这个 Skill 的入口,开头的 YAML frontmatter 里的 description 字段是关键——AI 就是通过这段描述来判断”什么时候该加载这个 Skill”的。

需求梳理

我们公司每天需要在系统里填写一条日报,字段包括:

  • 填报人员、关联产品、所在地区(固定不变)
  • 所属项目、今日任务、完成进度、明日计划(每天填写)

系统提供了一个 REST API,通过浏览器 DevTools 抓包,可以拿到完整的请求体结构和所需的认证 Token。

目标:让 AI 每次只问我”今天干了什么”,其余全部自动填充并提交。

开发过程

第一步:确定 Skill 结构

按照 Skill 规范,在项目目录下创建对应文件结构,SKILL.md 的 frontmatter 里的 description 包含了触发关键词,让 AI 能在正确时机加载这个 Skill。

第二步:编写 PowerShell 脚本

脚本接受参数,将固定字段硬编码,动态构造 JSON body,通过 Invoke-RestMethod 发送 POST 请求。看起来很简单,结果踩了三个坑……

踩坑记录

坑 1:特殊字符导致脚本解析失败

最初脚本里用了 ── 这种 Unicode 装饰字符作为注释分隔线,在某些终端/编码环境下 PowerShell 解析报错。

解决:所有注释改用标准 ASCII 字符,不用任何花哨的 Unicode 装饰符号。

坑 2:Unicode 转义序列被原样存入数据库

修复编码问题后,系统里看到的数据全是转义符号而非中文。

问题出在一段”修补代码”里混入了 JS/C# 风格的 Unicode 转义写法。PowerShell 不支持这种写法,所以直接把这几个字符存进去了。

解决:删掉这段多余代码,直接用 $REPORTER = '李波龙' 即可,文件保存为 UTF-8 就完全没问题。

坑 3:中文全变成问号——Windows 编码终极陷阱

这是最隐蔽的一个坑。脚本里变量值是正确的中文,控制台打印也是正常的,但系统里仍然全是 ????。

根本原因:

  • PowerShell 5.x 的 ConvertTo-Json 默认会把所有非 ASCII 字符转义为 Unicode 转义序列格式
  • 而 Invoke-RestMethod 在中文 Windows 系统上发送字符串 body 时,默认使用系统区域编码(GBK),服务端按 UTF-8 解析,于是乱码

解决方案(两步缺一不可):

# 步骤1:把转义序列还原为真实 Unicode 字符 $jsonStr = [Regex]::Unescape(($body | ConvertTo-Json -Depth 10))  # 步骤2:显式用 UTF-8 编码发送 $bytes = [System.Text.Encoding]::UTF8.GetBytes($jsonStr) Invoke-RestMethod -Uri $apiUrl -Method Post -Body $bytes -ContentType "application/json; charset=utf-8" -Headers $headers

最终效果

现在每次需要填日报,只需在 Chat 里说”帮我填今天的日报”,AI 会自动:

  1. 加载 holly-daily-report Skill
  2. 确认今日任务内容
  3. 调用脚本,以正确的 UTF-8 编码发送 API 请求
  4. 返回 code: 0, msg: Success,日报提交完毕

总结与收获

问题
根因
解决
脚本解析报错
注释里含 Unicode 装饰字符
改用纯 ASCII 注释
转义序列被原样存储
混入了 JS/C# 风格的转义写法
直接用中文字面量赋值
中文全变问号
PS5 JSON 转义 + Windows GBK 编码双重问题
Regex::Unescape + UTF8.GetBytes

Skill 开发的核心经验:

  • description
     字段是 AI 发现 Skill 的唯一入口,关键词要覆盖全
  • 脚本里的中文编码问题在 Windows 上特别容易踩,务必显式声明 UTF-8
  • PowerShell 5.x 与 .NET 6+ 在编码行为上有显著差异,要注意区分

结语

从想法到实现只用了小时,整个过程最有趣的地方不是”AI 帮我填日报”这件事本身,而是和 AI 一起调试 AI 工具这件事——让 Copilot 帮我写 Skill,Skill 反过来让 Copilot 帮我干活,形成了一个有意思的闭环。

如果你也有日常工作中的重复操作,不妨试试自己动手写一个 Skill,门槛比想象中低很多。

#VS Code #Copilot #OpenClaw #Skill开发 #PowerShell #效率工具