🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

机器与应用管理 zhaochengggg/dsh-a2ui-studio

DeepSeek Harness
zhaochengggg15 天前有提交已提供中文文档扫描:含敏感能力

你的机器与应用,由 Agent 管理,由 A2UI Studio 记住。

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add zhaochengggg/dsh-a2ui-studio
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
L4 · 真实安装等级说明 →
数据截至 2026/11/03·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 15 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 31 处,展示前 30 条)
  • 读取本地文件
    index.mjs:23
    const content=await readFile(url,'utf8');
  • 读取本地文件
    machines/store.mjs:13
    async function read(file) { try { const st = await fs.lstat(file); if (!st.isFile() || st.isSymbolicLink() || st.size > 8 * 1024 * 1024) fail('Unsafe
  • 写入本地文件
    machines/store.mjs:18
    await fs.rename(temp, file);
  • 写入本地文件
    machines/store.mjs:47
    await fs.mkdir(this.root, { recursive: true, mode: 0o700 });
  • 写入本地文件
    machines/store.mjs:51
    try { await fs.mkdir(lock, { mode: 0o700 }); break; } catch (e) {
  • 读取本地文件
    machines/store.mjs:55
    if(Number.isSafeInteger(owner)&&owner>0){try{process.kill(owner,0);}catch(err){if(err.code==='ESRCH'){const st=await fs.lstat(lock);if(st.isDirectory(
  • 写入本地文件
    machines/store.mjs:60
    try { await fs.writeFile(path.join(lock, 'owner'), `${process.pid}\n`, {mode: 0o600}); await this.recover(); return await fn(); }
  • 删除本地文件
    machines/store.mjs:61
    finally { await fs.rm(lock, {recursive: true}); }
  • 删除本地文件
    machines/store.mjs:68
    await fs.unlink(file);
  • 写入本地文件
    machines/store.mjs:72
    if (create) await fs.mkdir(dir, { recursive: true, mode: 0o700 });
  • 读取本地文件
    machines/store.mjs:73
    const st = await fs.lstat(dir); if (!st.isDirectory() || st.isSymbolicLink()) fail('Unsafe machine directory');
  • 读取本地文件
    machines/store.mjs:84
    for (const entry of await fs.readdir(this.root, {withFileTypes: true})) {
  • 读取本地文件
    machines/store.mjs:116
    try { await fs.lstat(path.join(this.root,machineId)); fail('Machine ID already exists (including archived)'); } catch(e) { if(e.code !== 'ENOENT') thr
  • 写入本地文件
    machines/store.mjs:147
    await fs.mkdir(this.sshDir,{recursive:true,mode:0o700});
  • 删除本地文件
    machines/store.mjs:202
    finally{if(temp)await fs.rm(temp,{recursive:true,force:true});}
  • 读取本地文件
    machines/probe.mjs:17
    try{await access(candidate);}catch{continue;}
  • 读取本地文件
    build.mjs:9
    const source=await readFile(args.path,'utf8'),names=[...new Set([...source.matchAll(/ ([a-zA-Z][ -]*)/g)].map(x=>x[1]))];
  • 写入本地文件
    build.mjs:15
    await mkdir('lib',{recursive:true});
  • 读取本地文件
    build.mjs:24
    async function collect(dir){for(const e of (await readdir(dir,{withFileTypes:true})).sort((a,b)=>a.name.localeCompare(b.name))){const p=dir+'/'+e.name
  • 读取本地文件
    build.mjs:24
    async function collect(dir){for(const e of (await readdir(dir,{withFileTypes:true})).sort((a,b)=>a.name.localeCompare(b.name))){const p=dir+'/'+e.name
  • 写入本地文件
    build.mjs:26
    await writeFile('apps/lib/extension-manifest.json',JSON.stringify({format:1,sourceDigest:createHash('sha256').update(JSON.stringify(hashes)).digest('h
  • 写入本地文件
    build.mjs:28
    await mkdir('preview',{recursive:true});
  • 写入本地文件
    build.mjs:30
    await copyFile('apps/tests/presentation.html','preview/presentation.html');
  • 读取本地文件
    build.mjs:31
    await writeFile('preview/machine.css',await readFile('machines/style.css','utf8')+'\n'+await readFile('shared/ui.css','utf8'));
  • 写入本地文件
    build.mjs:31
    await writeFile('preview/machine.css',await readFile('machines/style.css','utf8')+'\n'+await readFile('shared/ui.css','utf8'));
  • 写入本地文件
    machines/probe.test.mjs:70
    const s=await fixture(t),m=(await s.load('x')).machine;const file=path.join(s.sshDir,'known_hosts'),content=`dsh-x-lan ssh-ed25519 ${bad}\n`;await fs.
  • 读取本地文件
    machines/test.mjs:5
    test('create / notes / searchable old history / revision / archive / restore',async t=>{const s=await fixture(t);await s.manage({action:'create',machi
  • 读取本地文件
    machines/test.mjs:7
    test('missing fingerprint does not connect; files remain readable without plugin',async t=>{const s=await fixture(t);await s.manage({action:'create',m
  • 写入本地文件
    machines/test.mjs:8
    test('external edit conflict; serialized concurrent writes',async t=>{const s=await fixture(t);await s.manage({action:'create',machine_id:'test',machi
  • 写入本地文件
    machines/test.mjs:10
    test('symlinked machine directory rejected',async t=>{const s=await fixture(t);await fs.mkdir(s.root,{recursive:true});await fs.symlink(os.tmpdir(),pa
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis-plugin-loader@deepseek-ai/cordis-plugin-include@deepseek-ai/dsh-agent-loop@deepseek-ai/dsh-skill@deepseek-ai/dsh-user-questions@deepseek-ai/dsh-subprocess-local@deepseek-ai/dsh-api-gateway@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/dsh-typert-protocol@deepseek-ai/schemastery@deepseek-ai/dsh-agent
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 登记机器目录
  • SSH健康检查
  • 生成应用监控卡片

机器目录、SSH 健康检查,以及 DeepSeek Harness 中由模型生成的应用程序 UI 卡片

README

由 DeepSeek 最新模型翻译生成
DSH A2UI Studio 你的机器与应用,由 Agent 管理,由 A2UI Studio 记住。 把机器和应用交给 DeepSeek Harness 中的 Agent 管理。你交代目标与需求,Agent 可以完成机器登记、应用调查、知识记录和专属界面生成;插件把这些成果留给下一次使用。 English · 下载 v0.3.2 · 安装与维护 · 完整使用故事 1. 交代目标,Agent 完成纳管 “把这台机器登记为队列服务器,看看任务队列放在哪里,帮我记下来。” Agent 查重后调用 machine_manage 登记或更新档案。需要远程访问时,通过已有的安全访问配置提供连接信息;手动填表只是备用入口,不是使用前提。 回看 Agent 登记结果并打开已保存的机器档案 8 秒:从 Agent 已完成的登记结果,打开机器档案。 2. 理解应用,留下专属工作界面 “做一个只读面板,让我看到运行中、等待、完成、失败和并发占用。” Agent 读取应用、记录用途与位置,再提出适合这个应用的卡片。你审阅执行定义后发布,插件保存说明、卡片版本和操作回执。 查看已记录的应用知识与发布后的卡片 8 秒:展开应用说明,回到卡片刷新状态。 3. 平时直接用,需要时继续委托 打开机器就能使用已保存的面板。
展开完整文档(README 剩余 1 节)
DSH A2UI Studio

你的机器与应用,由 Agent 管理,由 A2UI Studio 记住。

把机器和应用交给 DeepSeek Harness 中的 Agent 管理。你交代目标与需求,Agent 可以完成机器登记、应用调查、知识记录和专属界面生成;插件把这些成果留给下一次使用。

English · 下载 v0.3.2 · 安装与维护 · 完整使用故事

1. 交代目标,Agent 完成纳管

“把这台机器登记为队列服务器,看看任务队列放在哪里,帮我记下来。”

Agent 查重后调用 machine_manage 登记或更新档案。需要远程访问时,通过已有的安全访问配置提供连接信息;手动填表只是备用入口,不是使用前提。

回看 Agent 登记结果并打开已保存的机器档案

8 秒:从 Agent 已完成的登记结果,打开机器档案。

2. 理解应用,留下专属工作界面

“做一个只读面板,让我看到运行中、等待、完成、失败和并发占用。”

Agent 读取应用、记录用途与位置,再提出适合这个应用的卡片。你审阅执行定义后发布,插件保存说明、卡片版本和操作回执。

查看已记录的应用知识与发布后的卡片

8 秒:展开应用说明,回到卡片刷新状态。

3. 平时直接用,需要时继续委托

打开机器就能使用已保存的面板。需要调查或调整时,点击 @ 把机器带入对话,Agent 可以读取已有档案,不必每次重新交代环境。

点击 @ 将机器引用到对话

7.5 秒:点击 @ 带入对话,没有提交新请求。

三段真实 DSH 短录屏,使用虚构的本地演示数据;回看已完成的结果,不冒充实时生成。说明与静态图。 插件保留 Agent 明确写入的知识,不是自动记住所有聊天。

另一个应用案例:双 GPU 监控与功耗控制。同样的管理方式,可以留下完全不同的工作界面。

一个包里有什么

| 能力 | 用途 |
| 机器目录 | 持久化记录、多条 SSH 连接、默认路径、连接探测与 @ 引用 |
| 应用卡片 | 模型编写布局、数据绑定、条件控件与连续数值色阶 |
| 持久化操作 | 卡片修订、发布审核、执行授权与操作回执 |
| UI 扩展 | 标准组件不够时,使用自定义卡片扩展 |
| 配套 skills | 教模型如何管理机器、编写卡片、开发扩展与验证真实界面 |

这是 A2UI-inspired 的实现:模型描述结构化界面,宿主负责渲染;并不宣称完整兼容 A2UI 协议。自定义扩展包含代码,需要单独审查,不能等同于纯声明式布局。

安装

原名 DSH Control Studio。安装包和插件标识暂时保留 dsh-control-studio,保证已有安装兼容;本次展示名称变更无需迁移数据或重新安装。

当前为预发布版。支持 Linux 与 Windows 桌面版,DSH 0.2.1-alpha.1 / 0.2.1-rc.2。 Windows 安装与能力边界。非 DeepSeek 官方插件。

先下载并校验:

curl -fL -o dsh-control-studio-0.3.2.tgz \
https://github.com/zhaochengggg/dsh-a2ui-studio/releases/download/v0.3.2/dsh-control-studio-0.3.2.tgz
curl -fL -o SHA256SUMS \
https://github.com/zhaochengggg/dsh-a2ui-studio/releases/download/v0.3.2/SHA256SUMS
sha256sum -c SHA256SUMS

确认输出 OK 后,以运行 DSH 的用户安装:

dsh plugin --profile web add ./dsh-control-studio-0.3.2.tgz --allow-build=esbuild
dsh --profile web --dump-config

重启 DSH、刷新浏览器。web 按实际 profile 名称替换。只需这一个包,不需要旧的两个插件。当前使用预构建 tgz 分发,不要直接用 git 安装;尚未发布 npm 包。--allow-build=esbuild 仅批准扩展构建器需要的依赖脚本。

第一次建议先做只读面板

已经安装 dsh-machine-apps 的用户,请先阅读改名迁移说明,不要同时启用两个包。

让 Agent 使用 machine-management 登记机器并记录连接,再用 app-cards-authoring 检查目标应用、提出只读卡片。已有机器可以直接 @ 到对话。确认数据来源和显示正确后,再添加操作按钮。

本地执行默认未授权;远程操作使用登记的 SSH 身份。打开卡片不会自动应用设置。安装插件也不会修改网络开放、代理、认证或 GPU 服务。目录白名单、数据路径、备份与升级见安装与维护。

想接入自己的应用?欢迎提交 issue,说明 DSH 版本、想要的面板和脱敏后的错误信息。不要上传凭据或私有机器地址。
预览分享卡片长什么样 ↓zhaochengggg/dsh-a2ui-studio
分享 · DeepSeek Harness Hub
zhaochengggg/dsh-a2ui-studio

你的机器与应用,由 Agent 管理,由 A2UI Studio 记住。

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部