用于开发、部署和发布 Quicker 动作(Roslyn v2 引擎)。支持生成 JSON 配置、C# 逻辑代码和 Markdown 简介,并通过 PowerShell 调用 QuickerStarter.exe 进行本地构建或云端发布。
在 quicker-skill/ 下提供了丰富的脚手架工具:
scripts/build_action.ps1:自动调用编译器并解析日志的一键构建脚本。templates/basic_action.json:带输入/输出的标准快捷动作包裹容器。templates/ui_action.cs:集成了 WPF UI 线程调度、异常捕获的实用 C# 代码骨架。templates/sync_subprogram_action.cs:安全同步调用 Quicker 内部子程序(如 OCR),防死锁的标准模板代码。协助用户在 Windows 环境下按照 普通模式 v2 (Roslyn) 引擎规范,高效地开发、部署、发布和维护 Quicker 自动化动作。
ActionId (留空自动生成), Title, Variables, , , 等。IconMenusReferencesnamespace 或 class。基准名_简介.md。context.GetVarValue("变量名"):获取变量。context.SetVarValue("变量名", object值):设置变量。LogMsg, LogException, ShowMessage 等不存在的方法。public static string Exec(Quicker.Public.IStepContext context)。必须返回字符串(如 "OK" 或结果)。references/window_guidelines.md 中的规范,确保窗口能够成功激活、前置且具备交互完整性。所有命令均通过“QK 扳手”执行 (ID 见 config.json 中的 wrench_action_id 字段)。
警告:以下命令是与 Quicker 交互的唯一合法协议,严禁重构。
& ".\scripts\build.ps1" -JsonPath "{{JSON绝对路径}}"
& "C:\Program Files\Quicker\QuickerStarter.exe" -c120 "runaction:{{wrench_id}}?action=publish&filePath=$([System.Net.WebUtility]::UrlEncode('{{JSON绝对路径}}'))" | Out-String
为确保 build 命令成功并自动覆盖逻辑,必须严格遵守以下原则:
templates/basic_action.json 中严禁包含 Steps 数组。它仅应定义元数据(ID、变量、图标等)。MyTask.json 对应 MyTask.cs。
.cs 内容填充到动作主步骤中,无需在 JSON 中声明 Steps。ActionId 必须与 config.json 中的“扳手 ID”区分开(以免修改到扳手本身)。& "C:\Program Files\Quicker\QuickerStarter.exe" -c120 "runaction:{{wrench_id}}?action=update&filePath=$([System.Net.WebUtility]::UrlEncode('{{JSON绝对路径}}'))" | Out-String
& "C:\Program Files\Quicker\QuickerStarter.exe" -c120 "runaction:{{生成的动作ID}}" | Out-String
Demo.json){
"ActionId": "",
"SharedActionId": "00000000-0000-0000-0000-000000000000",
"Title": "动作标题",
"Description": "本地动作描述",
"Keywords": "标签1,标签2;标签3",
"ChangeLog": "v1.0.0 初始化版本",
"ShareUrl": "",
"Icon": "fa:Solid_Robot:#0080FF",
"Variables": [
{
"Type": 0,
"Key": "input_var",
"DefaultValue": "默认值",
"IsInput": true,
"Desc": "输入变量说明"
}
],
"Menus": {
"config": "[fa:Regular_Sun]设置"
},
"References": [ "Microsoft.Web.WebView2.Wpf.dll"]
}
Demo.cs)using System;
using System.Windows;
using Quicker.Public;
// Roslyn v2 零样板模式:直接编写代码,禁止 namespace/class
public static string Exec(IStepContext context)
{
// 获取输入变量
string input = context.GetVarValue("input_var") as string;
// UI 交互必须在 Dispatcher 线程中执行
Application.Current.Dispatcher.Invoke(() => {
MessageBox.Show($"你好!这是来自 Quicker 的输入:{input}", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
});
return "OK";
}
在编写 C# 脚本时,AI 经常犯以下错误,必须规避:
IStepContext 没有 LogMsg, LogException 或 ShowMessage。记录信息请使用 MessageBox 或返回错误字符串。Exec 的签名必须是 string 而不是 void。-JsonPath 必须是绝对路径。MainWindow, Toast)必须包裹在 Application.Current.Dispatcher.Invoke(() => { ... }) 中。namespace 或 class 定义。text, rtn, errMessage, menuKey, silent 会由构建器自动注入。references/internal_modules.md。IStepContext.RunSpAsync 执行外部功能封装,详见 references/calling_subprograms.md。references/window_guidelines.md。references/cloud_sync_guide.md。references/publishing_workflow.md。