前言¶
DeepSeek Harness(DSH)采用插件化架构,支持为 Web GUI 挂载自定义样式与功能。在处理多语言界面时,布局方向(LTR/RTL)和字体渲染往往是需要额外配置的点。Rastin 作为一个 Cordis bundle,将波斯语的 RTL 布局支持、嵌入式字体与终端字体修补集成在一起,以减少手动配置的工作量。
这是什么¶
Rastin 是 DeepSeek Harness Web GUI 的一个 Cordis bundle,维护者为 Amir83Nasr。它将波斯语界面需要的 RTL 布局规则、伊朗 Yekan 字体(作为 base64 woff2 嵌入)以及侧边栏终端的 FiraMono Nerd Font 集成到一个包里,通过一个 style seat 和运行时修补将它们挂载到 harness 的 shell.overlay 上。
核心功能¶
- 波斯语 RTL 布局:聊天、队列、问题/计划审查界面在 IranYekanX 字体下以从右到左(RTL)方向显示。字体作为 base64 woff2 嵌入在 bundle 内。
- 侧边栏终端字体:侧边栏终端使用 FiraMono Nerd Font Mono。xterm 在 canvas 上绘制,仅靠 CSS 无法重排字形;Rastin 在 canvas 2d 的 font 设置器上做作用域修补(scoped to
[data-sidebar-terminal]),将嵌入的字体应用到该元素。 - Todo 面板默认展开:bundle 在挂载后观察 DOM,对折叠状态的 todo 面板进行一次点击展开;用户可以再次折叠。
- LTR 隔离区域:在 RTL 界面中,代码块、工具调用/命令行行、变更文件卡片、进程状态标签等内容保持从左到右(LTR)。
- RTL 箭头镜像:在 RTL 文本中的流程箭头(← → ⇐ ⇒)通过每个字形包裹镜像 span,使其指向符合 RTL 语义的方向;复制文本内容保持不变。
安装与启用¶
Rastin 通过 npm 安装,安装后需要运行构建脚本生成客户端输出。
- 安装依赖并安装 pnpm:
pnpm add @amir83nasr/dsh-rastin
- 安装依赖并设置 git hooks:
pnpm install --frozen-lockfile
pnpm setup
- 构建客户端:
pnpm build
安装完成后,bundle 会通过 cordis patch 挂载到 harness 的 shell.overlay 上。客户端输出文件 client.js 由 src/client.template.js 和嵌入的字体文件通过 scripts/build.mjs 生成,无需手动编辑。
工作原理¶
- 一个 style seat 挂载在
shell.overlay上,命名为rastin-style,注入@font-face规则与 RTL 相关的样式。 installTerminalFont()函数对 canvas 2d 的 font 属性做作用域修补,仅针对带有[data-sidebar-terminal]属性的上下文,在清理时恢复原值。autoOpenTodoPanels()使用 MutationObserver 观察文档变化,找到折叠状态的 todo 面板并触发点击,在第一次展开后断开观察器。
适用场景与注意¶
Rastin 适合需要在 DSH Web GUI 中显示波斯语或 Farsi 内容的开发者或使用者,特别是希望同时解决 RTL 布局与终端字体显示的场景。
在启用前,建议检查源码与许可证(MIT),确认与当前 DSH 版本的兼容性。插件以当前 DSH 进程的权限运行,任何挂载的样式与脚本都会影响整个 harness 的渲染。
短结尾¶
Rastin 通过一个 bundle 将波斯语 RTL 布局、伊朗 Yekan 字体与 FiraMono Nerd Font 的终端渲染集成,减少了手动配置项。更多细节与源码可参考:
- 目录页
- GitHub