跳转到内容

配置

~/.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_lasttrue / 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_DSHqialike web 转发时使用的 dsh CLI 路径。
QIALIKE_NO_PROJECT_OVERLAY设为 1 时本次启动忽略仓库级 overlay。
BUN_JSC_collectContinuously设为 1 时更积极地回收内存(见下)。
COLORTERM终端色深信号;设为 truecolor 才会被识别为 24 位。
DEEPSEEK_API_KEYDeepSeek 官方端点的 key(需在 /models 里选择该提供商)。
DSH_HOMEharness 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:

Terminal window
export COLORTERM=truecolor # 标准信号,所有工具都认
QIALIKE_COLOR=24bit qialike # 或只对这一次运行生效

QIALIKE_COLOR 也接受 256 与 16,可用来预览低色终端下的效果。16 色档下深色皮肤的卡片与页面都是黑——调色板里没有第二个近黑色可选,属于设计上的降级。

配色方案

内置 16 套方案(dark、light、one-dark,以及 13 套经典皮肤),全部为 MIT / 宽松许可。用户方案放在 ~/.dsh/themes/*.json。

Terminal window
/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 字节行规程缓冲的写入分成多次交给终端;没有这个模式时,半绘制的帧会短暂可见(输入卡片的边框 / 状态行从弹层里透出来)。

不认这个模式的终端会忽略它。若某个终端处理不当:

Terminal window
QIALIKE_NO_SYNC=1 qialike

内存与 GC

运行时是 Bun/JSC,不会及时把已释放页面还给系统,因此 RSS 随使用缓慢上升后趋于平台——这是 GC 策略,不是泄漏。内存紧张时的官方缓解手段是:

Terminal window
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 Model

API 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、也不会发给模型。