{"id":375169,"date":"2026-09-28T06:51:25","date_gmt":"2026-09-28T06:51:25","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-provider-for-xiaomi-mimo\/"},"modified":"2026-09-28T07:01:17","modified_gmt":"2026-09-28T07:01:17","slug":"bestony-ai-provider","status":"publish","type":"plugin","link":"https:\/\/pe.wordpress.org\/plugins\/bestony-ai-provider\/","author":14788414,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.4","stable_tag":"1.0.4","tested":"7.1.2","requires":"7.0","requires_php":"7.4","requires_plugins":null,"header_name":"Bestony AI Provider for Xiaomi MiMo","header_author":"Bestony","header_description":"Xiaomi MiMo (\u5c0f\u7c73 MiMo) provider for the WordPress AI Client.","assets_banners_color":"","last_updated":"2026-09-28 07:01:17","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/bestony\/AI-Provider-for-Xiaomi-MiMo","header_author_uri":"https:\/\/github.com\/bestony","rating":0,"author_block_rating":0,"active_installs":0,"downloads":59,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.4":{"tag":"1.0.4","author":"bestony","date":"2026-09-28 07:01:17","revision":3716432}},"upgrade_notice":{"1.0.4":"<p>WordPress.org plugin directory slug changed to <code>bestony-ai-provider<\/code>. Fixed SVN deploy depth typo. Existing settings and keys keep working.<\/p>","1.0.3":"<p>WordPress.org plugin directory slug changed to <code>bestony-ai-provider<\/code>. Existing settings and keys keep working.<\/p>","1.0.2":"<p>Stops shipping the <code>.wordpress-org<\/code> directory in the release zip. Existing settings and keys keep working.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The Xiaomi MiMo connector card on Settings \u2192 Connectors, with the API key field."}},"plugin_section":[],"plugin_tags":[2353,25308,283076,15123,283075],"plugin_category":[],"plugin_contributors":[145631],"plugin_business_model":[],"class_list":["post-375169","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-connector","plugin_tags-mimo","plugin_tags-vision","plugin_tags-xiaomi","plugin_contributors-bestony","plugin_committers-bestony"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/bestony-ai-provider.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Adds <a href=\"https:\/\/platform.xiaomimimo.com\/\">Xiaomi MiMo<\/a> (\u5c0f\u7c73 MiMo) as a provider for the WordPress AI Client.<\/p>\n\n<ul>\n<li>The model list is fetched live from <code>GET \/v1\/models<\/code>, so newly released models appear on their own.<\/li>\n<li>Text generation and chat history with the MiMo chat models, including tool calling, structured\noutput (JSON mode) and stop sequences.<\/li>\n<li>Vision (multimodal understanding): the <code>mimo-v2.6-*<\/code> family and <code>mimo-v2.5<\/code> accept images, so\nfeatures like Alt Text Generation work.<\/li>\n<li>Reasoning output is surfaced as thought parts rather than mixed into the answer text.<\/li>\n<li>A <strong>Settings \u2192 Bestony AI Provider for Xiaomi MiMo<\/strong> page with three options: the API host (standard API or\none of the Token Plan clusters), the thinking mode, and the structured-output mode.<\/li>\n<\/ul>\n\n<h3>Settings<\/h3>\n\n<p><strong>Settings \u2192 Bestony AI Provider for Xiaomi MiMo<\/strong> has three options. Each is overridden by its matching\nenvironment variable when one is set.<\/p>\n\n<p><strong>API host<\/strong> \u2014 which Xiaomi MiMo host the provider talks to:<\/p>\n\n<ul>\n<li>Xiaomi MiMo (standard API) \u2014 <code>https:\/\/api.xiaomimimo.com\/v1<\/code> (default)<\/li>\n<li>Token Plan \u2014 China \u2014 <code>https:\/\/token-plan-cn.xiaomimimo.com\/v1<\/code><\/li>\n<li>Token Plan \u2014 Singapore \u2014 <code>https:\/\/token-plan-sgp.xiaomimimo.com\/v1<\/code><\/li>\n<li>Token Plan \u2014 Europe \u2014 <code>https:\/\/token-plan-ams.xiaomimimo.com\/v1<\/code><\/li>\n<\/ul>\n\n<p>Pick the standard API for a pay-as-you-go key, or the Token Plan cluster your subscription key was\nprovisioned for. The chosen host is used for the model list and for every generation request. It is\nstored per site, so each site on a multisite network configures its own. Only these four hosts can be\nselected: a value that is not one of them (written to the database directly, for example) falls back\nto the default.<\/p>\n\n<p><strong>Thinking mode<\/strong> \u2014 <code>Use the model default<\/code> (default), <code>Always enable thinking<\/code>, or <code>Disable thinking<\/code>.\nMiMo enables thinking by default; while it is on, the model forces its own <code>temperature<\/code>\/<code>top_p<\/code> and\nthe answer arrives as <code>reasoning_content<\/code> plus content. Disable it for cheaper, faster calls that\nhonour those parameters.<\/p>\n\n<p><strong>Structured output<\/strong> \u2014 <code>JSON mode (json_object)<\/code> (default) or <code>Send no response_format<\/code>. MiMo\nimplements OpenAI JSON mode only, not schema-constrained output; a feature that asks for a JSON\nschema is downgraded to <code>json_object<\/code>.<\/p>\n\n<p>There is also a <strong>Setup Token Plan<\/strong> link in the plugin's row on the Plugins screen that jumps\nstraight to this page.<\/p>\n\n<p>The admin screens are translatable; a translation template (<code>languages\/bestony-ai-provider.pot<\/code>) ships with the plugin.<\/p>\n\n<h3>Configuration<\/h3>\n\n<p>The API key is read, in order of precedence, from:<\/p>\n\n<ol>\n<li>The <code>XIAOMIMIMO_API_KEY<\/code> environment variable<\/li>\n<li>The <code>XIAOMIMIMO_API_KEY<\/code> PHP constant<\/li>\n<li>The <code>connectors_ai_xiaomimimo_api_key<\/code> option (Settings \u2192 Connectors)<\/li>\n<\/ol>\n\n<p>Each settings-page option is overridden by its environment variable, and the remaining behaviour is\ncontrolled by environment variables or PHP constants too:<\/p>\n\n<ul>\n<li><code>XIAOMIMIMO_DEFAULT_MODEL<\/code> \u2014 chat model to prefer in pickers and feature filters.\nDefault: <code>mimo-v2.6-pro<\/code>.<\/li>\n<li><code>XIAOMIMIMO_BASE_URL<\/code> \u2014 API base URL. Overrides the host chosen on Settings \u2192 AI Provider for\nXiaomi MiMo.<\/li>\n<li><code>XIAOMIMIMO_THINKING<\/code> \u2014 <code>default<\/code>, <code>enabled<\/code> or <code>disabled<\/code>. Overrides the Thinking mode setting.<\/li>\n<li><code>XIAOMIMIMO_STRUCTURED_OUTPUT<\/code> \u2014 <code>json_object<\/code> or <code>none<\/code>. Overrides the Structured output setting.<\/li>\n<li><code>XIAOMIMIMO_MODEL_INPUT_MODALITIES<\/code> \u2014 comma-separated list of modalities your models accept. Include\n  image (e.g. <code>text,image<\/code>) to declare vision for <strong>every<\/strong> chat model, for deployments ahead of\nthe built-in list.<\/li>\n<li><code>XIAOMIMIMO_REQUEST_TIMEOUT<\/code> \u2014 request timeout in seconds. Default: <code>120<\/code>.<\/li>\n<li><code>XIAOMIMIMO_CONNECT_TIMEOUT<\/code> \u2014 connection timeout in seconds. Default: <code>10<\/code>.<\/li>\n<\/ul>\n\n<p>Because the model list is cached by the AI Client, changing a setting or an environment variable does\nnot invalidate that cache. If a new value does not take effect immediately, clear the cache \u2014 in\nWP-CLI:<\/p>\n\n<pre><code>wp cache flush\nwp transient delete --all\n<\/code><\/pre>\n\n<p>To influence which models the AI plugin picks, use the standard filters in your own plugin or theme \u2014\nthis plugin already puts its preferred model first:<\/p>\n\n<pre><code>add_filter( 'wpai_preferred_text_models', function ( $models ) {\n    array_unshift( $models, array( 'xiaomimimo', 'mimo-v2.6-flash' ) );\n    return $models;\n} );&lt;h3&gt;External services&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>This plugin connects to the Xiaomi MiMo API, an external service operated by Xiaomi (\u5c0f\u7c73). It is\nrequired so the WordPress AI Client can send requests to MiMo models from your site. MiMo is a paid\nservice: requests are billed to your Xiaomi MiMo account, and an account with API access is required.<\/p>\n\n<p>The plugin contacts the following endpoints under the selected base URL \u2014 <code>https:\/\/api.xiaomimimo.com\/v1<\/code>\nby default, or whichever host is chosen on Settings \u2192 Bestony AI Provider for Xiaomi MiMo:<\/p>\n\n<ul>\n<li><code>GET \/models<\/code> \u2014 called when the AI Client refreshes its list of available models, and when it checks\nwhether your credentials work. No user content is sent; only your API key, so MiMo can return the\nmodels available to your account.<\/li>\n<li><code>POST \/chat\/completions<\/code> \u2014 called whenever any plugin or theme on your site uses the WordPress AI\nClient to generate text or to analyze an image. The request carries your API key and the prompt:\nmessages, system instruction, tool definitions, and any other parameters the calling code supplied\n(conversation history, a JSON schema for structured output, or images attached to the prompt).<\/li>\n<\/ul>\n\n<p>No request is made until something on your site asks the AI Client for a generation, or the AI Client\nrefreshes its model list. Your API key is stored on your own site and is only ever sent to the host\nconfigured above.<\/p>\n\n<p>This service is provided by Xiaomi:<\/p>\n\n<ul>\n<li>Platform and documentation: <a href=\"https:\/\/platform.xiaomimimo.com\/\">https:\/\/platform.xiaomimimo.com\/<\/a><\/li>\n<li>Documentation hub: <a href=\"https:\/\/mimo.mi.com\/docs\/\">https:\/\/mimo.mi.com\/docs\/<\/a><\/li>\n<li>Terms of Service: <a href=\"https:\/\/mimo.mi.com\/docs\/quick-start\/terms\/user-agreement\">https:\/\/mimo.mi.com\/docs\/quick-start\/terms\/user-agreement<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/mimo.mi.com\/docs\/quick-start\/terms\/privacy-policy\">https:\/\/mimo.mi.com\/docs\/quick-start\/terms\/privacy-policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/bestony-ai-provider\/<\/code>.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Go to Settings \u2192 Connectors, open the Xiaomi MiMo card and paste your API key \u2014 or define it\noutside the database (see Configuration).<\/li>\n<\/ol>\n\n<p>A Xiaomi MiMo account with API access is required. Create a key at\n<a href=\"https:\/\/platform.xiaomimimo.com\/console\/api-key\">https:\/\/platform.xiaomimimo.com\/console\/api-key<\/a>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20work%20without%20the%20php%20ai%20client%3F\"><h3>Does this plugin work without the PHP AI Client?<\/h3><\/dt>\n<dd><p>No. It requires the PHP AI Client SDK, which is provided by WordPress 7.0 or by the AI plugin. The\nprovider stays silent when the SDK is missing.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20configure%20anything%20in%20the%20database%3F\"><h3>Do I need to configure anything in the database?<\/h3><\/dt>\n<dd><p>The API key (on Settings \u2192 Connectors) and, if you change them from the defaults, the settings on\nSettings \u2192 Bestony AI Provider for Xiaomi MiMo. Both can instead be set with an environment variable or\nconstant.<\/p><\/dd>\n<dt id=\"why%20does%20the%20plugin%20require%20wordpress%207.0%3F\"><h3>Why does the plugin require WordPress 7.0?<\/h3><\/dt>\n<dd><p>Because the Connectors screen and the <code>connectors_ai_xiaomimimo_api_key<\/code> option are WordPress 7.0\nfeatures. The SDK's own credential lookup reads only environment variables and constants, so on 6.9\nyou could paste a key into a UI that does not exist yet. WordPress 7.0 wires the stored key to the\nprovider for you.<\/p><\/dd>\n<dt id=\"which%20api%20host%20should%20i%20choose%3F\"><h3>Which API host should I choose?<\/h3><\/dt>\n<dd><p>The standard API (<code>https:\/\/api.xiaomimimo.com\/v1<\/code>) for a pay-as-you-go key, which is billed against\nyour account balance. If you bought a Token Plan subscription, use the cluster that matches where the\nplan was issued \u2014 China, Singapore or Europe \u2014 because Token Plan keys and their quota are separate\nfrom pay-as-you-go keys.<\/p><\/dd>\n<dt id=\"which%20models%20can%20be%20used%20with%20vision%20features%3F\"><h3>Which models can be used with vision features?<\/h3><\/dt>\n<dd><p>mimo-v2.6-pro, <code>mimo-v2.6-flash<\/code>, <code>mimo-v2.6-pro-ultraspeed<\/code> and <code>mimo-v2.5<\/code>. The model list\nendpoint reports no capabilities, so this list lives in the plugin source. If your model supports\nimages but is not on the list, set <code>XIAOMIMIMO_MODEL_INPUT_MODALITIES=text,image<\/code>.<\/p><\/dd>\n<dt id=\"a%20json%20feature%20fails%20or%20returns%20nothing\"><h3>A JSON feature fails or returns nothing<\/h3><\/dt>\n<dd><p>MiMo implements OpenAI JSON mode only (<code>response_format: {\"type\":\"json_object\"}<\/code>) and rejects a JSON\nschema, so this plugin sends <code>json_object<\/code> and drops the schema. MiMo guarantees valid JSON but not\nthe exact fields, so the model relies on the prompt for the shape. Try setting Structured output to\n<strong>Send no response_format<\/strong> if a feature is unhappy, or point that feature at another provider.<\/p><\/dd>\n<dt id=\"why%20does%20temperature%20have%20no%20effect%3F\"><h3>Why does temperature have no effect?<\/h3><\/dt>\n<dd><p>MiMo forces its own <code>temperature<\/code>\/<code>top_p<\/code> while thinking is enabled, which is the default. Set\nThinking mode to <code>Disable thinking<\/code> (or <code>XIAOMIMIMO_THINKING=disabled<\/code>) to make those parameters\napply.<\/p><\/dd>\n<dt id=\"why%20is%20there%20no%20image%20generation%3F\"><h3>Why is there no image generation?<\/h3><\/dt>\n<dd><p>MiMo's open platform serves text\/multimodal-understanding and speech models, not text-to-image, so the\nplugin declares no image-generation capability.<\/p><\/dd>\n<dt id=\"why%20is%20there%20no%20speech%20%28asr%2Ftts%29%20support%3F\"><h3>Why is there no speech (ASR\/TTS) support?<\/h3><\/dt>\n<dd><p>The PHP AI Client exposes text, image, speech, video and embedding entry points, and the MiMo speech\nendpoints do not fit the shape the SDK sends. The ASR\/TTS models still appear in the model list, but\nwith no capability they cannot be selected.<\/p><\/dd>\n<dt id=\"where%20is%20my%20api%20key%20stored%3F\"><h3>Where is my API key stored?<\/h3><\/dt>\n<dd><p>In the WordPress options table on your own site, under the AI Client's connector option\n(<code>connectors_ai_xiaomimimo_api_key<\/code>), or in an environment variable or PHP constant if you set one. It\nis never transmitted anywhere except to the Xiaomi MiMo host configured above.<\/p><\/dd>\n<dt id=\"what%20data%20leaves%20my%20site%3F\"><h3>What data leaves my site?<\/h3><\/dt>\n<dd><p>Only what you send to the AI: your prompts, and whatever the calling plugin or theme adds to them\n(system instructions, conversation history, tool definitions, attached files). See External services\nbelow for the exact endpoints.<\/p><\/dd>\n<dt id=\"is%20there%20a%20settings%20page%3F\"><h3>Is there a settings page?<\/h3><\/dt>\n<dd><p>Yes: <strong>Settings \u2192 Bestony AI Provider for Xiaomi MiMo<\/strong>, which chooses the API host, the thinking mode and the\nstructured-output mode. The API key still lives on Settings \u2192 Connectors.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>WordPress.org plugin directory slug changed to <code>bestony-ai-provider<\/code>. Settings, API keys and environment variables are unchanged.<\/li>\n<li>Fixed GitHub Actions svn depth typo (<code>infinite<\/code> \u2192 <code>infinity<\/code>) in SVN deploy step.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>WordPress.org plugin directory slug changed to <code>bestony-ai-provider<\/code>. Settings, API keys and environment variables are unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Automated release pipeline with GitHub Actions: tag push triggers both GitHub Release and WordPress.org plugin directory publishing.<\/li>\n<\/ul>\n\n<h4>0.0.1<\/h4>\n\n<ul>\n<li>Initial release to WordPress.org plugin directory.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>The release zip no longer includes the <code>.wordpress-org<\/code> directory, which is only used for the\nWordPress.org plugin directory listing.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: text generation, chat history, tool calling, structured output (JSON mode) and\nvision input with Xiaomi MiMo (\u5c0f\u7c73 MiMo) models.<\/li>\n<li>A Settings \u2192 Bestony AI Provider for Xiaomi MiMo page to choose the API host (standard API or the China,\nSingapore and Europe Token Plan clusters), the thinking mode and the structured-output mode.<\/li>\n<\/ul>","raw_excerpt":"Xiaomi MiMo (\u5c0f\u7c73 MiMo) provider for the PHP AI Client: text and multimodal understanding with MiMo models.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/375169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=375169"}],"author":[{"embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bestony"}],"wp:attachment":[{"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=375169"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=375169"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=375169"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=375169"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=375169"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=375169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}