你在官方 Web 开的对话,关掉以后在终端或桌面接着聊。
32.9/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kamanager2012/dsh-community该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-community(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.15.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/17 12:41:15
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 63 处,展示前 63 条)
- 读取本地文件apps/desktop/src/contracts-path.ts:15
return candidates.find((path) => existsSync(path)) - 读取本地文件apps/desktop/src/host-extract.ts:26
return existsSync(officialHostReady(destRoot)) && existsSync(officialHostBin(destRoot)) - 读取本地文件apps/desktop/src/host-extract.ts:36
if (existsSync(rooted)) return rooted - 读取本地文件apps/desktop/src/host-extract.ts:52
if (!existsSync(input.archivePath)) { - 删除本地文件递归apps/desktop/src/host-extract.ts:55
rmSync(input.destRoot, { recursive: true, force: true }) - 写入本地文件apps/desktop/src/host-extract.ts:56
mkdirSync(input.destRoot, { recursive: true }) - 执行外部命令来自配置/变量apps/desktop/src/host-extract.ts:58
const result = spawnSync(tarExecutable(), ['-xf', input.archivePath, '-C', input.destRoot], { - 读取本地文件apps/desktop/src/host-extract.ts:66
if (!existsSync(bin)) throw new Error(`extract official dsh missing ${bin}`) - 读取本地文件apps/desktop/src/host-extract.ts:68
if (!existsSync(appBoot)) { - 写入本地文件apps/desktop/src/host-extract.ts:71
writeFileSync(officialHostReady(input.destRoot), 'ok\n') - 写入本地文件apps/desktop/src/host-log.ts:6
mkdirSync(logDir, { recursive: true }) - 写入本地文件apps/desktop/src/host-log.ts:7
appendFileSync(join(logDir, 'host.log'), chunk) - 读取本地文件apps/desktop/src/json-file.ts:6
return JSON.parse(readFileSync(path, 'utf8')) as unknown - 写入本地文件apps/desktop/src/json-file.ts:13
mkdirSync(dirname(path), { recursive: true }) - 写入本地文件apps/desktop/src/json-file.ts:14
writeFileSync(path, `${JSON.stringify(value, null, 2)}\n`) - 发起网络请求apps/desktop/src/main.ts:242
const response = await fetch(url, { signal: AbortSignal.timeout(1_500) }) - 执行外部命令来自配置/变量apps/desktop/src/main.ts:397
const child = spawn( - 发起网络请求apps/desktop/src/main.ts:428
const response = await fetch(MARKETPLACE_CATALOG_URL, { - 写入剪贴板apps/desktop/src/main.ts:541
clipboard.writeText(text) - 读取本地文件apps/desktop/src/paths.ts:28
if (npmNode !== undefined && npmNode !== '' && existsSync(npmNode)) return npmNode - 读取本地文件apps/desktop/src/paths.ts:40
if (override !== undefined && override !== '' && existsSync(override)) return override - 执行外部命令固定命令apps/desktop/src/paths.ts:42
const probe = spawnSync('node', ['--version'], { - 读取本地文件apps/desktop/src/paths.ts:60
if (existsSync(unpacked)) return unpacked - 读取本地文件apps/desktop/src/paths.ts:89
const cliEntry = existsSync(staged) - 读取本地文件apps/desktop/src/paths.ts:111
if (paths.nodeExecutable.includes('/') && !existsSync(paths.nodeExecutable)) { - 读取本地文件apps/desktop/src/paths.ts:114
if (!existsSync(paths.cliEntry)) { - 执行外部命令来自配置/变量apps/tui/src/bin.ts:114
const result = spawnSync(packaged, [], { - 执行外部命令固定命令apps/tui/src/bin.ts:121
const result = spawnSync('pnpm', ['desktop'], { - 执行外部命令来自配置/变量apps/tui/src/bin.ts:230
const result = spawnSync( - 读取本地文件apps/tui/src/compose-patch.ts:15
const owned = readFileSync(join(patchDir, 'tui-owned.cordis.patch.yml'), 'utf8') - 读取本地文件apps/tui/src/desktop-launch.ts:22
return statSync(path).isFile() - 读取本地文件apps/tui/src/install.ts:6
return !existsSync(join(dir, 'node_modules', '@dsh-community', 'tui-surface')) - 执行外部命令固定命令apps/tui/src/install.ts:10
const result = spawnSync('pnpm', ['install'], { - 读取本地文件apps/tui/src/profile.ts:50
const created = !existsSync(join(dir, 'package.json')) - 写入本地文件apps/tui/src/profile.ts:51
mkdirSync(dir, { recursive: true }) - 读取本地文件apps/tui/src/profile.ts:54
const existing = existsSync(manifestPath) - 读取本地文件apps/tui/src/profile.ts:55
? JSON.parse(readFileSync(manifestPath, 'utf8')) as ProfileManifest - 写入本地文件apps/tui/src/profile.ts:57
writeFileSync(manifestPath, `${JSON.stringify(buildProfileManifest(existing), null, 2)}\n`) - 读取本地文件apps/tui/src/profile.ts:60
if (!existsSync(workspacePath)) { - 写入本地文件apps/tui/src/profile.ts:61
writeFileSync(workspacePath, 'packages:\n - .\n\nnodeLinker: hoisted\nautoInstallPeers: false\n') - 读取本地文件apps/tui/src/profile.ts:65
if (!existsSync(userPatch)) { - 写入本地文件apps/tui/src/profile.ts:66
writeFileSync(userPatch, '# User layer for dsh-community-tui. Applied after community patches.\n[]\n') - 写入本地文件apps/tui/src/profile.ts:70
writeFileSync(patchPath, input.communityPatch) - 执行外部命令来自配置/变量contracts/lib/run-official.ts:11
return execFileSync(process.execPath, [install.binPath, ...args], { - 发起网络请求packages/dsh-bridge/src/plugin-catalog.ts:90
const response = await fetch(url, { signal: AbortSignal.timeout(timeoutMs) }) - 读取本地文件packages/dsh-bridge/src/resolve-bin.ts:40
return JSON.parse(readFileSync(packageJsonPath, 'utf8')) as OfficialManifest - 读取本地文件packages/dsh-bridge/src/resolve-bin.ts:68
if (!existsSync(override)) { - 读取本地文件packages/dsh-bridge/src/resolve-bin.ts:71
if (!existsSync(packageJsonPath)) { - 读取本地文件packages/dsh-bridge/src/resolve-bin.ts:98
if (!existsSync(binPath)) { - 读取本地文件packages/dsh-bridge/src/session-store.ts:25
if (!existsSync(root)) return [] - 读取本地文件packages/dsh-bridge/src/session-store.ts:27
for (const project of readdirSync(root, { withFileTypes: true })) { - 读取本地文件packages/dsh-bridge/src/session-store.ts:30
for (const session of readdirSync(projectDir, { withFileTypes: true })) { - 读取本地文件packages/dsh-bridge/src/session-store.ts:35
if (!existsSync(transcript)) continue - 读取本地文件packages/dsh-bridge/src/session-store.ts:38
mtimeMs = statSync(transcript).mtimeMs - 执行外部命令来自配置/变量packages/dsh-bridge/src/spawn-web.ts:114
const child = spawn( - 执行外部命令固定命令packages/marketplace/src/cli.ts:48
const result = spawnSync('npm', ['view', `${packageName}@${version}`, 'dist.integrity'], { - 写入本地文件packages/marketplace/src/client.ts:45
mkdirSync(dirname(options.cachePath), { recursive: true }) - 写入本地文件packages/marketplace/src/client.ts:46
writeFileSync(options.cachePath, JSON.stringify(catalog, null, 2)) - 读取本地文件packages/marketplace/src/client.ts:52
const cached = parseCatalog(JSON.parse(readFileSync(options.cachePath, 'utf8'))) - 执行外部命令固定命令packages/marketplace/src/install.ts:29
const result = spawnSync('dsh', argv, { stdio: 'inherit', env: process.env }) - 读取本地文件packages/tui/src/image-input.ts:151
file = await stat(absolutePath) - 读取本地文件packages/tui/src/image-input.ts:180
data = await readFile(item.absolutePath) - 读取本地文件packages/tui-adapter/src/seams.ts:12
readFileSync(
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 终端与桌面端续聊
- 与官方Web共用配置
- 多平台客户端
DeepSeek Harness 官方版的社区发行版:WSL/Linux 终端、Windows/macOS 桌面端、Linux AppImage,与官方 Web 共用 ~/.dsh,非官方客户端。
README
由 DeepSeek 最新模型翻译生成dsh-community
你在官方 Web 开的对话,关掉以后在终端或桌面接着聊。
官方 DeepSeek Harness 的跨平台社区入口层:共享同一个 ~/.dsh 会话真源,绝不重写第二套 Agent 循环。
DeepSeek Harness 的社区发行、兼容性与安全验证层。
官方 DeepSeek Harness 是唯一执行内核。本仓不重写 Agent Runtime,而是在已发布的 @deepseek-ai/dsh 周围维护四件事:精确上游版本与契约跟踪、跨平台社区发行、第三方插件兼容性注册表、发行与插件安全证据。
项目共有 5 个 Community endpoints:WSL/Linux 终端、Windows Desktop、macOS Desktop、Linux AppImage、Android。前 4 个当前已有 Published Latest 发行产物;Android 的既有源码已恢复到本仓 apps/android 活跃主线,当前仍为 [UNVERIFIED],尚未进入 Published Latest。所有已发行入口默认共享官方 Runtime、官方插件链和同一个 ~/.dsh Session 真源。
你今天在官方 Web 开的对话,关掉以后用 dsh-community 终端可以接着聊;再打开 Desktop,仍然是同一条会话。
展开完整文档(README 剩余 1 节)
dsh-community 你在官方 Web 开的对话,关掉以后在终端或桌面接着聊。 官方 DeepSeek Harness 的跨平台社区入口层:共享同一个 ~/.dsh 会话真源,绝不重写第二套 Agent 循环。 DeepSeek Harness 的社区发行、兼容性与安全验证层。 官方 DeepSeek Harness 是唯一执行内核。本仓不重写 Agent Runtime,而是在已发布的 @deepseek-ai/dsh 周围维护四件事:精确上游版本与契约跟踪、跨平台社区发行、第三方插件兼容性注册表、发行与插件安全证据。 项目共有 5 个 Community endpoints:WSL/Linux 终端、Windows Desktop、macOS Desktop、Linux AppImage、Android。前 4 个当前已有 Published Latest 发行产物;Android 的既有源码已恢复到本仓 apps/android 活跃主线,当前仍为 [UNVERIFIED],尚未进入 Published Latest。所有已发行入口默认共享官方 Runtime、官方插件链和同一个 ~/.dsh Session 真源。 你今天在官方 Web 开的对话,关掉以后用 dsh-community 终端可以接着聊;再打开 Desktop,仍然是同一条会话。 One Harness. Five community endpoints. Four shipped today; Android active / UNVERIFIED. Runtime / Session / 插件事实仍归官方内核所有;社区层只维护发行、UX、兼容性与验证,不 vendor 官方源码,不另建第二套 Agent loop 或 Session store。 本仓的 Compatibility Registry 不是 awesome-list:第三方插件条目记录实际 testedDsh 版本、包完整性以及 network / data egress / credentials / filesystem / process / persistence 等结构化安全元数据;安装仍走官方 dsh plugin add 链。 | 状态 | 去哪看 | | Published Latest | releases/latest;真实 tag、安装包名、release/asset 证据以 current-release.json 为准 | | Candidate Source | 当前源码候选的 candidateTag、官方 core pin、workspace 产品号与 Dual-Badge 以 current-release.json 为准 | | Historical / Pre-release | Releases | Candidate Source 与 Published Latest 是两条独立状态。 源码可以先升级到新的官方候选版本,而 GitHub Latest、已发布安装包、插件 testedDsh 和真实 User-Loop 证据继续停留在上一个已验证版本。不要从 releases/latest 的版本号反推当前 workspace 版本,也不要从源码候选版本伪造尚未发布的安装包。 五个社区端的状态、Candidate / Published 身份、安装包名和证据标签统一以 current-release / current-release.json 为准。发行产物使用 keyless cosign 签名;验证方法见 release 文档。 | 发行面 | 命名 | 入口 | | 官方 Web | 官方上游兼容入口,不是 Community 发行端 | npx @deepseek-ai/dsh web | | WSL/Linux 终端 | 社区端 1:Terminal / TUI | dsh-community / dsh-community-tui / pnpm tui | | Windows 桌面 | 社区端 2:Desktop | Published Latest Setup.exe,或 pnpm desktop | | macOS 桌面 | 社区端 3:Desktop | Published Latest dmg,或 pnpm desktop | | Linux AppImage | 社区端 4:Desktop | 随 Release 附带;CLI 用户仍以终端为主 | | Android | 社区端 5:Remote Mobile(活跃源码,尚未发行) | apps/android;目标为轻量 Remote Client,[UNVERIFIED],不进 Published Latest,直到 Remote Android Acceptance 通过 | 命名红线:不叫 dsh-TUI / DeepSeek Harness Desktop(那是别人的产品名),不在 npm 冒用 @deepseek-ai 或 dsh-tui 的包名。我们基于官方内核,不是第二套 Harness。 仓库 · Stable · Releases · 已验证插件 开发基础是已发布的 @deepseek-ai/dsh。我们不 vendor 官方源码,也不用 patch-package 改官方 UI。扩展走外围发行层、契约层和插件验证层。 现在能给谁用 | 你要什么 | 用谁 | | 真正跑 agent | 官方 npx @deepseek-ai/dsh web | | 终端 | 本仓 dsh-community(启动官方 dsh --profile headless,不挂第三方 TUI) | | 局域网远程 Host 接入 | 本仓 packages/remote-adapter(已合入 Noise IK + 局域网传输;移动端保持 [UNVERIFIED]) | | 下载安装包 | Published Latest(具体 tag / 文件名见 docs/current-release.json;cosign 验证见 release 文档) | | 已验证能装的社区插件 | Desktop 市场页 · 本仓 pnpm marketplace · packages/marketplace/catalog.json(不是 awesome 目录) | | 官方表面快照 / 升 rc 契约 | 本仓 | 不要把本仓发到 npm 当 @deepseek-ai/dsh 或 dsh-tui 的替代。 社区生态导航 本仓是唯一用户下载入口。插件发现 CLI 和兼容性目录也在本仓;手册已并入本仓 handbook/。Labs 已并入本仓 archive/ 后删除;独立 Marketplace、Plugins、Edition 仓已在内容合流后删除。 | 仓库 | 角色 | 现在实际是 | | 本仓 handbook/ | 手册 | 知识 / 证据(原独立仓已并入) | | 本仓 packages/marketplace | 发现 / 安装 CLI + 兼容性目录 | pnpm marketplace;catalog.json 在本包内;安装仍走官方 dsh plugin add | | 本仓 archive/deepseek-harness-suite/(原独立仓已并入) | 已归档 Labs | 不要安装;独立仓于 2026-09-13 删除 | 官方执行核心仍是 DeepSeek Harness。社区层不重新实现 Agent loop、不另建 session 目录、不用 patch 改官方 UI。 从源码跑 需要 Node 22.15+、pnpm,以及 DEEPSEEK_API_KEY。官方 0.1.0-rc.8 起,session JSONL 用了 node:zlib 的 zstd API(22.15 才有)。Candidate Source 的实际 pin 以 packages/dsh-bridge/src/pin.ts / current-release.json 为准;latest-tested.json 只是契约兼容性推荐,不是 pin 真源。对话在官方 ~/.dsh。没密钥不会闷头进 Ink。 git clone https://github.com/kamanager2012/dsh-community.git cd dsh-community pnpm install export DEEPSEEK_API_KEY=... pnpm start # 有对话就接着最近一条,否则开新的 pnpm new # 强制开新对话 pnpm sessions # 查看本地会话历史 pnpm plugins # 查看已安装插件 pnpm desktop # 桌面壳(含社区市场页) pnpm marketplace -- list # 插件发现 CLI(需先能访问注册表) pnpm run doctor # 自检(不要裸跑 pnpm doctor,那是 pnpm 自己的) 同一入口也叫 dsh-community(dsh-community-tui 仍可用): dsh-community # 有对话就接着最近一条 dsh-community new dsh-community resume last dsh-community sessions dsh-community doctor dsh-community version dsh-community plugins # 只读目录;安装仍走官方 dsh plugin add / 桌面市场页 dsh-community desktop 打 Linux 解包目录或 AppImage(预览,未签名): pnpm desktop:package ./apps/desktop/release/linux-unpacked/dsh-community pnpm desktop:package -- --appimage Windows / macOS 安装包由 GitHub Actions(release workflow)在对应系统构建,本地无需坐在那些 OS 上。不要 npm publish 本仓的 workspace 包。发布顺序见 docs/release.md。 硬边界 | 做 | 不做 | | 依赖已发布的 @deepseek-ai/dsh | 不 vendor 官方 packages/*(Official Source Ownership = 0) | | Desktop 子进程启动 dsh web,只管理生命周期 | 不把 stdout 解析成业务协议 | | 默认共用官方 ~/.dsh session 真源 | 不把 DSH 数据迁进 Desktop AppData | | 我们的 TUI 自己组合、自己列官方 session | 不把参考 TUI 当上游,不维护第二套 session log | | contracts/ 快照官方表面 | 不维护一套社区 event-types.ts | 成功标准 1. 官方源代码 vendor = 0 2. TUI 对官方 Cordis row 的覆盖数量显著下降(33 → 15 → 8 → 只剩 TUI 自己的 insert) 3. TUI/Desktop 不实现 Agent loop、Session persistence、Tool execution 4. 一次 upstream rc bump,业务 UI 原则上零修改 5. WSL/Linux TUI、Windows/macOS Desktop 与官方 Web 能共享同一 Session 真源 6. 新版本兼容问题首先在 contract CI 爆 当前:1 / 3 / 5 按设计成立;2 社区 overlay 只改官方行,不挂第三方 TUI。第 4 条是官方发新包时的回归。 仓库布局 contracts/ 官方表面快照 + compatibility matrix packages/dsh-bridge 解析官方 bin、生命周期、数据目录 packages/marketplace 插件发现 CLI + catalog.json packages/remote-adapter 远程控制适配器、Noise IK 加密、局域网传输与会话事件投射 packages/tui 社区终端界面库(@dsh-community/tui-surface,基于 Ink) packages/tui-adapter 我们的 TUI 薄 patch + KPI packages/shared-types 社区自己的类型,不是官方 event fork apps/desktop 官方 dsh web 壳 + 官方 session 列表 + 内嵌社区市场页 apps/android Android Remote Client([LABS]/[UNVERIFIED];旧 embedded-runtime 证据待迁移) apps/tui 官方 dsh --profile / --resume 启动器 tests/upstream-contract vendor=0、pin、CLI Security 见 SECURITY.md:Desktop 的 Electron 加固边界(contextIsolation / 权限默认拒绝 / 导航白名单)、cosign keyless 发行签名的验证方法、~/.dsh 会话数据共享范围,以及如何私下报告安全问题。 Community 贡献与维护入口:Contributing · Governance · Community Conduct · Support · Security。 License MIT。运行时版权与第三方声明见 NOTICE 和官方包。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
kamanager2012/dsh-community
你在官方 Web 开的对话,关掉以后在终端或桌面接着聊。
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,364已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,709已汉化DSH
71.8
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,319已汉化DSH
71.5
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,533已汉化DSH
71.1
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 93,105已汉化DSH
71.1
这是你的仓库?认领条目