配置
~/.dsh/qialike.json、环境变量、主题与颜色档位,以及帧重绘与同步输出。
qialike 的配置分成两层:
~/.dsh/qialike.json—— qialike 自己的少量设置。~/.dsh/settings.yaml—— harness 的设置节,例如qialike-llm:与qialike-theme:。
此外还有一批环境变量用于覆盖或调试。
~/.dsh/qialike.json
$DSH_HOME 默认是 ~/.dsh,配置文件是其中的 qialike.json:
{ "resume_last": false, "sidebar_mode": "auto", "hidden_providers": []}| 字段 | 取值 | 说明 |
|---|---|---|
resume_last | true / false(默认 false) | 启动时是否自动续接当前目录最近会话。默认 false,即每次全新开始。 |
sidebar_mode | "auto" / "on" / "off"(默认 "auto") | 右侧 Steps 面板的显隐。auto 跟随终端宽度(≥110 列显示)。 |
hidden_providers | 字符串数组 | 从 /models 一级列表隐藏的供应商路由。由 Ctrl+D 维护。 |
写入是原子替换且尽力而为:home 目录不可写时不会让 TUI 崩溃。
~/.dsh/settings.yaml:qialike-update.auto
自动更新策略不在 qialike.json 里(那个文件只有 resume_last、sidebar_mode、hidden_providers)。更新开关由 harness 的 settings 服务注册,落在 ~/.dsh/settings.yaml 的 qialike-update 命名空间:
qialike-update: auto: true # true(默认,静默安装补丁版)/ false(完全不检查)/ "notify"(只提示)两个环境变量可覆盖它:QIALIKE_DISABLE_AUTOUPDATE=1 全局关闭,QIALIKE_ALWAYS_NOTIFY_UPDATE=1 强制只提示。细节见 更新。
环境变量
| 变量 | 作用 |
|---|---|
QIALIKE_RESUME_LAST | 覆盖 resume_last(1/true/yes/on 与 0/false/no/off)。被设置时也会写回配置文件。 |
QIALIKE_COLOR | 强制颜色档位:24bit(或 truecolor)、256、16。 |
QIALIKE_NO_SYNC | 设为 1 时关闭同步输出,写普通帧(终端处理 ESC[?2026h/l 不当时使用)。 |
QIALIKE_SPLASH_MS | 启动 splash 行的延迟毫秒数;负值强制立刻显示(诊断用)。 |
QIALIKE_DSH | qialike web 转发时使用的 dsh CLI 路径。 |
QIALIKE_NO_PROJECT_OVERLAY | 设为 1 时本次启动忽略仓库级 overlay。 |
BUN_JSC_collectContinuously | 设为 1 时更积极地回收内存(见下)。 |
COLORTERM | 终端色深信号;设为 truecolor 才会被识别为 24 位。 |
DEEPSEEK_API_KEY | DeepSeek 官方端点的 key(需在 /models 里选择该提供商)。 |
DSH_HOME | harness home 目录,默认 ~/.dsh。注意二进制安装目录固定为 ~/.dsh/bin,刻意不跟随 $DSH_HOME。 |
QIALIKE_DISABLE_AUTOUPDATE | 设为 1 时全局关闭自动更新检查。 |
QIALIKE_ALWAYS_NOTIFY_UPDATE | 设为 1 时强制只提示、从不自动安装。 |
DSH_TELEMETRY_MODE | 设为 DISABLED 关闭 harness 的反馈门控遥测。 |
DSH_TELEMETRY_DISABLED | 设为任意非空值(含 0)同样关闭遥测。 |
主题与颜色档位
主题色是 hex,交给 Ink/chalk 输出,而 chalk 从环境变量判断终端能显示多少色。
- 24 位:
COLORTERM=truecolor,或TERM=xterm-kitty。 - 256 色:
TERM匹配256color/truecolor。 - 16 色:以上都不满足时的兜底。
需要注意的实现细节:COLORTERM=24bit 不会被当作 24 位(只认精确的 truecolor)。Ubuntu 24.04 上的 GNOME Terminal / VTE 支持 24 位却不导出 COLORTERM,于是 chalk 落到 256 色档;qialike 在该档自己接管调色板映射,保证页面、浮起面板与输入卡片三者颜色互不相同。
若你的终端确实是 24 位、想要原始 hex:
export COLORTERM=truecolor # 标准信号,所有工具都认QIALIKE_COLOR=24bit qialike # 或只对这一次运行生效QIALIKE_COLOR 也接受 256 与 16,可用来预览低色终端下的效果。16 色档下深色皮肤的卡片与页面都是黑——调色板里没有第二个近黑色可选,属于设计上的降级。
配色方案
内置 16 套方案(dark、light、one-dark,以及 13 套经典皮肤),全部为 MIT / 宽松许可。用户方案放在 ~/.dsh/themes/*.json。
/theme # 打开主题选择对话框(移动即实时预览)/theme dark # 直接切换(支持唯一前缀,如 /theme d)/theme <role> <hex> # 覆盖单个角色的颜色选择持久化在 ~/.dsh/settings.yaml 的 qialike-theme: 节:
qialike-theme: colorscheme: dark方案的 bg 会作为全屏背景层涂色;切换 dark / light 时整屏底色与字色都会随之变化,而不只是边框和文字。
帧重绘与同步输出
每一帧都先隐藏硬件光标再绘制,帧尾再把 caret 的形状与位置放回——因此光标不会被可见地拖着扫过重绘涉及的行。
每一帧同时被终端的同步输出模式括起来(ESC[?2026h … ESC[?2026l)。一帧是整宽重绘(打开命令面板实测 120×30 下约 5.5 KB、240×30 下约 7.4 KB),而 pty 会把超过约 4095 字节行规程缓冲的写入分成多次交给终端;没有这个模式时,半绘制的帧会短暂可见(输入卡片的边框 / 状态行从弹层里透出来)。
不认这个模式的终端会忽略它。若某个终端处理不当:
QIALIKE_NO_SYNC=1 qialike内存与 GC
运行时是 Bun/JSC,不会及时把已释放页面还给系统,因此 RSS 随使用缓慢上升后趋于平台——这是 GC 策略,不是泄漏。内存紧张时的官方缓解手段是:
BUN_JSC_collectContinuously=1 qialike同一负载下开启该变量实测 RSS 不升反降,代价是 GC 更频繁。内存数字见 快速开始。
模型 provider 设置节
通过 /models 的 Add-provider 表单配置的 provider 会写进 ~/.dsh/settings.yaml 的 qialike-llm: 节:
qialike-llm: providers: <route>: displayName: 显示名 api: openai-completions baseURL: https://example.com/v1 apiKeyEnv: EXAMPLE_API_KEY models: - id: some-model name: Some ModelAPI key 本体不写在这里,而是经 credentials 服务存到 ~/.dsh/.credentials.yaml(环境变量优先并遮蔽 store)。详见 模型。
数据与责任
以下是 qialike 无法替你决定、但你应该知道的数据流向。
- 发给你选定的模型厂商:每次请求都会把对话发给你在
/models里选定的提供商——包括你的消息、agent 的工具调用,以及工具结果(agent 读到的文件内容就在其中)。qialike 让你在 62 家厂商中任选,因此适用哪一家的隐私与保留政策取决于你选了谁;qialike 无法代其作出承诺,请按所选厂商查阅。 - harness 的反馈门控遥测:组合 profile 默认挂载
session-telemetry-otel,模式为FEEDBACK_ONLY,端点为https://harness-telemetry.deepseeksvc.com/v1/logs。默认不上传任何东西——只有新的显式反馈才会释放一段截止该事件的有界会话前缀(可能包含消息文本、工具参数与结果、workspace 路径);普通请求、生命周期事件与已存反馈都不触发。释放是按提供方进行的:即便你用第三方厂商,反馈仍发往上述 DeepSeek 端点。关闭方式:DSH_TELEMETRY_MODE=DISABLED,或把DSH_TELEMETRY_DISABLED设为任意非空值(含0)。qialike 的 TUI 未接入/feedback(该命令注册在 harness 的 commands 服务上,本界面不消费它),所以目前没有可触发它的界面入口。 - qialike 自身:没有自有的分析或遥测。它自己发起的网络请求有三类——发给你配置的提供商(模型列表与对话请求)、你主动执行
/upgrade时的版本检查与下载(GitCode / gitcode / qialike.cn),以及启动约 1 秒后的一次自动更新检查(可用QIALIKE_DISABLE_AUTOUPDATE=1关闭,见 更新)。API key 不会进入 transcript、也不会发给模型。