dsh-lsp-packs (dsh-lsp-cpp)
基于 clangd 为 DeepSeek Harness 提供 C/C++ 代码导航和语言服务配置。
988hj7tczd-oss
@988hj7tczd-oss
⬇ 1
★ 3
main
安装
dsh plugin --profile web add github:988hj7tczd-oss/dsh-lsp-packs
需要可复现安装时,可在仓库后追加 #commit 固定提交。
基于 clangd 为 DeepSeek Harness 提供 C/C++ 代码导航和语言服务配置。
该插件未提供要点说明,请参考仓库 README。
cordisdeepseek-harnessdsh-pluginidelanguage-serverlsp
- 安装并启动 DeepSeek Harness:
npx @deepseek-ai/dsh web - 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
- 用 dsh plugins list 确认已安装,必要时重启 Harness 生效
插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。
| 代码仓库 | github.com/988hj7tczd-oss/dsh-lsp-packs/tree/main/dsh-lsp-cpp |
| 许可证 | MIT |
| 主要语言 | main |
| 下载量 | 1 |
| GitHub 星标 | 3 |
| 最近推送 | 2026-09-01 |
| 收录日期 | 2026-09-19 |
| 分类 | 开发与运行时 |
事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。
以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。
# dsh-lsp-packs
> **独立安装说明**
> 每个 `dsh-lsp-/` 都是可独立安装的 DSH 插件包,依赖通过 npm registry 获取,不要求用户预先检出相邻的 `dsh-src`。本仓库的 `pnpm-workspace.yaml` 仅用于本地一次性构建和测试全部 12 个语言包。
> 本地开发/验证可直接执行 `pnpm install && pnpm build`;语言 server 二进制仍需按各包 README 单独安装。
按语言开箱即用的 **LSP 语言配置包** 插件系列(DeepSeek Harness / DSH)。
> 装上一个包,该语言就有原生代码导航:`lsp` 工具(`goToDefinition` / `findReferences` / `goToImplementation` / `hover`)无需自行实现任何 LSP 协议。每个语言一个 Cordis 配置插件,复用官方通用底座 `@deepseek-ai/dsh-lsp-stdio` + `@deepseek-ai/dsh-tool-lsp`,共 12 个语言包,**底座零改动、零重复**。
Out-of-the-box, per-language LSP configuration packs for DeepSeek Harness: one Cordis plugin per language, all reusing the same shared base (`@deepseek-ai/dsh-lsp` seam + `@deepseek-ai/dsh-lsp-stdio` stdio host + `@deepseek-ai/dsh-tool-lsp` model tool).
## 语言包一览(12 个)
| 语言包 | 默认 server | extensionToLanguage |
|---|---|---|
| `dsh-lsp-pyright` | `pyright-langserver --stdio` | `.py` / `.pyi` → `python` |
| `dsh-lsp-rust` | `rust-analyzer` | `.rs` → `rust` |
| `dsh-lsp-go` | `gopls` | `.go` → `go` |
| `dsh-lsp-cpp` | `clangd` | `.c`/`.h` → `c`;`.cpp`/`.hpp`/`.cc` → `cpp` |
| `dsh-lsp-java` | `jdtls` | `.java` → `java` |
| `dsh-lsp-ts` | `typescript-language-server --stdio` | `.ts`→`typescript`、`.tsx`→`typescriptreact`、`.js`→`javascript`、`.jsx`→`javascriptreact` |
| `dsh-lsp-ruby` | `ruby-lsp --stdio` | `.rb` → `ruby` |
| `dsh-lsp-php` | `intelephense --stdio`(可切 `phpactor`) | `.php` → `php` |
| `dsh-lsp-lua` | `lua-language-server --stdio` | `.lua` → `lua` |
| `dsh-lsp-kotlin` | `kotlin-language-server` | `.kt` / `.kts` → `kotlin` |
| `dsh-lsp-swift` | `sourcekit-lsp` | `.swift` → `swift` |
| `dsh-lsp-csharp` | `omnisharp --stdio`(可切 Roslyn/`dotnet` 方案) | `.cs` → `csharp` |
每个包目录(如 `dsh-lsp-pyright/`)自包含:
```
dsh-lsp-/
├── cordis.yml # dsh.bundle patch:注册本插件行(`dsh plugin add` 时自动装配)
├── package.json # @dsh-lsp-packs/dsh-lsp-;声明 dsh.bundle.patch
├── src/index.ts # Cordis 插件:name / inject / Config / apply
├── README.md # 安装 server(按语言)、支持扩展表、用法与示例
├── tests/smoke.e2e.ts # 冒烟:离线(默认值+fallback)+ 真实 server 4 操作
└── LICENSE # MIT
```
## 快速开始
### 1. 装配共享底座(一次,host 层)
`ctx.lsp` 服务、`lsp` 工具、以及同一执行世界的 fs/subprocess 由部署方装配**一次**,所有语言包共用。就绪片段见 [`examples/base-composition.cordis.yml`](examples/base-composition.cordis.yml):
```yaml
- insert:
- id: lsp-service
name: '@deepseek-ai/dsh-lsp'
- id: tool-lsp
name: '@deepseek-ai/dsh-tool-lsp'
# fs / subprocess 若部署已有则保留现有行,缺谁补谁
```
### 2. 装语言包
```bash
dsh plugin add @dsh-lsp-packs/dsh-lsp-pyright # 发布后的包名
# 或本地路径:
dsh plugin add /path/to/dsh-lsp-packs/dsh-lsp-pyright
```
包的 `cordis.yml` 即其 `dsh.bundle.patch`,安装后自动把插件行插入组合;`apply()` 内部为 `ctx.lsp` 装配一个配好该语言默认值的 `dsh-lsp-stdio` 实例。
### 3. 安装语言 server(前置条件)
插件**不下载/不安装** server 二进制(与上游 anthropics LSP 插件一致,见各包 README 的安装指引,pyright 支持 npm / pip / pipx 三种方式)。server 未安装时,插件仍可加载:查询返回结构化 `LSP_UNAVAILABLE` 错误(包含缺失命令与原因),会话不崩溃、其余工具不受影响。
## 设计要点
- **配置层而不是协议层**:包只声明 `servers` 表(command / args / extensionToLanguage / 边界参数),协议与进程编排全部交给 `@deepseek-ai/dsh-lsp-stdio`,模型侧工具由 `@deepseek-ai/dsh-tool-lsp` 提供——12 个包对底座零改动(验收标准 3)。
- **懒启动**:加载时不拉起 server,首次匹配查询才 spawn(与上游行为一致)。
- **Config 覆盖**:`Config` 允许覆盖 `command` / `args` / `env` / `extensionToLanguage` 等全部字段(默认与 README 一致),便于用户本机路径不同的场景。
- **No-server fallback**:加载期解析可执行文件失败时,注册占位 provider,查询统一抛 `LSP_UNAVAILABLE`,保证“未装 server 时不影响其他工具”。
## 测试
```bash
pnpm verify # 离线结构冒烟:node 直跑,无需 node_modules(脚本内嵌 PROMPT.md 规格表,逐包核对)
pnpm test # vitest:每包 3 个 lane
```
每个 `tests/smoke.e2e.ts` 三个 lane:
1. **pack defaults(离线,总跑)**——断言默认 command / args / 扩展表 / provider id 与 README 一致;
2. **missing server(离线,总跑)**——用不可解析的 command 加载,验证查询返回 `LSP_UNAVAILABLE`、插件不崩溃;
3. **real server(需要真 server)**——对样例文件跑 `lsp` 工具 4 个操作,断言跳转/引用结果非空;server 不在 PATH 或不可用时**自动跳过**(部分 server 需要预构建索引,如 sourcekit-lsp 需 `swift build`,构建失败时仅跳过依赖索引的操作)。
> 本机(macOS,2026-08-23)已真实跑通:12/12 测试文件通过(42 passed / 42 skipped),
> 其中 **clangd 4 操作全绿**、**sourcekit-lsp 定义/hover 通过**、全部 12 包离线 lane
> (默认值 + `LSP_UNAVAILABLE` fallback)通过;`tsc` 对 24 个 TS 文件 0 错误。
> 详见 [docs/verification.md](docs/verification.md)。
## 目录结构
```
dsh-lsp-packs/
├── PROMPT.md # 制作指令(勿改)
├── README.md # 本文档
├── package.json / pnpm-workspace.yaml / tsconfig.base.json / vitest.config.ts
├── LICENSE # MIT(根)
├── examples/
│ └── base-composition.cordis.yml # 共享底座装配片段(一次性,host 层)
├── docs/
│ └── verification.md # 本机真实运行验证记录
├── scripts/
│ ├── generate-packs.mjs # 生成器:12 个包的唯一事实来源(npm run generate)
│ └── verify.mjs # 离线结构验证(npm run verify)
└── dsh-lsp-/ # 12 个独立语言包(每个可独立发布/安装)
```
## 生成与再生成
语言默认值集中在 `scripts/generate-packs.mjs` 的 `PACKS` 表;修改后运行 `pnpm generate` 重新生成 12 个包(生成的文件已提交,生成器只是维护入口)。
## License
MIT —— 见根 `LICENSE` 与各包 `LICENSE`。各语言 server 是第三方二进制,版权归其各自项目。
## 权限、失败边界与 DSH STORE 状态
- [PERMISSIONS.md](./PERMISSIONS.md):运行时读取面 / 命令面(固定 argv,非 shell)/ 写面 / 外部服务 / 失败边界 / 供应链 / 文件权限信号(无 chmod/chown、644、无 setuid/setgid)。
- [docs/store-evidence.md](./docs/store-evidence.md):一次性 Profile 安装 → 启动(工具注册清单)→ 卸载步骤、本地离线证据、待宿主补录真实运行记录说明,并逐项回应 DSH STORE 五类审查信号(仓库 canonical 匹配 / Node 声明 / 供应链 / 文件权限 / 命令权限)。
- STORE 复检由 dsh-safe-plugin-manager 每 3 小时自动执行;本仓库已按清单契约声明(package.json 的 `repository` / `engines.node` / `dsh.compatibility` / `dsh.permissions`)。
数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。