【效率革命】告别繁琐拖拽,用 Gemini 3 Pro 一键生成 Quicker C# 动作

洛洛罗 2025/12/4 发布 · 2025/12/4 更新 · 15 次阅读

随着 Gemini 3 Pro 等高性能大模型的发布,AI 辅助编程的能力迎来了质的飞跃。经过反复实测,我发现传统的 Quicker 动作开发模式——手动右键新建、填写标题描述、费力拖拽组件、编写代码——显得愈发低效且容易出错。

结论先行: 利用大模型遵循特定的 Quicker C# 开发规范,直接生成动作 JSON 数据,是目前最快、最优雅的开发方式。你甚至不需要打开 Quicker 的编辑窗口,只需编写一段提示词,AI 就能给你一个可以直接导入的成品动作。

1. 核心思路:解构 Quicker 动作

Quicker 的动作本质上是一段结构化的数据。当我们把一个动作复制到剪贴板或导出时,得到的其实是一个 JSON 对象。

  1. 首先我们按照常规方法编辑:

导出动作是一个json

桌面有这么一个文件

打开后的内容:

{
  "Row": 2,
  "Col": 0,
  "ActionType": 24,
  "Title": "demo",
  "Description": "动作说明",
  "Icon": "fa:Solid_LightSwitch",
  "Path": null,
  "DelayMs": 0,
  "Data": "{\"LimitSingleInstance\":true,\"SummaryExpression\":\"$$\",\"SubPrograms\":[],\"Variables\":[{\"Key\":\"text\",\"Type\":0,\"Desc\":\"默认的文本变量\",\"DefaultValue\":\"\",\"SaveState\":false,\"IsInput\":false,\"IsOutput\":false,\"ParamName\":null,\"InputParamInfo\":null,\"OutputParamInfo\":null,\"TableDef\":null,\"CustomType\":null,\"Group\":null}],\"Steps\":[{\"StepRunnerKey\":\"sys:csscript\",\"InputParams\":{\"mode\":{\"VarKey\":null,\"Value\":\"normal_roslyn\"},\"script\":{\"VarKey\":null,\"Value\":\"//.cs  文件类型,便于外部编辑时使用\\r\\n// 引用必要的命名空间\\r\\nusing System.Windows.Forms;\\r\\n\\r\\n// Quicker将会调用的函数。可以根据需要修改返回值类型。\\r\\npublic static void Exec(Quicker.Public.IStepContext context)\\r\\n{\\r\\n    //var oldValue = context.GetVarValue(\\\"varName\\\");  // 读取动作里的变量值\\r\\n    //MessageBox.Show(oldValue as string);\\r\\n    //context.SetVarValue(\\\"varName\\\", \\\"从脚本输出的内容。\\\"); // 向变量里输出值\\r\\n    MessageBox.Show(\\\"Hello World!\\\");\\r\\n}\\r\\n\"},\"reference\":{\"VarKey\":null,\"Value\":\"\"},\"runOnUiThread\":{\"VarKey\":null,\"Value\":\"staLongRun\"},\"stopIfFail\":{\"VarKey\":null,\"Value\":\"0\"}},\"OutputParams\":{\"isSuccess\":null,\"rtn\":null,\"errMessage\":null},\"IfSteps\":null,\"ElseSteps\":null,\"Note\":\"\",\"Disabled\":false,\"Collapsed\":false,\"DelayMs\":0}]}",
  "Data2": null,
  "Data3": null,
  "Children": null,
  "Id": "b10ff244-3c1a-4f9c-940d-3af0b8c10b75",
  "TemplateId": null,
  "TemplateRevision": 0,
  "UseTemplate": false,
  "LastEditTimeUtc": "2025-12-04T08:50:44.5275946+08:00",
  "SharedActionId": null,
  "ShareTimeUtc": null,
  "CreateTimeUtc": "2025-12-04T08:50:12.4246861+08:00",
  "AsSubProgram": false,
  "SkipWhenStopRunningActions": false,
  "SkipCheckUpdate": false,
  "AutoUpdate": false,
  "KeepInfoWhenUpdate": false,
  "MinQuickerVersion": "",
  "ContextMenuData": "",
  "AllowScrollTrigger": false,
  "EnableEvaluateVariable": false,
  "IsTextProcessor": false,
  "IsImageProcessor": false,
  "Association": {
    "MatchProcess": null,
    "IsImageProcessor": false,
    "ReturnImageFromFirstScreenShotStep": true,
    "IsTextProcessor": false,
    "ReturnTextFromGetSelectedTextStep": true,
    "TextMatchExpression": "",
    "TextMinLength": 0,
    "TextMaxLength": 0,
    "IsHtmlProcessor": false,
    "IsFileProcessor": false,
    "FileMinCount": 0,
    "FileMaxCount": 0,
    "AllowedFileExtensions": "",
    "RequireAllFileMatchExt": false,
    "SearchBoxPlaceholder": "",
    "IsWindowProcessor": false,
    "EnableRealtimeSearch": false,
    "BrowserContextMenu": null,
    "UrlPattern": ""
  },
  "DoNotClosePanel": false,
  "UserLimitation": null
}

 

一个典型的 C# 动作 JSON 包含以下关键信息:

  • 元数据:标题(Title)、图标(Icon)、描述(Description)。

  • Data 字段:包含具体的步骤逻辑(Steps)、变量定义(Variables)。

  • StepRunnerKey:指定运行器,对于 C# 动作,核心是 sys:csscript

这意味着,只要我们能控制 AI 生成符合此结构的 JSON,就跳过了所有 GUI 操作。

 

2. 实现步骤

第一步:准备“开发规范”提示词

为了让 AI 生成可运行的代码,我们需要“教会”它 Quicker 的运行环境。这包括:

  • 运行模式:区分普通模式(访问动作变量)和低权限模式(跨进程)。

  • 编译引擎:推荐使用 Roslyn (v2) 以支持较新的 C# 语法。

  • 接口定义:明确 IStepContext 接口,如何通过 GetVarValueSetVarValue 读写变量。

  • 线程模型:何时使用 UI 线程,何时使用 STA 后台线程。

(注:完整的提示词模板附在文末,建议保存为常用 Prompt)

 

第二步:发送指令与生成

将规范发给 Gemini,并附上你的需求。例如:

“基于上述规范,请开发一个简单的弹窗动作,标题为‘你好,这是一个C#动作测试!’,最后返回完整的 JSON。”

Gemini 会根据我们提供的 JSON 模板(Schema),填充进它编写好的 C# 代码。

 
接下来将json保存到本地,然后在quicker空白处导入动作即可。
 
 
下图是gemini编写的动作和点击后的效果
 

第三部分:补充的遗漏细节与建议

在使用 AI 生成 Quicker JSON 时,为了保证稳定性和实用性,建议在文章或实际操作中注意以下细节:

  1. 转义字符处理(关键细节)

    • 在 JSON 的 "script" 字段中,C# 代码是作为字符串存储的。因此,代码中的换行符必须转义为 \r\n,双引号必须转义为 \"

    • 补充说明:Gemini 通常能处理好这点,但如果导入报错,通常是因为转义不彻底。可以在提示词中强调:“请确保 JSON 字符串中的 C# 代码进行了正确的双重转义,特别是换行符和引号。

  2. GUID 的唯一性

    • JSON 中的 "Id" 字段是动作的唯一标识符。如果多次导入同一个 JSON,Quicker 可能会提示覆盖。

    • 建议:在提示词中告诉 AI:“每次生成时,请随机生成一个新的 UUID 赋值给 Id 字段”,这样每次粘贴都是一个新动作,不会意外覆盖旧的。

  3. 安全性提示

    • 虽然是 AI 生成的,但 C# 代码具有系统级权限。

    • 建议:提醒读者在导入动作后,最好按住 Shift + 点击动作进入编辑模式,简单审查一下 Execute C# Code 模块中的代码,确保没有类似于 File.Delete 等危险操作。

  4. 图标自定义

    • 提示词中可以加入让 AI 根据功能自动选择图标的要求。例如 Quicker 支持 FontAwesome 图标(如 fa:Solid_Code)。让 AI 根据动作功能自动填充 Icon 字段,会使生成的动作更美观。

  5. Data 字段结构的特殊性

    • Quicker 的 JSON 结构比较特殊,外层的 Data 字段内部其实是一个 序列化后的字符串(Stringified JSON)。

    • 补充:在你的示例 JSON 中,Data 的值是一个字符串 "{\"LimitSingleInstance\":true...。这点非常重要,如果 AI 直接把 Data 写成了对象而不是字符串,Quicker 是无法识别的。你的提示词示例是正确的,但最好在提示词文字中明确这一点:“注意 Data 字段的值必须是序列化后的 JSON 字符串”。

 
完整提示词:
Role: Quicker 动作开发专家

你是一名精通 Windows 效率工具 Quicker 的高级开发者。你的任务是根据用户的需求,编写符合 Quicker 规范的 C# 脚本,并将其封装为可直接导入的 JSON 动作数据。

Part 1: C# 开发规范

在 Quicker 中运行 C# 代码(普通模式 v2 - Roslyn)需遵循以下规则:
1. 核心接口
代码必须包含一个静态 Exec 方法,签名为:
using Quicker.Public;
// ... 其他引用
public static void Exec(IStepContext context)
{
    // 读取变量
    // var val = context.GetVarValue("变量名");    
    // 逻辑代码...
    // 输出变量
    // context.SetVarValue("变量名", "值");
}

2. 线程模型

UI 操作(WinForm/WPF):通常需要 STA 线程或 UI 线程。
纯逻辑/计算:使用后台线程。
注意:在 JSON 配置中,runOnUiThread 参数决定线程(ui, sta, mta 等)。

3. 引用与命名空间

默认已引用基础 .NET 库。
如需 System.Windows.Forms,需在代码头部 using 并在 JSON 的 reference 字段(如有必要)或通过全限定名调用。

4. 字符串换行约束 (Critical) 由于代码将被压缩在 JSON 字符串中,绝对禁止在 C# 字符串字面量中直接使用 \r、\n 或 \r\n 转义符。
错误写法:string msg = "第一行\r\n第二行"; (会导致编译时出现未终止的字符串错误)
正确写法:必须使用 Environment.NewLine 进行拼接。
示例:string msg = "第一行" + Environment.NewLine + "第二行";
或者插值:string msg = $"第一行{Environment.NewLine}第二行";

Part 2: JSON 数据结构规范 (Critical)

生成的输出必须是纯 JSON 格式,结构如下。
关键约束:
Data 字段:最外层的 "Data" 字段的值,必须是一个 JSON 序列化后的字符串 (Stringified JSON)。不能是对象!
转义处理:
由于 Data 内部是字符串,且包含 C# 代码,代码中的换行符必须转义为 \r\n。
代码中的双引号 " 必须转义为 \"。
如果在 Data 字符串内部还有层级(如 script 字段),可能需要多重转义。
唯一性:"Id" 字段必须是一个随机生成的全新 GUID/UUID,防止覆盖现有动作。
时间戳:LastEditTimeUtc 和 CreateTimeUtc 使用当前 UTC 时间。

标准 JSON 模板:
{
  "Row": 0,
  "Col": 0,
  "ActionType": 24, // 24 代表组合动作
  "Title": "动作标题",
  "Description": "动作描述",
  "Icon": "fa:Solid_Code", // 使用 FontAwesome 图标,如 fa:Solid_Bolt
  "Data": "{\"LimitSingleInstance\":true,\"Steps\":[{\"StepRunnerKey\":\"sys:csscript\",\"InputParams\":{\"mode\":{\"Value\":\"normal_roslyn\"},\"script\":{\"Value\":\"// 这里是经过转义的 C# 代码字符串 \\r\\n public static void Exec(Quicker.Public.IStepContext context) { ... }\"},\"runOnUiThread\":{\"Value\":\"ui\"}}}],\"Variables\":[]}", 
  "Id": "随机UUID",
  // ... 其他标准字段保持默认
}

Part 3: 生成要求

编写功能完整的 C# 代码(使用 Roslyn 模式)。
自动选择合适的 FontAwesome 图标。
严格遵守 JSON 格式,特别是 Data 字段的序列化和 C# 代码的转义。
直接返回 JSON 代码块,不要包含过多解释。
需求描述:

你的任务
请根据以下需求,生成一个完整的 Quicker 动作 JSON。

生成一个显示当前时间弹窗的动作
· {{comment.createTimeStr}}
{{reply.votePoints}}
回复   – {{reply.createTimeStr}}
回复 x
标签
目录
相关操作