
Misc. bug: llama-cli or llama-server seem to have no way to save a transcript to a file
快速结论:该问题报告于 llama.cpp 的 GitHub Issue #25404,用户在使用 llama-cli 或 llama-server 交互式对话后,发现没有内置功能可以保存完整对话记录(transcript)到文件。当前版本(截至 Issue 关闭时)的 llama-cli 已支持 --output 命令行参数来保存输出,但该功能是在问题被报告之后才实现的(PR #25484);对于旧版本,可以使用 screen 配合 --simple-io 作为临时方案。
问题场景
用户运行 llama-cli 或 llama-server 与 LLM 交互(从 Hugging Face 下载 GGUF 模型),对话结束后希望将完整对话内容(包括用户输入和模型回复)保存到文件中,但找不到对应的命令行选项或交互指令(如 /save)。用户尝试使用 tee 重定向 stdout 也无效,因为交互输出未发送到 stdout。
报错原文
$ llama-cli -hf | tee chat.log
# 用户输入和 LLM 回复未写入 tee 的日志文件,因为交互内容未输出到 stdout
$ llama-cli --multiline-input --log-prompts-dir log -hf
# --log-prompts-dir 在 llama-cli 中不生效(目录存在但空文件,或目录未创建)
原因分析
- llama-cli 和 llama-server 在汇报该 Issue 时(2026-07 前)缺少直接保存对话记录的功能,是一个缺失特性(被标记为 bug-unconfirmed);
- 用户尝试的
--log-prompts-dir选项在 llama-cli 中存在但无效(仅在 llama-server 中部分工作,且只记录输入提示,不记录完整对话); - 该问题在 Issue 关闭前已由 PR #25484 修复(在 llama-cli 中新增
--output参数); - 使用
screen+--simple-io可作为一种临时的第三方解决方案,但会产生转义字符。
环境排查
- 确认 llama.cpp 版本(用户使用 9721 Debian 版本);
- 如果使用
--log-prompts-dir,确认该选项在当前版本是否可用(旧版本 llama-cli 不工作); - 确认是否使用了较新版本(2026-07 之后版本应包含
--output修复)。
解决步骤
- 第一步:检查版本是否已有
--output参数
运行llama-cli --help或llama-cli --version,查看版本号是否为 9721 之后(含 PR #25484 的版本)。如果支持,使用如下命令保存对话:
llama-cli --multiline-input -hf --output output.txt - 第二步:如果版本较旧且需要临时方案
使用screen工具录制会话,并配合--simple-io减少控制字符污染:
screen -L -Logfile ~/transcript.log
然后在 screen 中运行:
llama-cli --multiline-input --simple-io -hf
对话结束后退出 screen(Ctrl+A+D),日志文件包含文本内容(但可能仍有少量转义序列,可用col -b或sed清理)。 - 第三步(可优先尝试):升级 llama.cpp 到最新版本
从 GitHub 拉取最新源码并重新编译,以获得--output等新功能。编译后测试:
llama-cli --multiline-input -hf --output conversation.txt
验证方法
运行上述命令并完成一次对话后退出,检查输出文件是否存在、内容是否包含用户输入的提示和模型的完整回复(不包含加载时的进度条或控制转义序列)。例如使用 cat output.txt 或 less output.txt 查看文件内容是否可读。
参考来源
ggml-org/llama.cpp #25404 — Issue 原始讨论
PR #25484 — Add –output to llama-cli



