Skip to content

Commit 877ea1c

Browse files
authored
ai-node-canvas: an infinite-canvas node graph for MiniMax model runs (#71)
* ai-node-canvas 0.56.0: add an infinite-canvas node graph for MiniMax model runs * ai-node-canvas 0.57.0: take a finished video's link from its own task, and say so when the file is missing * ai-node-canvas 0.59.0: a card holding a video carries no toolbar, and no empty strip below it * ai-node-canvas 0.60.0: a saved file cannot walk out of the folder, a download cannot reach this machine, and the MCP server says what it really does * ai-node-canvas 0.61.0: draw the icon of the board — three cards and the lines that carry what each one made to the next * ai-node-canvas 0.62.0: the icon is now the little artist — a pink octopus with a beret, a brush and a palette, standing on the board * ai-node-canvas 0.63.0: give the icon a board for each theme — a light one and a dark one * ai-node-canvas 0.64.0: the icon is the little artist painting, in the dark and the light theme both drawn by the model * ai-node-canvas 0.65.0: ship a Skill that tells the Agent how to use the canvas, and let it name the prompt template * ai-node-canvas 0.66.0: the Skill in Chinese, and four more traps the Agent would otherwise walk into * ai-node-canvas 0.67.0: a template is the skeleton of a chain — six ready-made workflows the user and the Agent can put on the canvas * ai-node-canvas 0.68.0: the page asks in itself - a new canvas, a new name and a deletion are settled inside the board * ai-node-canvas 0.69.0: a template travels as a file - the toolbar shares templates, and the runtime writes the file * ai-node-canvas 0.70.0: the canvas is a workbench and it saves itself - no save button, the toolbar carries templates only * ai-node-canvas 0.71.0: a template travels as a file - thirteen ready-made chains, a place to save it, and a canvas of its own when it comes back * ai-node-canvas 0.72.0: a template is listed in one menu, not two - the ready-made chains stay in the template panel, the import panel is about files * ai-node-canvas 0.73.0: one menu holds the templates - the template button is gone, the import panel carries the ready-made chains, your own and the files * ai-node-canvas 0.74.0: a template of the user can be managed - it gets a name of your own, and a button that takes it away * ai-node-canvas 0.75.0: a template file can be kept - the file on the machine is not yours yet, but one click puts it in your own list * ai-node-canvas 0.76.0: one menu for the templates - the toolbar carries a single button, and it opens two ways in and two ways out * ai-node-canvas 0.77.0: the reference set takes a picture, a clip and a sound - H3's one collection request, as the provider has it * ai-node-canvas 0.78.0: a run must never look stuck - the poll cannot hang, a redraw that was held off is not lost, and a client file is registered in one place * ai-node-canvas 0.79.0: a chain that waits holds on to the run it was given A chain that runs one step and then stops was not a slow model. The page forgets which run belongs to a node as soon as that run is over, so the waiter that looked the run up again never saw it finish, and the chain stood still until its own timeout. The waiter now holds the id of the run it was given, and asks for that run by its id. The runtime refuses a second run on a node that is already running. That is not a failure but the node is busy, and the card keeps its own state instead of being marked as failed. The rules live in one place (run-watch.mjs) and are tested as plain rules, not as text in the page. * ai-node-canvas 0.80.0: a clip the provider cannot read in time is made smaller first A clip read back into a prompt failed with a timeout: the Host stops a connector call after thirty seconds, and the provider reads a clip frame by frame. A phone recording is sixty frames a second at 1080x1920, so there are six hundred frames to look at in ten seconds, and the call was cut off. Two things were wrong. The clip was never measured, because ffprobe was asked for the whole of every stream and every tag: that answer is longer than the text an answer may hold, so it was cut off in the middle and could not be read at all. And a clip that cannot be read in time was sent exactly as it was. Now the clip is measured by asking for the fields that are needed, a clip that is too big for the time the Host gives is made smaller first (fewer frames, a smaller frame, a smaller file) and the working copy is thrown away afterwards, and a call that ran out of time is asked again with the next size. The card that is empty is named as well, so "this picture" is not the whole of the answer. On the real machine: the user's own 视频模仿 canvas, with the 反推提示词 node pressed, read the clip in 23.9s and wrote the prompt - the downstream node carried it on. * ai-node-canvas 0.81.0: the ready-made templates are the ones the user tuned The thirteen ready-made workflows were written into the code, and they were not the chains this user works with: his own seven - 图片复刻, 视频模仿 and the five shapes of H3 - are the ones he opened, changed and kept. So the ready-made set is now those seven, with his changes in them, and the other six are gone. A template is data, so the shipped ones are data too. They lived in a 475-line array in templates.mjs; they are now seven files under miniapp/templates/, each one saying the whole of itself - the title, what it is for, the group it belongs to and the steps. Changing a shipped template is a change to a file, and the file can be read, copied and handed to somebody else. On the real machine the panel shows 从素材出发 (图片复刻, 视频模仿) and H3 (T2VA, I2VA, FL2VA, L2VA, the full-reference set), and the seven templates of the user's own are still where they were. * ai-node-canvas 0.82.0: the tools refuse what they cannot do, and say what they did An audit of the whole MiniApp - the page, the Node service, the MCP surface, the Skill and the two READMEs - found that several things did not say what they did. The MCP tools published a schema and did not enforce it: a missing argument, a value outside an enumeration and an argument that was not in the schema all reached the implementation. The schema the Agent reads is now the schema the tool enforces. A mode the node does not have is said out loud instead of being quietly ignored, and a named port is a slot of its own - the first frame cannot be filled twice. The canvas read gave the Agent a status and nothing else: not the reason a run failed, not the material a node holds, not the template its prompt node expands, and two picture ports that were the same port twice. All of that is in the answer now, and a port that has a role says which one it is. Two of the answers were wrong. A run the page did not acknowledge was reported as "on its way", although a run is never repeated and may never have started; and a node that is busy said nothing, so the caller could not tell "it is busy" from "it did not start". A busy node now says so in its own words, and a run without an answer is not on its way. The cap on the references was a number of our own - ten - while the provider takes twelve items in all, so a request it would have taken was refused. The cap is the provider's now. A template of the user could carry a step that removes a node, and a template is the skeleton of a chain: it may make nodes and draw lines, and nothing else. The Skill named seven of the nine MCP tools, so the Agent could not see the ready-made workflows or put one on the canvas. It names all nine now, and it says what the canvas does that the MCP cannot reach. Both READMEs said "eight kinds of node" (there are seven), "six modes" on the video node (there are five), "four H3 shapes" (there are five) and "two reading tools and five writing ones" (there are three and six), and the English one said a run fills the node it was pressed on - it lands on a result node instead.
1 parent 8418a10 commit 877ea1c

49 files changed

Lines changed: 30943 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ The MiniMax Code Agent communicates through the host MCP client. Business reques
7777
| [仓库透视 / Repo X-Ray](plugins/yujiachen-y/repo-xray/) | Understand a codebase from its Git history: a code map you can drill into, hotspots and bug magnets, high-risk files, owners and knowledge loss, commit rhythm and firefighting, and the tech stack. Works with GitHub, GitLab, and local repositories; analysis runs on your machine | [yujiachen-y](https://github.com/yujiachen-y) |
7878
| [Disk Insight](plugins/zch0227/disk-insight/) | See where disk space went on macOS and Windows with a sunburst space map, find junk files sorted into three safety tiers, large and duplicate files, and how much code repositories and Git worktrees take; ask an Agent about any item, and permanently delete what you select after a confirmation that lists every item. Requires MiniMax Code 3.1.2 or later | [zch0227](https://github.com/zch0227) |
7979
| [A/时差保安 / Timezone Guard](plugins/liuchen19960902/timezone-guard/) | Check the other side's local time before you message: the target city's clock turns into a green "now is fine", yellow "keep it short", or red "go to sleep" verdict. Requires MiniMax Code 3.1.2 or later | [FineCat](https://github.com/LiuChen19960902) |
80+
| [AI Node Canvas](plugins/antianqi/ai-node-canvas/) | An infinite-canvas node graph for MiniMax Code: wire text, image, video and audio runs into a graph, let each result flow downstream, and run media tools on any result | [antianqi](https://github.com/antianqi) |
8081

8182
<details>
8283
<summary>Preview: Token Usage Board</summary>

‎README.zh-CN.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ MiniMax Code Agent 通过宿主 MCP 客户端与 MiniApp 协作。业务请求
7777
| [仓库透视](plugins/yujiachen-y/repo-xray/README.zh-CN.md) | 从 Git 历史看懂一个代码仓库:可逐层下钻的代码地图、热点与 Bug 磁铁、高风险文件、负责人与知识流失、提交节奏与救火记录、技术栈;支持 GitHub、GitLab 和本机仓库,全部在本机分析 | [yujiachen-y](https://github.com/yujiachen-y) |
7878
| [磁盘透视](plugins/zch0227/disk-insight/README.zh-CN.md) | 查看 macOS 和 Windows 的磁盘空间去向:旭日图空间地图,按三档风险分类的垃圾文件,大文件和重复文件,代码仓库和 Git worktree 的占用;任何条目都可以问 Agent,选中的条目在确认框里逐一列出,确认后直接永久删除。需要 MiniMax Code 3.1.2 或更高版本 | [zch0227](https://github.com/zch0227) |
7979
| [A/时差保安](plugins/liuchen19960902/timezone-guard/README.zh-CN.md) | 发消息前先看对方那边几点:按对方城市当地时间给出「现在可以聊 / 短聊就好 / 先睡,别发」三档判定。需要 MiniMax Code 3.1.2 或更高版本 | [FineCat](https://github.com/LiuChen19960902) |
80+
| [AI 节点画布](plugins/antianqi/ai-node-canvas/README.zh-CN.md) | MiniMax Code 里的无限画布节点图:把文本、图片、视频、音频的生成接成一张图,结果顺着连线往下传,任何一张结果都能直接做二次处理 | [antianqi](https://github.com/antianqi) |
8081

8182
<details>
8283
<summary>预览:Token 用量看板</summary>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"schemaVersion": 1,
3+
"name": "ai-node-canvas",
4+
"displayName": "节点画布",
5+
"version": "0.82.0",
6+
"description": "无限画布节点编排:把 MiniMax 模型生成的文本、图片、视频串成工作流,连线即数据流,上游产物可直接被下游引用。",
7+
"author": "antianqi",
8+
"icon": "icon.png",
9+
"darkIcon": "icon-dark.png",
10+
"category": "Productivity",
11+
"exampleQueries": [
12+
"打开节点画布",
13+
"用画布生成一张产品海报",
14+
"把这两个节点连起来",
15+
"用提示词增强写一条 H3 视频提示词",
16+
"把画布上的产品图做成九宫格"
17+
],
18+
"apps": [],
19+
"mcpServers": ["servers.mcp.json"],
20+
"skills": ["skills/ai-node-canvas/SKILL.md"]
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 antianqi
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)