ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CLI-Anything Krita Harness 实战:用命令行与 Agent 驱动 Krita 数字绘画全流程

CLI-Anything Krita Harness 实战:用命令行与 Agent 驱动 Krita 数字绘画全流程 CLI-Anything Krita Harness 实战用命令行与 Agent 驱动 Krita 数字绘画全流程【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything本文是 Krita CLI 技能skill的完整技术指南讲解如何在无 GUI 环境下通过cli-anything-krita完成工程创建、图层管理、滤镜应用、画布调整与多格式导出并解锁面向 AI Agent 的 JSON 机器可读输出模式。读完本文你既能手工敲出一条条可复现的绘画流水线命令也能理解其工程 JSON → .kra 打包 → 真实 Krita 引擎渲染的底层实现原理从而放心地把 Krita 绘画接入脚本与 Agent 工作流。概览让 Krita 成为可编程软件Krita 是 KDE 出品的专业开源数字绘画软件支持栅格与矢量图形、动画以及 90 余种混合模式与完整 ICC 色彩管理。在开源仓库 CLI-Anything 中Krita 的 agent-harnesskrita/agent-harness为它包了一层纯命令行的操作皮肤把所有关键操作收敛为project / layer / filter / canvas / export / session / status等命令组。一个重要设计前提是这个 CLI 是通向 Krita 的接口而不是替代品。所有像素级渲染都由 Krita 自己的引擎完成——CLI 只负责把意图翻译成结构化的工程状态与合法的.kra文件渲染管线说明见 KRITA.md 的 Rendering Approach 一节。前置条件与安装技能文档SKILL.md声明了两个前置条件Krita已安装到系统Windows / macOS / Linux 均可Python 3.10harness 运行环境。安装命令如下在仓库根目录执行cd krita/agent-harness pip install -e .安装 Krita 的常见途径Windows 从官网下载安装包macOS 用brew install --cask kritaLinux 可用sudo apt install krita或flatpak install flathub org.kde.krita。CLI 运行时会自动探测 Krita 可执行文件。查看 krita_backend.py 的find_krita()可知其查找顺序优先读取KRITA_PATH环境变量显式指定路径→ 其次查找系统PATH中的krita/krita.exe→ 再次是 Windows 常见安装目录通配符匹配→ 最后是 macOS 应用包路径。全部找不到时会抛出带安装指引的RuntimeErrorstatus命令会如实报告krita_installed: false。命令体系总览入口可执行文件为cli-anything-krita全局携带三个影响所有子命令的选项实现在 krita_cli.py全局选项别名作用--json—机器可读输出所有结果以 JSON 打印--project-p指定工程 JSON 路径单次命令执行结束后会自动保存--dry-run—只预览、不把变更落盘命令组与子命令一览命令组子命令说明projectnewopensaveinfo工程生命周期管理layeraddremovelistset图层堆栈管理filterapplylist滤镜与效果canvasresizeinfo画布属性exportrenderanimationpresetsformats导出与渲染sessionundoredohistory撤销 / 重做会话状态status—当前状态总览若不带任何子命令直接运行cli-anything-krita会进入交互式 REPLrepl子命令隐藏项可配合--project project.json直接加载工程。工程管理以 JSON 为中枢的项目生命周期Krita CLI 不像 GUI 那样直接操作.kra而是先维护一份工程 JSONproject state记录画布、图层与滤镜等文档状态。核心数据结构由 project.py 的create_project()生成字段包括name / version / created / modified / canvas / layers / metadata。新建工程cli-anything-krita project new -n My Art -w 2048 -h 2048 -o project.jsonproject_new 支持的参数参数默认值说明-n, --nameUntitled工程名-w, --width1920画布宽度像素-h, --height1080画布高度像素--colorspaceRGBA颜色空间默认 RGBA底层 project.py 的校验集合为RGBA/RGB/GRAYA/GRAY/CMYKA/CMYK--depthU8位深U8/U16/F16/F32--resolution300DPI 分辨率-o, --output内存态输出工程 JSON 的路径校验规则也在这里生效画布宽高与分辨率必须为正整数颜色空间与位深必须命中白名单否则抛出ValueError。新建工程会自动带一个名为Background、不透明度 255、混合模式 normal 的默认 paintlayer。不带-o时工程仅驻留内存可通过后续project save落盘。打开、保存与查看信息cli-anything-krita project open project.json cli-anything-krita --project project.json project save cli-anything-krita --project project.json project infoproject open读取工程 JSON 并做基本完整性检查缺少version或canvas字段会报非法文件project save在未传-o时写入当前已绑定路径project info输出画布尺寸、颜色空间、位深、图层数与每层摘要。save_project()通过locked_save_json原子落盘见 io.py避免并发写坏文件。值得注意的自动化细节当使用--project执行单次命令one-shot时命令结束会自动把变更保存回工程文件见 krita_cli.py 的_auto_save因此每步修改后不必手动save若想先演练后落盘加--dry-run即可。图层管理从草图到着色的堆栈编排图层命令覆盖增、删、查、改四类操作cli-anything-krita -p project.json layer add Sketch -t paintlayer cli-anything-krita -p project.json layer add Colors --opacity 200 cli-anything-krita -p project.json layer add Group -t grouplayer cli-anything-krita -p project.json layer remove Sketch cli-anything-krita -p project.json layer list cli-anything-krita -p project.json layer set Colors opacity 180 cli-anything-krita -p project.json layer set Colors visible false cli-anything-krita -p project.json layer set Colors blending_mode multiplylayer add支持的 7 种图层类型与 CLI 的--type取值一致paintlayer、grouplayer、vectorlayer、filterlayer、filllayer、clonelayer、filelayer其他参数--opacity默认255取值范围 0–255越界会抛ValueError--blending默认normal如 multiply、overlay 等 Krita 混合模式名--hidden以隐藏状态创建图层。图层名在同一堆栈内必须唯一project.py。layer list与layer setlayer list打印形如[索引] 名称 (类型) opacity值 visible/hidden的列表方便核对堆栈顺序。layer set使用三参数形式layer set 图层名 属性 值值会自动做类型推断true/yes→Truefalse/no→False纯数字 →int否则保留字符串。可修改属性包括opacity、visible、blending_mode、locked、name、type其中opacity与type在赋值时会再次校验project.py。滤镜应用声明式的效果描述cli-anything-krita -p project.json filter apply blur -l Background cli-anything-krita -p project.json filter apply sharpen cli-anything-krita -p project.json filter apply levels -c {shadows: 10, highlights: 240} cli-anything-krita filter listfilter apply的参数filter_name为必选滤镜名-l, --layer指定目标图层缺省时作用于当前堆栈最上层实现上取layers[-1]见 krita_cli.py-c, --config以 JSON 字符串传入滤镜专属参数如上面的 levels 示例传入{shadows: 10, highlights: 240}。滤镜会被追加到目标图层的filters列表随工程状态持久化由渲染引擎在导出时统一求值。技能文档列出的可用滤镜集合为blur, sharpen, desaturate, levels, curves, brightness-contrast, hue-saturation, color-balance, unsharp-mask, posterize, threshold。若执行filter list实际返回的完整清单还包含更多变体定义于 project.py 的VALID_FILTERSblur、gaussian-blur、motion-blur、lens-blur、sharpen、unsharp-mask、brightness-contrast、levels、curves、hue-saturation、color-balance、desaturate、invert、posterize、threshold、auto-contrast、normalize、emboss、edge-detection、oil-paint、pixelize、noise-reduction、halftone传入清单之外的滤镜名会立即抛ValueErrorproject.py起到纠错与可发现性作用。画布操作调整画布与分辨率cli-anything-krita -p project.json canvas resize -w 4096 -h 4096 cli-anything-krita -p project.json canvas resize --resolution 600 cli-anything-krita -p project.json canvas infocanvas resize的-w/-h/--resolution三个参数均为可选只更新显式给出的维度其余保持不变见set_canvas()实现 project.py因此上面第二条命令仅把 DPI 改为 600。负值或零会被拒绝。canvas info则输出当前画布的宽、高、颜色空间、位深与分辨率。导出与渲染把工程交给真正的 Krita 引擎cli-anything-krita -p project.json export render output.png -p png --overwrite cli-anything-krita -p project.json export render output.jpg -p jpeg cli-anything-krita -p project.json export render output.psd -p psd cli-anything-krita -p project.json export animation ./frames/ -p png cli-anything-krita export presets cli-anything-krita export formats导出预设技能文档列出的预设png, png-web, jpeg, jpeg-web, jpeg-low, tiff, tiff-lzw, psd, pdf, svg, webp, gif, bmp。各预设的底层编码参数定义在 export.py 的EXPORT_PRESETS中值得展开的细节预设输出扩展名内置编码参数pngpng全 alpha压缩级别 6png-webpng面向网页优化压缩级别 9尽量索引色jpegjpg质量 90jpeg-webjpg质量 75jpeg-lowjpg质量 50tifftiff不压缩tiff-lzwtiffLZW 压缩psdpsdPhotoshop PSDpdfpdfPDF 文档svgsvg矢量导出webpwebp质量 85gifgifGIF动画场景bmpbmp不压缩位图这些选项最终会通过--export-option keyvalue逐个传给 Krita 进程见 krita_backend.py。export presets/export formats可随时查询可用项。渲染管线Project JSON → .kra → Krita --exportexport render走的是一条值得单独理解的双段管线其流程与 KRITA.md 描述的 Rendering Approach 一致打包 .krabuild_kra_from_project()export.py在临时目录把工程状态拼装成合法 Krita 归档——mimetypeapplication/x-kra必须为首项且不压缩、maindoc.xml含图层堆栈、尺寸、颜色空间、documentinfo.xmlDublin Core 元数据以及每个 paintlayer 对应的空白 RGBA PNG 图层文件调用真实引擎export_file()定位系统 Krita 可执行文件执行krita --export --export-filename 输出 --export-option keyvalue 临时.kra完成真正渲染krita_backend.py。这样 Krita 的混合模式、滤镜与色彩管理均由官方引擎求值保证输出保真。安全语义上目标文件已存在且未加--overwrite时会抛FileExistsError拒绝覆盖export.py导出成功返回output_path / file_size / format / method等可验证信息。export animation则改用--export-sequence导出帧序列支持--basename前缀默认frame产出frame_0001.png这类命名与帧范围控制。会话管理命令级 undo / redocli-anything-krita session undo cli-anything-krita session redo cli-anything-krita session history会话层由 session.py 的Session类实现每次变更操作建工程、加/删图层、改属性、加滤镜、改画布都会在内存中snapshot一份深拷贝的工程状态并附带时间戳与操作说明标签。执行 undo/redo 时通过移动历史指针回放或丢弃状态若撤销后产生新操作指针之后的所有 redo 分支会被截断标准线性历史语义。session history会带标记当前指针位置。undo/redo 触发的状态变化同样会自动保存回--project文件让多步流水线的回滚在命令行上也可安全执行。status则给出一次性的全局快照工程是否加载、路径、历史深度、能否 undo/redo、当前画布与图层数以及 Krita 版本号与是否探测到krita_cli.py。Agent 使用JSON 机器可读模式技能文档明确说明所有命令都支持--json输出机器可读结果这是面向 LLM / Agent 集成设计的核心接口cli-anything-krita --json -p project.json project info cli-anything-krita --json -p project.json layer list cli-anything-krita --json status该模式由_output()与统一错误装饰器handle_error保障krita_cli.py正常结果整体json.dumps缩进输出各类失败FileNotFoundError、FileExistsError、RuntimeError及其他异常也会被捕获并序列化为{error: ..., type: 异常类型}方便 Agent 用结构化的方式判断成功与失败而不是解析人读文本。层列表、滤镜清单、导出预设与格式在 JSON 模式下均返回数组/对象结构。对 Agent 而言推荐的工作姿势是project new落盘工程 JSON → 每次操作都带-p触发自动保存→ 状态查询加--json→ 最终export render --overwrite产出成品。技能文档还提供一个完整示例Illustration 工程逐条命令如下# 1. Create project cli-anything-krita --json project new -n Illustration -w 3000 -h 4000 -o art.json # 2. Set up layer stack cli-anything-krita --json -p art.json layer add Background -t paintlayer cli-anything-krita --json -p art.json layer add Sketch -t paintlayer --opacity 180 cli-anything-krita --json -p art.json layer add Inking -t paintlayer cli-anything-krita --json -p art.json layer add Colors -t paintlayer cli-anything-krita --json -p art.json layer add Effects -t paintlayer --opacity 128 # 3. Apply effects cli-anything-krita --json -p art.json filter apply blur -l Background # 4. Export cli-anything-krita --json -p art.json export render final.png -p png --overwrite这条流水线演示了典型漫画插画结构Background / Sketch / Inking / Colors / Effects 五层通过不透明度180、128区分草稿与特效层局部对 Background 做模糊最后以 PNG 导出。如需保存中间检查点可把最终-p art.json路径换成多个版本文件从而实现分支式绘画实验。进阶REPL 交互与会话可扩展性除了一次性命令无参数运行会进入交互式 REPL依赖prompt-toolkit缺失时会提示安装命令在提示符中可以直接输入project new ...、layer add ...等命令并实时看到执行结果支持help与quit/exit命令速查表见 krita_cli.py。它本质是把命令行参数重新分发给 Click 子命令因此 REPL 与 one-shot 行为一致。如果需要更细粒度的控制Session.save()/load()支持把完整快照历史持久化到磁盘session.py可以按需扩展为断点续传式的长会话。此外仓库自带的测试tests/test_core.py、tests/test_full_e2e.py可作为命令行为与端到端导出链路的可运行参考。总结cli-anything-krita把 Krita 的绘画工作流压缩为一套确定性命令project负责工程生命周期、layer编排图层、filter声明效果、canvas调整画布、export借助真实 Krita 引擎完成高质量渲染、session提供可回滚的历史。配合全局--json、--project自动保存与--dry-run它既能支撑脚本化的批量图像处理也能成为 AI Agent 操作 Krita 的稳定工具面。想要深入底层建议继续阅读 krita_cli.py命令注册、project.py状态与校验、export.py.kra 构建与导出以及 krita_backend.pyKrita 进程调用四个文件即可完全掌握其设计全貌。【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表