# Maguyva 对 JavaScript 的支持：面向混合运行时代码仓库的 AI 搜索

Canonical source: https://maguyva.ai/zh-hans/languages/javascript

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva 通过 AST 解析和符号提取支持 JavaScript，帮助 AI 智能体在 Node 服务、浏览器代码、脚本和遗留模块之间自如工作，而不必退化为字符串搜索。

## 支持情况速览

- 支持等级: AST 和符号支持
- 编程语言
- 扩展名: .cjs, .js, .mjs, .spec.js, .stories.js, .test.js
- 真正的 AST 解析，支撑语法感知搜索和结构化上下文。
- 命名符号支撑语义查找和交叉引用。启用关系提取后，即可使用图谱导航。
- 该语言为图谱感知搜索提供符号和关系；支持的边类型随其原生构造而异。
- 同时支持 AST 解析和符号提取。

## 最适合场景

- 始终未能统一到单一模块系统或单一框架世代的 Node 与浏览器代码仓库。
- 在维护遗留 JavaScript 的同时，逐步引入 TypeScript 或新包边界的团队。
- 需要跨 `.js`、`.mjs` 和 `.cjs` 获得结构化信息、而非临时代码仓库搜索的智能体工作流。

## 智能体工作流

- 在修改之前，追踪请求路径或构建步骤如何流经较旧的 JavaScript 模块。
- 对比代码仓库中同一行为的 CommonJS 与 ESM 实现。
- 在引入新的抽象之前，先在脚本、工具函数或前端组件中找出重复出现的模式。

## 为什么混合的 JavaScript 代码仓库仍然需要具备结构感知能力的搜索

很多 AI 编码工具默默地把 JavaScript 当成迈向“真正的”TypeScript 之前那种混乱状态。这忽略了生产环境代码仓库真实的样子。JavaScript 仍然承载着构建步骤、插件系统、浏览器代码、任务脚本，以及那些没人安排预算去彻底重写的长期存活的服务路径。

这让 JavaScript 支持的重点不在于语法是否漂亮，而在于历史沿革。危险不在于解析文件，而在于在不清楚一个模块或辅助函数究竟属于 CommonJS、ESM、浏览器代码，还是某种较旧的本地模式之前，就贸然修改它。

## Maguyva 在 JavaScript 中实际提取了什么

Maguyva 覆盖 `.js`、`.mjs` 和 `.cjs`，会规范化带成员前缀的调用，并在前后端边界模糊的 JavaScript 代码库中支持 JSX 组件启发式识别。它还过滤掉了大量标准浏览器和 Node 运行时噪声，让特定于代码仓库的关系保持可见。

这在较旧或混合的代码仓库中很有用——同一个概念可能以不止一种文件风格存在，而且命名往往并不一致。

## 面向混合运行时代码仓库的实用 MCP 工作流

实际工作流通常是这样的：

- 对于像 `module.exports`、事件名或旧配置标记这类精确字符串，用 `text_pattern_search`。
- 当你需要“遗留上传流程”或“浏览器打包代码中在哪里检查身份验证”这类行为层面的探索时，用 `intelligent_search`。
- 当命名不一致、你想在智能体动手修改之前先获得一份整合相关信息的摘要时，用 `get_task_context`。

## 这个页面何时有用

这个页面适用于仍然存在大量有意义的 JavaScript 代码的代码仓库，而不是那些假装迁移已经完成的团队。如果当前代码仓库大部分已是 TypeScript，请从 [TypeScript](/zh-hans/languages/typescript) 开始。如果旧的 Web 技术栈仍然渗透到服务端模板或 PHP 中，[PHP 指南](/zh-hans/languages/php) 是更相关的配套页面。

## 引擎细节

- JavaScript 支持涵盖 `.js`、`.mjs` 和 `.cjs`，这在同一仓库仍横跨多种模块风格时很重要。
- 成员前缀和调用参数会被归一化，方便在较旧的文件之间对比重复出现的辅助函数。
- 支持 JSX 组件启发式识别，同时常见的一大堆浏览器和 Node 内置全局变量会从关系噪声中被过滤掉。

## 常用 MCP 入口工具

- `text_pattern_search`: 在扩大搜索范围之前，用它查找 `module.exports`、事件名或遗留配置标记等确切字符串。
- `intelligent_search`: 当命名不一致、你需要查找“文件上传流程”这类行为而非符号时使用。
- `get_task_context`: 当仓库已发生漂移、你需要在触碰遗留路径前先获得一份整合相关信息的摘要时很有用。
