🚀 安装使用

3 分钟上手快脚本 —— 从下载安装到运行你的第一个脚本。

🆕 什么是快脚本?快脚本让你用 Python 写脚本,客户端自动生成图形界面。你只需专注业务逻辑,参数表单、依赖安装、运行环境全部自动搞定。

下载安装

1

下载安装包

首页 下载 Windows 安装包(.msi),双击安装即可。

2

启动快脚本

安装后双击桌面图标启动。首次启动会自动配置 Python 环境。

3

添加脚本

从脚本广场安装,或将 .zip 脚本包拖入窗口导入。

系统要求最低配置
操作系统Windows 10 (64位) 或更高
Python无需预装(自动管理)
内存≥ 2 GB
网络首次安装依赖时需要联网

导入脚本

1

从脚本广场安装

在客户端内浏览脚本广场,一键安装并运行。

2

拖拽导入

.zip 脚本包直接拖入快脚本窗口,自动识别和导入。

3

AI 生成

使用快脚本内置 AI 对话功能,用自然语言描述需求,自动生成脚本。

运行脚本

  1. 在侧边栏选择要运行的脚本
  2. 填写参数表单(由快格式自动生成 GUI)
  3. 点击「运行脚本」按钮
  4. 在下方控制台查看运行日志和结果
💡 提示:脚本声明的第三方依赖会在首次运行时自动安装,无需手动使用 pip。

🏗️ 架构说明

了解快脚本的脚本类型、文件结构和运行时环境。

脚本类型

类型文件组成适用场景
纯后端脚本main.py数据处理、文件操作、批量任务
HTTP 服务脚本main.py + index.html需要 Web 界面的交互应用
脚本目录结构
# 纯后端脚本
my-script/
├── main.py          # 主脚本(必须)
├── readme.md        # 使用说明(推荐)
└── data.csv         # 附带的数据文件(可选)

# HTTP 服务脚本
my-web-app/
├── main.py          # 后端逻辑(必须)
├── index.html       # 前端页面(必须)
└── readme.md        # 使用说明(推荐)

运行时环境

快脚本为每个脚本提供隔离的运行时环境:

环境变量含义用途
KUAI_SCRIPT_DIR脚本目录读取脚本附带的资源文件
KUAI_RUN_DIR运行目录写入临时文件、日志、输出结果

文件读写规范

文件读写示例
import os, json

# ✅ 读取脚本附带的文件(CWD = 脚本目录)
with open('data.csv', encoding='utf-8') as f:
    data = f.read()

# ✅ 将输出写到运行目录
run_dir = os.environ['KUAI_RUN_DIR']
with open(os.path.join(run_dir, 'result.json'), 'w', encoding='utf-8') as f:
    json.dump(result, f, ensure_ascii=False)

# ❌ 不要假设系统编码(Windows 可能是 GBK)
# ❌ 不要使用 Flask/FastAPI(用内置 SDK)
# ❌ 不要将 HTML 内嵌到 Python 字符串中

💡 快格式规范

快格式(kuai format)是快脚本的核心设计 —— 通过 Python 类定义,让脚本「自我描述」,客户端自动生成参数配置界面。

脚本结构总览

一个标准快脚本包含以下部分:

  1. 导入 SDKfrom kuai import *
  2. Script 子类 — 定义脚本名称、图标、描述、依赖等元信息
  3. Params 子类 — 使用控件函数定义参数和表单控件
  4. main 函数 — 业务逻辑入口
  5. 入口点kuai.run(main)

脚本元信息

通过继承 Script 类声明脚本信息:

main.py — 脚本定义
from kuai import *


class MyScript(Script):
    name = "图片批量压缩"
    icon = "🖼️"
    description = "批量压缩指定目录下的所有图片"
    packages = ["Pillow", "requests"]
    os = ["Windows", "macOS"]
    python_version = ["3.11.0"]
    run_as_admin = True
    input_description = "包含图片的目录"
    output_description = "压缩后的图片"
字段必须说明
name脚本名称
description功能描述
icon单个 emoji(如 🔐📊🌐)
packages按需第三方依赖列表(pip 包名)
os推荐支持的操作系统("Windows""macOS""Linux"
python_version推荐兼容的 Python 版本列表(如 "3.11.0"
run_as_admin按需是否需要管理员权限运行(默认 False
input_description推荐输入说明
output_description推荐输出说明

Params 参数定义

继承 Params 类,使用控件函数定义每个参数。客户端自动生成对应的图形界面控件:

main.py — Params 类定义
class MyParams(Params):
    input_dir = SingleDirectoryPicker(
        label="输入目录",
        description="选择包含图片的文件夹。",
    )

    quality = Slider(
        label="压缩质量",
        default=80,
        min=1,
        max=100,
        unit="%",
        description="图片压缩质量,数值越高质量越好。",
    )

    output_format = Radio(
        label="输出格式",
        default="JPEG",
        options=["JPEG", "PNG", "WebP"],
        description="选择输出格式。",
    )
💡 提示:每个参数就是一个控件函数调用,参数名对应 Python 中的属性名。你也可以让 AI 帮你生成这些控件。

条件联动 (visible_if)

参数可以根据其他参数的值动态显示/隐藏。使用 J() 函数构建条件:

visible_if 用法
class MyParams(Params):
    mode = Radio(
        label="模式",
        options=["压缩", "裁剪"],
    )

    # 仅当 mode == "压缩" 时显示
    quality = Slider(
        label="压缩质量",
        default=80, min=1, max=100,
        visible_if=J("mode") == "压缩",
    )

    # 支持 AND / OR 组合
    advanced = ToggleSwitch(label="高级选项")
    threads = IntInput(
        label="线程数",
        default=4,
        visible_if=(J("mode") == "压缩") & (J("advanced") == True),
    )
操作语法说明
等于J("field") == "value"字段等于某值时显示
不等于J("field") != "value"字段不等于某值时显示
AND条件A & 条件B所有条件都满足时显示
OR条件A | 条件B任一条件满足时显示

主函数与入口

main() 中编写业务逻辑,通过全局 params 实例访问用户填写的参数:

main.py — 入口函数
params = MyParams()


def main():
    print(f"输入目录: {params.input_dir}")
    print(f"压缩质量: {params.quality}")
    print(f"输出格式: {params.output_format}")
    # 你的业务逻辑...
    print("✅ 处理完成!")


if __name__ == "__main__":
    kuai.run(main)

🎛️ 控件类型完整参考

快格式支持 16 种控件类型,覆盖选择、输入、文件、日期等常见交互。每个参数使用对应的控件函数声明。

控件函数名值类型额外属性
单选Radiostroptions
下拉选Dropdownstroptions
多选Checkbox[str]options, min_select, max_select
开关ToggleSwitchbool
整数IntInputintmin, max, unit
浮点FloatInputfloatmin, max, precision, unit
滑块Sliderint/floatmin, max, precision, divisions, unit
单行文本SingleLineTextInputstrmax_length, min_length, validation, validation_message
多行文本MultiLineTextInputstrmax_length, min_length
密码PasswordInputstrvalidation, validation_message
邮箱EmailInputstrvalidation, validation_message
单文件SingleFilePickerstrfile_types
多文件MultiFilePicker[str]file_types, min_files, max_files
单目录SingleDirectoryPickerstr
多目录MultiDirectoryPicker[str]min_folders, max_folders
日期DatePickerstrformat, min, max
时间TimePickerstrformat, min, max
日期时间DateTimePickerstrformat, min, max
颜色ColorPickerstr

选择类控件

Radio / Dropdown / Checkbox
    output_format = Radio(
        label="输出格式",
        default="JPEG",
        options=["JPEG", "PNG", "WebP"],
        description="选择输出图片格式。",
    )

    language = Dropdown(
        label="语言",
        default="中文",
        options=["中文", "English", "日本語"],
    )

    features = Checkbox(
        label="功能选择",
        default=["压缩"],
        options=["压缩", "裁剪", "水印", "格式转换"],
        min_select=1,
        max_select=3,
    )

开关控件

ToggleSwitch
    overwrite = ToggleSwitch(
        label="覆盖原文件",
        default=False,
        description="是否覆盖原文件,关闭则输出到新目录。",
    )

数值类控件

IntInput / FloatInput / Slider
    threads = IntInput(
        label="线程数",
        default=4,
        min=1,
        max=16,
        unit="个",
        description="并发线程数量。",
    )

    threshold = FloatInput(
        label="匹配阈值",
        default=0.85,
        min=0.0,
        max=1.0,
        precision=2,
    )

    quality = Slider(
        label="压缩质量",
        default=80,
        min=1,
        max=100,
        unit="%",
        precision=0,
        description="图片压缩质量,数值越高质量越好。",
    )

文本类控件

SingleLineTextInput / MultiLineTextInput / PasswordInput / EmailInput
    keyword = SingleLineTextInput(
        label="搜索关键词",
        default="",
        max_length=100,
        description="输入搜索关键词。",
    )

    prompt = MultiLineTextInput(
        label="提示内容",
        default="",
        max_length=2000,
    )

    api_key = PasswordInput(
        label="API 密钥",
        validation="^[A-Za-z0-9]{32,}$",
        validation_message="密钥至少32个字符",
    )

    email = EmailInput(
        label="邮箱地址",
        description="用于接收通知。",
    )

文件/目录控件

文件和目录选择器
    source = SingleFilePicker(
        label="源文件",
        file_types=["jpg", "png", "webp"],
        description="选择要处理的图片。",
    )

    excel_files = MultiFilePicker(
        label="Excel 文件",
        file_types=["xlsx", "csv"],
        min_files=1,
        max_files=10,
    )

    output_dir = SingleDirectoryPicker(
        label="输出目录",
        description="选择输出文件保存位置。",
    )

日期/时间/颜色控件

DatePicker / TimePicker / ColorPicker
    start_date = DatePicker(
        label="开始日期",
        default="2024-01-01",
        format="yyyy-MM-dd",
    )

    schedule_time = TimePicker(
        label="提醒时间",
        default="09:00",
        format="HH:mm",
    )

    watermark_color = ColorPicker(
        label="水印颜色",
        default="#FF0000",
    )

🌐 HTTP 服务脚本

当脚本需要提供 Web 界面时,使用内置 SDK 的 HTTP 服务模式。

🛡️ 重要提醒:HTTP 服务仅限本地使用,请勿将端口对外网开放。快脚本的 HTTP 服务不具备生产级安全防护,仅供个人本地使用。

完整模板

main.py — HTTP 服务脚本
from kuai import *


class WebApp(Script):
    name = "Web 应用示例"
    icon = "🌐"
    description = "带网页界面的示例脚本"


class MyParams(HttpParams):
    # HttpParams 自动包含 server_port 和 auto_open_browser
    # 只需定义你的自定义参数
    theme = Radio(
        label="主题",
        default="深色",
        options=["深色", "浅色"],
    )


params = MyParams()


class Handler(kuai.KuaiHandler):
    def do_GET(self):
        if self.path == '/':
            self.serve_index()
        elif self.path == '/api/data':
            self.json_response({"message": "Hello"})
        else:
            self.send_error(404)

    def do_POST(self):
        if self.path == '/api/submit':
            body = self.read_json()
            self.json_response({"received": body})
        else:
            self.send_error(404)


if __name__ == "__main__":
    kuai.run(lambda: kuai.serve(params, Handler))

前端页面

index.html
<kuai-moniter/>   <!-- 必须:放在最前面 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Web 应用示例</title>
</head>
<body>
    <h1>Hello KuaiScript</h1>
    <div id="result"></div>
    <script>
        fetch('/api/data')
            .then(r => r.json())
            .then(data => {
                document.getElementById('result')
                    .textContent = data.message;
            });
    </script>
</body>
</html>

HttpParams 内置字段

继承 HttpParams 会自动包含以下两个字段,无需手动定义:

字段名控件类型默认值说明
server_portIntInput(12000~65535)12345HTTP 服务端口
auto_open_browserToggleSwitchTrue启动后自动打开浏览器

HTTP 服务规范

  1. 必须使用 SDKkuai.KuaiHandler + kuai.serve(),禁止 Flask/FastAPI
  2. 继承 HttpParams — 端口和浏览器参数自动包含
  3. index.html 标记 — 最前面添加 <kuai-moniter/>
  4. HTML 独立文件 — 前端代码放 index.html,禁止内嵌到 Python 字符串中

📦 SDK 参考

from kuai import * 提供脚本定义基类和所有控件函数。import kuai 提供运行时 API。

基类

说明
Script脚本信息基类,定义 name、icon、description、packages 等
Params纯后端脚本参数基类
HttpParamsHTTP 服务参数基类,自动包含 server_port、auto_open_browser

运行时 API

方法说明适用类型
kuai.run(main)加载参数并执行 main 函数(统一入口)所有脚本
kuai.serve(params, Handler)启动 HTTP 服务HTTP 服务脚本
kuai.KuaiHandlerHTTP 请求处理基类HTTP 服务脚本

KuaiHandler 方法

方法说明
self.serve_index()返回 KUAI_SCRIPT_DIR/index.html 文件
self.json_response(data)返回 JSON 响应(自动设置 Content-Type)
self.read_json()读取 POST 请求体的 JSON 数据

条件联动函数

函数说明
J("field_name")引用其他参数的值,配合 ==!=&| 使用
💡 编写须知:
  • 文件读写时记得指定 encoding='utf-8',避免中文乱码
  • HTTP 服务必须使用内置 SDK,不需要安装其他 Web 框架
  • 不确定怎么写?让 AI 助手帮你生成,它已经熟悉快格式规范

❓ 常见问题

快脚本免费吗?

是的,快脚本完全免费。不需要注册,不需要付费,所有功能均可免费使用。

需要懂编程才能用吗?

不需要。你可以直接从脚本广场安装别人写好的脚本来使用。如果你想自己写脚本,需要基础的 Python 知识。也可以用快脚本内置 AI 来生成脚本。

可以用 AI 来帮我写快脚本吗?

最简单的方式是使用快脚本内置的 AI 对话功能,它已预置快格式规范。也可以将 格式规范 作为上下文提供给任何 AI 助手。

脚本运行出错怎么办?

查看下方控制台的错误信息。常见问题包括:依赖未安装(点击「安装依赖」按钮)、文件路径不存在、编码错误(确保使用 UTF-8)。

脚本的数据和文件保存在哪里?

脚本运行产生的日志和临时文件保存在运行目录中。你可以在脚本详情页查看运行记录和输出文件。

快脚本可以用来对外提供服务吗?

不建议。快脚本专为个人本地使用而设计,用于运行你自己的自动化工具。请勿将脚本或 HTTP 服务部署到公网。请在安全可信的环境中使用,只运行你了解或信任来源的脚本。