DeepSeek Harness 插件

988hj7tczd-oss/dsh-lsp-packs#dsh-lsp-pyright

Star 数 ★ 3 分类 开发与运行时 收录于 2026-09-01

基于 Pyright 为 DeepSeek Harness 提供 Python 代码导航和语言服务配置。

安装

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:988hj7tczd-oss/dsh-lsp-packs#path:/dsh-lsp-pyright

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

该插件的 README 只有英文版本。

Pyright language configuration pack for DeepSeek Harness (DSH). Static type checking and code intelligence for Python files. 中文:DSH 的 Pyright LSP「即插即用」语言包 —— 装上本包,.py / .pyi 文件即可用 lsp 工具做代码导航。

This pack is one Cordis configuration plugin: it registers a configured @deepseek-ai/dsh-lsp-stdio instance on ctx.lsp with the server command, launch arguments, and extension mapping for Pyright. It implements no LSP protocol — the shared base does: @deepseek-ai/dsh-lsp (the seam) + @deepseek-ai/dsh-tool-lsp (the model-facing lsp tool with goToDefinition / findReferences / goToImplementation / hover). Twelve packs reuse one unchanged base.

Installing the language server (three ways)

npm install -g pyright        # npm
pip install pyright           # pip
pipx install pyright          # pipx (isolated)

After install, pyright-langserver must be on PATH (npm/pipx put it there automatically).

⚠️ The plugin itself never downloads or installs the server binary — matching the upstream anthropics LSP plugins, the server is an external prerequisite. The plugin only resolves and launches it.

Supported extensions

| .py | python | | .pyi | python |

How the pack works

  • Lazy start: the server process is not started at load. lsp-stdio launches it lazily on the first matching query and keeps one process per workspace.
  • No-server fallback: if the executable cannot be resolved, the pack still loads; every lsp query for these extensions fails with a structured LSP_UNAVAILABLE error naming the command — the rest of the session is unaffected.
  • Config overrides: every default below can be overridden from the composition row, e.g. a server installed at a non-standard path:
- id: lsp-pyright
  name: '@dsh-lsp-packs/dsh-lsp-pyright'
  config:
    command: /absolute/path/to/pyright-langserver
    args:
      - --stdio
    extensionToLanguage:
      '.xyz': custom-language-id
    maxDocumentBytes: 8000000

All fields of the servers table documented in the @deepseek-ai/dsh-lsp-stdio README are accepted (command, args, env, extensionToLanguage, initializationOptions, configuration, byte/time bounds).

Mounting

  1. Mount the shared base once (the lsp service, the lsp tool, and a filesystem/subprocess pair for the same execution world) — ready-made snippet in examples/base-composition.cordis.yml of the dsh-lsp-packs repo.
  2. Install the pack (its cordis.yml is the dsh.bundle.patch, so the row inserts itself):
dsh plugin add @dsh-lsp-packs/dsh-lsp-pyright    # published name
dsh plugin add /path/to/dsh-lsp-packs/dsh-lsp-pyright  # or a local checkout

or compose the row directly (name resolved from the installed package):

- insert:
    - id: lsp-pyright
      name: '@dsh-lsp-packs/dsh-lsp-pyright'

Smoke test

pnpm vitest run --dir dsh-lsp-pyright   # or from the repo root: pnpm test
  • Lane 1 (offline): asserts the defaults (command / args / extension table / provider id).
  • Lane 2 (offline): asserts the missing-server fallback returns LSP_UNAVAILABLE.
  • Lane 3 (needs the server): runs the four lsp operations against sample.py; it auto-skips when pyright-langserver is not on PATH.

Pyright answers every query entirely within the opened document, so the smoke test needs no project scaffolding. The hover lane asserts the docstring (Add two numbers).

License

MIT — see LICENSE. The server binary is a third-party component with its own license.

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。