Midjourney 命令以斜杠开头,参数是写在提示词末尾的两个连字符后缀。两者分属两篇官方文档、干的是两件事,但多数速查表把它们并成一张表,于是读者会在该写 /imagine 的地方填上 --ar

下面这份清单来自官方 Discord Command List。这页文档没写的地方——它没有给出任何命令的字段表——本文就写「官方未公布」,而不是补一份看起来合理的参数说明。

命令是什么,以及它不是什么

斜杠命令是你和机器人说话的方式。官方 Quick Start 用一句话说清了整个循环:「After submitting a text prompt, the Midjourney Bot processes your request, creating four unique image options within a minute.」

参数改的是单次出图的行为。这个分工值得记住,因为两者的出错方式不一样:命令名写错会在消息框里直接报错,参数写错则安静地产出一张不对的图。Midjourney 提示词指南写的是参数那一半,Midjourney API 接入指南解释了为什么这两个界面都无法从代码里调用。

前置条件是订阅,第二条是接受服务条款。

官方公布的完整命令清单

左侧聊天侧栏面板里是一列空白命令胶囊,右侧是两行两列的图片缩略图网格
本站自绘示意图,非官方示例 AI Tool Blog

下面是官方 Full Command List 按页面原有顺序的全文,共二十八条现行命令。

命令官方清单里的说明
/ask提问
/blend把图片混合起来
/daily_theme开关 #daily-theme 提醒
/describe从上传图反写四条提示词
/docs仅官方服务器:文档链接
/fast切到 Fast 模式
/feedback提交建议并给别人的建议打分
/faq仅官方服务器:提示词常见问题
/help基本信息与技巧
/imagine用提示词生成图片
/info账户信息与队列中的任务
/invite服务器邀请链接
/list_tuners列出你建过的 Style Tuner
/prefer option set创建或管理一个自定义选项
/prefer option list查看你现有的自定义选项
/prefer remix开关 Remix 模式
/prefer suffix给每条提示词加后缀
/prefer variabilityV# 按钮的强/弱变体
/public仅 Pro 与 Mega:切到公开模式
/relax切到 Relax 模式
/settings查看与调整机器人设置
/stealth仅 Pro 与 Mega:切到隐身模式
/shorten给出让提示词更简短的改法
/show用图片 Job ID 重新生成该任务
/subscribe生成账户页的私人链接
/synonyms仅官方服务器:找相关词
/turbo切到 Turbo 模式
/userid取你的 Midjourney 用户 ID

同一页上还有三个名字被标为 deprecated:/private 已被 /stealth 取代,/pixels/idea 没有替代者。

/imagine 的官方五步

Quick Start 把流程拆成五步,这五步对每条命令都适用。在消息框里输入 /。继续打字把弹出列表缩小,方式跟搜索框一样。点中命令,它会带着 Midjourney 图标出现在输入框里。填它给出的字段。回车或点发送。

出图之后那两排按钮是干什么的

官方纠正了一个旧说法:「In earlier versions of Midjourney, the U buttons were used for upscaling images. With the latest version, images are immediately generated at 1024 x 1024 pixels size.」现在的 U 按钮只负责把选中的那张从四宫格里单独拎出来,方便下载和继续编辑。

V1V4 出来的变体会保留原图的大致风格与构图,重滚按钮则用同一条提示词再跑一遍四宫格。把一张图单独拎出来之后,会多出一整排:Vary (Strong)、Vary (Subtle)、三个 Zoom Out、四个平移按钮。

可以用命令改的设置

/settings 与它的四档 stylize

/settings 打开的面板只有你自己看得见,即使在公开频道里也一样,而且它和网页端同步:「Your website and Discord settings are synced.」面板里四档 stylize 都带官方数字——Low 50、Med 100(默认)、High 250、Very High 750——旁边还有默认模型版本、RAW 模式、个性化、隐身模式和 GPU 速度模式。

option set 与后缀

option set 作用是把一组参数藏在一个名字后面。官方的例子建了一个叫 mine 的 set,之后 vibrant California poppies --mine 就等同于把整串参数写全。跨端使用时有一条细节要记:「Option sets can be used in prompts on midjourney.com, but can only be created and managed in Discord.」/prefer suffix 管的是每条提示词的后缀,删掉它的办法是把命令再发一次、不填值。

Fast、Relax、Turbo

三条命令切换 GPU 池。/fast 花的是套餐里的计时额度,/turbo 用双倍 Fast 时间换速度,/relax 不花额度但要排队,而且不是每个套餐都有:「Basic plan subscribers do not have access to Relax Mode.」这笔额度到底能跑多少张,Midjourney 价格指南里算过。

两段离线校验代码

两段脚本都不联网,因为本来就没有可调的 API。第一段把官方命令清单当成数据,遇到不在表里的名字就报错;它跑在 macOS 自带的 bash 3.2 上,所以没有用关联数组。

#!/usr/bin/env bash
# Offline check of a Midjourney slash command against the published list.
# Names and groups are transcribed from the official Discord Command List.
set -uo pipefail

read -r -d '' LIST <<'DATA' || true
/imagine generate
/blend generate
/describe generate
/shorten generate
/ask help
/help help
/feedback help
/info account
/subscribe account
/userid account
/invite account
/settings settings
/prefer remix settings
/prefer suffix settings
/prefer variability settings
/prefer option set settings
/prefer option list settings
/fast speed
/relax speed
/turbo speed
/public plans
/stealth plans
/daily_theme channels
/list_tuners tuners
/show jobs
/faq server-only
/docs server-only
/synonyms server-only
DATA

if (( $# != 1 )); then
  echo "usage: $0 /command" >&2
  exit 2
fi

name="$1"
[[ "$name" == /* ]] || { echo "rejected: commands start with a slash" >&2; exit 1; }

case "$name" in
  /private) echo "rejected: /private is deprecated, replaced by /stealth" >&2; exit 1 ;;
  /pixels | /idea) echo "rejected: $name is deprecated with no replacement" >&2; exit 1 ;;
esac

group=$(printf '%s\n' "$LIST" | awk -v want="$name" '$1 == want { print $2 }')
if [[ -z "$group" ]]; then
  echo "rejected: $name is not on the official command list" >&2
  exit 1
fi

echo "accepted: $name (group: $group)"
printf '%s\n' "$LIST" | awk '{ print $1 }' | sort

/pixels 跑一次,它会报出替代者。

第二段把一行命令拆成提示词与参数两部分。参数页公布了三条格式规则,脚本要校验的就是这三条:参数放在提示词末尾、提示词与第一个双连字符之间留一个空格、参数内部不要出现标点。

"""Split a Midjourney command line into prompt and parameters, per the docs."""

COMMANDS = {
    "/ask", "/blend", "/daily_theme", "/describe", "/docs", "/fast",
    "/feedback", "/faq", "/help", "/imagine", "/info", "/invite",
    "/list_tuners", "/prefer option set", "/prefer option list",
    "/prefer remix", "/prefer suffix", "/prefer variability",
    "/public", "/relax", "/settings", "/stealth", "/shorten", "/show",
    "/subscribe", "/synonyms", "/turbo", "/userid",
}
DEPRECATED = {"/private": "/stealth", "/pixels": "", "/idea": ""}

# Commands whose entry on the official list carries a qualifier.
SERVER_ONLY = {"/docs", "/faq", "/synonyms"}
PRO_OR_MEGA = {"/public", "/stealth"}


def parse(line: str) -> tuple[str, str, dict[str, str]]:
    """Return (command, prompt, parameters). Raises ValueError on a rule break."""
    if not line.startswith("/"):
        raise ValueError("a command line starts with a slash")
    head, _, rest = line.partition(" ")
    if head in DEPRECATED:
        replacement = DEPRECATED[head]
        raise ValueError(f"{head} is deprecated" + (f", use {replacement}" if replacement else ""))
    if head not in COMMANDS:
        raise ValueError(f"{head} is not on the official command list")

    if " --" not in rest:
        # A prompt with no parameters is valid; a prompt glued to one is not.
        if "--" in rest:
            raise ValueError("a space must separate the prompt from the first --")
        return head, rest.strip(), {}

    prompt, _, tail = rest.partition(" --")
    tokens = ("--" + tail).split()
    if len(tokens) % 2:
        raise ValueError("every parameter needs a value")
    parameters: dict[str, str] = {}
    for flag, value in zip(tokens[::2], tokens[1::2]):
        if any(character in value for character in ",;"):
            raise ValueError(f"{flag}: no punctuation inside a parameter")
        parameters[flag] = value
    return head, prompt.strip(), parameters


print(parse("/imagine a harbour at dawn --ar 16:9 --stylize 250"))
print("server-only:", sorted(SERVER_ONLY), "plan-gated:", sorted(PRO_OR_MEGA))
for bad in ("/imagine a harbour --ar 16:9,", "/imagine a harbour--ar 16:9", "/pixels", "/imagen"):
    try:
        parse(bad)
    except ValueError as error:
        print("rejected:", error)

脚本不去猜 --stylize--chaos 的取值区间,因为参数页根本没公布——Midjourney 风格参考指南--sw 用的是同一条纪律。

命令文档没有公布的东西

  • 任何一条命令的字段结构:字段名、哪些必填、哪些可以给多个值。
  • 命令调用的速率限制、并发上限与超时。
  • /ask 背后跑的是什么,回答范围到哪。
  • /shorten 用的算法,以及它压缩到什么目标。
  • 一个账户最多能建几个 option set,命名有什么规则。
  • /info 输出里每个字段的含义。

常见问题

只有 /imagine 会生成图片吗? 在清单里,只有它的说明是生成图片。/blend 混合你上传的图,/describe 是从图反写提示词。

哪些命令受套餐限制? /public/stealth 需要 Pro 或 Mega,Relax 模式在 Basic 上也用不了。

这些命令能自动化调用吗? 服务条款禁止用自动化工具访问或与服务交互,API 接入指南引了原文。更稳的做法是把命令清单和格式规则放进测试套件里。