Hawa Code code mode 如何去掉软件的开发环节?

简介: Hawa Code 是一种新型AI编程范式:用户无需开发软件,只需自然语言对话,系统即渐进式生成并复用可靠代码来解决问题,逐步替代高成本推理,实现确定性、低成本、可定制的智能助手。

AI Coding 发展非常迅速,颠覆了很多开发理念,但是软件依然是需要开发出来然后才可以使用,vibe coding 可以让不懂 IT 技术的人开发软件,但是依然需要先去开发一款软件,然后来使用它。

Hawa Code 理念是用户不需要去特意开发一款软件,只需要和 Hawa Code 对话解决自己的问题,Hawa Code 会渐进式生成一款软件来解决用户问题,从而模型推理环节会被逐渐被取代掉。

简单示例

我们通过一个简单的例子来看看它的基础原理

首次执行

给 Hawa code  下发一下的指令:

查询我 github 账号上所有 Java 项目提交总次数,不包括 fork 项目,提交人只统计我自己,不统计其他人

Hawa Code Code Mode 主要执行逻辑如下:

  • 查询需要的 API
  • 获取 API 详细信息
  • 进行业务查询,返回结果
  • 同时保存这个通用场景的业务代码
● Code(async () => {                                                                          …
        const res = await codemode.search("list user repositories");
        const res2 = await codemode.search("list commits");
        const res3 = await codemode.search("search commits by author");
        return { listRepos: res.results, commits: res2.results, searchCommits: res3.results };
      })
  ⎿  {
       "listRepos": [
         {
     ...
         }
       ]
     }
● Code(async () => {                                                                             …
        const [me, commits, searchCommits] = await Promise.all([
          codemode.describe("github.get_me"),
          codemode.describe("github.list_commits"),
          codemode.describe("github.search_commits")
        ]);
        const repoSearch = await codemode.search("list repositories for a user or search repos");
        return { me, commits, searchCommits, repoSearch: repoSearch.results };
      })
  ⎿  {
       "me": {
         "path": "github.get_me",
     ...
         }
       ]
     }
● Code(async () => {                                                              …
        const me = await codemode.github.get_me({});
        const searchRepos = await codemode.describe("github.search_repositories");
        return { me, searchRepos };
      })
  ⎿  {
       "me": {
         "login": "jiweigang1",
     ...
         "kind": "method"
       }
     }
● Code(async () => {                                           …
        const res = await codemode.github.search_repositories({
          query: "user:jiweigang1 language:Java fork:false",
          perPage: 100
        });
        return res;
      })
  ⎿  {
       "total_count": 13,
       "incomplete_results": false,
     ...
         }
       ]
     }
● Code(async () => {                                                                                                                                 …
        const repos = ["AmzGo", "asm-learning", "ByteBuddy-learning", "superdisplay", "ChromeDriver", "MetaDesktop", "Dagger2-learning", "ad-agent",
      "google-collections", "eshop", "GradleTest", "maven-jar-template", "Apm-Tester"];
        const results = await Promise.all(repos.map(async (name) => {
          const res = await codemode.github.search_commits({
            query: `repo:jiweigang1/${name} author:jiweigang1`,
            perPage: 1
          });
          return { repo: name, total: res.total_count, incomplete: res.incomplete_results };
        }));
        const sum = results.reduce((acc, r) => acc + (r.total || 0), 0);
        return { results, sum };
      })
  ⎿  {
       "results": [
         {
     ...
       ],
       "sum": 459
     }
● Code(async () => {                                    …
        const res = await codemode.github.list_commits({
          owner: "jiweigang1",
          repo: "google-collections",
          author: "jiweigang1",
          perPage: 1,
          fields: ["sha"]
        });
        return { firstPageCount: res.length };
      })
  ⎿  {
       "firstPageCount": 0
     }
● Code(async () => {                                                                                                                                      …
        const snippetCode = `async () => {
        const me = await codemode.github.get_me({});
        const login = me.login;
        const reposRes = await codemode.github.search_repositories({
          query: "user:" + login + " language:Java fork:false",
          perPage: 100
        });
        const repos = reposRes.items || [];
        const results = await Promise.all(repos.map(async (r) => {
          const res = await codemode.github.search_commits({
            query: "repo:" + r.full_name + " author:" + login,
            perPage: 1
          });
          return { repo: r.full_name, total: res.total_count || 0 };
        }));
        const sum = results.reduce((acc, x) => acc + x.total, 0);
        return { login, totalJavaCommits: sum, perRepo: results };
      }`;
        const saved = await codemode.saveSnippet(
          "github-user-language-commit-stats",
          snippetCode,
          "Count total commits authored by the authenticated GitHub user across their own (non-fork) repositories of a given language. Steps: resolve the
      current user via get_me, find repos via search_repositories with user:<login> language:<lang> fork:false, then use search_commits per repo with
      author:<login> to get total_count, and sum them up. Note: search_commits only searches the default branch.",
          {},
          {
            type: "object",
            properties: {
              login: { type: "string" },
              totalJavaCommits: { type: "number" },
              perRepo: { type: "array", items: { type: "object", properties: { repo: { type: "string" }, total: { type: "number" } } } }
            }
          }
        );
        return saved;
      })
  ⎿  {
       "saved": true,
       "name": "github-user-language-commit-stats"
     }
● 查询已完成,结果如下:
  统计结果(GitHub 账号:jiweigang1)
  共找到 13 个 Java 仓库(已排除 fork 项目),您本人作为提交人的提交总次数为:459 次
  ┌────────────────────┬──────────┐
  │ 仓库               │ 提交次数 │
  ├────────────────────┼──────────┤
  │ AmzGo              │ 356      │
  ├────────────────────┼──────────┤
  │ ad-agent           │ 38       │
  ├────────────────────┼──────────┤
  │ MetaDesktop        │ 14       │
  ├────────────────────┼──────────┤
  │ maven-jar-template │ 14       │
  ├────────────────────┼──────────┤
  │ Apm-Tester         │ 14       │
  ├────────────────────┼──────────┤
  │ asm-learning       │ 8        │
  ├────────────────────┼──────────┤
  │ ByteBuddy-learning │ 6        │
  ├────────────────────┼──────────┤
  │ Dagger2-learning   │ 3        │
  ├────────────────────┼──────────┤
  │ superdisplay       │ 2        │
  ├────────────────────┼──────────┤
  │ eshop              │ 2        │
  ├────────────────────┼──────────┤
  │ ChromeDriver       │ 1        │
  ├────────────────────┼──────────┤
  │ GradleTest         │ 1        │
  ├────────────────────┼──────────┤
  │ google-collections │ 0        │
  └────────────────────┴──────────┘
  说明:
  - google-collections 为从 Google Code 自动导入的仓库,其历史提交未关联您的 GitHub 账号(通过 author: 过滤和提交列表双重验证,确认均为 0)。
  - 统计基于每个仓库的默认分支。如果某些仓库有其他分支上的提交,未计入。
  - 该查询逻辑已保存为可复用的 codemode 快照 github-user-language-commit-stats,之后可换语言参数(如 Python、Go)直接复用。

再次执行

如果 Hawa Code 收到类似场景的指令,其会执行如下逻辑:

  • 查询 API
  • 搜索到了可以解决当前指令问题的代码,执行这个代码并返回执行结果,不再进行推理。
● Code(async () => {                                                                   …
        const res = await codemode.search("list user repositories owned");
        const res2 = await codemode.search("list commits in repository");
        return { repos: res.results.slice(0, 10), commits: res2.results.slice(0, 10) };
      })
  ⎿  {
       "repos": [
         {
     ...
         }
       ]
     }
● Code(async () => {                                                                      …
        const desc = await codemode.describe("snippet.github-user-language-commit-stats");
        return desc;
      })
  ⎿ {
      "path": "snippet.github-user-language-commit-stats",
      "description": "Count total commits authored by the authenticated GitHub user across their own (non-fork) repositories of a
    given language. Steps: resolve the current user via get_me, find repos via...
      "types": "declare const codemode: {\n  snippet: {\n    github-user-language-commit-stats(input: unknown): Promise<{\n
    login?: string;\n      totalJavaCommits?: number;\n      perRepo?: Array<{\...
      "kind": "snippet"
    }
● Code(async () => {                                                                                     …
        const result = await codemode.snippet["github-user-language-commit-stats"]({ language: "Java" });
        return result;
      })
  ⎿  {
       "login": "jiweigang1",
       "totalJavaCommits": 459,
     ...
         }
       ]
     }
● 查询完成。以下是你在 GitHub 账号 jiweigang1 下所有非 fork 的 Java 项目中、由你自己提交的提交总数统计:
  总计:459 次提交
  ┌────────────────────┬──────────┐
  │ 仓库               │ 提交次数 │
  ├────────────────────┼──────────┤
  │ AmzGo              │ 356      │
  ├────────────────────┼──────────┤
  │ ad-agent           │ 38       │
  ├────────────────────┼──────────┤
  │ MetaDesktop        │ 14       │
  ├────────────────────┼──────────┤
  │ maven-jar-template │ 14       │
  ├────────────────────┼──────────┤
  │ Apm-Tester         │ 14       │
  ├────────────────────┼──────────┤
  │ asm-learning       │ 8        │
  ├────────────────────┼──────────┤
  │ ByteBuddy-learning │ 6        │
  ├────────────────────┼──────────┤
  │ Dagger2-learning   │ 3        │
  ├────────────────────┼──────────┤
  │ superdisplay       │ 2        │
  ├────────────────────┼──────────┤
  │ eshop              │ 2        │
  ├────────────────────┼──────────┤
  │ ChromeDriver       │ 1        │
  ├────────────────────┼──────────┤
  │ GradleTest         │ 1        │
  ├────────────────────┼──────────┤
  │ google-collections │ 0        │
  └────────────────────┴──────────┘
  统计口径说明:
  - 已排除所有 fork 项目(fork:false)
  - 只统计提交作者为 jiweigang1 的提交(author:jiweigang1),不包含其他人的提交
  - 注意:search_commits 仅搜索各仓库的默认分支,其他分支的提交不计入
  按项目约定,测试/结果文件保存在 test 目录下,无需删除。

基础原理

Hawa Code 在处理用户问题过程中,会把用户的问题抽象为通用场景,生成代码并保存下来,再遇到类似问题直接执行代码而不再依靠推理来解决问题。 code mode 底层是一些基础 API、可以人为扩展,这些 API 就像移动 APP 开发的 SDK ,生成的代码就是在 SDK 封装了一层新的 API,这些代码 API 依然可以被其它代码调用。最终可以支撑复杂的应用。

上述示例只是一个简单示例,后续我会单独写一个查询火车票文章,用户只需要通过  Hawa Code  使用各种方式查询火车票,比如下周六从北京去杭州,中间要经过溧阳站,时间最短的车次。在用户多次查询过程中 Hawa Code 慢慢就生成了一个火车票查询应用。

推理成本 VS 确定性

当前模型推理成本还是非常高的,而执行代码就会廉价很多,同时推理速度是非常慢的,而执行代码速度快很多,推理和代码混合执行,可以使 Agent 付出极少的的成本就可以支持复杂并且流量大的业务。

模型推理是“概率”,在很多场景下对于不确定性容忍性是非常低的,比如交易、转账、支付,不可能存在任何误差, 代码化可以把不确定变的确定。

定制化

传统 IT 软件更多的是通用,可复制,但是在 AI 时代, Agent 助手是定制化,每个人都会有一个匹配自己性格、工作行为的智能助手,但是“定制”这个环节是不需要的,Agent 助手会根据用户的行为成长为需要的样子。

Hawa Code 要做到什么?

质量可靠

自动沉淀的代码必须是可靠的,Hawa Code 不会直接保存新生成的代码,而是只会保存已经解决了真实用户问题代码。这些代码再保存前已经是经过测试验证,同时当业务发生变化,Hawa Code 同样会去订正这些代码。

丰富的 BaaS 服务

当前 Hawa Code ode mode 支持 MCP 服务扩展,通过 MCP 转换为 API 方式进行代码开发,后续将会支持本地脚本、数据库、存储等本地服务。也会默认集成 Supabase 、Appwrite 等相关三方服务。

模型路由

Hawa Code 收到用户指令会通过一个极小的模型进行业务识别,如果指令问题可以通过 code mode 执行代码解决,就不再执行推理,如果没有相关的代码才会路由到大的模型上进行推理。这些极小的模型也可能是直接部署在用户的电脑上而不是部署在云端。

UI 交互

当前 Agent 模型交互相应内容格式主要是 markdown 格式,对于一些复杂信息展示效果比较弱,比如查询一些商品信息,应该像浏览器一样给出一个优美的产品图片列表页面,当前 Hawa Code 支持在浏览器端使用,code mode 后续会支持返回 HTML 富文本格式,可以支持更好的交互体验。

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

目录
相关文章
|
26天前
|
缓存 人工智能 API
Qwen3.8-Flash——多模态 MOE 模型,支持百万级上下文窗口,能一次性处理超长文档、代码仓库
Qwen3.8-Flash是通义千问最新多模态大模型,原生支持百万级上下文,擅长长文档/代码/图文理解与智能体协作;响应快、成本优,兼容OpenAI/Anthropic协议。开通百炼即赠100万Tokens!
|
3月前
|
人工智能 开发框架 Java
如何入门学习 Agent 开发?
本文分享Agent开发实战经验:强调甄别一手资讯、聚焦Context本质而非框架、坚持实操落地、重视效果评测与自我迭代,助新手避开玄学误区,从真实场景出发高效入门。(238字)
177 5
|
26天前
|
SQL 人工智能 安全
实战 Jev:1 秒初筛 8 份漏洞报告,再把判断力装进 Claude Code 和 Codex
用 TypeSafe Jev 的 Choice / Noul / Score 三种判断原语,给低代码平台收到的漏洞报告做一次真实的自动初筛![Jev 接入 Claude Code、Codex](https://oscimg.oschina.net/oscnet/up9084e45d68a75492
208 0
实战 Jev:1 秒初筛 8 份漏洞报告,再把判断力装进 Claude Code 和 Codex
|
1月前
|
并行计算 API 异构计算
类Jev项目Kev从入门到实战(4):安装使用:十分钟跑起来
Kev 是轻量级结构化推理模型,支持 Python/CLI/API 多种接入方式。10分钟即可本地部署,兼容 CUDA/ROCm/Metal,提供零安装在线试用、Modal 一键云端部署及完整 SDK,专为工单分类、情绪识别等场景优化。
267 3
|
2月前
|
人工智能 API 云栖大会
Qoder 协作能力升级,「项目」和「讨论」来了
Qoder 推出 Projects 与 Discussion 新功能,解决 AI 时代团队协作痛点:统一任务上下文、支持人与 Agent 共同讨论评审、自动同步执行结果,让协作围绕任务而非工具切换。
301 1
|
2月前
|
弹性计算 监控 Linux
阿里云高性价比服务器合集:38 元秒杀轻量、68 元轻量、99 元与 199 元 ECS 解析
对于个人开发者、学生、自媒体站长以及初创小微企业而言,云服务器的采购成本是上云规划中首要考量的因素。很多用户在初次接触云产品时,希望用最低的预算搭建网站、测试代码、部署小型应用,阿里云推出的多款特惠云服务器套餐,38元、68元、99元、199元这四档高性价比机型,成为入门用户的首选。不同价位套餐分为 阿里云轻量应用服务器 与 阿里云ECS云服务器 经济型实例两大类,硬件配置、带宽规格、存储容量、购买资格、限购规则存在明显差异,很多用户容易混淆套餐属性,在抢购之后才发现无法满足业务需求,或是因为账号资格不满足,无法下单特惠机型。
242 2
|
2月前
|
缓存 NoSQL Java
私域流量变现:母婴社群如何通过API选品实现月销百万?
本文聚焦母婴私域变现痛点,提出基于API选品的数据驱动方案:打通电商数据源、规则引擎筛选、企微自动推送、订单效果回流,实现从“人工推荐”到“自动化变现引擎”的升级,助力社群稳定月销百万。
|
26天前
|
人工智能 调度 云计算
同行致远丨 芯云模协同,定义 Agentic AI 时代算力新底座
Agentic AI 时代到来,算力需求结构全面重塑,芯片厂商与云厂商的合作也随之升级。
|
26天前
|
人工智能 运维 IDE
Qoder CN是什么?全家桶QoderWork、Qoder CN CLI、QoderWake、Cloud Agents及Mobile介绍
阿里云Qoder CN是面向开发与办公的国产AI智能体全家桶,含Qoder CN(编程)、QoderWork CN(办公)、CLI、QoderWake(数字员工)、Cloud Agents(云端托管)及Mobile六款子产品,全栈支持多模型、高合规、一体化智能协作。(239字)
186 0

热门文章

最新文章