Repository navigation
Replies: 1 comment
|
我们在本地独立定位了同一现象,结论与你一致:rcfile 是 按你建议的前插方案做了补丁分支,并补了两个红绿回归测试(master 上失败、分支上通过);另外加了一层
顺带确认了比视觉噪音更实质的影响:因为 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
一句话:在启用 VTE shell 集成的 Linux 上,侧边栏终端每执行一条命令都会多显示一行内部状态采样文本,并且
busy状态始终写不进状态文件。复现、预期与验收
VTE_VERSION >= 3405)中运行npx @deepseek-ai/dsh@0.2.2-rc.1 web;echo。echo hi时该行与hi连在一起,每条命令必现):@deepseek-ai/dsh@0.2.2-rc.1(npmlatest,2026-11-04);master源码同样存在该问题0.2.1-rc.2已存在,0.2.2-rc.1仍复现/etc/bash.bashrc会 source/etc/profile.d/vte-2.91.shTERM=xterm-256colornpx @deepseek-ai/dsh web启动echo/echo hi不再出现该文本;while :; do :; done)运行期间,/tmp/dsh-shell-*/state为busy;VTE_VERSION不存在或小于 3405)时行为不变;根因(已定位)
packages/api/terminal-controller/src/index.ts:323以shellActivity: true、argv: [bash, "-i"]创建。packages/subprocess/subprocess-local/src/shell-activity.ts:92生成 rcfile 时,把采样片段追加到PS0:` PS0+=${quote(`$(builtin printf '%s:%s:busy' ... >| ${state})`)}`/etc/profile.d/vte-2.91.sh:88、:116)已经把PS0设为以ESC \结尾;在 bash 里该值的最后一个字符是字面反斜杠。PS0时,\会转义紧随其后的$:$(...)不执行、原文被打印;同时 ST 的\被消费,终端把随后的ESC $ ( b当作字符集指定序列消费,于是屏幕从uiltin开始(少掉$(b)。busy永远不落盘;state文件里只剩PROMPT_COMMAND写入的idle。可直接在交互式 bash 中验证转义行为:
证据
echo,原始字节为...vte.shell.preexec!\x1b$(builtin printf ... ),经 xterm.js 渲染后正好得到上面“实际结果”中的uiltin printf ...。while :; do :; done运行期间读取 state:43128:2:idle(应为busy)。...:busy,屏幕不再出现该文本。建议修复
单行改动(
shell-activity.ts):\结尾的PS0仍在末尾,不会再转义我们的$;"${PS0-}"而不是"${PS0}",兼容用户在~/.bashrc开启set -u(nounset);80-systemd-osc-context.sh同样如此。临时规避
env -u VTE_VERSION npx @deepseek-ai/dsh web(已实测:移除后不再出现该文本);dsh-subprocess-local/lib/index.js应用上面的单行补丁(升级会被覆盖)。All reactions