From d6956df5b826fe10bac2c3a439fcdde9e07a9e47 Mon Sep 17 00:00:00 2001 From: antianqi <75944423+antianqi@users.noreply.github.com> Date: Mon, 2 Nov 2026 08:45:26 +0800 Subject: [PATCH 1/6] feat(mmx-octopus): a desktop companion that mirrors the Agent and can be driven by it Adds the mmx-octopus plugin package: a frameless, click-through desktop companion that follows the Agent's turn events, reports the end of a turn, chats in a session of its own, and exposes four MCP tools to the Agent. Includes an English and a Simplified Chinese README, an MIT LICENSE, and the plugin manifests. --- README.md | 1 + README.zh-CN.md | 1 + .../mmx-octopus/.minimax-plugin/plugin.json | 19 + plugins/antianqi/mmx-octopus/LICENSE | 21 + plugins/antianqi/mmx-octopus/README.md | 168 + plugins/antianqi/mmx-octopus/README.zh-CN.md | 129 + plugins/antianqi/mmx-octopus/icon.png | Bin 0 -> 287860 bytes .../miniapp/client/assets/mmx-avatar.png | Bin 0 -> 31829 bytes .../miniapp/client/assets/mmx-chibi-front.png | Bin 0 -> 314547 bytes .../miniapp/client/assets/mmx-octopus.png | Bin 0 -> 454864 bytes .../miniapp/client/assets/webm/cele-01.webm | Bin 0 -> 422215 bytes .../miniapp/client/assets/webm/click-01.webm | Bin 0 -> 363653 bytes .../miniapp/client/assets/webm/click-02.webm | Bin 0 -> 266489 bytes .../miniapp/client/assets/webm/click-03.webm | Bin 0 -> 296459 bytes .../miniapp/client/assets/webm/click-04.webm | Bin 0 -> 368742 bytes .../miniapp/client/assets/webm/click-05.webm | Bin 0 -> 391026 bytes .../miniapp/client/assets/webm/drag-01.webm | Bin 0 -> 273006 bytes .../miniapp/client/assets/webm/idle-01.webm | Bin 0 -> 252927 bytes .../miniapp/client/assets/webm/manifest.json | 1386 +++++ .../miniapp/client/assets/webm/move-01.webm | Bin 0 -> 353428 bytes .../miniapp/client/assets/webm/move-02.webm | Bin 0 -> 262716 bytes .../miniapp/client/assets/webm/move-03.webm | Bin 0 -> 472926 bytes .../miniapp/client/assets/webm/rand-01.webm | Bin 0 -> 295721 bytes .../miniapp/client/assets/webm/rand-02.webm | Bin 0 -> 285410 bytes .../miniapp/client/assets/webm/rand-03.webm | Bin 0 -> 421584 bytes .../miniapp/client/assets/webm/rand-04.webm | Bin 0 -> 343902 bytes .../miniapp/client/assets/webm/rand-05.webm | Bin 0 -> 211052 bytes .../miniapp/client/assets/webm/rand-06.webm | Bin 0 -> 230973 bytes .../miniapp/client/assets/webm/rand-07.webm | Bin 0 -> 323920 bytes .../miniapp/client/assets/webm/rand-08.webm | Bin 0 -> 321666 bytes .../miniapp/client/assets/webm/rand-09.webm | Bin 0 -> 237072 bytes .../miniapp/client/assets/webm/rand-10.webm | Bin 0 -> 321740 bytes .../miniapp/client/assets/webm/rand-11.webm | Bin 0 -> 247639 bytes .../miniapp/client/assets/webm/rand-12.webm | Bin 0 -> 352220 bytes .../miniapp/client/assets/webm/rand-13.webm | Bin 0 -> 265192 bytes .../miniapp/client/assets/webm/rand-14.webm | Bin 0 -> 254734 bytes .../miniapp/client/assets/webm/rand-15.webm | Bin 0 -> 204919 bytes .../miniapp/client/assets/webm/rand-16.webm | Bin 0 -> 258270 bytes .../miniapp/client/assets/webm/rand-17.webm | Bin 0 -> 286194 bytes .../miniapp/client/assets/webm/rand-18.webm | Bin 0 -> 349587 bytes .../miniapp/client/assets/webm/rand-19.webm | Bin 0 -> 331855 bytes .../miniapp/client/assets/webm/rand-20.webm | Bin 0 -> 417896 bytes .../miniapp/client/assets/webm/rand-21.webm | Bin 0 -> 364910 bytes .../miniapp/client/assets/webm/rand-22.webm | Bin 0 -> 308107 bytes .../miniapp/client/assets/webm/rand-23.webm | Bin 0 -> 384357 bytes .../miniapp/client/assets/webm/rand-24.webm | Bin 0 -> 431820 bytes .../miniapp/client/assets/webm/rand-25.webm | Bin 0 -> 284489 bytes .../miniapp/client/assets/webm/rand-26.webm | Bin 0 -> 307916 bytes .../miniapp/client/assets/webm/rand-27.webm | Bin 0 -> 325617 bytes .../miniapp/client/assets/webm/rand-28.webm | Bin 0 -> 266556 bytes .../miniapp/client/assets/webm/rand-29.webm | Bin 0 -> 305544 bytes .../miniapp/client/assets/webm/rand-30.webm | Bin 0 -> 292548 bytes .../miniapp/client/assets/webm/rand-31.webm | Bin 0 -> 277199 bytes .../miniapp/client/assets/webm/rand-32.webm | Bin 0 -> 271922 bytes .../miniapp/client/assets/webm/rand-33.webm | Bin 0 -> 372622 bytes .../miniapp/client/assets/webm/rand-34.webm | Bin 0 -> 276004 bytes .../miniapp/client/assets/webm/rand-35.webm | Bin 0 -> 239155 bytes .../miniapp/client/assets/webm/rand-36.webm | Bin 0 -> 355814 bytes .../miniapp/client/assets/webm/rand-37.webm | Bin 0 -> 373305 bytes .../miniapp/client/assets/webm/rand-38.webm | Bin 0 -> 402841 bytes .../miniapp/client/assets/webm/rand-39.webm | Bin 0 -> 339132 bytes .../miniapp/client/assets/webm/rand-40.webm | Bin 0 -> 433649 bytes .../miniapp/client/assets/webm/rand-41.webm | Bin 0 -> 331769 bytes .../miniapp/client/assets/webm/rand-42.webm | Bin 0 -> 255238 bytes .../miniapp/client/assets/webm/rand-43.webm | Bin 0 -> 252175 bytes .../miniapp/client/assets/webm/rand-44.webm | Bin 0 -> 278304 bytes .../miniapp/client/assets/webm/rand-45.webm | Bin 0 -> 297648 bytes .../miniapp/client/assets/webm/rand-46.webm | Bin 0 -> 278479 bytes .../miniapp/client/assets/webm/rand-47.webm | Bin 0 -> 274418 bytes .../miniapp/client/assets/webm/rand-48.webm | Bin 0 -> 269138 bytes .../miniapp/client/assets/webm/rand-49.webm | Bin 0 -> 303730 bytes .../miniapp/client/assets/webm/rand-50.webm | Bin 0 -> 234812 bytes .../miniapp/client/assets/webm/rand-51.webm | Bin 0 -> 315593 bytes .../miniapp/client/assets/webm/rand-52.webm | Bin 0 -> 337512 bytes .../miniapp/client/assets/webm/rand-53.webm | Bin 0 -> 296055 bytes .../miniapp/client/assets/webm/rand-54.webm | Bin 0 -> 377763 bytes .../miniapp/client/assets/webm/rand-55.webm | Bin 0 -> 309267 bytes .../miniapp/client/assets/webm/rand-56.webm | Bin 0 -> 309486 bytes .../miniapp/client/assets/webm/rand-57.webm | Bin 0 -> 250452 bytes .../miniapp/client/assets/webm/rand-58.webm | Bin 0 -> 251449 bytes .../miniapp/client/assets/webm/rand-59.webm | Bin 0 -> 248191 bytes .../miniapp/client/assets/webm/rand-60.webm | Bin 0 -> 236893 bytes .../miniapp/client/assets/webm/rand-61.webm | Bin 0 -> 270575 bytes .../miniapp/client/assets/webm/rand-62.webm | Bin 0 -> 295832 bytes .../miniapp/client/assets/webm/rand-63.webm | Bin 0 -> 256238 bytes .../miniapp/client/assets/webm/rand-64.webm | Bin 0 -> 685937 bytes .../miniapp/client/assets/webm/rand-65.webm | Bin 0 -> 332349 bytes .../miniapp/client/assets/webm/rand-66.webm | Bin 0 -> 445291 bytes .../miniapp/client/assets/webm/rand-67.webm | Bin 0 -> 265370 bytes .../miniapp/client/assets/webm/rand-68.webm | Bin 0 -> 294285 bytes .../miniapp/client/assets/webm/rand-69.webm | Bin 0 -> 463212 bytes .../miniapp/client/assets/webm/rand-70.webm | Bin 0 -> 201509 bytes .../miniapp/client/assets/webm/rand-71.webm | Bin 0 -> 273809 bytes .../miniapp/client/assets/webm/rand-72.webm | Bin 0 -> 392751 bytes .../miniapp/client/assets/webm/think-01.webm | Bin 0 -> 297725 bytes .../miniapp/client/assets/webm/think-02.webm | Bin 0 -> 252305 bytes .../miniapp/client/assets/webm/turn-01.webm | Bin 0 -> 298033 bytes .../miniapp/client/assets/webm/whis-01.webm | Bin 0 -> 351932 bytes .../miniapp/client/assets/webm/whis-02.webm | Bin 0 -> 205293 bytes .../miniapp/client/assets/webm/whis-03.webm | Bin 0 -> 280113 bytes .../miniapp/client/assets/webm/work-01.webm | Bin 0 -> 368548 bytes .../miniapp/client/assets/webm/work-02.webm | Bin 0 -> 393147 bytes .../miniapp/client/assets/webm/work-03.webm | Bin 0 -> 341915 bytes .../miniapp/client/assets/webm/work-04.webm | Bin 0 -> 300480 bytes .../miniapp/client/assets/webm/work-05.webm | Bin 0 -> 296518 bytes .../mmx-octopus/miniapp/client/index.html | 5346 +++++++++++++++++ .../antianqi/mmx-octopus/miniapp/miniapp.json | 34 + .../mmx-octopus/miniapp/node/agentpick.mjs | 56 + .../mmx-octopus/miniapp/node/atomic-json.mjs | 142 + .../miniapp/node/chat-protocol.mjs | 135 + .../mmx-octopus/miniapp/node/chat.mjs | 180 + .../mmx-octopus/miniapp/node/chatinput.mjs | 281 + .../mmx-octopus/miniapp/node/chatter.mjs | 290 + .../mmx-octopus/miniapp/node/clip.mjs | 44 + .../mmx-octopus/miniapp/node/diary.mjs | 407 ++ .../mmx-octopus/miniapp/node/displayname.mjs | 281 + .../mmx-octopus/miniapp/node/express.mjs | 647 ++ .../miniapp/node/identity/AGENTS.md | 62 + .../miniapp/node/identity/STORY.md | 33 + .../mmx-octopus/miniapp/node/idletalk.mjs | 155 + .../mmx-octopus/miniapp/node/lines.mjs | 491 ++ .../antianqi/mmx-octopus/miniapp/node/mcp.mjs | 267 + .../mmx-octopus/miniapp/node/memory.mjs | 288 + .../mmx-octopus/miniapp/node/observe.mjs | 551 ++ .../mmx-octopus/miniapp/node/replyflow.mjs | 604 ++ .../mmx-octopus/miniapp/node/scrub.mjs | 480 ++ .../mmx-octopus/miniapp/node/server.mjs | 2530 ++++++++ .../mmx-octopus/miniapp/node/state.mjs | 1222 ++++ .../mmx-octopus/miniapp/node/storyscope.mjs | 154 + .../mmx-octopus/miniapp/node/stylemem.mjs | 328 + .../mmx-octopus/miniapp/node/summarize.mjs | 188 + .../mmx-octopus/miniapp/node/tracks.mjs | 404 ++ plugins/antianqi/mmx-octopus/package.json | 10 + plugins/antianqi/mmx-octopus/servers.mcp.json | 12 + 134 files changed, 17347 insertions(+) create mode 100644 plugins/antianqi/mmx-octopus/.minimax-plugin/plugin.json create mode 100644 plugins/antianqi/mmx-octopus/LICENSE create mode 100644 plugins/antianqi/mmx-octopus/README.md create mode 100644 plugins/antianqi/mmx-octopus/README.zh-CN.md create mode 100644 plugins/antianqi/mmx-octopus/icon.png create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/mmx-avatar.png create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/mmx-chibi-front.png create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/mmx-octopus.png create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/cele-01.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/click-01.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/click-02.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/click-03.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/click-04.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/click-05.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/drag-01.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/idle-01.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/manifest.json create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/move-01.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/move-02.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/move-03.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-01.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-02.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-03.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-04.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-05.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-06.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-07.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-08.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-09.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-10.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-11.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-12.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-13.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-14.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-15.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-16.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-17.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-18.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-19.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-20.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-21.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-22.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-23.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-24.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-25.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-26.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-27.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-28.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-29.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-30.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-31.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-32.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-33.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-34.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-35.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-36.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-37.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-38.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-39.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-40.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-41.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-42.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-43.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-44.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-45.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-46.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-47.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-48.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-49.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-50.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-51.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-52.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-53.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-54.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-55.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-56.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-57.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-58.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-59.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-60.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-61.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-62.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-63.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-64.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-65.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-66.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-67.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-68.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-69.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-70.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-71.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/rand-72.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/think-01.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/think-02.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/turn-01.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/whis-01.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/whis-02.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/whis-03.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/work-01.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/work-02.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/work-03.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/work-04.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/assets/webm/work-05.webm create mode 100644 plugins/antianqi/mmx-octopus/miniapp/client/index.html create mode 100644 plugins/antianqi/mmx-octopus/miniapp/miniapp.json create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/agentpick.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/atomic-json.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/chat-protocol.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/chat.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/chatinput.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/chatter.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/clip.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/diary.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/displayname.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/express.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/identity/AGENTS.md create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/identity/STORY.md create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/idletalk.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/lines.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/mcp.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/memory.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/observe.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/replyflow.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/scrub.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/server.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/state.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/storyscope.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/stylemem.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/summarize.mjs create mode 100644 plugins/antianqi/mmx-octopus/miniapp/node/tracks.mjs create mode 100644 plugins/antianqi/mmx-octopus/package.json create mode 100644 plugins/antianqi/mmx-octopus/servers.mcp.json diff --git a/README.md b/README.md index 938e38bb..735debdc 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ The MiniMax Code Agent communicates through the host MCP client. Business reques | [OpenFilm](plugins/cristinamadureira353-svg/openfilm/) | Run OpenFilm inside MiniMax Code with the desktop interface: Studio editor, chat column and local agents, with a web-Studio fallback | [最爱双皮奶](https://github.com/cristinamadureira353-svg) | | [Dynamic Workflow Console](plugins/stevenjj33/workflow-console/) | Run and supervise MiniMax Code dynamic workflows from one page: live status, a stage-and-dependency flow graph, per-node output, approval and control, templates, and report export | [stevenjj33](https://github.com/stevenjj33) | | [MiniMax Photo](plugins/webguhui/minimax-photo/) | Layered image editing with an in-app AI assistant, local recovery and programmatic editing tools | [WebGuHui](https://github.com/WebGuHui) | +| [MMX Octopus](plugins/antianqi/mmx-octopus/) | A desktop companion that mirrors what your Agent is doing, chats with you in her own session, and can be driven by the Agent through four MCP tools | [antianqi](https://github.com/antianqi) | | [Cutline](plugins/klarkxy/cutline/) | Browser-based video editor: timeline cuts, captions, motion graphics, grading and export, cut from chat by the Agent | [klarkxy](https://github.com/klarkxy) | | [MiniMax Video](plugins/webguhui/minimax-video/) | Local video editing with captions, a host Agent assistant, reviewable timeline edits, and MP4/MP3 export | [WebGuHui](https://github.com/WebGuHui) | | [AI Office](plugins/cristinamadureira353-svg/ai-office/) | Manage five model-powered employees in a pixel office: client tasks, chats, breaks, meetings and quota-aware offline states; uses your own API keys | [最爱双皮奶](https://github.com/cristinamadureira353-svg) | diff --git a/README.zh-CN.md b/README.zh-CN.md index 80dcff8b..6ecb50ac 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -60,6 +60,7 @@ MiniMax Code Agent 通过宿主 MCP 客户端与 MiniApp 协作。业务请求 | [OpenFilm](plugins/cristinamadureira353-svg/openfilm/) | 把 OpenFilm 装进 MiniMax Code:桌面版界面(Studio 编辑器 + 聊天栏 + 本地 agent),桌面模式不可用时回落网页版 | [最爱双皮奶](https://github.com/cristinamadureira353-svg) | | [动态工作流控制台](plugins/stevenjj33/workflow-console/README.zh-CN.md) | 在一个页面里运行并盯住 MiniMax Code 动态工作流:实时状态、按阶段与依赖画出的流程图、节点输出、审核与控制、模板与报告导出 | [stevenjj33](https://github.com/stevenjj33) | | [MiniMax Photo](plugins/webguhui/minimax-photo/) | 图层图片编辑、应用内 AI 助手、本地恢复与程序化编辑工具 | [WebGuHui](https://github.com/WebGuHui) | +| [MMX 章鱼娘](plugins/antianqi/mmx-octopus/) | 桌面上的小章鱼:跟着 Agent 的状态换表情、用自己的会话跟你聊天,也能被 Agent 用 4 个 MCP 工具指挥 | [antianqi](https://github.com/antianqi) | | [Cutline](plugins/klarkxy/cutline/) | 浏览器里的视频剪辑台:时间线剪切、字幕、动效、调色与导出,聊天里一句话就能剪片 | [klarkxy](https://github.com/klarkxy) | | [MiniMax Video](plugins/webguhui/minimax-video/) | 本地视频剪辑、字幕、宿主 Agent 助手、可预览的时间线修改与 MP4/MP3 导出 | [WebGuHui](https://github.com/WebGuHui) | | [AI 事务所](plugins/cristinamadureira353-svg/ai-office/README.zh-CN.md) | 五位真实模型员工的像素事务所:接单、聊天、休息和开会,额度耗尽时角色暂停;使用玩家自己的 API Key | [最爱双皮奶](https://github.com/cristinamadureira353-svg) | diff --git a/plugins/antianqi/mmx-octopus/.minimax-plugin/plugin.json b/plugins/antianqi/mmx-octopus/.minimax-plugin/plugin.json new file mode 100644 index 00000000..7c927ce4 --- /dev/null +++ b/plugins/antianqi/mmx-octopus/.minimax-plugin/plugin.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 1, + "name": "mmx-octopus", + "displayName": "MMX 章鱼娘", + "version": "1.1.0", + "description": "桌面上的 MMX 章鱼娘 —— MMX Agent 的可视化身体,也是你自己的专属聊天对象。她会反映 Agent 正在思考还是正在干活,还能被 Agent 和技能通过托管 MCP 直接指挥说话、换表情、挪位置。权限说明:本插件会读取你每个对话每轮的最终回复、标题与运行状态,用来判断 Agent 正在思考还是已经完成,并在你主动问她时用她自己的固定会话跑一轮 Agent,把回答直接说出来;她的对话历史只存在本机。", + "author": "antianqi", + "icon": "icon.png", + "category": "Productivity", + "exampleQueries": [ + "跟章鱼娘聊两句", + "让章鱼娘说句话", + "把章鱼娘浮到桌面右下角", + "看看章鱼娘现在什么状态" + ], + "apps": [], + "mcpServers": ["servers.mcp.json"], + "skills": [] +} diff --git a/plugins/antianqi/mmx-octopus/LICENSE b/plugins/antianqi/mmx-octopus/LICENSE new file mode 100644 index 00000000..4bea20aa --- /dev/null +++ b/plugins/antianqi/mmx-octopus/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 antianqi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/plugins/antianqi/mmx-octopus/README.md b/plugins/antianqi/mmx-octopus/README.md new file mode 100644 index 00000000..800fae0d --- /dev/null +++ b/plugins/antianqi/mmx-octopus/README.md @@ -0,0 +1,168 @@ +# MMX Octopus + +*A small octopus girl who lives on your desktop: she shows what your Agent is +doing, and the Agent can tell her what to say.* + +English | [简体中文](README.zh-CN.md) + +Author: [antianqi](https://github.com/antianqi) · Version: `1.1.0` · +Plugin ID: `mmx-octopus` · Category: `Productivity` + +*The app interface is in Chinese.* + +## What it does + +- **She mirrors the Agent.** She subscribes to the Host Agent's turn events + (`turn.started`, `message.committed`, `turn.finished`) and switches her + expression: `thinking` when a turn starts, `working` while a task runs, + `celebrate` when a turn finishes with a real answer. +- **She reports the end of a turn.** When a turn finishes she says one short + line about what came out of it — a summary of the final reply, or a + fallback line naming the session. +- **She has a chat of her own.** The panel has a chat area. A message to her + runs **one Agent turn in her own session**, and she answers in her own voice: + short sentences, split into several bubbles as they arrive. +- **She keeps a diary.** The panel's diary holds her own monologues. It is a + separate file from the chat history, and she writes it on her own. +- **The Agent can drive her.** This package hosts an MCP server with four + tools (below), so the Agent can make her speak, change her expression, move + her, or read her state. +- **She stays out of the way.** The floating window is frameless, transparent, + always on top and click-through, so it never blocks the desktop. It is + 220 × 460 and can be dragged anywhere on the screen; the Agent can park it in + one of four fixed spots (three corners and the centre). + +## Install + +Copy the whole `mmx-octopus` directory, including the hidden `.minimax-plugin` +directory, into your MiniMax Code data directory: + +```text +Repository: mmx-octopus/ +Install to: /plugins/mmx-octopus/ +Manifest: /plugins/mmx-octopus/.minimax-plugin/plugin.json +``` + +The default data directory is `~/.minimax`, so the destination is normally +`~/.minimax/plugins/mmx-octopus/`. + +Restart MiniMax Code, confirm the plugin is recognised and enabled, and open +**MMX 章鱼娘** from the plugin list. The floating window appears on the +desktop; the panel holds her status, the chat area and the diary. + +Nothing else is needed: no API key, no account, no dependency to install. + +## Usage + +1. Open the plugin from the plugin list. The floating window appears. +2. Drag it to a corner, or let the Agent move it with `mmx_move`. +3. Talk to the Agent as usual and watch her expression follow along. +4. Open the panel and write to her — she answers in her own session. + +### The Agent's four tools + +The package hosts one Streamable HTTP MCP server (`mmx`), mounted by +`miniapp.json` at `/mcp/mmx`. The Host rewrites its address and authenticates +it like the rest of the port. + +| Tool | What it does | +| --- | --- | +| `mmx_say` | Pop a bubble with one or two sentences — the tool asks for no more than 120 characters, and the runtime refuses anything over 300. Good for a "task finished" notice. | +| `mmx_mood` | Switch her expression: `idle`, `thinking`, `working` or `celebrate`. | +| `mmx_move` | Move the floating window to one of four spots: `bottom-right`, `bottom-left`, `top-right` or `center`. | +| `mmx_status` | Read her expression, her current bubble, and whether the Agent is running. | + +## How her body works + +- **94 short clips with an alpha channel** live in + `miniapp/client/assets/webm/`, listed by + `miniapp/client/assets/webm/manifest.json`. They are the main body + animation, not a fallback. +- A clip is taken from a **pool**, the pool follows a **track**, and two + `