Code Mode
Code Mode 是 Hawa Code 内置的一款工具,它允许模型通过一段 JavaScript 代码来调用已配置的 MCP server 能力,并把执行结果返回给模型继续处理。
简单来说,Code Mode 把 MCP server 的工具变成了一段可编程的 JavaScript API。你可以像写普通 JS 一样,把多个 MCP 工具的调用组合起来,完成搜索、查询、计算、写入等更复杂的任务。
- 支持几万级别 MCP 工具数量,通过 Search 渐进式按需发现,不占用上下文窗口体积。
- 通过代码串联多个 MCP 工具调用,减少 MCP 工具调用结果往复传输,减少 Token 使用。
- 通用的代码逻辑可以保存,自动复用,可以实现业务功能自进化。

快速开始
1. 配置文件
Code Mode 使用 .codemode.json 配置 MCP server,格式与 .mcp.json 一致。
配置文件支持两个层级:
- 全局配置:
~/.hcode/.codemode.json - 项目配置:
{项目目录}/.codemode.json
项目配置会覆盖全局配置。
示例 .codemode.json:
{ |
提示:如果没有单独配置
.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(); |
调用 MCP 工具
已配置的 MCP server 会以 <codemode.<server>.<tool>> 的形式暴露为 JavaScript 函数。
例如,配置了一个名为 supabase 的 server,其中有一个工具叫 list_tables,可以这样调用:
async () => { |
如果 server 名或工具名包含特殊字符,会自动转换为合法的 JavaScript 标识符。例如 my-server 会变成 codemode.my_server。
发现可用工具
搜索工具
如果你不确定某个能力在哪里,可以使用 codemode.search():
async () => { |
返回的结果包含工具路径、所属 server、方法名、描述和匹配分数,帮助你快速定位需要的工具。
查看工具详情
使用 codemode.describe() 查看某个工具的类型定义和参数说明:
async () => { |
也可以只描述整个 server:
async () => { |
保存和复用代码片段
你可以把常用的代码保存为 snippet,方便后续调用:
async () => { |
snippet 会保存在项目目录的 .codemode-snippets.json 文件中,和 MCP 工具一样可以被 codemode.search() 和 codemode.describe() 找到。
组合多个工具
Code Mode 的真正价值在于可以组合多个 MCP 工具完成复杂任务。
例如:
async () => { |
执行环境说明
- Code Mode 在独立的 Node 子进程中执行代码,代码通过 IPC 与 Hawa Code 通信。
- 执行环境不包含
fs、require、process等 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 |
故障排查
执行超时
如果代码执行超过 60 秒,会返回超时错误。建议拆分为多个步骤,或减少单次处理的数据量。
找不到工具
- 检查
.codemode.json是否已正确配置。 - 使用
codemode.search("关键词")确认工具是否已加载。 - 使用
codemode.describe("server.tool")查看工具名是否正确。
返回结果过长
Code Mode 会自动截断过长的结果,避免占用过多上下文。如果结果被截断,建议使用更精确的查询条件,或分批获取数据。
小结
Code Mode 把 MCP server 的能力变成了一段可执行的 JavaScript 代码,让模型可以:
- 自动发现工具
- 组合多个工具
- 复用常用代码片段
- 在安全的沙箱环境中执行
通过 Code Mode,你可以让 Hawa Code 处理更复杂、更灵活的多步骤任务。