电话&微信

18600577194

当前位置: 首页 > 资讯观点 > 软件行业

AI不应是控制你的应用软件而是应成为应用软件本身

标签: 软件工程 AI开发 2026-04-01 

ai<a href=软件开发工具" style="width: 618px; height: 259px;" src="/uploads/ueditor/20260401/1-260401104541209.jpeg" title="ai软件开发工具" width="618" height="259"/>

人工智能的乘数效应

为了加快开发效率,我开始尝试使用多款AI编码助手——Claude Code、Gemini与Codex。这与软件开发工程师工具息息相关。这与Claude Code息息相关。这是软件开发工程师工具的重要体现。这与AI编码助手息息相关。了解软件开发工程师工具有助于把握这一要点。这与软件开发息息相关。软件开发工程师工具的价值正在于此。这是AI编码助手的重要体现。这与人工智能(AI)息息相关。了解AI编码助手有助于把握这一要点。这是软件开发的重要体现。AI编码助手的价值正在于此。这不仅是为了提升生产力,更重要的是,我想亲自躬身入局,感受这些工具在真实开发流程中的实际表现:它们的优势在哪里,容易在哪些环节出错,以及它们究竟会如何重塑我们对软件开发的认知。这与AI编码助手息息相关。了解软件开发有助于把握这一要点。这是人工智能(AI)的重要体现。软件开发的价值正在于此。

但我从未预料到,其影响范围会如此深远。了解人工智能(AI)有助于把握这一要点。当你能在几分钟内将一个想法落地,而非耗费数小时,你便不会再纠结于“优先级排序”——只需放手去实现即可。人工智能(AI)的价值正在于此。短短3周时间,我的目标就从“维护两个基础库”,跃升到了“构建300+款实用工具”,这种开发效率的跃迁,是此前从未体验过的。这与人工智能(AI)息息相关。

目前,我正深度使用Claude Code 20x。一个能深度理解代码库、并自主完成多步骤任务的AI代理组合,成为了我职业生涯中见过的较强开发速度乘数,没有之一。

从软件开发工程师工具到人人可用的工具

作为一名开源软件开发工程师,我过去的工作重心一直是为同行构建工具——无论是基础库、命令行工具,还是构建工具。受众范围有限,能产生的实际影响也相对局限。

而在打造Kitmul时,我彻底反转了这个思路:不再追问“软件开发工程师需要什么工具”,而是思考“人们在Google上搜索的工具, 终是否只能找到收费网站,或是需要将个人文件上传到第三方服务器才能使用”。

答案一目了然:这样的工具多达数百种。比如去除图像背景、分离音频轨道、格式转换、PDF压缩、二维码生成等,这些都是人们日常高频使用的功能,而许多网站为此每月要收取10-20欧元的订阅费。

如今,Kitmul已拥有超过300款工具。但它们绝非简单的功能包装,每一款都经过了精心的架构设计与性能优化。

Kitmul AI软件开发应用

架构:所有操作均在用户设备上完成

Kitmul的核心技术决策十分明确:所有操作尽可能在客户端完成,不依赖第三方服务器,无任何例外。

我们的技术栈设计简洁而高效:若原生JavaScript能满足需求,便优先使用JavaScript;若遇到音频处理、复杂图像处理、音轨分离等计算密集型操作,则编译为WebAssembly;对于性能要求极高的核心模块,我们会使用Rust编写并编译为WASM,力求运行效率。

举个具体的例子,以下是我们在浏览器中实现PDF完全合并的代码,全程无任何网络调用:

import { PDFDocument } from 'pdf-lib';


export async function mergePDFs(files) {

  const merged = await PDFDocument.create();


  for (const file of files) {

    const bytes = await file.arrayBuffer();

    const pdf = await PDFDocument.load(bytes);

    const pages = await merged.copyPages(pdf, pdf.getPageIndices());

    pages.forEach((page) => merged.addPage(page));

  }


  return merged.save(); // 返回Uint8Array,全程不离开浏览器

}

整个流程清晰可控:文件从浏览器File API读取,通过pdf-lib处理, 终直接下载到本地,全程不与任何远程服务器交互。

为什么选择 Rust + WASM:以质数检查器为例

对于更繁重的计算任务,JavaScript的性能瓶颈会愈发明显。Kitmul中的“质数检查器”就是一个典型案例:JavaScript可以轻松处理小数的质数判断,但如果尝试测试一个超过1200位的大数,浏览器会直接崩溃——BigInt根本无法应对这种级别的计算压力。

以下是JavaScript实现的质数检查方法,仅适用于 多13位的数字:

function isPrime(n) {

  if (n <= 1) return false;

  if (n <= 3) return true;

  if (n % 2 === 0 || n % 3 === 0) return false;

  for (let i = 5; i * i <= n; i += 6) {

    if (n % i === 0 || n % (i + 2) === 0) return false;

  }

  return true;

}


// 适用于小数,但面对1200+位的数字呢?

// BigInt运算会慢到让浏览器标签页卡死。

我们的解决方案是:将一个基于num-bigint库和米勒-拉宾质数测试算法的Rust库,编译为WASM模块。Rust侧会将数字以字符串形式接收(因其长度可能达到数千位),并返回是否为质数的结果:

use num_bigint::BigUint;

use num_traits::{One, Zero};


#[no_mangle]

pub extern "C" fn is_number_prime(ptr: *const u8, len: usize) -> i32 {

    let bytes = unsafe { std::slice::from_raw_parts(ptr, len) };

    let num_str = std::str::from_utf8(bytes).unwrap_or("0");

    let n = num_str.parse::<BigUint>().unwrap_or_else(|_| BigUint::zero());


    if n <= BigUint::one() { return 0; }


    if miller_rabin(&n) { 1 } else { 0 }

}

随后,从JavaScript中加载该WASM模块,并将数字以字节形式传递给它:

// 加载WASM模块,检查一个1200+位的数字

const { instance } = await WebAssembly.instantiate(wasmBuffer, {});

const exports = instance.exports;


const numStr = "12345..."; // 1200+位的数字

const bytes = new TextEncoder().encode(numStr);

const ptr = exports.wasm_alloc(bytes.length);

new Uint8Array(exports.memory.buffer).set(bytes, ptr);


const result = exports.is_number_prime(ptr, bytes.length);

exports.wasm_dealloc(ptr, bytes.length);

// result: 1 = 质数,0 = 非质数

正如前文所说,JavaScript搭配BigInt无法处理超过1200位的数字,但Rust WASM模块可以轻松应对任意大小的数字——我们已测试过超过3000位的数字。在相同的浏览器、相同的设备上,Rust的num-bigint库采用了优化的limb算法,其性能是JavaScript无法企及的。

这种架构的核心影响

- 接近零的基础设施成本:无需部署处理文件的服务器,大幅降低运维成本;

- 真正的隐私保护,而非口头承诺:用户数据全程在本地设备处理,从未离开浏览器;

- 无需预配的可扩展性:每个用户都自带计算资源,无需额外扩容服务器。

核心论点:AI代理不应控制你的应用软件,它们应该成为应用软件本身

在我看来,当前AI代理的发展方向,从根本上存在偏差。

OpenAI与Operator合作、Anthropic推出Computer Use功能、Google推进Project Mariner——这些科技巨头都在构建“控制现有应用软件”的AI代理。它们截取你的屏幕、移动鼠标、点击按钮、填写表单,本质上,只是在打造一款极其复杂的RPA机器人。

这种思路存在三个致命问题:

1. 基于人类设计的接口构建,天生脆弱:当AI代理浏览网站时,需要不断应对下拉菜单、模态框、Cookie弹窗、验证码以及网站布局变化等问题。哪怕是一次微小的网站改版,都可能导致整个代理失效——这种脆弱性,是设计层面的先天缺陷。

2. 仍依赖第三方服务,隐私无法保障:即便AI代理再智能,它依然会将你的PDF上传到iLovePDF、将图像发送到Canva服务器、将个人数据交给第三方。仅仅是让机器人点击按钮,根本无法解决核心的隐私问题。

3. 效率低下,流程冗余:截图→分析→点击→等待页面加载→再次截图,这个循环每一步都需要数秒时间;而直接调用函数,仅需毫秒级响应,两者效率天差地别。

而我和Kitmul正在构建的东西,与此截然不同:AI代理不控制应用软件,AI代理本身就是应用软件。

无需导航到SmallPDF合并文件,代理直接调用mergePDFs()函数;无需打开Canva去除图像背景,它直接在浏览器中运行WASM模型。没有截图、没有鼠标移动、没有页面加载等待,只有直接的函数调用和即时的结果反馈。

// “截图+点击”的传统方式(Operator、Computer Use):

// 1. 导航到smallpdf.com          (约3秒)

// 2. 找到上传按钮                (约1秒)

// 3. 上传文件                    (约5秒)

// 4. 等待处理完成                (约3秒)

// 5. 点击下载按钮                (约2秒)

// 6. 等待下载完成                (约3秒)

// 总计:约17秒 + 你的文件存储在第三方服务器


// Kitmul的方式:

const merged = await mergePDFs(files);  // 约300毫秒,全程不离开你的设备

这是30-50倍的速度差距,更重要的是,你的文件永远不会接触任何远程服务器,隐私安全得到通常保障。

实际应用中的流程编排

Kitmul目前已内置聊天功能,AI扮演“指挥家”的角色:用户用自然语言描述需求,AI从工具目录中筛选合适的工具,按逻辑顺序执行,并将各步骤的输出自动衔接,形成完整的任务流程。

举一个具体的应用场景:用户上传一个音频文件,AI会先使用WASM源分离模型,将音频分离为多个音轨;随后对人声轨进行降噪处理; 后将处理后的结果转换为MP3格式。整个流程全程在浏览器中完成,链式执行,文件从未离开用户设备。

编排器的核心是一个工具注册表,负责将用户的自然语言意图,映射到具体的函数调用:

// 编排器工作原理简化版
const toolRegistry = {
  'merge_pdf': { fn: mergePDFs, input: 'file[]', output: 'file' },
  'split_audio': { fn: splitAudio, input: 'file', output: 'file[]' },
  'compress_image': { fn: compressImage, input: 'file', output: 'file' },
  // ... 还有300+款工具
};
// AI制定执行计划,然后自动运行:
const plan = await ai.plan("拆分这首歌,并去除人声中的噪音");
// → [{ tool: 'split_audio', input: userFile },
//    { tool: 'noise_reduction', input: '$prev.vocals' },
//    { tool: 'convert_to_mp3', input: '$prev' }]
for (const step of plan) {
  step.result = await toolRegistry[step.tool].fn(resolve(step.input));
}


这不是停留在纸面上的概念,而是今天就能正常使用的功能。

真正的差异化优势:自建工具体系

这正是Kitmul与其他所有工具平台的核心区别。

目前的300+款工具,已经覆盖了绝大多数日常使用场景。但当用户提出我们尚未覆盖的需求时,系统应能通过AI实时生成新工具;更关键的是,在生成的工具正式加入工具目录之前,必须有人类参与审核,验证其功能是否正常、是否符合质量标准。

具体流程如下:

1. 用户需求:“我需要一个将MIDI文件转换为乐谱的工具。”

2. AI生成工具:基于WebAssembly,构建客户端本地运行的工具实现;

3. 人工审核:由我(未来会扩展为贡献者社区)验证工具的功能完整性、边缘情况处理能力,力求其符合Kitmul的质量标准;

4. 正式上线:审核通过后,该工具将长期添加到工具目录中;

5. 复用价值:下一个提出相同需求的用户,可直接使用这款经过验证的生产级工具。

这个系统正在根据用户的真实需求,实现自我迭代与成长。每一个未被满足的请求,都会成为系统优化的信号;每一款经过验证的工具,都会增强平台的核心能力。这是一个由AI生成、人类验证、目录有机增长的正向飞轮。

这与部分AI公司追求的“运行时生成代码”有着本质区别:未经验证的生成代码,本身就是一种风险——可能存在bug、安全漏洞,甚至完全无法使用。而人工审核环节,并非限制,而是核心功能:它力求了工具目录中的每一款工具,都达到生产级质量,为用户提供可靠的使用体验。

目标:一年内打造4000+款工具

我目前已经积累了超过4000个工具创意,这个数字并非凭空设定——它是通过分析人们的搜索需求、梳理当前需要上传文件到服务器或支付订阅费的工具类型,得出的真实市场需求规模。

借助Claude Code 20x的高效开发能力,以及我们的自建工具体系,这个目标并非遥不可及。许多简单工具可以在一个开发会话中完成;即便是更复杂的工具(需要自定义WASM或信号处理),开发速度也比无AI辅助时快几个数量级。

下一步规划

目前,简单流程的编排已经非常成熟,但带有分支、条件判断和反馈回路的复杂工作流程,仍有优化空间。自建工具的审核与上线管道,目前也在紧锣密鼓的设计中。

我们的长期愿景是:打造一个一体化平台,让你如今需要通过碎片化软件完成的所有任务——在这里上传文件、在那里支付订阅费、为其他需求安装各类应用——都能在一个界面内解决,所有操作均在本地执行,由AI智能编排,并根据用户的真实需求持续扩展。

后的思考

我想留给每一位读者一个问题:我们真的需要那些操纵现有应用软件的AI代理吗?还是说,我们应该重新思考,应用软件本身应该是什么样子?

我的答案是后者。而我坚信,浏览器,就是验证这个答案的出众运行时。