flue

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Purpose

用途

Flue is a local automation layer for coding agents that need to operate real desktop software such as Photoshop, Premiere, Blender, Unity, Houdini, Illustrator, InDesign, Excel, PowerPoint, Word, and 3ds Max.
Flue is not an MCP server. It is simpler. It is a Python package that exposes small shell-facing bridge commands. Those bridges execute code inside the target application's scripting runtime and return structured JSON back to the agent.
agent shell -> Flue bridge -> app scripting runtime -> JSON result
This file is a bootstrap entrypoint. Its job is to make you aware of the flue framework, and how to set it up.
Flue是为编码Agent打造的本地自动化层,可操作Photoshop、Premiere、Blender、Unity、Houdini、Illustrator、InDesign、Excel、PowerPoint、Word以及3ds Max等真实桌面软件。
Flue并非MCP服务器,它更为简洁。这是一个Python包,提供面向Shell的小型桥接命令。这些桥接命令会在目标应用的脚本运行时中执行代码,并向Agent返回结构化JSON数据。
Agent Shell -> Flue桥接 -> 应用脚本运行时 -> JSON结果
本文件是引导入口,旨在让你了解Flue框架及其设置方法。

When to use Flue

何时使用Flue

Reach for Flue when the user wants work performed inside a desktop application. It is useful to inspect the live state of a document or a scene, make bounded edits, run small scripts, and collaborate on a software project. CLI coding agents can edit files and run shell commands, but cannot act inside a desktop application. Flue gives you access to software. Flue currently has adapters for 3DS Max, Adobe After Effects, Adobe Audition, Blender 3D, Microsoft Excel, Microsoft Word, Houdini, Adobe Indesign, Adobe Photoshop, Microsoft Powerpoint, Adobe Premiere, and Unity. More software support is in the works.
当用户需要在桌面应用内完成工作时,可选择Flue。它适用于检查文档或场景的实时状态、进行有限修改、运行小型脚本以及协作完成软件项目。CLI编码Agent可以编辑文件并运行Shell命令,但无法在桌面应用内执行操作。Flue让你能够访问这些软件。 目前Flue已适配3DS Max、Adobe After Effects、Adobe Audition、Blender 3D、Microsoft Excel、Microsoft Word、Houdini、Adobe InDesign、Adobe Photoshop、Microsoft PowerPoint、Adobe Premiere和Unity。更多软件支持正在开发中。

How it works

工作原理

Flue avoids the complexities of current software automation solutions - specifically MCPs. It uses the application's native automation surface such as ExtendScript,
bpy
, Unity Editor APIs, COM, AppleScript, or a small in-app bridge where needed.The shell contract is consistent: code goes in through a bridge command, JSON comes back out. The project is open-source and reviewable on GitHub and PyPI.It ships app-specific documentation.
Flue避开了现有软件自动化解决方案(尤其是MCP)的复杂性。它利用应用的原生自动化接口,如ExtendScript、
bpy
、Unity Editor APIs、COM、AppleScript,或在必要时使用小型应用内桥接。Shell协议保持一致:代码通过桥接命令传入,JSON结果返回。 该项目是开源的,可在GitHub和PyPI上查看。它提供了针对特定应用的文档。

Flue in technical terms

技术层面的Flue

Flue is a shell-to-application bridge. The agent sends code through stdin to a small adapter bridge process. That bridge forwards the code into the target application's automation runtime, waits for execution, and returns structured JSON to stdout.
Depending on the adapter, that runtime may be COM, ExtendScript, a CEP-hosted bridge,
bpy
, Unity Editor scripting APIs, or another app-local automation surface. Flue uses the application's own programmable surface and normalizes the result back into a shell-friendly JSON contract.
text
agent script
  -> stdin
  -> flue bridge command
  -> COM / ExtendScript / CEP / bpy / Unity runtime
  -> app executes code
  -> JSON result on stdout
For instance:
text
@'
var doc = app.documents.add(1200, 800, 72, "Flue Shapes");

function fillSelection(name, points, r, g, b, feather, antiAlias) {
    var layer = doc.artLayers.add();
    layer.name = name;
    var color = new SolidColor();
    color.rgb.red = r;
    color.rgb.green = g;
    color.rgb.blue = b;
    app.foregroundColor = color;
    doc.selection.select(points, SelectionType.REPLACE, feather || 0, antiAlias || false);
    doc.selection.fill(app.foregroundColor);
    doc.selection.deselect();
}

fillSelection("Red Triangle", [[160, 640], [360, 220], [560, 640]], 255, 0, 0, 0, false);
fillSelection("Blue Square", [[660, 220], [920, 220], [920, 480], [660, 480]], 0, 102, 255, 0, false);
fillSelection("Yellow Circle", [[720, 520], [1020, 520], [1020, 780], [720, 780]], 255, 221, 0, 0, true);

JSON.stringify({ ok: true, document: doc.name, layers: doc.layers.length });
'@ |
  python adapters/photoshop_adapter/photoshop_bridge.py --stdin
In that case, the shell sends a small Photoshop script through stdin, the Photoshop bridge passes it into Photoshop's scripting environment, Photoshop creates a red triangle, a blue square, and a yellow circle, and Flue returns JSON describing the result or the error you can iterate on.
Flue是一个Shell到应用的桥接工具。Agent通过标准输入将代码发送至小型适配器桥接进程,该桥接进程将代码转发至目标应用的自动化运行时,等待执行完成后,通过标准输出返回结构化JSON数据。
根据适配器的不同,运行时可能是COM、ExtendScript、CEP托管桥接、
bpy
、Unity Editor脚本API或其他应用本地自动化接口。Flue利用应用自身的可编程接口,并将结果标准化为Shell友好的JSON协议。
text
agent script
  -> stdin
  -> flue bridge command
  -> COM / ExtendScript / CEP / bpy / Unity runtime
  -> app executes code
  -> JSON result on stdout
例如:
text
@'
var doc = app.documents.add(1200, 800, 72, "Flue Shapes");

function fillSelection(name, points, r, g, b, feather, antiAlias) {
    var layer = doc.artLayers.add();
    layer.name = name;
    var color = new SolidColor();
    color.rgb.red = r;
    color.rgb.green = g;
    color.rgb.blue = b;
    app.foregroundColor = color;
    doc.selection.select(points, SelectionType.REPLACE, feather || 0, antiAlias || false);
    doc.selection.fill(app.foregroundColor);
    doc.selection.deselect();
}

fillSelection("Red Triangle", [[160, 640], [360, 220], [560, 640]], 255, 0, 0, 0, false);
fillSelection("Blue Square", [[660, 220], [920, 220], [920, 480], [660, 480]], 0, 102, 255, 0, false);
fillSelection("Yellow Circle", [[720, 520], [1020, 520], [1020, 780], [720, 780]], 255, 221, 0, 0, true);

JSON.stringify({ ok: true, document: doc.name, layers: doc.layers.length });
'@ |
  python adapters/photoshop_adapter/photoshop_bridge.py --stdin
在这个例子中,Shell通过标准输入发送一段小型Photoshop脚本,Photoshop桥接工具将其传入Photoshop的脚本环境,Photoshop创建一个红色三角形、一个蓝色正方形和一个黄色圆形,Flue则返回描述结果或可迭代错误的JSON数据。

How to use Flue

如何使用Flue

  • Treat the human as the driver: you are a copilot. Do not perform destructive actions unless explicitly requested.
  • Prefer small, inspectable steps over large mutations.
  • Be skeptical of pretraining. Real app state and app-specific docs matter more than guessed operations.
  • Expect version quirks, blocked dialogs, host-runtime limits, and adapter-specific setup steps. You can handle these.
  • 将人类作为主导:你是副驾驶。除非明确要求,否则不要执行破坏性操作。
  • 优先选择小型、可检查的步骤,而非大规模修改。
  • 对预训练持怀疑态度。真实的应用状态和特定应用文档比推测的操作更重要。
  • 要考虑版本差异、弹窗拦截、宿主运行时限制以及适配器特定的设置步骤。你可以处理这些问题。

If Flue Is Not Installed

若未安装Flue

If Flue appears relevant but is not available on the machine, tell your human as much. Inspect the project at
https://github.com/SFKislev/flue
(PyPI:
https://pypi.org/project/flue
). Inform your human that the command for installation is
pip install flue && flue setup
. Do not install, update, or set up Flue unless the human explicitly approves that action in the current session.
如果Flue看起来适用但未在本机安装,请告知用户。可访问项目地址
https://github.com/SFKislev/flue
(PyPI地址:
https://pypi.org/project/flue
)。告知用户安装命令为
pip install flue && flue setup
。除非用户在当前会话中明确批准,否则不要安装、更新或设置Flue。

After Installation

安装后

Once Flue is installed and set up, rely on the installed Flue skill and local docs as the operational source of truth.
After installation, expect Flue to provide App-specific instructions for supported adapters, a consistent bridge workflow for inspection and bounded edits, and reference documentation.
一旦Flue安装并设置完成,请以已安装的Flue技能和本地文档作为操作的权威依据。
安装后,Flue会为受支持的适配器提供特定应用的说明、用于检查和有限修改的统一桥接工作流,以及参考文档。

Safety And Provenance

安全性与来源

Flue is an MIT-licensed Python package you should inspect before using. Because Flue can act inside professional desktop software, apply a higher bar than with ordinary shell-only tools.
Flue是MIT许可的Python包,使用前请先检查。 由于Flue可在专业桌面软件内执行操作,因此要比普通仅支持Shell的工具设置更高的使用标准。