跳到主内容

base/packages/bundle/base

90Star8Fork0Issue1Watching

把 dsh 全套基础能力打包成 profile 组合包,作为每个 profile 的第一层 patch,承载模型、工具、沙箱、权限、会话持久化等 60+ 基础行。

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
MIT
分支
master
agentdeepseekdeepseekharness-plugindsh-pluginharness

安装

命令web profile
$ dsh plugin --profile web add @deepseek-ai/dsh-base

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 whitelonng/dshcode/packages/bundle/base:先查看仓库 https://github.com/whitelonng/dshcode 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

入口包名:@deepseek-ai/dsh-base,落地页 ID:whitelonng/dshcode/packages/bundle/base。下文统称"基础组合包"。

一句话定位

它是 dsh 出厂 profile 的"第一层 patch"——把模型、Agent、工具、沙箱、权限、会话持久化、遥测、subagent 等 60 多个基础插件一并注入到空 profile 的根上,相当于浏览器的出厂默认扩展集合;其他模式组合包和用户配置都在它之上叠加或按行覆盖。

核心能力

  • 引入 LLM 适配器(DeepSeek 原生 + pi-ai 多 provider 桥)和默认模型选择(agent-default-model 默认 deepseek-official / deepseek-v4-flash)
  • 挂载 Agent 主循环(agent / agent-loop / agent-default-model / agent-instructions / system-prompt),奠定任务派发骨架
  • 暴露基础工具:bash/pwsh(按平台二选一)、fs、fs-search、str-replace-editor、web_search、todo、subagent、subagent-fork、subagent-control、subagent-report、workflow、goal、skill、ralph、jobs 等
  • 装配持久化与会话管理:JSONL 会话日志(写到 $DSH_HOME/sessions)、SQLite 会话索引(默认内存模式、关闭内容搜索)、内存型 attachment 字节仓库、checkpoint 策略与 projection
  • 启用文件沙箱、权限策略与审批开关,默认 workspace-write + ask,提供 read-only / workspace-write / danger-full-access 三档预设
  • 提供本地凭据与设置($DSH_HOME/.credentials.yaml + $DSH_HOME/settings.yaml,hot-reload)以及 OTLP 遥测挂载(默认关闭)

技术实现

  • 语言: TypeScript,但运行时是配置型——本包 src/index.ts 仅导出 {},没有运行时 API,所有行为由 cordis.patch.yml 描述
  • 关键依赖: @deepseek-ai/dsh-llm、@deepseek-ai/dsh-agent、@deepseek-ai/dsh-tools、@deepseek-ai/dsh-session-persistence-jsonl(任列 4 即可,详见 package.json:41-119)
  • 架构模式: 通过 package.json#dsh.bundle.patch manifest 字段声明 patch 路径,profile 组合器解析加载,没有任何 Cordis 钩子或事件注册
  • 入口文件: src/index.ts(仅声明 @module)、cordis.patch.yml(实质内容)、src/invariant.ts(一条空 invariant companion)

适用场景

每个出厂的 dsh profile(包括 headless、ACP、CLI、Web)都需要这一层作为开箱可用的能力底座;它不是给普通用户"按需启用"的扩展,而是所有上层 profile 拼装的前置条件。当用户想了解自己 profile 里那些默认能用、不能关的工具和默认值由谁决定时,看这一层的 patch 文件即可。

前置依赖与兼容性

依赖最低版本说明
DSH未单独声明(仓库未发布 < dsh-base 的下限)作为 dsh 同源 profile 组合包安装使用
Node^22.19.0 || >=24.0.0源自仓库根 package.json:8-10 的 engines 字段
平台macOS / Linux / Windows同一份 patch,bash 与 pwsh 工具栈按平台互斥挂载
原生模块无本包自身不引入原生模块,依赖闭包内某些 row 可能依赖

安装此包会自动引入 70+ 个 workspace 依赖(详见 package.json:41-119),包括 LLM、agent、工具、持久化、subagent、shell 等多个核心包。

安装方式

dsh plugin --profile web add github:whitelonng/dshcode/packages/bundle/base

配置项

本包没有"用户态"配置项;它定义的 50+ 行 row config 是给后续 profile 覆盖使用的默认值。常见的可被外部环境变量覆盖的行:

行 / 环境变量默认值说明
sandbox-policy.mode(环境变量 DSH_PERMISSION_MODE)workspace-write三档:read-only / workspace-write / danger-full-access
approval.policy(环境变量同上)ask(在 danger-full-access 下为 never)受 sandbox-policy 行同源取值驱动
session-telemetry-otel.mode(环境变量 DSH_TELEMETRY_MODE)DISABLED设为 FULL / FEEDBACK_ONLY 开启 OTLP 上报
session-telemetry-otel.exporter.url(环境变量 DSH_TELEMETRY_OTLP_URL)https://harness-telemetry.deepseeksvc.com/v1/logsOTLP/HTTP 上报端点,可指向自建收集器
agent-default-model.provider / .modeldeepseek-official / deepseek-v4-flash默认模型选择,可被 user profile 覆盖
session-query-sqlite.openAtnever全文搜索默认关闭,开启需覆盖为 first-search 或 startup,通常附带 path

DSH_TELEMETRY_DISABLED 只要非空(含 '0'/'false')就完全关闭遥测;launcher 在启动时直接 disable 该 row。

常见问题

Q: 这个组合包包含哪些能力?

A: 它汇集了 dsh 的全部"出厂自带"能力——LLM 适配器、Agent 主循环、bash 与 pwsh 工具、文件系统工具、subagent 派发与 fork、会话 JSONL 持久化、SQLite 会话索引、权限与沙箱策略、本地设置/凭据、OTLP 遥测、token 用量、压缩、计划模式、目标(goal)循环、Web 搜索等。

Q: 我可以编辑这个组合包吗?

A: 不需要也不建议。它的"配置"集中在同一份 cordis.patch.yml,由 profile 组合器在加载时挂入;你的覆盖应该写在自己 profile 的 cordis.patch.yml 里,按 row 的 id 整行覆盖即可。patch 的语义是"替换整行 config",没有深度合并。

Q: macOS / Linux 和 Windows 下行为有什么不同?

A: bash 与 pwsh 两套 shell 栈在同一份 patch 文件里互斥挂载。POSIX 上启用 bash-sandbox 与 tool-bash、禁用 pwsh 系列;Windows 上启用 pwsh 系列、禁用 bash 系列。沙箱、权限和 fs-sandbox 两边都生效,Windows 走 ACL 受限令牌 runner。

Q: 怎么开启遥测?

A: 出厂默认关闭。要开启需要把环境变量 DSH_TELEMETRY_MODE 设为 FULL 或 FEEDBACK_ONLY,并把 DSH_TELEMETRY_OTLP_URL 指向你的 OTLP/HTTP 收集器;导出记录会带上 $DSH_HOME/.anonymous-user-id 里的 UUID 作为 user.id。

Q: 默认是哪种权限模型?

A: 沙箱默认 workspace-write(写入限于工作区与本会话临时子目录),审批默认 ask。将环境变量 DSH_PERMISSION_MODE 设为 danger-full-access 可切到全权访问与免审批;设为 read-only 则只读。

Q: 默认能全文搜索会话历史吗?

A: 不能。session-query-sqlite 行默认 path: ':memory:' 且 openAt: 'never',全文搜索调用会返回 SESSION_QUERY_SEARCH_DISABLED;精确读取、标题与 lineage 仍可用。要启用需在 profile 覆盖里改成 first-search 或 startup 并提供持久化 path。

Q: 卸载它会发生什么?

A: 它是所有出厂 profile 的第一层 patch——把它从 dsh.profile.bundles 列表移除,整个 profile 会回到"仅剩用户自定义 row"的空状态,常用工具、模型、持久化都会消失。它不是面向普通用户的可选扩展,建议保留。

Q: 会话里的图片存在哪里?

A: 字节放在 attachment-local 行配置的本地目录(与 JSONL 会话日志分离)。会话日志里只保留内容寻址引用,由该 row 在每次请求时即时解析。

上手难度

入门 — 因为它没有暴露给用户的可写配置面,普通用户不需要懂它;想自定义的话只需要往自己的 cordis.patch.yml 里追加整行覆盖即可。

已知问题与限制

  • Patch 整行替换语义:profile 覆盖必须把目标行要保留的每个字段都重写一遍,没有深度合并层;README 显式列出此限制(README.md:21)
  • Windows 临时目录是会话私有子目录:workspace-write 把写入限制在工作区与本会话自己的 temp 子目录(<temp>\dsh-<hash>,受限子进程的 TMP/TEMP 被改写),read-only 不授予任何临时目录写入(README.md:22)
  • bash 与 pwsh 恢复配方必须配对:在 Windows 上想换回 bash 需要同时禁用 pwsh-sandbox/tool-pwsh 并重新启用 bash-sandbox/tool-bash,两边都注册同一个 bash 服务,单独开一边会让加载失败
  • 全文会话搜索默认关闭:session-query-sqlite 行 openAt: never,未在 profile 覆盖中开启前 SQL 不会打开(cordis.patch.yml:117-122)
  • 遥测默认关闭:session-telemetry-otel.mode 默认 DISABLED,未设 DSH_TELEMETRY_MODE 不会上报(cordis.patch.yml:148-161)

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/whitelonng/dshcode/packages/bundle/base)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录