Skip to content

MiniMax Bot Team: a real team of Bots, not one Bot wearing several masks - #120

Merged
MyPrototypeWhat merged 3 commits into
MiniMax-AI:mainfrom
antianqi:feat/minimax-bot-team
Nov 10, 2026
Merged

MyPrototypeWhat merged 3 commits into
MiniMax-AI:mainfrom
antianqi:feat/minimax-bot-team

Conversation

@antianqi

@antianqi antianqi commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Today's bot is one person wearing several masks, taking turns with you. MiniMax Bot Team gives you a team instead: members with different skills and different temperaments, each guarding one field, and they can sit down together and argue about the same question from different angles.

现在的 bot 像一个人轮流带着几个面具跟你聊天。MiniMax Bot Team 给你的是一支真正各有能力、各有性格的团队,各自守着一个领域,也能围坐一起,从不同角度讨论同一个问题。

What it does

  • A chief Bot and a team. create_bot builds a Bot; main: true marks the one that takes the work and hands it over. Each Bot answers in its own chat, so several of them can work at the same time.
  • Every Bot carries its own files. AGENTS.md (the role, the way of working, the delivery standard), IDENTITY.md (the name, the duty, the tone) and SOUL.md (the character, the principles, what it refuses to do) are put into that Bot's prompt on every turn. The files decide how good the team is.
  • Three zones, three owners. The Bot writes its own files; the common zone (ENV.md, USER.md) and the shared cards (shared-*.md) belong to the user, who edits them in the settings. A card can name the Bots that read it.
  • A group chat with one rule. Inside a group a member may not work with its own tools: a read, a script or an image call is cut off and the turn ends with nothing to show. The hand-over tools do work there, and the chief Bot @-mentioning someone is the hand-over itself - that message lands in the mentioned Bot's private chat as its task.
  • A Skill that says what to write. skills/bot-team-setup/SKILL.md walks the setup in Chinese and English: how many Bots, what each one writes into its three files, what the common and the shared files hold, when a group chat is needed and how the first task is handed over.

Tested environment

  • MiniMax Code 3.1.11 on Windows 11 (x64), tested by the author: the panel opens, a Bot is created, its three identity files are written and read back, a group chat is created, a task is handed over and the answer comes back into the group.
  • The package needs MiniMax Code 3.1.2 or later, because it declares agentAccess and surface.window.
  • The package is platform-neutral in principle: the Node service binds the loopback interface only, and the page is plain HTML, CSS and JavaScript.

Not verified

  • The panel was not exercised on macOS or Linux.
  • The test suite of the internal plugin is not shipped in the package: its fixtures carry material from the product this was built for. The shipped code is the same code.
Notes for the reviewer
  • The icon is the MiniMax Bot octopus shipped with the official minimax-bot package - the same file, byte for byte. This package is built on that Mini App, and the MIT notice is kept in LICENSE. Say the word if you would rather we ship an asset of our own.
  • The LICENSE keeps the original MIT notice and adds the author of the changes.
  • The Host's memory is behind an opt-in. Reading ~/.minimax/memories/scopes/global is off by default: the switch is Settings -> General -> Host memory, and while it is off nothing in that directory is read, host_memory_search is not offered, and the helper is not written. The package README has a section of its own on it.
  • npm run check reports one warning for this package: ENTRY_STDOUT in miniapp/node/memory-bridge.mjs. The process.stdout.write there is inside the source of the helper script the plugin generates into dataDir/memory-bridge/search.mjs and a Bot runs as a child process; that helper's stdout is its result channel for the Bot that runs it, not the Host's stdout. The plugin itself logs through context.logger.
  • What the package declares: agentAccess: ["session.run"], one mcpEndpoints entry for the Bot tools, and one Skill. No microphone, camera, notification or Host navigation access, and no outbound network request.
  • The manifest description is written in Chinese and English in one string, so the marketplace shows both.

Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.

A team of MiniMax Code Bots that keeps working after the chat ends: a chief Bot takes
the work, the members do it in their own chats, and an @-mention in a group chat is
the hand-over.

Every Bot carries its own identity files, and the runtime puts them into that Bot's
prompt on every turn - so the files decide how good the team is. The common files and
the shared cards belong to the user, and a card can name the Bots that read it. The
bot-team-setup skill says what to write into all of it, in Chinese and English.

Tested environment: MiniMax Code 3.1.11 on Windows 11 (x64). The package needs 3.1.2
or later, because it declares agentAccess and surface.window. macOS and Linux were not
tested.

The upstream check reports one warning for this package: ENTRY_STDOUT in
miniapp/node/memory-bridge.mjs. The process.stdout.write there is inside the source of
the helper script the plugin generates into dataDir/memory-bridge/search.mjs and runs
as a child process; that helper's stdout is its result channel back to the plugin, not
the Host's stdout. The plugin itself logs through context.logger.

@MyPrototypeWhat MyPrototypeWhat left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, this is a big, well-documented package. Two things need to change before merge, both about the Host's memory:

  1. host_memory_search (miniapp/node/host-memory.mjs, mcp.mjs) reads ~/.minimax/memories/scopes/global with no switch. In this repo, anything that reads the user's private data outside dataDir has to be off by default, behind an opt-in setting, and the README should say so.
  2. memory_pending tells the main conversation to call memories_add_ad_hoc_note right away, in both the tool description and the result. A plugin shouldn't steer the Host's own memory writes, so please drop that instruction or put the whole bridge behind the same default-off setting.

Minor: the README says each Host-memory search spawns node <dataDir>/memory-bridge/search.mjs, but mcp.mjs calls searchHostMemory in-process and the generated helper is never used. Please remove the helper or update the README.

Everything else looks good. Thanks!

… ordering the Host to write it

This answers the three points from the review.

- Reading the memory of the Host is private data outside dataDir, so it is off by
  default now and opens only behind one setting: Settings -> General -> Host
  memory. While it is off, host_memory_search is not in the tool catalogue, a call to
  it refuses itself with a message that names the switch, the helper a Bot runs is
  not written (and one left over is removed), and the Bot brief carries no memory
  section at all. The README has a section of its own on this.
- The plugin no longer tells the Host to write its own memory: the memory_pending
  description and its result text no longer name memories_add_ad_hoc_note, in Chinese
  and English. The hand-over stays - the conclusion reaches the caller as text, and
  what happens to it afterwards is the Host's and the user's business.
- The helper and the README now agree: the helper is written only while the access is
  on, and the README describes the process it starts accurately.

One correction for the record: the helper is not what mcp.mjs calls - that call is
in-process - but it is not dead code either. It is the entry point for a Bot: the
standing brief tells the Bot to run node "<dataDir>/memory-bridge/search.mjs"
"<query>", and the script carries its own copy of the two modules it needs so it
survives a restart of the unpacked package.

Checks: the plugin suite passes 522/522, the upstream validator reports 0 errors and 1
warning for this package (ENTRY_STDOUT - the stdout in question is the helper's own
output channel), and npm run check passes 92/92.
@antianqi

antianqi commented Nov 9, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the review - all three points are addressed, and I took the stricter option in each case.

1. host_memory_search is now off by default, behind one opt-in setting.

Reading ~/.minimax/memories/scopes/global is private data outside dataDir, so it now sits behind a setting: Settings -> General -> Host memory. It defaults to false, and existing installs get the same default through the settings merge.

While it is off:

  • host_memory_search is not in the tool catalogue - tools/list filters it out;
  • a call to it refuses itself with a message that names the switch, so a Host that cached the tool list earlier cannot get through either;
  • the helper a Bot runs is not written, and one left over from before is removed;
  • the Bot's standing brief carries no memory section at all, so the Bots are not told to look anything up or to mark a conclusion.

Turning it on writes the helper, offers the tool and adds the brief section. Nothing else changes: the files are still read-only, and the package still writes nothing into that directory.

The README has a section of its own for this ("Host memory (off by default)"), and Data & access names the switch next to the files read outside dataDir and next to the helper process.

2. The plugin no longer orders the Host to write its own memory.

The memories_add_ad_hoc_note instruction is gone from the memory_pending description and from its result text, in both languages - and the whole bridge sits behind the same switch, so both halves of your point are covered. I dropped the instruction rather than keeping it behind the switch: the plugin hands the conclusion over as text, and what the Host does with that text afterwards is the Host's and the user's business. The hand-over itself stays.

3. The helper and the README now agree - with one correction.

The helper is not what mcp.mjs calls - that call is in-process, as you said - but the helper is not unused either: it is the entry point for a Bot. The standing brief (miniapp/node/engine.mjs) tells the Bot to run node "<dataDir>/memory-bridge/search.mjs" "<query>", and the script carries its own copy of the two modules it needs so that it survives a restart of the unpacked package.

What I changed is the shape of the claim: the helper is written only while the access is on, and the README now describes the process accurately - it prints the JSON result on its own stdout for the Bot that ran it; it does not carry anything back to the plugin.

Checks

  • plugin suite: 522 pass, 0 fail. The new tests/host-memory-opt-in.test.mjs fails if the setting is not off by default, if the tool is offered while it is off, if a call does not refuse itself, if the helper survives the switch being turned off, if the Bot brief still carries the memory section while the access is off, or if any shipped string names the Host write tool again.
  • upstream validator: plugins/antianqi/minimax-bot-team: 0 errors, 1 warning - still the same ENTRY_STDOUT warning; the stdout in question is inside the source of the generated helper, which is the helper's own output channel.
  • npm run check: 92 pass, 0 fail.

The package version stays 1.0.0 (first release, not merged yet).

@antianqi

Copy link
Copy Markdown
Contributor Author

@MyPrototypeWhat - all three points are done and CI is green, ready for another look.

The Host-memory access is now behind an opt-in switch that is off by default (the tool is not offered, a call refuses itself, the helper is not written, the Bot brief carries no memory section); the instruction to write into the Host memory is gone from the memory_pending description and its result, in both languages; and the helper and the README now agree.

Details in my comment above.

@MyPrototypeWhat MyPrototypeWhat left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, all three points are addressed: host memory reads are now opt-in and off by default, the memory-write instruction is gone, and the READMEs match the code. Merging.

@MyPrototypeWhat
MyPrototypeWhat merged commit 8ee65d1 into MiniMax-AI:main Nov 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants