AI 写代码老瞎编?给它装个「中文文档查询员」就好了

7 阅读3分钟

效果先行

(配图位:DSH 界面中 cn_docs 工具调用截图)

「帮我写一个 Vue3 响应式计数器,不确定的 API 查一下中文文档再写。」

DeepSeek Harness(DSH)收到这句话后,自动调用了 cn_docs 工具,从 Vue 中文文档抓回《响应式基础》页面,然后基于真实文档写出了正确代码。

没有瞎编 API,没有「我记得好像是这样」。

这就是 dsh-docs-zh 干的事:给 DSH 装一个「中文文档查询员」。

问题:AI 写代码最大的毛病

AI 写代码最大的毛病是幻觉——不确定的 API 经常瞎编,编一个根本不存在的函数名,你还信了,跑起来报错。

海外生态早就给出了答案:Context7,按需查询最新库文档再写代码,装机量 16 万+

8 月 13 日晚,DeepSeek 开源 Harness,1.5 小时破 2.4 万星,同时开放 npm 插件生态。我扫了一圈发现:Context7 这个跨生态的刚需,在 DSH 里没人做,更没有人做中文版。

窗口期没人做的东西,就是机会。

方案:一条 5 步管道

插件核心是一个工具 cn_docs(library, query),内部走一条统一管道:

查询 → 搜索页/sitemap → 评分选最相关页面 → 抓取 → 提取正文 → 截断 8000 字返回

四个关键设计决策:

  • 做成「工具」而非「常驻提示词」:按需调用,不调用就不花 token;
  • 域名白名单:只允许抓 MDN 中文、Vue 中文、菜鸟教程三个源站;
  • 双层缓存 7 天:连「查询→URL」的解析结果也缓存,重复查询零网络请求;
  • URL 评分匹配 + 中文别名:「响应式」映射到 reactivity,中文查询能命中英文 URL。

DSH 插件的「身份证」是三件套:package.json 里的 dsh.bundle 字段、cordis.patch.yml 挂载行、代码导出的 name/inject/apply。官方有完整中文教程,照走不难。

三个真实 bug(集成测试抓出来的)

单元测试全绿 ≠ 能用。真实集成测试抓出三个有意思的坑:

  1. 查「ref」命中了错误码手册。因为 reference 这个 URL 里包含 ref 子串。修法:URL 段级评分(完全相等 4 分、前缀 3 分、包含 1 分)+ 中文别名映射。
  2. MDN 查「fetch」返回导航目录页。搜索页前 30 个链接全是站点导航,真正的结果排在第 53 位。修法:全量收集 + 按查询词评分,而非盲取第一个。
  3. 菜鸟教程只抓到导航。调试半天发现它是 WordPress 站,链接用的是单引号(href='/ajx/...'),而我的正则只认双引号。

另外一条通用教训:行为逻辑升级后,旧缓存会掩盖修复。7 天 TTL 的缓存里存着错误地址,修复后的代码照样返回旧结果——测试前先清缓存。

安装(30 秒)

dsh plugin --profile web add dsh-docs-zh

重启 dsh web,直接对话即可,零配置。支持三个源:mdn(MDN 中文)、vue(Vue 中文文档)、runoob(菜鸟教程)。

结语

DSH 生态刚满一天,插件市场是真·开荒期。这个插件 300 行代码、一天做完——

不是因为我强,是因为窗口期没人做。

如果你也在观望,最便宜的上车方式就是现在。

  • npm:dsh-docs-zh
  • 仓库:gitee.com/yangan528/dsh-docs-zh
  • 许可证:MIT