用树状分支管理对话上下文,随时切换与裁剪
30.4/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add DevourerM/tree-chat该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · security
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 26 处,展示前 24 条)
- 读取本地文件lib/host/storage.js:18
const graph = validateGraph(JSON.parse(await readFile(this.file(id), 'utf8'))); - 写入本地文件lib/host/storage.js:26
await mkdir(this.directory, {recursive: true}); - 写入本地文件lib/host/storage.js:28
await writeFile(temp, JSON.stringify(graph), 'utf8'); - 读取本地文件lib/host/storage.js:38
try { names = await readdir(this.directory); } catch (e) { if (e.code === 'ENOENT') return null; throw e; } - 读取本地文件lib/host/project-sync.js:17
let names;try{names=await readdir(this.directory);}catch(e){if(e.code==='ENOENT')return;throw e;} - 读取本地文件lib/host/project-sync.js:22
let link;try{link=JSON.parse(await readFile(join(this.directory,id+'.json'),'utf8'));}catch(e){if(e.code!=='ENOENT')throw e;} - 写入本地文件lib/host/project-sync.js:27
await mkdir(this.directory,{recursive:true});const file=join(this.directory,id+'.json'),temp=file+'.'+randomUUID()+'.tmp'; - 写入本地文件lib/host/project-sync.js:28
await writeFile(temp,json(link));await renameWithRetry(temp,file);this.links.set(id,link); - 写入本地文件lib/host/files.js:7
try{return await rename(from,to);} - 读取本地文件lib/host/project-files.js:9
const root=await realpath(path);if(!(await lstat(root)).isDirectory())throw Error('项目路径不是文件夹');return root; - 读取本地文件lib/host/project-files.js:9
const root=await realpath(path);if(!(await lstat(root)).isDirectory())throw Error('项目路径不是文件夹');return root; - 写入本地文件lib/host/project-files.js:17
if(create)await mkdir(current).catch(e=>{if(e.code!=='EEXIST')throw e;}); - 读取本地文件lib/host/project-files.js:18
const s=await lstat(current);if(s.isSymbolicLink()||(i<parts.length-1||create)&&!s.isDirectory())throw Error('项目记录不能使用符号链接或目录替代'); - 读取本地文件lib/host/project-files.js:22
async function readBounded(root,parts,max){const file=await checked(root,parts);const s=await lstat(file);if(!s.isFile()||s.size>max)throw Error('项目记录 - 读取本地文件lib/host/project-files.js:22
async function readBounded(root,parts,max){const file=await checked(root,parts);const s=await lstat(file);if(!s.isFile()||s.size>max)throw Error('项目记录 - 读取本地文件lib/host/project-files.js:38
for(const name of await readdir(dir))if(validId(name)){ - 写入本地文件lib/host/project-files.js:69
try{await mkdir(lock);}catch(e){if(e.code==='EEXIST')throw Error('另一个进程正在同步这棵树;如异常退出,请确认无同步进程后清理 .tree-chat/.locks 中对应目录');throw e;} - 写入本地文件lib/host/project-files.js:70
const stage=inside(stageBase,join(stageBase,randomUUID()));await mkdir(stage); - 写入本地文件lib/host/project-files.js:77
for(const [path,body]of files){const parts=path.split('/');if(parts.length>1)await checked(stage,parts.slice(0,-1),true);const dest=inside(stage,join( - 写入本地文件lib/host/project-files.js:78
await writeFile(join(stage,'manifest.json'),json(manifest),{flag:'wx'}); - 写入本地文件lib/host/project-files.js:83
const ignore=join(base,'.gitignore');try{await writeFile(ignore,'.staging/\n.locks/\n',{flag:'wx'});}catch(e){if(e.code!=='EEXIST')throw e;} - 删除本地文件递归lib/host/project-files.js:86
if(!published)await rm(inside(stageBase,stage),{recursive:true,force:true}); - 删除本地文件递归lib/host/project-files.js:87
if(moved&&published)await rm(inside(stageBase,join(stageBase,`${id}-${stage.split(/[ /]/).at(-1)}-old`)),{recursive:true,force:true}); - 删除本地文件递归lib/host/project-files.js:88
await rm(inside(lockBase,lock),{recursive:true,force:true});
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-session@deepseek-ai/dsh-sandbox-policy@deepseek-ai/dsh-user-approval给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
基于deepseek harness构造的可视化树状上下文管理系统
README
由 DeepSeek 最新模型翻译生成tree-chat
在 DeepSeek Harness 中用一棵纵向对话树管理深入讨论:从历史节点开新枝,在分支间切换,移除不需要的轮次,让后续回复使用调整后的上下文。
tree-chat 是采用 DSH 标准插件格式的第三方插件,使用原生右侧栏、字体和深浅色主题,无需修改宿主安装文件。
命名集合与 DSH 原生对话界面
安装 · 使用 · 数据 · 常见问题 · 开发
兼容性
| 项目 | 当前状态 |
| 插件版本 | 1.2.1 |
| 已验证宿主 | DeepSeek Harness 0.2.0-rc.2 / 0.2.1-rc.2 |
| 已验证系统 | Windows |
| 插件格式 | 标准 dsh.bundle + dsh.client |
| 其他系统及宿主版本 | 尚未完成验证,不保证可用 |
通过 DSH 界面安装不需要手动运行 Node、npm 或构建命令。发行包已包含运行文件;开发源码需要 Node.js 22 或更新版本。
安装
在 DSH 界面直接安装
1. 打开 DSH 左侧 插件 → 添加插件。
展开完整文档(README 剩余 1 节)
tree-chat 在 DeepSeek Harness 中用一棵纵向对话树管理深入讨论:从历史节点开新枝,在分支间切换,移除不需要的轮次,让后续回复使用调整后的上下文。 tree-chat 是采用 DSH 标准插件格式的第三方插件,使用原生右侧栏、字体和深浅色主题,无需修改宿主安装文件。 命名集合与 DSH 原生对话界面 安装 · 使用 · 数据 · 常见问题 · 开发 兼容性 | 项目 | 当前状态 | | 插件版本 | 1.2.1 | | 已验证宿主 | DeepSeek Harness 0.2.0-rc.2 / 0.2.1-rc.2 | | 已验证系统 | Windows | | 插件格式 | 标准 dsh.bundle + dsh.client | | 其他系统及宿主版本 | 尚未完成验证,不保证可用 | 通过 DSH 界面安装不需要手动运行 Node、npm 或构建命令。发行包已包含运行文件;开发源码需要 Node.js 22 或更新版本。 安装 在 DSH 界面直接安装 1. 打开 DSH 左侧 插件 → 添加插件。 2. 在 包名或地址 中粘贴完整地址: https://github.com/DevourerM/tree-chat/releases/download/v1.2.1/tree-chat-1.2.1.tgz 3. 确认插件为 tree-chat,点击 安装。 4. 安装完成后点击 立即启用;宿主提示重启时,按提示操作。 5. 打开普通聊天,点击页头树形 tree-chat 按钮,显示右侧对话树。 固定版本地址不会随仓库提交而改变内容。无需下载源码或额外执行安装脚本。 也可在同一输入框使用固定标签的 Git 地址: git+https://github.com/DevourerM/tree-chat.git#v1.2.1 推荐 .tgz 地址,它不要求安装 Git。插件尚未发布到 npm,请不要只填写 tree-chat,以免解析到其他来源的同名包。 网络受限时离线安装 从 Releases 下载 tree-chat-1.2.1.tgz,在 DSH 的同一输入框填写其本机绝对路径,例如: C:\Downloads\tree-chat-1.2.1.tgz 选择发行附件 .tgz,不要选 GitHub 自动生成的 “Source code” ZIP。远程 Web Host 的本地路径指向 Host 电脑,而不是浏览器所在电脑。 更新与卸载 更新前查看新 Release 的宿主兼容性说明,再通过 DSH 的更新或重新安装流程填写新版本地址,避免同时启用多个副本。禁用或卸载从 DSH 插件界面操作。 卸载不删除原生聊天与树数据。自动归档的会话仍可从 DSH 的归档列表恢复。 功能 - 纵向对话树,默认展示真实用户输入,折叠权限提示、自动续跑等内部轮次,保留完整模型上下文。 - 从任意历史节点创建持久分支节点,使用 DSH 原生聊天输入框,首轮完成后原位填入内容。 - 单击选中、双击定位,拖动节点调整布局;支持缩放、平移、搜索,以及保留手动左右顺序的节点整理。 - 将相连节点合并成命名集合,随时展开、拆分、重新合并;所有原始上下文完整保留。 - 新建或切回分支时继承当前 DSH 权限设置,包括自定义沙箱与审批组合。 - 删除中间轮次后自动接好后续路径,支持撤销、重做。 - 可选项目同步:把树、集合、完整对话及附件保存到 .tree-chat/,随 Git 迁移后读取并继续聊天。 - 同一棵树在 DSH 左侧默认仅保留当前会话可见,其他枝通过原生归档收纳;用户置顶会话例外。 - 继承 DSH 原生侧栏和主题,切换分支时保留树的视野与布局。 - 隐藏或收起的侧栏暂停轮询,重新打开时立即同步;新版宿主切换工作目录后,分枝继承所选节点当时的目录。 连线只展示关系和当前路径;创建分支、裁剪上下文都通过按钮完成,无需手工拉线。 使用 基本操作 | 操作 | 效果 | | 单击节点正文 | 仅选中,作为新建分支、重命名或删除的目标 | | 双击节点正文 | 跳转原生聊天的对应消息,自动加载较早记录 | | 拖动节点正文 | 移动位置,不跳转、不改变上下文 | | 右键拖动空白处 | 框选节点;按住 Shift / Ctrl / ⌘ 可追加选择 | | 左键 / 中键拖动空白处,或空格 + 左键拖动 | 平移画布,保留当前选择 | | 滚轮、左下角 − / + | 缩放 | | 左下角“适合画布” | 调整视野容纳整棵树 | | 顶部树形整理图标“整理节点” | 按当前左右顺序规整布局,保留上下文关系,支持撤销 | | 卡片 … 或右键 | 打开节点菜单 | 选中边框表示操作对象;蓝色路径及节点左侧色条表示当前聊天使用的分枝。选中历史节点本身不会把下一条输入插入历史中间。 新建节点与分支 1. 选中要继续深入讨论的节点。 2. 点击卡片 +、顶部 新建分支,或节点菜单中的同名操作。 3. 树上立即出现实线 新分支 节点,原生输入框切换到这条新分支。 4. 在原生输入框发送消息,该轮结束后,在同一节点中填入内容,保留节点 ID 与位置,后续聊天沿此枝生长。 每个正式节点代表完整轮次,包括输入、回复和工具交互;不会在工具调用尚未配对时截取半轮上下文。 未填写的分支不会超时消失,切换、刷新和重启后仍保留,也不会被从其他节点新建的分支覆盖。重复从同一父节点创建会复用已有空分支;双击空分支继续填写。右键或 … 菜单可继续、重命名或删除空分支,删除当前空分支会返回创建前的会话。 新节点从父节点的当前实际位置向下寻找最近空位,避开已移动的节点。顶部 整理节点 按当前左右位置确定分枝顺序,再统一间距与层级;不会恢复成创建时的顺序,也不会改变上下文。 从 起点 创建不继承先前用户轮次,但保留宿主必需的系统及工具配置。其他分枝末端节点的菜单提供 继续这条分支,优先复用已有原生会话。 节点集合与折叠 1. 在空白处按住右键拖动框选节点,或单击首个节点后按住 Shift 点击末个节点来选择相连路径;也可按住 Ctrl / ⌘ 逐个增减选择。起点不参与框选,按住 Shift / Ctrl / ⌘ 框选可以追加选择,Esc 可取消当前框选。 2. 点击顶部叠层图标 合并为集合,填写名称。所选节点折叠成卡片,卡片上显示名称与数量。 3. 点击卡片展开按钮,或双击集合卡片,查看内部节点;成员节点上方的名称小标签可再次折叠整组。 4. 集合菜单支持 重命名集合、拆分集合…、取消集合 与 删除集合…。拆分时选择一个内部节点,它及其在集合内的后代成为新组,其余节点保留原组。重复拆分即可得到多个组;不足两个节点的部分恢复为普通节点。 5. 展开后,成员菜单也可 在此拆分集合…。选择两个相连的折叠集合,再次合并即可重新组织。 集合只整理显示,不把多轮聊天压缩成摘要,不删除消息、不改变上下文路径。分叉和所有对外出口保留;从内部指定节点继续对话时先展开集合,新增对话保持在集合之外。移动折叠卡片会同步平移成员。创建、展开、收起、拆分或取消集合时,自动按当前分枝左右顺序重新整理可见节点的间距:折叠后下游靠拢,展开后为成员和各个出口重新腾出空间。布局操作不改变消息及上下文关系。 顶部 展开所有集合 / 折叠所有集合 按钮可一键切换:存在收起的集合时全部展开,全部展开后则一键收起;批量操作只计算一次布局。 取消集合 只移除包装并保留节点。删除集合… → 保留后续 删除集合内的轮次,并将各个出口接到集合上游;删除整枝 还会删除入口以下所有后代。展开后也可从成员菜单取消或删除所属集合。这些结构编辑可以撤销,删除只影响树与后续上下文,不物理删除原生聊天文件。有下游空分支时需先完成或删除空分支,同树生成中禁止删除集合。 集合不包含起点,不能跳过中间节点,也不允许重叠或嵌套。空分支产生第一轮消息后才能加入集合。默认视图隐藏的内部轮次会随所属输入一起收纳,切换“显示完整轮次”仍可检查全部记录。 搜索命中集合内部节点时临时展开并定位,清除搜索后恢复原折叠状态。创建、命名、拆分、取消、删除与移动均可撤销;单纯展开折叠不占用撤销历史。刷新及重启后集合名称、成员和折叠状态保留。 分支权限 通过 tree-chat 新建分支、继续已有分支、跨会话定位或删除当前空分支返回时,目标会话沿用离开前的当前权限选择。覆盖“工作区内修改”“完全权限”及 DSH 自定义的沙箱/审批组合,不再重置成目标分支原来的默认值。 权限仍由 DSH 原生服务写入、显示与执行。Auto 需要宿主自身启用相应审查集成;无法启用时切换失败并提示,不会偷偷降级或绕过审核。树之外手工打开不相关会话的权限行为仍由 DSH 决定。 删除轮次,自动接好上下文 原路径: 起点 → 1 → 2 → 3 → 4 选择节点 2,打开 … → 删除节点… → 保留后续,得到: 起点 → 1 → 3 → 4 后续聊天基于新路径。插件会生成合适的原生上下文会话,不改写原始聊天文件。删除整枝 则移除所选节点及其后代在树中的位置。 默认折叠视图中,删除用户节点也会移除归属该输入的内部续跑轮次,避免工具结果或自动续跑单独残留。旧数据里未连接的分支,可使用节点菜单 接回起点。 更多工具与快捷键 顶部 … 菜单包含撤销、重做、整理节点、显示完整轮次和导出树结构;搜索框定位并高亮匹配标题。 | 快捷键 | 效果 | | 画布聚焦后方向键 | 选择父、子或同层节点 | | Enter | 定位选中节点 | | Shift + Enter | 从选中节点创建分支 | | Ctrl / ⌘ + Z | 撤销树编辑 | | Ctrl / ⌘ + Shift + Z | 重做树编辑 | | Esc | 取消拖动、恢复框选前的选择或关闭当前菜单、对话框 | 快捷键作用于插件获得焦点时。完成新一轮聊天后,旧的树编辑撤销历史清空,避免覆盖后来生长的节点。 项目同步与 Git 迁移 点击顶部 项目同步 文件夹按钮,选择项目目录,点击 开启同步。默认使用当前 DSH 工作区目录;也可以浏览或填写 Host 电脑上的其他项目目录。 - 默认关闭,按树选择;开启后包括这棵树的所有分枝、集合、空枝及其原生对话记录。 - 生成完成或编辑树后自动更新,即使侧栏关闭也会跟进;生成中开启会等待完成,不写半轮记录。需要时可点 立即同步。 - 停止同步 只关闭后续写入,不删除项目中的已有记录。 - 同步开关、目录、本机身份映射保存在 DSH 本机配置中,不放入项目,也不会替你运行 Git commit/push。 项目目录结构: .tree-chat/ .gitignore # 只忽略临时事务目录和写入锁 trees/<tree-id>/ manifest.json # 格式版本与完整性校验 tree.json # 树、集合、坐标、分枝和来源映射 conversation.md # 便于直接阅读和评审的对话文档 sessions/*.jsonl # 保留完整原生事件,包括工具调用与结果 assets/<sha256> # 图片和文件附件,按内容去重 将 整个 .tree-chat/ 随项目提交到 Git。文本格式方便 diff 和评审;没有内容变化时不重写快照。对话中实际出现的消息、工具输出和附件会进入记录,请按项目的共享规则审阅后提交。 读取项目中的对话 1. Clone 项目,或复制项目及其整个 .tree-chat/ 目录。 2. 在 DSH 中打开该项目的普通对话,点击 项目同步;选择目录后点 读取。 3. 在“项目中的对话树”选择记录,点击 读取为新对话。 4. 插件验证并恢复会话、工具记录、附件和集合,打开新对话后即可继续。 读取使用全新的本机会话标识,不覆盖现有聊天。工作目录改为选中的项目,项目内的历史子目录按相对路径迁移;模型、权限和智能体预设采用当前本机设置,不沿用记录里的完全权限或 Auto 身份。历史聊天文本和工具参数中的旧路径作为历史内容保留,不修改原意。 恢复后同步默认关闭。若要继续维护同一份项目记录,再点击 开启同步;插件保留记录身份与映射,不会无意复制第二棵树。 Git 切换、冲突与限制 - Git checkout/pull 或其他人改变项目记录后,自动同步会暂停,保护文件不被当前本机旧状态覆盖。可以 读取为新对话 查看项目版本,或 另存副本 保留当前本机版本。 - 项目内这部分目录由插件管理;直接修改树、会话、对话文档或附件会触发校验保护。额外笔记请放在记录目录外,避免手工合并事件序号或只复制部分文件。 - 写入使用跨进程目录锁和暂存目录替换。异常退出遗留锁时,确认没有同步进程后,移除 .tree-chat/.locks/ 下对应树目录再重试;插件不擅自抢占锁。 - 会话日志可能包含继承的历史前缀,分枝很多时记录会增大。当前每树最多 1,000 个会话;单日志 128 MiB、对话日志合计 512 MiB、单附件 256 MiB、读取总量 1 GiB。超限会报错,保留原有数据。 - 保存这棵树引用的会话和附件,不自动打包外部网页、未挂入树的子任务会话、仓库文件或模型密钥配置。迁移代码仍由 Git 负责。 文件格式与扩展约定见 项目格式说明。 数据与上下文 - 原始 DSH 消息不被修改或物理删除。分支使用标准原生 Session,保留消息、步骤及完整工具调用配对。 - 删除节点修改树及后续上下文,不是从磁盘销毁原始记录。 - 插件自身不新增外部服务请求;聊天仍使用 DSH 配置的模型与工具。 - 为收纳分枝,同树非当前会话会归档,包括切离后的初始根会话;置顶会话保持可见,切换时恢复对应会话。 - 树元数据保存于 $DSH_HOME/plugins/conversation-tree/graphs,Windows 默认 %USERPROFILE%\.dsh\plugins\conversation-tree\graphs。历史目录名用于兼容,插件包名仍是 tree-chat。 - 写入使用临时文件与原子替换,结构修改以版本号检测并发冲突。旧树无需迁移;新增集合元数据使用可选 groups 字段,升级后建议持续使用新版,旧版不理解集合。 - 大于 250 个可见节点时按画布范围渲染卡片和连线;无变化的轮询只回传版本确认;批量导入复用位置索引。节点和完整上下文仍保存在树中。 - 顶部「导出树结构」的 JSON 只含结构。完整项目迁移请使用「项目同步」,携带整个 .tree-chat/ 目录;未开启同步的树仍需按 DSH 自身的方法迁移。 常见问题 安装或下载超时? 确认可以访问 GitHub Release 附件,或改用离线 .tgz;更换 npm 镜像不一定能解决 GitHub 网络问题。 单击为什么不跳聊天? 单击只选中。双击或画布聚焦后按 Enter 才定位。 新分支还没输入,会消失吗? 不会。空分支持续保留,首轮结束后原位填入内容;只有明确删除它才会移除。 旧分支从左侧消失? 它被原生归档收纳,仍在树中,可通过树切回或从归档列表恢复。 生成时不能改上下文? 等待同树正在生成的会话结束后操作。移动和排列不改变模型上下文。 已有 fork 没有合并? 插件不扫描和合并历史 fork;首次打开的普通会话各自形成树,之后由 tree-chat 创建的新枝统一管理。 压缩或工具配对提示? 宿主已压缩替代的历史可能不再有可独立重组的有效消息;未完成工具记录也不能安全重建。插件会拒绝应用,原会话保留。 左右键怎么操作? 左键拖空白平移,右键拖空白框选;节点上左键拖动节点,右键打开节点菜单。中键或空格 + 左键也可平移,Esc 取消框选,窗口失焦会结束当前手势。 DSH 升级后能用吗? 当前已验证 0.2.0-rc.2 和 0.2.1-rc.2,宿主 API 或界面语义标记变化可能需要适配。先查看 兼容性记录 和 Release 说明。 协作设计与实现复核记录见 1.0 设计记录。 开发 git clone https://github.com/DevourerM/tree-chat.git cd tree-chat npm run build npm test npm run pack:plugin 构建与核心测试只使用 Node.js 内置模块。打包会检查 DSH 元数据、完整资源和运行文件,在 dist/ 生成 .tgz 与校验记录。安装时使用宿主服务及 React 单例。 | 目录 | 用途 | | src/client | 侧栏、画布、消息定位适配 | | src/core | 图模型、校验和视图投影 | | src/host | 上下文组装、会话映射和存储 | | lib | 预构建的运行文件,随发行包分发 | | test、scripts | 核心测试、原生验证、打包和辅助安装 | | docs | 设计、验证、发布审核记录 | 真实宿主验证需自行准备合法取得的 DSH 开发运行时,设置 DSH_DEV_RUNTIME 到其 node_modules 后执行 npm run check:host。GUI 验证需要 Playwright、Chromium、隔离 Host,详见 验证记录。宿主运行时、浏览器、用户会话及测试产物不随仓库分发。 | 环境变量 | 用途 | | DSH_DEV_RUNTIME | DSH 开发运行时的 node_modules 绝对路径,用于原生重放和宿主服务测试 | | TREE_PLAYWRIGHT | 已安装 Playwright 的 index.mjs 入口绝对路径 | | TREE_CHROMIUM | GUI 测试使用的 Chromium 可执行文件;未设置则使用 Playwright 默认浏览器 | | TREE_ARTIFACTS | 测试截图、模型请求记录等产物目录 | | TREE_TEST_HOME | 合成聊天 GUI 测试的独立 DSH 数据目录 | | TREE_GUI_TEST_HOME | 从空白配置验证插件安装的独立 DSH 数据目录 | | TREE_PLUGIN_SPEC | GUI 安装测试的包地址;可填 Release URL,未设置时使用本地发行包 | | DSH_APP_DIR | 开发者辅助安装器验证用的 DSH Desktop 安装目录,也可传 --app | 缺少宿主运行时时,核心测试仍可执行,宿主服务集成测试会明确跳过;提供运行时后才会实际执行这些集成测试。普通用户安装插件无需设置这些开发变量。 scripts/install.mjs 是开发者本机辅助安装器,可用 --home 和 --app 指定 DSH 数据及安装目录。添加 --no-backup 可直接覆盖更新、不创建额外备份,适用于源码已由 Git 管理的本地开发;默认模式保留覆盖前备份。普通用户使用 DSH 插件界面,无需运行它。 运行代码使用公开 Slot、Sidebar 和 Session 能力。最终消息定位依赖的宿主语义标记集中在 src/client/navigation.js;升级宿主时需验证这一适配器。插件释放时清理注册、样式、导航等待和计时任务。 反馈与许可 请通过 GitHub Issues 提交 DSH 版本、复现步骤及必要截图;公开前去掉私密聊天内容与密钥。 MIT License。本项目不隶属于 DeepSeek;DeepSeek Harness 名称用于说明兼容目标。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
DevourerM/tree-chat
用树状分支管理对话上下文,随时切换与裁剪
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7