Unified LLM CLI for text, image, audio, and batch tasks
Project description
name: llmcmd description: Use when handling terminal-first LLM workflows for text generation, image generation, audio understanding via chat references, text-to-speech generation, video generation, YAML batch tasks, persistent chat sessions, or file-based prompt and reference inputs.
llmcmd
shellus-llmcmd 是一个统一的 LLM 命令行工具,入口命令是 llm。
本手册面向直接调用本项目的 Agent 或终端用户,覆盖当前可用能力、常见参数、配置方法与高频示例。
适用场景
在以下场景使用本技能:
- 需要把文本、图片、音频理解、文本转语音、视频能力统一接入 shell、脚本、自动化流程或 CI
- 需要读取本地文本、图片、文档、音频作为 prompt 或参考输入
- 需要用
chat --edit按要求直接修改文本文件 - 需要在终端里持久化会话并继续同一轮对话
- 需要通过 YAML 一次编排多条
chat / image / tts / video任务
安装
pip install shellus-llmcmd
安装后命令名是:
llm
能力概览
| 模式 | 用途 | 常用输入 | 常用输出 |
|---|---|---|---|
llm chat |
文本生成、分析、问答、改写、编辑文件、持久对话、音频理解、视频理解 | prompt、@文件、-r 附件、会话文件 |
stdout、文本文件、会话文件 |
llm agent |
启动 pi coding agent,并复用当前 chat 配置 |
prompt、--thinking、--session、--tools |
pi 交互会话 |
llm image |
图片生成、参考图编辑 | prompt、@文件、-r 附件 |
图片文件 |
llm tts |
文本转语音 | prompt、@文件、--voice |
wav 文件 |
llm video |
异步视频生成、恢复等待、自动下载 | prompt、首帧参考图、任务 ID | 视频文件 |
llm batch |
YAML 批量任务编排 | tasks.yaml |
输出目录内多个结果 |
常用输入规则
1. 直接写 prompt
llm chat "写一段产品介绍"
llm image "生成横版海报"
llm tts "请朗读这段欢迎词"
llm video "生成一段海边航拍视频"
2. 使用 @文件
@文件 会把文本文件内容直接读入 prompt,适合长提示词或模板化输入。
llm chat @prompt.txt -o result.md
llm image @prompt.md -o result.jpg
llm tts @script.txt -o speech.wav
3. 使用 -r/--reference
-r/--reference 用于提供参考输入。可传多次。
llm chat "总结这个附件的重点" -r report.pdf
llm chat "对比两张参考图后总结共同特征" -r photo-a.jpg -r photo-b.jpg
llm chat "请转写这段录音" -r meeting.mp3
llm chat "总结这个视频的关键情节" -r demo.mp4
llm image "融合两张参考图的风格生成图片" -r person.jpg -r style.jpg -o result.jpg
llm video "生成产品展示短片" -r first-frame.jpg --seconds 8 -o demo.mp4
补充规则:
chat中,图片参考会作为图片输入,文本类附件优先内联为文本,音频与视频附件按file发送image中,参考输入按文件附件处理video当前仅使用第一张参考图作为首帧参考
llm chat
用于文本生成、分析、问答、改写、结构化提取、文件编辑、持久化对话,以及音频理解、视频理解。
基本示例
llm chat "写一段产品介绍"
llm chat @prompt.txt -o result.md
llm chat "总结重点" -r article.md -r notes.pdf
llm chat "请转写这段录音并输出标准 SRT 字幕" -r demo.wav -o demo.srt
llm chat "总结这个视频的关键情节并列出时间线" -r demo.mp4
llm chat "根据参考图修正人物外貌描述" --edit prompt.md -r ref.jpg
文件编辑
chat --edit 会按要求修改目标文本文件。
llm chat "把人物脸型改成偏瘦,不要改动其他描述" --edit prompt.md
llm chat "按要求改写" --edit prompt.md -o prompt.v2.md
持久化会话
新增会话参数:
-s/--session:加载并持久化对话历史,值可为会话名或.jsonl路径-I/--interactive:进入交互式连续对话;默认仅保存在内存中,配合-s才会加载并持久化
示例:
llm chat "继续上一轮结论" -s worklog
llm chat -I
llm chat -I "你是什么模型?"
llm chat -I -s ./sessions/product-review.jsonl
说明:
--provider可临时覆盖当前 chat 模式使用的 provider--model与--provider同时使用时,会优先在该 provider 下解析模型别名;未命中时直接按原始模型名发送-s product-review会写到当前目录下的product-review.jsonl- 单次模式和
-I -s ...交互模式可共享同一个会话文件 llm chat -I "首轮问题"会先发送首轮消息,再进入连续对话-I模式下只有配合-s才会回放历史并持续写回;不带-s时为纯内存会话- 当前持久会话聚焦连续文本对话,不与
-r/--edit组合 chat -s ... --system ...与chat -I -s ... --system ...会把 system prompt 写入会话历史;再次带--system启动同一会话时,只覆盖会话开头连续的 system 消息audio子命令已删除;音频理解与视频理解附件统一使用llm chat -r
交互式内置命令:
/clear:清空当前会话/model <name>:切换当前模型,并写回~/.llm/.env中的CHAT_MODEL/save <name-or-path>:将当前会话保存到指定文件
交互细节:
- 基于
Textual全屏 TUI Enter发送Shift+Enter或Ctrl+J换行- 如需终端原生鼠标拖选复制历史消息,需按住终端模拟器修饰键;当前环境实测为按住
Shift
输出行为
- 非交互
chat会实时把流式文本写到 stdout - 若
chat使用图片模型并返回图片,会自动写入文件并显示图片路径
llm agent
用于启动外部 pi coding agent,并复用当前 llmcmd 的 chat 模型、BASE_URL 与 API_KEY 配置。
基本示例
llm agent
llm agent "审查当前仓库里最危险的改动"
llm agent --model qwen3-coder --thinking high
llm agent --session ./pi-session.jsonl --tools read,grep,find,ls
说明
--provider可临时覆盖当前 agent 复用的 chat provider--model与--provider同时使用时,会优先在该 provider 下解析模型别名;未命中时直接按原始模型名发送- 这是独立入口,不替换现有
chat -I - 运行时会在
~/.llm/pi-agent/下生成pi所需的models.json models.json只写base_url与 API key 的环境变量名,真实 key 通过子进程环境变量注入agent当前使用chat模式配置作为上游来源--thinking会透传给pi;当值不是off时,默认把该模型标记为 reasoning--pi-bin可指定pi可执行文件路径--session、--session-dir、--no-session、--tools、--no-tools会原样透传给pi
llm image
用于图片生成或参考图编辑,支持多图生成。
基本示例
llm image "生成三张海报方案" -n 3 -o poster.jpg
llm image "融合两张参考图的风格生成情侣自拍" -r person.jpg -r style.jpg -o couple.jpg
llm image @prompt.md -r ref.jpg -o output.jpg
llm image @prompts/couple-photo.md -r refs/person-a.jpg -r refs/person-b.jpg -o outputs/couple-photo/result.jpg -n 4
llm image "生成横版海报" --size 2K --aspect 16:9 -o banner.jpg
输出结果示例:
poster.jpgposter_1.jpgposter_2.jpg
常用参数
-n/--count:生成数量--provider:临时覆盖当前 image 模式使用的 provider--model:临时覆盖当前 image 模式使用的模型--size:支持512 / 1K / 2K / 4K--aspect:支持1:1 / 16:9 / 9:16 / 4:3 / 3:4 / 3:2 / 2:3 / 4:5 / 5:4 / 21:9
说明:
--size和--aspect的实际生效情况取决于图片后端-r/--reference用于提供参考图片或文件- 图片模型协议选择见
README.md的llm image小节 --provider与--model同时使用时,会优先在该 provider 下解析模型别名;未命中时直接按原始模型名发送
Agent 判断规则:
- 图片生成或编辑优先使用
llm image - 图片理解、描述、转写或分析使用
llm chat -r - 只返回文字时,先检查模型能力、
protocol与网关 endpoint 渠道
llm tts
用于文本转语音,输出 wav 文件。
基本示例
llm tts "请用温和语气朗读这段话" -o demo.wav
llm tts @prompt.txt --voice Kore -o demo.wav
说明:
--provider可临时覆盖当前 tts 模式使用的 provider--model与--provider同时使用时,会优先在该 provider 下解析模型别名;未命中时直接按原始模型名发送--voice用于指定 Gemini 预置音色名,例如Kore- 当前通过 Gemini 原生
generateContent返回音频 PCM,再封装为 wav
llm video
用于异步视频生成。默认会创建任务、等待完成并自动下载,也支持按任务 ID 恢复等待并下载。
基本示例
llm video "生成一段海边航拍视频"
llm video "生成产品展示短片" -r first-frame.jpg --seconds 8 --size 720x1280 -o demo.mp4
llm video --resume vid_123 -o demo.mp4
说明:
--provider可临时覆盖当前 video 模式使用的 provider--model与--provider同时使用时,会优先在该 provider 下解析模型别名;未命中时直接按原始模型名发送video默认先创建异步任务,再持续等待完成并自动下载- 创建成功后会先打印任务 ID,便于中断后用
--resume恢复 -r/--reference当前仅取第一张图作为input_reference- 下载固定走
GET /v1/videos/{id}/content
常用参数:
--seconds:支持4 / 8 / 12 / 16 / 20--size:当前支持720x1280 / 1280x720 / 1024x1024
llm batch
用于 YAML 批量任务编排。
基本示例
llm batch tasks.yaml
说明:
--provider可统一覆盖 batch 内各任务默认使用的 provider
示例:
mode: chat
concurrency: 4
output_dir: outputs
tasks:
- prompt: "总结下面内容"
input: article.md
output: summary.md
- mode: image
prompt: "为产品主页生成三张极简横幅图"
count: 3
aspect: "16:9"
output: hero.jpg
完整可复制模板见:examples/batch/full-template.yaml
说明:
- batch YAML 内的相对路径按当前工作目录解析,而不是按 YAML 文件所在目录解析
- 顶层
mode可为任务提供默认模式 - 顶层
concurrency控制 batch 内 task 级并发 - 单个任务可通过
mode覆盖默认值 - 如果定义了
output,始终以output为准 - 图片、语音、视频任务未定义
output时,会按任务序号自动命名为image-1.jpg、tts-2.wav、video-3.mp4 aspect建议写成带引号的字符串,例如"16:9",避免 YAML 误解析
配置
配置专题的唯一事实来源是 CONFIGURATION.md。Agent 处理配置相关任务时,应优先读取该文件,再执行命令或修改配置。
默认配置文件:
~/.llm/.env
~/.llm/config.yaml
核心概念:
| 概念 | 含义 | Agent 处理要点 |
|---|---|---|
mode |
CLI 任务类型 | 对应 chat / image / tts / video / batch 等命令入口 |
provider |
上游服务或兼容网关 | 决定 base_url 与 api_key |
model |
发给上游的模型名 | --model 可能同时切换 provider |
protocol |
请求协议 | 完整可选值和解释见 CONFIGURATION.md |
reference_transport |
参考文件预上传配置 | 视频或部分网关链路常用 |
常用运行时覆盖:
CHAT_MODEL=gpt-5.4 llm chat "用更强模型重写这段文案"
IMAGE_MODEL=gpt-image-1 llm image "生成一张横版海报" -o banner.jpg
TTS_MODEL=gemini-3.1-flash-tts-preview llm tts "请朗读一句欢迎词" -o welcome.wav
BASE_URL=https://gateway.example.com/v1 API_KEY=sk-test CHAT_MODEL=gpt-5.4 llm chat "输出一句自检文本"
配置排查顺序:
- 检查
~/.llm/config.yaml是否存在且为合法 YAML。 - 检查
${ENV_NAME}是否能在当前环境或~/.llm/.env中展开。 - 检查最终 provider 是否有
base_url与api_key。 - 检查
--model是否命中 alias 或模型名,并确认是否切换了 provider。 - 检查
protocol是否属于CONFIGURATION.md中列出的可选值,并确认是否适用于当前 mode。 - 图片任务只返回文字时,优先确认模型是否具备图片生成能力;
llm image不等于任意模型都会返回图片。
最小配置示例:
default_provider: openai
concurrency: 4
modes:
chat:
provider: openai
model: gpt-4.1
image:
provider: openai
model: gpt-image-1
tts:
provider: gemini
model: gemini-3.1-flash-tts-preview
video:
provider: reverse-video
model: sora_t2v_turbo
providers:
openai:
base_url: https://api.openai.com/v1
api_key: ${OPENAI_API_KEY}
models:
gpt-4.1:
type: chat
gpt-image-1:
type: image
protocol: openai-images
gpt-image-2:
type: image
protocol: openai-responses
gemini:
base_url: https://generativelanguage.googleapis.com
api_key: ${OPENAI_API_KEY}
models:
gemini-3-pro-image-preview:
type: image
protocol: gemini-generate-content
gemini-3.1-flash-tts-preview:
type: tts
protocol: gemini-generate-content
reverse-video:
base_url: https://your-newapi.example.com/v1
api_key: ${REVERSE_VIDEO_KEY}
models:
sora_t2v_turbo:
type: video
protocol: unified-video
完整字段说明、protocol 表格、优先级、alias 解析和 reference_transport 配置见 CONFIGURATION.md。
常见工作流
1. 总结文档
llm chat "总结下面内容" -r article.md -o summary.md
2. 基于参考图修正文案
llm chat "根据参考图修正人物外貌描述" --edit prompt.md -r ref.jpg
3. 生成多张图片方案
llm image "生成三张海报方案" -n 3 -o poster.jpg
4. 转写录音并输出字幕
llm chat "请输出标准 SRT 字幕" -r demo.wav -o demo.srt
5. 生成配音音频
llm tts "请朗读这段欢迎词" --voice Kore -o welcome.wav
6. 创建并恢复视频任务
llm video "生成产品展示短片" -r first-frame.jpg --seconds 8 -o demo.mp4
llm video --resume vid_123 -o demo.mp4
7. 继续同一轮对话
llm chat "继续上次方案" -s worklog
llm chat -I -s worklog
常见错误
- 把长文本直接硬编码到命令里,而不是用
@文件 - 需要多轮对话却没用
-s,导致上下文无法复用 - 在 YAML 里把
aspect写成未加引号的16:9,被 YAML 误解析 - 期待字幕输出,但 prompt 没明确要求字幕格式
- 在
llm image中使用只支持理解或文本输出的模型,导致响应只有文字说明而没有图片 - 忘记
video是异步任务,未记录任务 ID - 把域名、密钥、账号写进版本控制文件,而不是放进
.env
包信息
- PyPI 包名:
shellus-llmcmd - CLI 命令名:
llm - Python 要求:
>=3.10
相关文档
- 项目主文档:
README.md - 配置说明:
CONFIGURATION.md - 开发参考:
DEVELOPING.md
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shellus_llmcmd-1.3.1.tar.gz.
File metadata
- Download URL: shellus_llmcmd-1.3.1.tar.gz
- Upload date:
- Size: 93.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d09e16f4bb94d318ab8a3101805b5ed0c006cf6fe7423f50015b98724791bed
|
|
| MD5 |
afeb7a7ce3c5521acf6831652103db26
|
|
| BLAKE2b-256 |
9224d941595e1b1c1ed11272974450e82890ca6061ec3f2db42fdcf23ecba71d
|
File details
Details for the file shellus_llmcmd-1.3.1-py3-none-any.whl.
File metadata
- Download URL: shellus_llmcmd-1.3.1-py3-none-any.whl
- Upload date:
- Size: 49.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8642d3b79a8e4cfa67d508ed6d9e4460f4bb5daed1101a8c43dfbcd61eaf0da7
|
|
| MD5 |
b9f25e3320f74fa650a7a86602927491
|
|
| BLAKE2b-256 |
87e81558ef560bde436f589eaed6f05ccca12a17c4a7b2ce93ee36e18ea0de0b
|