dsh-zhipu: 智谱 BigModel 全家桶插件

前言

DeepSeek Harness (DSH) 采用插件化架构,接入智谱 BigModel 的能力(搜索、阅读、视觉)通常需要分散的配置。dsh-zhipu 将这些能力整合到一个插件中,通过一把 ZAI_API_KEY 提供统一的入口,服务于 DSH 的 web 和 headless profile。

核心功能

该插件提供以下能力:

  • 联网搜索:集成 web_search_prime MCP,提供 zhipu-prime 引擎支持。
  • 网页阅读:集成 webReader MCP,支持服务端渲染(SSR),不直接访问目标 URL。
  • 视觉理解:提供 vision_analyze 工具,基于 GLM-4.6V 模型。
  • 贴图识别:通过 agent/pre-step 钩子,将对话中的贴图自动转换为文字描述。

安装与启用

使用以下命令安装插件:

dsh plugin --profile web add github:<you>/dsh-zhipu

安装后,需将包名加入 profile 的 bundle 列表(例如 ~/.dsh/profiles/web/package.json):

"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-zhipu"] } }

插件通过 cordis.patch.yml 自动配置搜索、阅读和视觉工具。重启 dsh web 进程即可生效。

前置配置

  1. API Key:确保 ~/.dsh/.env 中配置了 ZAI_API_KEY(智谱 GLM Coding Plan 的 key)。
  2. 图片输入声明:在 ~/.dsh/settings.yaml 中,为聊天模型声明支持图片输入,否则贴图钩子无法介入:
llm-pi-ai:
  providers:
    zai-coding-cn:
      models:
        - id: glm-5.3
          input: [text, image] # 关键配置

功能说明

  • 搜索与阅读:
    • 出站请求仅指向 open.bigmodel.cn。
    • 搜索结果与官方搜索同源,不可直接作为事实引用。
    • web_fetch 工具会抓取目标页面内容,URL 会记录在智谱侧。
  • 视觉分析:
    • 视觉功能必须走 Coding Plan 端点(默认 codingBaseURL),按量端点会报 429 错误。
    • MCP 响应中的 content[0].text 存在双重 JSON 编码问题,插件已做容错处理。
  • 贴图识别:
    • 钩子会将图片转换为文本描述,替换原始图片块。
    • 带有 attachmentId 前缀的描述是会话日志中的唯一事实。
    • 若描述失败,会保留原始图片块(诚实失败)。

配置覆盖

可通过覆盖 cordis.patch.yml 调整行为:

# ~/.dsh/profiles/<name>/cordis.patch.yml
- id: zhipu
  config:
    apiKeyEnv: ZAI_API_KEY
    enableTool: false    # 关闭 vision_analyze
    enablePreStep: false # 关闭贴图钩子
    passthroughModels: [] # 原生吃图的模型列表

数据与已知行为

  • 数据外发:搜索词、目标 URL、图片字节(base64)均发送至 open.bigmodel.cn;图片字节不落盘、不进会话日志。
  • 搜索限制:search_pro 引擎忽略 count 参数,固定返回 10 条,按 maxResults 截断并标记 truncated: true。
  • 会话恢复:含图片的旧会话在纯文本模型下会报错,需使用 vision_analyze 配合 attachmentId 重新分析。

开发与测试

提供测试脚本以验证功能(约消耗 3 次额度):

node "$env:USERPROFILE\.dsh\plugins\dsh-zhipu\test\smoke.mjs" web

修改代码后需删除旧的 node_modules 并重新安装以触发更新。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜