用持久会话组队分工,凭 Git 提交验收交付
29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Gdenich/dsh-live-teams该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 39 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 36 处,展示前 36 条)
- 发起网络请求lib/client.js:762
const response = await fetch(path, { - 发起网络请求lib/client.js:3010
const response = await fetch(`/api/live-teams/journal?${query.toString()}`, { - 读取本地文件lib/team-store.js:229
readFileSync(path.join(this.requireLocation(teamId).directory, DISABLED_MARKER), "utf8"); - 读取本地文件lib/team-store.js:736
contents = readFileSync(file, "utf8"); - 读取本地文件lib/team-store.js:754
contents = readFileSync(file, "utf8"); - 读取本地文件lib/roles.js:172
entries = readdirSync(directory); - 读取本地文件lib/roles.js:183
contents = readFileSync(file, "utf8"); - 读取本地文件lib/roles.js:222
workspaceDirectoryExists = statSync(workspacePath).isDirectory(); - 读取本地文件lib/mailbox.js:654
if (!existsSync(this.messagesFile) || !existsSync(this.deliveriesFile)) return []; - 读取本地文件lib/mailbox.js:655
const messages = JSON.parse(readFileSync(this.messagesFile, "utf8")); - 读取本地文件lib/mailbox.js:656
const deliveries = JSON.parse(readFileSync(this.deliveriesFile, "utf8")); - 读取本地文件lib/task-store.js:512
const active = parseTasksState(JSON.parse(readFileSync(this.location.file, "utf8")), this.teamId, this.location.archiveDirectory).tasks.filter((task) - 读取本地文件lib/task-store.js:532
const attempts = parseAttemptsState(JSON.parse(readFileSync(this.location.attemptsFile, "utf8")), this.teamId).attempts.filter((attempt) => attempt.ta - 读取本地文件lib/task-store.js:547
const state = parseTasksState(JSON.parse(readFileSync(this.location.file, "utf8")), this.teamId, this.location.archiveDirectory); - 读取本地文件lib/member-tools.js:1140
return { text: await readFile(path.join(binding.workspacePath, ".dsh-live-teams", "BRIEF.md"), "utf8") }; - 写入本地文件lib/member-tools.js:1149
await mkdir(path.join(binding.workspacePath, ".dsh-live-teams"), { recursive: true }); - 写入本地文件lib/member-tools.js:1151
if (next.length === 0) await writeFile(file, "", "utf8"); - 写入本地文件lib/member-tools.js:1152
else await writeFile(file, next, "utf8"); - 读取本地文件lib/context-provider.js:34
const mtimeMs = statSync(file).mtimeMs; - 读取本地文件lib/context-provider.js:37
const value = readFileSync(file, "utf8").trim(); - 读取本地文件lib/routes.js:194
parsed = JSON.parse(await readFile(file, "utf8")); - 读取本地文件lib/routes.js:2126
briefing = (await readFile(path.join(resolved.workspacePath, ".dsh-live-teams", "BRIEF.md"), "utf8")).trim(); - 读取本地文件lib/plugin.js:181
if (!existsSync(teamStateFile)) return false; - 读取本地文件lib/plugin.js:183
readFileSync(disabledMarker, "utf8"); - 读取本地文件lib/plugin.js:192
return text(JSON.parse(readFileSync(teamStateFile, "utf8")).name)?.trim() ?? input.teamName; - 读取本地文件lib/plugin.js:531
await access(target); - 写入本地文件lib/plugin.js:536
await mkdir(workspaceRolesDirectory, { recursive: true }); - 写入本地文件lib/plugin.js:538
await copyFile(globalPath, target, 0); - 读取本地文件lib/tree-snapshot.js:47
entries = await fsp.readdir(path$1.join(workspacePath, relative), { withFileTypes: true }); - 读取本地文件lib/tree-snapshot.js:62
const stat = await fsp.stat(path$1.join(workspacePath, next)); - 执行外部命令固定命令lib/changed-paths.js:34
execFile("git", [ - 执行外部命令固定命令lib/changed-paths.js:54
execFile("git", [ - 执行外部命令固定命令lib/git-artifacts.js:19
const child = execFile("git", [ - 读取本地文件lib/git-artifacts.js:99
const stat = await fsp.lstat(absolute); - 读取本地文件lib/git-artifacts.js:101
content = Buffer.from(await fsp.readlink(absolute)); - 读取本地文件lib/git-artifacts.js:104
content = await fsp.readFile(absolute);
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-session@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 持久会话组队分工
- 声明路径与证据评审
- 绑定Git提交流程
一队长期存活的 DSH 会话:持久任务、声明路径、带证据的评审,以及绑定 Git 的提交流程
README
由 DeepSeek 最新模型翻译生成dsh-live-teams
DSH Live Teams 的主机端部分。
Team 标签页的卡片几何、字号层级和交互模式改编自 dsh-context v0.52.1,作者为 bowenliang123, Copyright 2025,依据 Apache License 2.0 授权;其实现经转录并为 dsh-live-teams 修改。
安装
dsh plugin --profile add dsh-live-teams
然后在该 profile 的 cordis.patch.yml 行中启用它(DSH_LIVE_TEAMS=1)并重启 DSH。若从检出目录而非注册表安装:
dsh plugin --profile add github:Gdenich/dsh-live-teams
要求:DSH Desktop 0.1.5-rc.1 或更新版本。插件在挂载时检查主机,若缺少所需服务,会以可读的原因关闭团队功能,因此 DSH 更新不会让它处于半工作状态。支持的版本在 package.json 的 dsh.compatibility.dshReleases 下声明。
展开完整文档(README 剩余 1 节)
dsh-live-teams DSH Live Teams 的主机端部分。 Team 标签页的卡片几何、字号层级和交互模式改编自 dsh-context v0.52.1,作者为 bowenliang123, Copyright 2025,依据 Apache License 2.0 授权;其实现经转录并为 dsh-live-teams 修改。 安装 dsh plugin --profile add dsh-live-teams 然后在该 profile 的 cordis.patch.yml 行中启用它(DSH_LIVE_TEAMS=1)并重启 DSH。若从检出目录而非注册表安装: dsh plugin --profile add github:Gdenich/dsh-live-teams 要求:DSH Desktop 0.1.5-rc.1 或更新版本。插件在挂载时检查主机,若缺少所需服务,会以可读的原因关闭团队功能,因此 DSH 更新不会让它处于半工作状态。支持的版本在 package.json 的 dsh.compatibility.dshReleases 下声明。 当前功能:持久的工作区所属团队状态;一个窄 Session 端口;一个去重命令队列;Session 作用域的上下文提供者;带尝试、声明路径、评审与验收的任务;一个协调式调度器,启动 lead 分配的内容,并在无信息时显示沉默而非猜测;Git 绑定的提交,其评审是提交范围,其集成是比较并交换;以及面板中的人类任务界面,可直接创建、编辑和发布工作。每项决策背后的依据见 docs/decisions/(ADR 0001–0012),实时证据见 docs/implementation/pilot-findings.md。 挂载通过本包的 Cordis 补丁选择性启用。除非组合设置 DSH_LIVE_TEAMS=1,否则该行处于禁用状态;在没有工作区路径的情况下启用它会 大声失败,而不是半接线运行。 布局 TypeScript 源码位于 src/;lib/ 是构建输出,不手动编辑。 本包遵循第一方 DSH 约定:ESM lib/.js,声明文件位于其旁,exports 使用 types/default 配对,files,对 Harness 包的 peer 依赖,以及 dsh.bundle.patch。 构建刻意不打包:每个入口都是自包含的,因此不会有哈希共享 chunk 落在已发布的 files 列表之外,且 lib/ 与 src/ 一一对应。 模块 | 模块 | 职责 | | errors.ts | 领域分类、平台错误转换、仅审计详情 | | storage.ts | 原子发布(临时文件、fsync、rename、目录 fsync)以及进程本地锁 | | team-store.ts | /.dsh-live-teams 下的团队状态、修订 CAS、bindingGeneration、容错的 events.jsonl | | session-bridge.ts | 架构文档 §9 中的八方法 Session 端口 | | command-queue.ts | 持久准入、语义去重、代际隔离、重试 | | context-provider.ts | 用于 systemPrompt.context(...) 的 Session 作用域成员上下文 | 此处强制的不变量 1. 成员身份、Session 身份、角色和模型路由是相互独立的值。 2. 每个源自插件的命令在到达端口之前都会先由 command-queue 准入。 3. 准入对 idempotencyKey 是幂等的。平台接缝则不是:在兼容性验证中,两个共享同一 requestId 的 prompt 调用都被接受了。 4. 命令会记录其被准入时所对应的 bindingGeneration,当成员被重新绑定后,该命令会被拒绝。 5. interrupt 会取消一个回合,且绝不触碰任务尝试的所有权。 6. 团队上下文在每次组装时都会从权威状态重新计算,且从不缓存。 7. 模型选择被有意不实现:平台调用还会重写部署范围的默认模型,而该策略需要明确的人工决策。 测试 pnpm --filter dsh-live-teams check pnpm --filter dsh-live-teams build pnpm --filter dsh-live-teams test 测试文件覆盖错误分类体系、存储、桥接、队列、上下文提供者,以及一个集成文件,该文件在临时工作区上通过提供者和桥接驱动真实存储。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Gdenich/dsh-live-teams
用持久会话组队分工,凭 Git 提交验收交付
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,462已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,848已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,246已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 4,717已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,711已汉化DSH
71.1