用 Tree-sitter 建立工作区符号索引,提供词法或可选 embedding 辅助的代码检索。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-code-intel
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:lonelymoon87/dsh-code-intel
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。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
面向 DeepSeek Harness 的符号级代码大纲、持久工作区索引,以及明确区分词法与 embedding 的代码检索插件。
v0.1.3 已针对 DSH 0.1.0-rc.8 与 0.1.1-rc.1 验证,同时保留兼容 rc.6 的 peer 范围。项目继续通过 GitHub Release 分发预构建包,npm 发布已经准备完成但尚未上线。
MVP
code_search对 AST 符号块和有界模块窗口排序,返回文件、行号、符号信息、片段、分数和实际检索模式;code_outline可直接解析单个文件,也可从持久索引投影目录大纲;- 工作区第一次检索会启动可取消的
code-index后台 job,不阻塞当前 agent turn; - 索引以 SQLite 保存到
.dsh/code-index/,并用 DSH 文件版本增量更新; fs/observed标记 DSH 文件操作带来的变更,Chokidar watcher 覆盖本地 shell、IDE 和外部修改;- TypeScript、TSX、JavaScript、JSX、Python、Go、Rust 和 Java 使用 VS Code 发布的 Tree-sitter WASM grammar,不需要安装脚本;
- 可选的 OpenAI-compatible embedding 端点会把余弦相似度加入词法排序。未配置时结果会明确标记
mode: lexical。
DeepSeek 官方 API 目前没有公开 embedding endpoint。本插件不会虚构默认端点,也不会把纯词法结果包装成语义检索。
索引生命周期
第一次调用 code_search 或目录级 code_outline 时,工具会返回 indexing 状态和 job id。可用内置 jobs 工具查看或等待任务,完成后再次调用。单文件大纲不依赖完整工作区索引。
缓存只保存由源码派生的文本和可选向量,位于工作区内部,并排除 .dsh 自身。它随时可以删除并完整重建。embedding 端点或模型变化时,检索配置指纹会自动使旧向量失效。
源码遍历和读取都经过 DSH filesystem service。SQLite 和 Chokidar 要求 provider 的 processPath() 能由插件宿主访问,因此 MVP 面向标准本地 filesystem execution world。远程 provider 如果返回宿主无法访问的路径,缓存创建会明确失败,不会错误索引另一处目录。
Node 22 仍把内置 SQLite 模块标记为 experimental。索引缓存可丢弃并带有 schema version,源码始终是唯一事实源。
检索模式
词法模式根据完整查询、查询词、符号名和路径计分。混合模式再加入 endpoint 向量的余弦相似度。已经配置的 endpoint 或 credential 如果失效,索引 job 或查询会明确失败。只有完全未配置 embedding 时才运行词法模式。
YAML 中只保存 credential reference,不保存秘密值。插件会在每次索引或查询操作中通过 ctx.credentials 解析,并且不会持久化 credential。
权限与数据
- Code Intel 通过 DSH filesystem service 读取受支持的源码文件,监听解析后的本地工作区,并默认在
.dsh/code-index/下写入可重建的 SQLite 索引。 - 词法模式不发起网络请求。混合模式会把提取的代码块与查询发送到显式配置的 OpenAI-compatible embedding endpoint,并且只解析指定的 credential reference。
- 索引可能包含从源码派生的片段和可选向量。插件不发送遥测,也不注册自定义持久会话事件;删除索引目录即可清除其持久数据。
安装
当前代码支持 DSH >=0.1.0-rc.6 <0.2.0 插件 API,要求 Node.js ^22.19 || >=24。
dsh plugin --profile web add https://github.com/lonelymoon87/dsh-code-intel/releases/download/v0.1.3/dsh-code-intel-0.1.3.tgz
Release tarball 已预构建,不需要构建权限。也可以固定版本从源码安装。
dsh plugin --profile web add github:lonelymoon87/dsh-code-intel#v0.1.3
源码安装会运行本包的 prepare 构建。pnpm 10 及以上版本默认拒绝执行,第一次安装失败时请按 DSH 输出的提示,将准确的包键加入 profile 的构建白名单,然后重新执行同一条命令。需要装进一次性 Agent profile 时,把命令中的 web 换成 headless。
升级时用新版本的 Release URL 再执行一次 dsh plugin add。卸载时执行
dsh plugin --profile web remove dsh-code-intel
配置
词法模式不需要 provider。
- id: code-intel
name: dsh-code-intel
config:
indexDir: .dsh/code-index
include: [.ts, .tsx, .js, .jsx, .py, .go, .rs, .java]
exclude: [.dsh, .git, node_modules, dist, build, coverage, vendor]
maxFileSize: 1000000
maxChunkChars: 12000
maxResults: 20
watch: true
embedding: false
混合模式使用完整的 OpenAI-compatible embeddings URL。
embedding:
provider: openai-compatible
endpoint: https://embedding.example/v1/embeddings
model: your-embedding-model
credentialRef: EMBEDDING_API_KEY
batchSize: 32
indexDir 和排除项必须是工作区内的相对路径。MVP 只接受已经接入 parser 的扩展名。
发布验证
测试使用真实临时工作区和 SQLite,覆盖所有 parser、后台索引、词法检索、文件大纲、fs/observed 更新、混合排序、凭据缺失、向量持久化、缓存替换和非法配置。
- v0.1.3 tarball 已从 HTTPS Release URL 直接安装进全新的 DSH 0.1.0-rc.8 与 0.1.1-rc.1 profile;
- pack 产物与固定版本 GitHub 源码安装均通过
dsh --dump-config检查; - CI 覆盖 Node 22.19 与 Node 24,兼容矩阵会分别使用 DSH 0.1.0-rc.8、npm
latest与next标签重跑真实安装; - bug 与兼容性问题统一进入 GitHub Issues。
许可证
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 30675
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 3596
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1126
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 496
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 446
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 430
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。