docs(cli): show option default values in --help
Qt does not print default values in --help output; the default passed to the option constructor is only a fallback for value(). Append them to the descriptions instead, via one shared helper used by both programs. Qt 不会把默认值印进 --help(构造参数里的默认值只作为 value() 的兜底), 改为在说明后拼上「(默认 X)」;两个程序共用同一处定义,并统一了措辞。
This commit is contained in:
1 parent
736ec14d5b
commit
7e5257429a
2 files changed
+30
-15
No files matched your search
+27
-12
@@ -12,24 +12,39 @@
|
|||||||
// 两个可执行程序(GUI / CLI)共用的命令行选项定义与解析。
|
// 两个可执行程序(GUI / CLI)共用的命令行选项定义与解析。
|
||||||
namespace lc::app {
|
namespace lc::app {
|
||||||
|
|
||||||
|
// 构造命令行选项。
|
||||||
|
//
|
||||||
|
// Qt 自己不会把默认值印进 --help(构造函数里传的默认值只作为 value() 的兜底),
|
||||||
|
// 所以这里在给了默认值时把「(默认 X)」拼到说明后面。
|
||||||
|
inline QCommandLineOption makeOption(const QString & name, const QString & description,
|
||||||
|
const QString & valueName = QString(),
|
||||||
|
const QString & defaultValue = QString())
|
||||||
|
{
|
||||||
|
QString desc = description;
|
||||||
|
if (!defaultValue.isEmpty()) {
|
||||||
|
desc += QStringLiteral("(默认 %1)").arg(defaultValue);
|
||||||
|
}
|
||||||
|
if (valueName.isEmpty()) return QCommandLineOption(name, desc);
|
||||||
|
return QCommandLineOption(name, desc, valueName, defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
inline void addModelOptions(QCommandLineParser & p)
|
inline void addModelOptions(QCommandLineParser & p)
|
||||||
{
|
{
|
||||||
p.addOption(QCommandLineOption("model", "主模型 GGUF 路径(架构须为 qwen3vl)", "path"));
|
p.addOption(makeOption("model", "主模型 GGUF 路径(架构须为 qwen3vl)", "path"));
|
||||||
p.addOption(QCommandLineOption("mmproj", "mmproj GGUF 路径(clip + qwen3a)", "path"));
|
p.addOption(makeOption("mmproj", "mmproj GGUF 路径(clip + qwen3a)", "path"));
|
||||||
p.addOption(QCommandLineOption("threads", "推理线程数", "n", "8"));
|
p.addOption(makeOption("threads", "推理线程数", "n", "8"));
|
||||||
p.addOption(QCommandLineOption("max-tokens", "单段最多生成 token 数", "n", "256"));
|
p.addOption(makeOption("max-tokens", "单段最多生成 token 数", "n", "256"));
|
||||||
p.addOption(QCommandLineOption("verbose", "输出 llama.cpp/mtmd 的详细日志"));
|
p.addOption(makeOption("verbose", "输出 llama.cpp/mtmd 的详细日志"));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void addStreamOptions(QCommandLineParser & p)
|
inline void addStreamOptions(QCommandLineParser & p)
|
||||||
{
|
{
|
||||||
p.addOption(QCommandLineOption("stream-chunk", "流式 chunk 秒数", "sec", "2.0"));
|
p.addOption(makeOption("stream-chunk", "流式 chunk / 提交粒度,单位秒", "sec", "2.0"));
|
||||||
p.addOption(QCommandLineOption("stream-window", "滑窗上限秒数(仅 window 模式)", "sec", "16"));
|
p.addOption(makeOption("stream-window", "滑窗上限,单位秒;仅 window 模式,0=不滑窗", "sec", "16"));
|
||||||
p.addOption(QCommandLineOption("stream-segment", "单段最长秒数(0=不限)", "sec", "30"));
|
p.addOption(makeOption("stream-segment", "单段最长时长,单位秒;0=不限", "sec", "30"));
|
||||||
p.addOption(QCommandLineOption("unfixed-tokens", "前缀回滚丢弃的 token 数", "n", "5"));
|
p.addOption(makeOption("unfixed-tokens", "前缀回滚丢弃的 token 数", "n", "5"));
|
||||||
p.addOption(QCommandLineOption("unfixed-chunks", "冷启动不带前缀的 chunk 数", "n", "2"));
|
p.addOption(makeOption("unfixed-chunks", "冷启动不带前缀的 chunk 数", "n", "2"));
|
||||||
p.addOption(QCommandLineOption("stream-mode", "流式后端: incremental 或 window", "mode",
|
p.addOption(makeOption("stream-mode", "流式后端: incremental 或 window", "mode", "incremental"));
|
||||||
"incremental"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline AsrOptions asrOptions(const QCommandLineParser & p)
|
inline AsrOptions asrOptions(const QCommandLineParser & p)
|
||||||
|
|||||||
+3
-3
@@ -84,9 +84,9 @@ int main(int argc, char ** argv)
|
|||||||
parser.addHelpOption();
|
parser.addHelpOption();
|
||||||
lc::app::addModelOptions(parser);
|
lc::app::addModelOptions(parser);
|
||||||
lc::app::addStreamOptions(parser);
|
lc::app::addStreamOptions(parser);
|
||||||
parser.addOption(QCommandLineOption("opacity", "字幕背景不透明度(20-100,百分比)", "n", "84"));
|
parser.addOption(lc::app::makeOption("opacity", "字幕背景不透明度,取值 20-100", "n", "84"));
|
||||||
parser.addOption(QCommandLineOption("screenshot", "启动后自动截图并退出(验证渲染用)", "path"));
|
parser.addOption(lc::app::makeOption("screenshot", "启动后自动截图并退出(验证渲染用)", "path"));
|
||||||
parser.addOption(QCommandLineOption("screenshot-delay", "截图前等待秒数", "sec", "6"));
|
parser.addOption(lc::app::makeOption("screenshot-delay", "截图前等待秒数", "sec", "6"));
|
||||||
parser.process(app);
|
parser.process(app);
|
||||||
|
|
||||||
const lc::AsrOptions asrOpt = lc::app::asrOptions(parser);
|
const lc::AsrOptions asrOpt = lc::app::asrOptions(parser);
|
||||||
|
|||||||
Reference in new issue
Block a user