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

数字员工指挥台 kevin-luo/dsh-org-panel

DeepSeek 客户端
kevin-luo70 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

把任务自动派给数字员工并组队协作交付

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/kevin-luo/dsh-org-panel.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
生态插件
可安装,未声明 dsh 能力
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 70 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/11/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

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

展开查看检查明细 ↓

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

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 01:13:00

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

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

读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 39 处,展示前 39 条)
  • 读取本地文件
    src/capabilities/plugin-runtime.ts:415
    try { raw = await readFile(this.filePath, 'utf-8') } catch { raw = '' }
  • 写入本地文件
    src/capabilities/plugin-runtime.ts:444
    await mkdir(dirname(this.filePath), { recursive: true })
  • 写入本地文件
    src/capabilities/plugin-runtime.ts:446
    await writeFile(temp, JSON.stringify(file, null, 2), 'utf-8')
  • 写入本地文件
    src/capabilities/plugin-runtime.ts:447
    await rename(temp, this.filePath)
  • 发起网络请求
    src/capabilities/plugin-runtime.ts:779
    const request = await this.request(requestId)
  • 发起网络请求
    src/capabilities/plugin-runtime.ts:828
    const request = await this.request(requestId)
  • 读取本地文件
    src/collaboration/work-session-store.ts:162
    try { raw = await readFile(this.filePath, 'utf-8') } catch { return }
  • 写入本地文件
    src/collaboration/work-session-store.ts:177
    await mkdir(dirname(backup), { recursive: true })
  • 读取本地文件
    src/collaboration/work-session-store.ts:178
    try { await readFile(backup, 'utf-8') } catch { await writeFile(backup, raw, 'utf-8') }
  • 写入本地文件
    src/collaboration/work-session-store.ts:178
    try { await readFile(backup, 'utf-8') } catch { await writeFile(backup, raw, 'utf-8') }
  • 写入本地文件
    src/collaboration/work-session-store.ts:186
    await mkdir(dirname(this.filePath), { recursive: true })
  • 写入本地文件
    src/collaboration/work-session-store.ts:188
    await writeFile(temp, JSON.stringify(this.state, null, 2), 'utf-8')
  • 写入本地文件
    src/collaboration/work-session-store.ts:189
    await rename(temp, this.filePath)
  • 发起网络请求
    src/community-market.ts:117
    const response = await fetch(url, {
  • 读取本地文件
    src/host/org-panel-read.ts:42
    const info = await stat(path)
  • 读取本地文件
    src/host/org-panel-read.ts:52
    const names = await readdir(dir)
  • 读取本地文件
    src/host/org-panel-read.ts:55
    try { const info = await stat(join(dir, name)); if (!info.isFile()) continue; count += 1; bytes += info.size } catch {}
  • 读取密钥环境变量
    src/models/gateway.ts:122
    this.filePath = filePath || process.env.DSH_ORG_PANEL_SECRETS_FILE || join(homedir(), '.dsh-org-panel', 'secrets', 'credentials.enc')
  • 写入本地文件
    src/models/gateway.ts:131
    try { await chmod(path, mode); return true } catch { return false }
  • 读取本地文件
    src/models/gateway.ts:137
    try { raw = await readFile(this.filePath, 'utf-8') } catch { raw = '' }
  • 读取本地文件
    src/models/gateway.ts:145
    const info = await stat(this.filePath).catch(() => null)
  • 写入本地文件
    src/models/gateway.ts:158
    await mkdir(dir, { recursive: true })
  • 写入本地文件
    src/models/gateway.ts:161
    await writeFile(temp, JSON.stringify(file), 'utf-8')
  • 写入本地文件
    src/models/gateway.ts:164
    await rename(temp, this.filePath)
  • 读取本地文件
    src/models/gateway.ts:240
    const info = await stat(this.filePath).catch(() => null)
  • 读取本地文件
    src/models/gateway.ts:393
    base64 = await readFile(file, 'base64')
  • 发起网络请求
    src/models/gateway.ts:736
    const response = await fetch(String(image.url), { signal: controller.signal })
  • 发起网络请求
    src/models/types.ts:297
    const response = await fetch(request.url, {
  • 读取本地文件
    src/persistence/company-store.ts:108
    try { raw = await readFile(this.filePath, 'utf-8') } catch { raw = '' }
  • 写入本地文件
    src/persistence/company-store.ts:114
    await mkdir(dirname(this.filePath), { recursive: true })
  • 写入本地文件
    src/persistence/company-store.ts:116
    await writeFile(temp, JSON.stringify(this.state, null, 2), 'utf-8')
  • 写入本地文件
    src/persistence/company-store.ts:117
    await rename(temp, this.filePath)
  • 读取本地文件
    src/persistence/evolution-store.ts:43
    await readFile(target, 'utf-8')
  • 写入本地文件
    src/persistence/evolution-store.ts:49
    await writeFile(fallback, rawText, 'utf-8')
  • 读取本地文件
    src/persistence/evolution-store.ts:246
    try { raw = await readFile(this.filePath, 'utf-8') } catch { raw = '' }
  • 写入本地文件
    src/persistence/evolution-store.ts:279
    await mkdir(dirname(this.filePath), { recursive: true })
  • 写入本地文件
    src/persistence/evolution-store.ts:281
    await writeFile(temp, JSON.stringify(this.state, null, 2), 'utf-8')
  • 写入本地文件
    src/persistence/evolution-store.ts:282
    await rename(temp, this.filePath)
  • 写入本地文件
    src/persistence/migrations.ts:234
    await writeFile(target, rawText, 'utf-8')
扫描于 2026/11/2(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 任务自动派发
  • 多智能体组队协作
  • 交付任务

deepseek harness 纯牛马 —— 多智能体数字员工指挥台插件

README

由 DeepSeek 最新模型翻译生成
项目演进说明 基于本项目的产品思路与工程实践,已经独立升级为新的项目仓库:DSH Cyber。 DSH Cyber 面向本地优先的 AI 角色、数字员工与可视化世界运行时,持续建设持久化员工、世界与会话,角色和插件生态,Skill 安全治理、审批与审计,以及可共创的扩展市场。它承接了本项目在数字员工、工作组协作和 DSH 运行时方向上的探索,并将后续核心能力放在更完整的产品架构中持续演进。 欢迎前往 cyber-ai-agent/dsh-cyber 体验、反馈、提交 Issue 和 Pull Request,参与功能建设、问题修复与产品共创。 赛博公司 · DSH 数字员工运行时 2.0 把 DeepSeek Harness 变成一家公司:员工长期存在、各自成长,任务会自动组队,Web / 微信 / QQ / 飞书进入同一套协作运行时。 dsh-org-panel 2.0 的核心不是“多几个 Agent 卡片”,而是一套 Persistent Cyber Company Runtime。 每位数字员工都有自己的长期记忆、技能证据、工作履历、插件绑定、模型绑定和成长轨迹;公司任务由 Work Orchestrator 自动选择合适员工组成临时或持续工作组,员工之间可以直接协作、互相 @ 拉同事入场。
展开完整文档(README 剩余 1 节)
项目演进说明

基于本项目的产品思路与工程实践,已经独立升级为新的项目仓库:DSH Cyber。

DSH Cyber 面向本地优先的 AI 角色、数字员工与可视化世界运行时,持续建设持久化员工、世界与会话,角色和插件生态,Skill 安全治理、审批与审计,以及可共创的扩展市场。它承接了本项目在数字员工、工作组协作和 DSH 运行时方向上的探索,并将后续核心能力放在更完整的产品架构中持续演进。

欢迎前往 cyber-ai-agent/dsh-cyber 体验、反馈、提交 Issue 和 Pull Request,参与功能建设、问题修复与产品共创。

赛博公司 · DSH 数字员工运行时 2.0

把 DeepSeek Harness 变成一家公司:员工长期存在、各自成长,任务会自动组队,Web / 微信 / QQ / 飞书进入同一套协作运行时。

dsh-org-panel 2.0 的核心不是“多几个 Agent 卡片”,而是一套 Persistent Cyber Company Runtime。

每位数字员工都有自己的长期记忆、技能证据、工作履历、插件绑定、模型绑定和成长轨迹;公司任务由 Work Orchestrator 自动选择合适员工组成临时或持续工作组,员工之间可以直接协作、互相 @ 拉同事入场。秘书只是总裁办的一名普通员工,只会在行政、日程、会议安排等任务命中她的岗位时参与。

⚠️ 许可与商业使用

本项目当前使用 PolyForm Noncommercial License 1.0.0。

- ✅ 允许个人学习、研究、实验、非商业项目和其他许可证明确允许的非商业用途。
- ❌ 不允许商业使用,包括将本项目或其修改版用于收费产品、SaaS、商业服务、商业交付、转售,或由商业组织用于生产经营等商业目的。
- 💼 如需商业使用,请先取得作者的单独书面商业授权,可通过 GitHub Issue 联系。
- 📜 此前已经明确以 MIT License 发布的历史版本继续保留当时仓库中的许可文本;本次变更不追溯修改历史版本的许可文件。

完整条款见 LICENSE。本项目源码公开,但由于包含非商业限制,不属于 OSI 定义下的开源软件许可。

架构

Web / 微信 / QQ / 飞书 / 其他 DSH IM │ ▼ Work Orchestrator 任务理解 / 自动组队显式 @ / 动态邀请 │ ▼ Persistent WorkSession 来源 / 会话 / 成员 / 历史交付 │ ┌─────────┼─────────┐ ▼ ▼ ▼ 小刘 小画 阿明 ... 程序员 设计师 产品经理 │ │ │ └─────────┼─────────┘ ▼ Employee Runtime │ ┌─────────────┼─────────────┐ ▼ ▼ ▼ 长期记忆 SkillEvidence TaskHistory 插件/工具 自动成长 真实模型路由 │ ▼ evolution.json

DSH root session 只承担不可见的执行根职责,不代表任何员工,也不会以“主 Agent”身份向用户汇报。

2.0 真实能力

持久数字员工

每位员工独立持久化:

- 长期记忆与复盘
- 技能与真实 SkillEvidence
- XP / Level / 成长轨迹
- TaskHistory
- 插件绑定与健康状态
- 模型绑定
- 统计数据与最近活动

刷新页面或重启面板不会把员工重置成一份新 Prompt。

动态工作组

老板可以直接输入:

帮我重新设计 App 首页,同时评估实现成本和后续推广。

Work Orchestrator 会根据岗位和任务语义自动拉合适的员工,例如产品、视觉、开发、增长组成工作组。明确 @小刘 会锁定小刘,复杂任务仍可以补充相关同事;员工公开回复里写 @小麦 帮我评估传播策略,小麦会动态加入同一个工作组。

员工看到同一份原始任务以及前序同事真实公开输出,可以补充、质疑和接棒。业务输出直接来自具体员工,不经过秘书二次转述。

持久 WorkSession

同一个 Web / 微信 / QQ / 飞书会话会复用稳定工作组上下文:

- 原始来源平台
- conversation / thread
- sender
- 平台 messageId 去重
- 成立目标 goal
- 当前任务 currentTask
- 参与员工与加入原因
- 每轮员工真实回复、工具、结果、对应 taskId

第二轮任务能看到第一轮真实协作结果,重启 Host 后仍可恢复。

员工自己的真实文本模型

文本模型不再只是“配置里有个名字”。2.0 会读取 DSH LlmRuntime.listProviders() 的真实 provider route,并在启动员工子代理时传入:

agentOptions: {
provider: "deepseek",
model: "deepseek-v3"
}

配置模型时需要指定:

公司 Provider ID coder-main DSH Provider Route deepseek Model deepseek-v3

员工显式绑定优先,其次按公司文本模型顺序兜底。DSH route 不存在时绑定会如实标记为 missing,员工继续继承当前 DSH 默认模型,不会假装专属模型已经生效。

视觉 / 生图 / 视频 / Embedding 等公司能力继续由 Model Gateway 管理。

证据驱动的自我进化

技能不会因为 Agent 自述“我学会了”就升级。

真实任务完成 → 观测真实工具调用 → SkillEvidence → 重新计算技能等级 → 真正跨级才发 skill.updated → 成长轨迹 / 办公室升级反馈

同一任务同一技能不会重复刷证据;partial / blocked 不猜成败;找不到可信技能时不会凭空创建高级技能。

DSH 插件生态

员工发现能力缺口时优先扫描公司已有能力,再进入 DSH 插件生态。插件安装链为:

能力缺口 → 搜索候选插件 → 安装申请 → 人类审批 → 真实安装 → Capability Scan → Smoke Test → PluginBinding / SkillEvidence

LLM 无法给自己的安装申请批准。URL、tarball、git+ssh:、file:、本地路径和危险 shell 形式会被拒绝。

通讯与扫码接入

推荐安装 @xmanrui/dsh-im 作为通讯基础设施:

dsh plugin --profile web add @xmanrui/dsh-im

赛博公司通过 DSH RPC 复用它的微信 / QQ / 飞书等渠道能力。微信、QQ、飞书的扫码或授权状态会直接进入“设置 → 通讯”。

外部消息进入赛博公司后仍走同一个 Work Orchestrator,所以:

微信消息 → 自动识别任务 → 产品 + 设计 + 开发动态组队 → 各自真实执行 → 各自积累履历 / 技能证据 → 员工原话回到微信

内置 IM Runtime 保留 transport / ACL / fail-closed 权限能力,但新的业务协作不会再维护另一套员工路由逻辑。

可视化经营层

办公室是 Runtime 的游戏化投影,不生成随机“忙碌”。

- 真实任务开始 → 员工离开工位工作
- 真实会议 / 工作组 → 对应协作状态
- 真实插件行为 → 服务器 / 能力事件
- 真实技能跨级 → 短暂升级反馈
- 真实 blocked → 显示阻塞原因
- 无新事件 → 员工位置保持稳定

员工档案包含概览、成长、技能、记忆、插件、履历;长期目标是让个人空间里的设备、证书和工作台都对应真实插件 / 技能 / 模型资产。

设置中心

“设置”页只保留两类内容:真正可操作的设置,或者明确标注为只读状态的数据。

当前包括:

- 员工
- 模型
- 插件
- 通讯
- 安全
- 存储

模型支持新增、编辑、删除、启停、默认顺序和员工绑定。文本模型可选择 Host 当前真实注册的 DSH Provider Route,不需要手改 company.json。

安装

npm install dsh-org-panel

最小 Cordis 挂载:

- id: org-panel
name: dsh-org-panel
config:
tabLabel: 赛博公司 companyName: 赛博公司 · AI 员工总部

完整示例见 cordis.example.yml,配置说明见 docs/CONFIG.md。

持久化文件

默认位于:

~/.dsh-org-panel/evolution.json 员工记忆 / 技能 / 证据 / 履历 / 绑定 ~/.dsh-org-panel/company.json 公司配置 / 模型供应商 ~/.dsh-org-panel/work-sessions.json 跨渠道持久工作组 ~/.dsh-org-panel/plugin-approvals.json 插件审批台账 ~/.dsh-org-panel/secrets/... 本地密钥材料 ~/.dsh-org-panel/attachments/ 外部消息附件

evolution.json 与 work-sessions.json 解析损坏时都采用 fail-closed:先保留原文备份,再拒绝静默覆盖历史。

密钥与权限

模型和通讯配置中的密钥只接受 env:XXX / secret:XXX 引用,明文密钥拒绝落盘。

外部 IM 权限默认收紧:未知用户、未知会话和只读渠道不会被隐式提权。当前 DSH 子代理接口没有提供通用的工具白名单注入能力,因此 read-only 主要依赖“权限提示 + 对真实工具调用的事后审计 + 拦截对外回复 + blocked 记录”;如果写工具已经在 child 内执行,宿主无法倒转已经发生的副作用,这个边界不会在 UI 里伪装成预防式沙箱。

真实边界

- 外部 IM 继续工作需要 Host 曾经获得一个可用 DSH execution root;没有执行根时会明确提示,绝不伪造员工回复。
- 员工专属文本模型必须映射到 DSH 当前真实注册的 provider route;没有 route 时继承 DSH 当前默认模型。
- Browser 的 Host → Client 事件同步目前使用 /org-panel events/since 增量轮询,不是服务器 push;页面隐藏时停止轮询并带退避。
- DSH 父会话目前不能完整暴露 child 内每一步工具执行流,因此办公室不会编造“正在执行第 N 步”。
- @xmanrui/dsh-im 是独立 DSH 插件;未安装时扫码渠道会明确显示不可用,不把第三方插件硬绑成 package dependency。

验证门禁

PR 和 main 都必须通过:

npm ci
npm audit --audit-level=high
npm run typecheck
npm run build
node --test tests/*.test.mjs
npm run size-check

当前发布版本:2.0.0。
预览分享卡片长什么样 ↓kevin-luo/dsh-org-panel
分享 · DeepSeek Harness Hub
kevin-luo/dsh-org-panel

把任务自动派给数字员工并组队协作交付

这是你的仓库?认领条目

回到顶部