我的第一个 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 会自动:
-
加载 holly-daily-report Skill -
确认今日任务内容 -
调用脚本,以正确的 UTF-8 编码发送 API 请求 -
返回 code: 0, msg: Success,日报提交完毕
总结与收获
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
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 #效率工具
夜雨聆风