中文EN

dsh-code-index

tools已测通过npmMIT

DSH 本地代码智能插件:Impact X-Ray 可视化展示潜在变更影响、源码证据与不确定性,并提供符号导航、有界 Context Pack 和 ArkTS 支持。

下载量 / Downloads
3,047
依赖体积 / node_modules
66.73 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

安装

dsh plugin --profile web add dsh-code-index

沙箱测试结果

阶段结果
1 安装✓
2 列装✓
3 挂载✓
4 启动—

四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。

README

dsh-code-index

[English](README.md) | 中文

Impact X-Ray

See the blast radius before your AI edits the code.

在 AI 修改代码前,看清潜在影响范围。

这是 DeepSeek Harness(DSH) 的本地插件:把代码 diff 呈现为一张可检查的潜在影响图,列出可能受影响的调用者、导入和测试线索。点击关系即可核对源码文件、行号与证据。

适合正在维护现有代码的 DSH 用户: 在让 AI Agent 修改代码前,先查看可能的连带影响。使用正式稳定版 v0.11.1,安装到兼容的 DSH profile:

dsh plugin --profile desktop add dsh-code-index@0.11.1

安装后重启 Desktop。v0.11.1 声明支持 DSH 0.2.0-rc.2、0.2.1-rc.2 和 0.2.1-rc.3 宿主版本组;Desktop rc.3 的兼容性提示据反馈已消失,但这不代表 Electron Desktop 全部功能或 Agent 验收通过。[安装说明](#安装) · [v0.11.1 验证与限制](RELEASE_EVIDENCE_v0.11.1.md)。

观看 30 秒真实 Desktop 演示:normalize() 被修改 → 查看调用者与测试线索 → 点击关系查看真实源码位置。

[观看 MP4](assets/impact-xray-mvp.mp4) · [全尺寸 GIF](assets/impact-xray-mvp.gif) · [演示说明与复现](assets/impact-xray-mvp-demo.md) · 从 npm 安装 v0.11.1 · 项目主页

录屏来自真实 DSH Desktop 0.2.1-rc.2 中的 0.11.0-dev.0 MVP 操作,展示的是既有分析与源码证据;它不代表模型驱动 Agent 的耗时或成功率。详见[录制来源](assets/impact-xray-mvp-demo.md)。

  • 从 Git diff 或明确选定的文件/符号出发,查看调用者、导入依赖、影响路径和测试候选。
  • 点击关系,查看其来源,以及可用的文件行号和源码快照。
  • 把候选视为线索:name-only 匹配可能不确定;测试线索不证明覆盖率或测试失败。

Impact X-Ray 是既有 code_change_context 分析及源码读取能力的交互展示,并未新增影响分析引擎。关系属于静态证据,不保证运行时必然受影响。

验证范围: Desktop 0.2.1-rc.2 完成完整 X-Ray UI 验证;Web/Host rc.3 完成全部八个工具及 X-Ray 验证(未运行模型驱动 Agent);Desktop 0.2.0-rc.2 通过安装和 ToolRuntime 检查,未验证完整 X-Ray UI。宿主中的第一方包须使用同一已声明版本。[v0.11.1 验证与限制](RELEASE_EVIDENCE_v0.11.1.md)。

让 Agent 调用 code_change_context:

{"repoRoot":"D:/absolute/path/to/repo","outputFormat":"xray"}

展开工具结果,选择“放大查看”,再点击箭头。界面跟随宿主语言,也可切换 English / 简体中文。调用图、导入图、测试线索、影响路径和缺口分别展示。深度/来源筛选和本地展开只操作本次有界快照,不会额外请求分析。

关系 · 视觉 · 含义

exact · 实线 · 既有索引模型中的结构解析,不保证运行时必然受影响

import-scoped · 虚线 · 导入范围证据,保留原始原因

name-only · 黄色点线 · 名称候选,需要人工核实

箭头保留真实 caller → callee 或 importer → module 端点;测试惯例不会被补成函数调用边。整条路径保留最弱关系的来源等级。源码是请求时的快照,编辑后应重新运行。删除声明在可用时显示基线源码,不提供误导性的“打开当前文件”入口。

展示上限为 32 节点、48 箭头、12 路径、测试/导入各 8 条;每段源码最多 900 字符、metadata 最多 96,000 UTF-8 bytes。调用关系最多使用 24 个符号节点 / 32 条箭头,给模块线索留出预算。可选 X-Ray 文本最多 24,000 JS 字符;默认 canonical 文本和 code_context pack 保持不变。底层索引/引用分析先于展示投影执行,因此 UI 上限不代表大仓库分析的固定内存保证。实际测量和宿主兼容方法见 [MVP 报告](IMPACT_XRAY_MVP.md)。

复现真实 Demo(已有目录会拒绝覆盖):

npm run build
node scripts/impact-xray-demo.mjs D:/absolute/path/to/new-demo-repo

脚本提交六个源码文件的基线,再将 normalize() 从 trim 改为大写转换。基线 Node 测试通过;改动后的测试故意失败。looseUsage 故意没有 import,保留为不确定的 name-only 候选。

让 DeepSeek Harness Agent 用一次 code_context 调用拿到开始处理任务所需的有界源码上下文:主要声明、强相关 caller/callee、imports、当前变化和相关测试。每个关键 item 都有入选理由,源码有准确行号;证据不足时明确说明缺口。

  • 预算内直接给源码:完整声明 → 整行窗口 → 明确的 signature-only 降级。重叠源码行去重,current/base 分开。
  • 唯一最终 pack:文本与显式 structured output 都基于预算选择后的 ContextPack;默认硬上限 5000 字符。
  • 可检查的证据:入选 reason 与关系的 exact / import-scoped / name-only provenance 分开,不编造概率或 confidence。
  • 本地、隔离、实时:repo/worktree 独立,外部增改删自动刷新,不需要外部索引 API key;保留 full/compact surface 和 v0.8 配置。

v0.10.0 引入的 ArkTS 功能在 v0.11.0 继续保留:.ets 使用独立、版本锁定的 parser,定位组件 struct、方法、字段和装饰器,查看静态可确定的 ETS/TS 引用,并通过有界 Context Pack 获取真实源码。安装包已通过 DSH Desktop 真实 Agent 验证及 Node 22/24 发布检查;部分解析或解析失败会提供有限诊断。

支持范围是语法和静态代码上下文,不包含完整 HarmonyOS SDK 语义、HAR/模块别名解析、状态更新或 UI 重渲染调用图。见[发布证据](RELEASE_EVIDENCE_v0.10.0.md)、[ArkTS PoC](ARKTS_POC_v0.10.0.md) 和[双语公告](assets/v0.10.0-announcement.md)。v0.9.1 的 Gitignore 目录白名单修复继续保留。

本页导航

  • [🚀 快速开始](#快速开始)
  • [🧭 项目隔离与实时更新](#项目隔离与实时更新)
  • [👀 实际效果](#实际效果)
  • [🧰 工具一览](#工具一览)
  • [配置](#配置)
  • [支持的语言](#支持的语言)
  • [工作原理](#工作原理)
  • [已知限制](#已知限制)
  • [反馈](#反馈)

快速开始

需要 Node 22/24。v0.11.2 候选版本允许 DSH >=0.2.0-rc.2(包括预发布版本),第一方包应使用配套版本。后续版本可以尝试加载,但并不代表全部经过验证。用 Desktop 自带的 dsh CLI 安装到现有 profile:

dsh plugin --profile desktop add dsh-code-index@0.11.1

安装后重启 Desktop。匹配的 Web profile 可使用:

npx @deepseek-ai/dsh@0.2.1-rc.2 plugin --profile web add dsh-code-index@0.11.1
npx @deepseek-ai/dsh@0.2.1-rc.2 web

本地开发时,在仓库根目录运行 pnpm install、pnpm build,然后使用 plugin --profile web add .。其他 profile 选项见[安装说明](#安装)。

项目隔离与实时更新

打开仓库 A → 搜索到 A 的符号
切换到仓库 B → 搜索到 B 的符号,不会混入 A
从 DSH 外部修改文件 → 下一次查询看到变化
切回 A → A 的上下文仍然独立

每个 Git worktree 都有独立索引和变更状态。插件会监听会话访问过的项目,并在工具调用时检查文件元数据,因此新增、修改和删除都会自动反映到后续查询,无需手动重建。

实际效果

42 秒真实 DSH 桌面演示:加载 ' input ' 为什么变成了 'INPUT'?

一次真实 code_context 调用返回 src/config.ts:1–3 的 loadConfig、调用方、Git 增改删和相关测试线索,附入选理由与关系来源,共 2347/5000 字符。Agent 据此定位到改变大小写的 .toUpperCase()。

这是 2026-10-08 新录制的真实桌面画面,使用已安装的 v0.9.0 与一个小演示仓库。只展示 DSH,剪去等待并移除音轨;没有修改文件或运行测试,不代表实际耗时,也不宣称修复或测试成功。[MP4 视频](assets/desktop-agent-v090.mp4) · [录制与来源说明](assets/desktop-agent-v090.md) · [实际工具卡片证据](assets/desktop-agent-v090.evidence.json)。

先前的[中英终端回放](assets/agent-context-demo.md)继续保留,单独标明来自 2026-10-05 的真实 Agent 记录,补充展示外部编辑刷新及 500 字符下的签名降级。

可以先试一句:“用 code_context 定位一个配置加载 Bug,给出相关源码、调用者和可能受影响的测试。” 欢迎在 DSH Discussion 分享哪些上下文有帮助、哪些被漏掉。

早期的 [30 秒本地工具演示](assets/context-pack-demo.html) 仍然保留,可用 pnpm build 后运行 node scripts/context-pack-demo.mjs 复现。它是独立的 Context Pack 演示,不是上方 Impact X-Ray 的 Desktop 实录。

工具一览

工具 · 用途

code_index · 查看 / (重)建当前工作区的索引

code_symbols · 列出符号(函数、类、接口、类型、方法……),带 file:line——支持按名称、路径、类型、是否导出过滤

code_search · 排名检索:精确 > 前缀 > 子串 > 子序列模糊,导出优先,带相关度分数与 file:line

code_map · 限量排名仓库地图(按符号密度 + import 图 PageRank 取核心文件 + 关键符号与行号)

code_refs · 沿调用图追踪符号:callers(谁调用了它)与 callees(它调用了谁),解析到 file:line

code_change_context · 从工作区或显式 diff 出发,返回变更符号、调用者、import 依赖、有限影响路径和可能受影响的测试

code_context · Edit-ready ContextPack:有界源码、理由、关系、变化/测试、缺口和硬预算,默认文本返回

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:17,最后更新 2026-10-31

链接

GitHub · Homepage · npm

同类插件