Hawa Code Code mode 支持上万级别 MCP 工具数量调用

简介: Code Mode 是 Hawa Code 内置的 JavaScript 编程接口,支持调用任意已配置 MCP 工具(如 Supabase、GitHub),可搜索发现、组合编排、保存复用;按需加载不占上下文,显著降低 Token 消耗,提升复杂任务执行效率。(239字)

Code Mode

Code Mode 是 Hawa Code 内置的一款工具,它允许模型通过一段 JavaScript 代码来调用已配置的 MCP server 能力,并把执行结果返回给模型继续处理。

  • 支持几万级别 MCP 工具数量,通过 Search 渐进式按需发现,不占用上下文窗口体积。
  • 通过代码串联多个 MCP 工具调用,减少 MCP 工具调用结果往复传输,减少 Token 使用。
  • 通用的代码逻辑可以保存,自动复用,可以实现业务功能自进化。


快速开始

1. 配置文件

Code Mode 使用 .codemode.json 配置 MCP server,格式与 .mcp.json 一致。

配置文件支持两个层级:

  • 全局配置:~/.hcode/.codemode.json
  • 项目配置:{项目目录}/.codemode.json

项目配置会覆盖全局配置。

示例 .codemode.json

{
  "mcpServers": {
    "supabase": {
      "type": "http",
      "url": "https://mcp.supabase.com/mcp",
      "headers": {
        "Authorization": "Bearer your-token"
      }
    },
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "Authorization": "Bearer your-token"
      }
    }
  }
}

提示:如果没有单独配置 .codemode.json,Code Mode 也会复用 Hawa Code 已有的 MCP 配置(全局配置、项目配置、.mcp.json)。

2. 使用方式

在对话中让 Hawa Code 进入 Code Mode,模型会自动生成 JavaScript 代码并执行。你无需手动安装插件或执行额外命令。

典型用法:

  • 调用某个 MCP 工具查询数据
  • 组合多个 MCP 工具完成多步骤任务
  • 搜索可用工具并自动发现能力

代码格式

Code Mode 接收一段 JavaScript 异步箭头函数,并执行它。

你可以直接写箭头函数体:

async () => {
  const result = await codemode.supabase.list_tables();
  return result;
}

也可以只写函数体内容,系统会自动包装:

const result = await codemode.supabase.list_tables();
return result;

调用 MCP 工具

已配置的 MCP server 会以 .> 的形式暴露为 JavaScript 函数。

例如,配置了一个名为 supabase 的 server,其中有一个工具叫 list_tables,可以这样调用:

async () => {
  const tables = await codemode.supabase.list_tables();
  return tables;
}

如果 server 名或工具名包含特殊字符,会自动转换为合法的 JavaScript 标识符。例如 my-server 会变成 codemode.my_server


发现可用工具

搜索工具

如果你不确定某个能力在哪里,可以使用 codemode.search()

async () => {
  const matches = await codemode.search("list tables");
  return matches;
}

返回的结果包含工具路径、所属 server、方法名、描述和匹配分数,帮助你快速定位需要的工具。

查看工具详情

使用 codemode.describe() 查看某个工具的类型定义和参数说明:

async () => {
  const docs = await codemode.describe("supabase.list_tables");
  return docs;
}

也可以只描述整个 server:

async () => {
  const docs = await codemode.describe("supabase");
  return docs;
}

保存和复用代码片段

你可以把常用的代码保存为 snippet,方便后续调用:

async () => {
  await codemode.saveSnippet(
    "list-supabase-tables",
    "const tables = await codemode.supabase.list_tables(); return tables;",
    "列出 supabase 中的所有表"
  );
  return "saved";
}

snippet 会保存在项目目录的 .codemode-snippets.json 文件中,和 MCP 工具一样可以被 codemode.search()codemode.describe() 找到。


组合多个工具

Code Mode 的真正价值在于可以组合多个 MCP 工具完成复杂任务。

例如:

async () => {
  const tables = await codemode.supabase.list_tables();
  const details = [];
  for (const table of tables.slice(0, 5)) {
    const schema = await codemode.supabase.describe_table({ table });
    details.push({ table, schema });
  }
  return details;
}

执行环境说明

  • Code Mode 在独立的 Node 子进程中执行代码,代码通过 IPC 与 Hawa Code 通信。
  • 执行环境不包含 fsrequireprocess 等 Node.js API,所有 I/O 只能通过已配置的 MCP 工具完成。
  • 单次执行默认超时时间为 60 秒,超时会自动终止。
  • 标准 JavaScript 语法可用,但不支持 TypeScript 类型注解

权限与确认

Code Mode 属于需要用户确认的工具。执行前会询问你是否允许,确认后才会运行代码。如果你开启了自动权限模式,符合条件时可能无需每次确认。


常见场景

场景 示例
查询数据库 codemode.supabase.query({ sql: "SELECT * FROM users" })
查询 GitHub 信息 codemode.github.search_issues({ query: "repo:owner/repo is:open" })
组合多工具 先列表面板,再查询每个表的 Schema
复用逻辑 把常用查询保存为 snippet


欢迎使用 Hawa Code https://www.hawacode.com/

目录
相关文章
人工智能 缓存 前端开发
12432 70
人工智能 自然语言处理 安全
1316 0
Web App开发 人工智能 API
1537 2
人工智能 JavaScript 开发工具
4907 0
人工智能 Java BI
1631 1
人工智能 JavaScript 测试技术
2572 2
开发工具 Swift git
2000 6
人工智能 JavaScript 测试技术
1239 4