🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

CJ-SH/dsh-plugin-trellis-statusline

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
⚠ 装前注意

在 dsh 网页聊天中显示当前工作空间的活动 Trellis 任务——这正是 Claude Code 的…

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/16 · 已提供中文文档

在 dsh 网页聊天中显示当前工作区的活动 Trellis 任务,包含父任务/子任务角色以及可点击的任务树。

综合分
30.3
GitHub 分
30.3
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add CJ-SH/dsh-plugin-trellis-statusline
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 1 天前真实安装成功
是什么
dsh 原生插件 · ui
装得上吗
本站已真实安装成功(非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 9 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/24
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-plugin-trellis-statusline(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/21 11:07:06

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-trellis-statusline

在 dsh 网页聊天中显示当前工作空间的活动 Trellis 任务——这正是 Claude Code 的 statusline.py 钩子在终端中所做的工作,也是 dsh 的网页 shell 所没有的状态栏。

这是一个状态栏:一个紧凑的小药丸,始终可见,就在你正在查看的聊天中。

[P2] Add the importer · 进行中
[P1] Release 0.2 · 进行中 · 父任务
[P2] Wire the importer · 进行中 · 子任务

它是什么

Trellis 将每一项工作作为一个任务保存在 .trellis/tasks/ 下,并记录某个会话正在处理哪一个。dsh 的网页 shell 会显示工作空间和模型,但不会显示任务——因此你必须切回终端,或者询问 agent,才能知道你实际正在做什么。

这个插件把这一事实放进聊天中:

- 会话头部,位于会话预设选择器的右侧,作为一个紧凑的小药丸;
- 新会话视图,用于尚未发送第一条消息的会话。

它是纯读取的:它从不写入 Trellis,不启动或归档任何东西,并且在没有任何任务时完全不显示任何内容。

要求

| | |
|---|---|
| dsh | 带有 web 配置文件。已针对 0.1.5-rc.2 验证;它所附加的座位是内部的,因此 dsh 升级可能会移动它们——参见故障排除 |
| Node | ^22.19.0 \|\| >=24.0.0 |
| 一个由 Trellis 管理的工作空间 | dsh 是 Trellis 第 22 个受支持的平台——在工作空间中运行 trellis init --dsh(Trellis 文档)。会话的工作目录随后包含 .trellis/,这就是此插件所读取的全部内容 |

它在运行时不需要 Python,也不需要 trellis CLI。与那些驱动 task.py 的插件不同,这个插件只读取 Trellis 写入的 JSON。

安装

这个包是一个 dsh bundle:它声明了带有 cordis.patch.yml 的 dsh.bundle,安装它会把该 bundle 追加到配置文件中并应用其补丁层(官方指南)。

从 npm 安装——尚未发布,这是它发布后的命令:

dsh plugin --profile web add dsh-plugin-trellis-statusline

目前,直接从仓库安装。要么克隆:

git clone https://github.com/CJ-SH/dsh-plugin-trellis-statusline
dsh plugin --profile web add ./dsh-plugin-trellis-statusline

……要么使用 git URL,这样你无需自己克隆:

dsh plugin --profile web add github:CJ-SH/dsh-plugin-trellis-statusline

git 方式在这里无需通常的 prepare 脚本和 allowBuilds 许可即可工作,因为没有什么需要构建:lib/ 是提交到仓库中的纯 JavaScript,因此 git 安装
已经获取可运行的产物。用 TypeScript 编写的插件两者都需要,而 allowance 是允许在安装时在你的机器上运行其代码的许可——参见
官方说明。

然后检查该行是否已写入,并重启 dsh——插件的加载发生在启动时,而重启会结束任何 agent 进程,所以请自行运行:

dsh --profile web --dump-config | grep trellis-statusline

可用的安装无需任何配置:插件会读取它所渲染所在的会话,并且不保存任何设置。

卸载

dsh plugin --profile web remove dsh-plugin-trellis-statusline

它不存储任何内容,因此卸载无需清理。

不会触碰其他 bundle 的行

该补丁只插入一行 loader,别无其他。Host 部分在组合的 webServer 上注册自己的路由,并在每次应答前向 connection 请求信任围栏
(requestRejection → 401/403,当该接缝缺失时为 503)——这与随附的 dsh-host-open-in-app 使用的形态相同。

较早的版本改为扩展随附的 connection 行的 inject。这正是
connection.rpc.handle 所需要的——它在那一行的上下文上注册其物理路由——而这使该插件的可用性依赖于另一个 bundle 配置的一部分以及层顺序。自己拥有该路由消除了这种耦合:这里的任何内容都不会因补丁冲突而被悄悄移除。

你将看到什么

该 pill 显示为 [priority] title · status。根据任务不同,有三种形态:

| 会话的任务是 | 该 pill 显示为 |
|---|---|
| 独立存在 | [P2] Title · 进行中 — 无角色、无点击目标、无 Tab 停靠点 |
| 树的根 | [P1] Title · 进行中 · 父任务 |
| 树中的其他任何位置 | [P2] Title · 进行中 · 子任务 |

只存在两种角色。 树的最顶层祖先是唯一一个父任务;其他所有成员——包括孙级——都是子任务。深度从不改变措辞,因此很深的树也能保持可读。

当任务位于树中时,该 pill 变为可点击。 下拉菜单显示真实结构(每层深度缩进一级,并带有一条引导线),并高亮显示会话的任务。独立任务完全不可点击——没有按钮、没有焦点环、没有 Tab 停靠点。

显示每 10 秒刷新一次,并在头部切换到另一个会话时立即刷新,因此 task.py start 或 task.py archive 会在一次轮询内显示出来。

任务来自哪里

1. 会话的工作目录——来自活动会话自身的头部,或来自工作区注册表,后者也涵盖不再活动的会话。
2. 会话指针——.trellis/.runtime/sessions/dsh_.json,由
task.py start 写入。只要它指向一个真实任务,它就优先。
3. 扫描 .trellis/tasks//task.json——in_progress 优先于 planning,在同等条件下取最新的 MM-DD- 任务。被扫描到的任务还必须至少启动过一次,而一个
已记录的 branch 证明。

最后一条规则很有价值:trellis init 会留下一个脚手架任务(Bootstrap Guidelines),其
status: in_progress 且没有 branch,永远如此。如果没有这项检查,每个全新的 Trellis 项目
都会将其报告为活动工作——在构建此插件时所针对的五个真实工作区中,有四个恰好存在这个陈旧任务。
参见设计说明。

它不做什么

- 它从不写入。 Host 部分导入 node:fs/promises 仅用于 readFile 和 readdir,
完全不包含任何写入路径;自检证明一次完整读取后 .trellis/ 保持字节级一致。
- 它不会启动、切换或归档任务——那仍然是 task.py 的职责。下拉菜单只是一个视图,
而非控件:其行不可点击。
- 它不会重复 dsh 已经显示的内容(模型、token、耗时)。
- 对于由扫描发现的 review 任务,它没有可显示的内容(指针仍会显示它,
显示为 审核中 / in review)。要改变这一点,请在 lib/index.js 中扩大 RUNNING_STATUSES。

故障排除

完全没有显示任何内容。 按可能性排序:工作区没有 .trellis/;有 .trellis/ 但从未在其中
启动过任何任务(参见分支规则);你处于新会话视图,且无法测量
composer;另一个 bundle 占用了确切路由 /trellis-statusline/task/read(Host 会在启动时记录
[trellis-statusline] route unavailable);或者 dsh 升级移动了座位。该插件从不显示占位符,
也从不报告错误——不显示 pill 就是失败模式,这是设计使然。

它显示了错误的任务。 检查 python ./.trellis/scripts/task.py current --source。如果这与
pill 不一致,说明插件的扫描与 Trellis 的指针解析已经出现分歧——请同时附上两者提交 issue。

它显示工作区最新的任务,而不是你启动的那个。 如果 dsh 是从另一个 Trellis 会话内部启动的
——比如一个 Claude Code 或 Codex 窗口——Trellis 0.6.15 会继承该会话的 TRELLIS_CONTEXT_ID,
并可能将运行时指针写入外层*上下文键下(一般情况已在上游跟踪,
mindfold-ai/Trellis#549;
Trellis 0.6.15 已针对 dsh 专门修复了此问题)。此插件随后找不到自己会话的指针,便回退到
工作区扫描——这正是该回退存在的原因。在启动 dsh 前取消设置 TRELLIS_CONTEXT_ID,或者
在 dsh 会话本身中运行 python ./.trellis/scripts/task.py start .trellis/tasks/。

它在一个会话中出现,但在另一个会话中不出现。 这就是设计:每个会话报告自己的工作目录,
因此不同工作区中的并行会话会显示不同的任务。

开发

没有依赖,也没有构建步骤:浏览器部分直接以 shell 所消费的形式编写,Host 部分除 node:
内置模块外不导入任何内容,测试套件对两者都进行断言。

node --check lib/index.js && node --check lib/client.js   # 两半都能解析
npm test                                                  # 197 条断言,四个测试框架

这些测试框架位于仓库中,而不在发布的 tarball 里——files 只发布 lib、
补丁、README、设计说明和许可证——所以请从检出目录运行 npm test。

| 测试框架 | 覆盖内容 |
|---|---|
| test/host.test.mjs | 在一次性工作区中解析任务:优先指针、扫描回退、排序、branch 规则、每一种树情况,以及读取永不写入的前后哈希证明 |
| test/client.test.mjs | 打包契约:id、仅 react 的 require、两个席位(slot key 与 cell id 与顺序)、locale 命名空间、样式表生命周期、跨半部分常量 |
| test/cell.test.mjs | 最小 hook 运行时下的真实 cell:全部三种 pill 形态、下拉菜单及其关闭路径、Hero cell 的空白会话门控与测量位置、监听器和定时器清理 |
| test/integration.test.mjs | 两半相互对接——真实的 Host 半部分读取真实的 .trellis 树,并且该确切回复被送入真实 cell,因此线格式漂移无法被忽视 |

| 文件 | 作用 |
|---|---|
| lib/index.js | Host 半部分——session → cwd → task,以及 /trellis-statusline/task/read 路由 |
| lib/client.js | 浏览器半部分——模块加载器 bundle、席位注册、cell |
| cordis.patch.yml | 加载器行;不修补任何其他 bundle 的行 |
| docs/design-notes.md | 为什么这样工作:席位、测量、推导规则 |

许可证

MIT © 2026 HenTaiCJN

Trellis 是 Mindfold LLC 的一个独立项目,采用
AGPL-3.0-only 许可。本插件与其无关联,既不捆绑也不派生自其代码:
它读取 Trellis 写入的 .trellis/ 文件。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(CJ-SH)的其他插件

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群