从小白到创造者:我的 AI 命令行工具诞生记

141 阅读6分钟

从小白到创造者:我的 AI 命令行工具诞生记

作者:weiwei2012holy
项目地址:AI-Bash
发布日期:2024-04-09

开端:命令行菜鸟的“救命”灵感

作为一个刚摸到编程门槛的菜鸟,我对命令行简直有种天然恐惧。记得有一次,我想找电脑里占用空间最大的文件,结果在网上翻了半小时教程,才拼凑出 dir /b /s /o-s(Windows)这么个命令。查个进程、杀个程序,甚至只是列个目录,我都得像侦探一样到处搜语法。更别提在 Linux 上折腾,动不动就被 man 手册的英文淹没。这种低效让我抓狂,也点燃了一个大胆的想法:能不能有个工具,让我用“人话”告诉它需求,比如“找大文件”“杀掉吃内存的进程”,它就直接给我命令?带着这个念头,我的 AI 编程冒险正式启程。

AI Cursor:从工具到“编程师父”

机缘巧合下,朋友推荐了 AI Cursor。我本来以为它只是个花哨的代码编辑器,结果发现它更像个全能的编程导师。我试着跟它“聊天”:“我想做一个工具,用自然语言描述需求,比如‘找大文件’,它就自动生成命令。” AI Cursor 不仅秒懂,还给我画了张蓝图:

  1. Python 做主力:简单易学,适合我这种新手。
  2. Click 搭界面:专门为命令行工具设计,轻量又强大。
  3. OpenAI API 加持:用大模型翻译“人话”成命令。
  4. 跨平台兼容:Windows 和 Linux 都能跑,不留死角。

更让我惊喜的是,它还会根据我的水平调整建议,完全不像网上那些高深莫测的教程。我瞬间觉得:这不就是我梦寐以求的“编程师父”吗?

实战:AI 带我从零写代码

第一步:从“空文件夹”到“跑起来”

我连怎么起头都一头雾水,AI Cursor 直接甩给我一串命令:

mkdir cmd_ai && cd cmd_ai
python -m venv venv
source venv/bin/activate  # Windows 用 venv\Scripts\activate
pip install click openai python-dotenv

几分钟后,项目环境就搭好了。它还顺便教我用 .env 文件存 API Key,避免硬编码的安全隐患。我敲下 pip list,看到一堆包整整齐齐列出来,心里那个成就感简直爆棚——从“懵”到“哇”,就这么简单。

第二步:Hello, World 的“开门红”

AI Cursor 建议我先写个简单框架热热手:

import click

@click.command()
def cli():
    """AI-Bash: 把人话变成命令的魔法工具"""
    click.echo("Hello, World!")

if __name__ == "__main__":
    cli()

敲完 python main.py,屏幕上跳出 “Hello, World!”,我乐得像个刚学会说话的孩子。AI 还逐行拆解:@click.command() 是命令的“开关”,click.echo() 是比 print() 更优雅的输出。我问:“为啥不用 print()?” 它答:“click.echo() 能处理编码问题,跨平台更稳。” 这波细节,直接让我对编程多了几分敬畏。

第三步:核心魔法——AI 生成命令

到了重头戏:怎么让 AI 理解我的需求并吐出命令?AI Cursor 给我设计了个 LLMClient 类:

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

class LLMClient:
    def __init__(self):
        self.client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
    
    def generate_command(self, query: str, platform: str = "auto") -> str:
        system_prompt = f"你是命令行大师,根据用户需求生成 {platform} 系统下的命令。"
        response = self.client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": system_prompt},
                {"role": "user", "content": query}
            ]
        )
        return response.choices[0].message.content.strip()

我输入“找最近修改的文件”,它返回 dir /o-d /t:c(Windows)或 ls -lt(Linux),完美!AI 还解释:system_prompt 是给模型定调,platform 参数能让我指定操作系统,避免命令跑偏。我忍不住多试了几次:“杀掉 Chrome”“列出所有 txt 文件”,结果都准得让我怀疑自己是不是在做梦。

第四步:加点“人性化”调料

光有功能还不够,AI Cursor 提议加点用户体验的“调料”。比如一个加载动画,让等待不那么枯燥:

import threading
import sys
import time

class Spinner:
    def __init__(self, message="加载中"):
        self.spinner_chars = "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏"
        self.message = message
        self.running = False
    
    def _spin(self):
        while self.running:
            for char in self.spinner_chars:
                sys.stdout.write(f"\r{self.message} {char}")
                sys.stdout.flush()
                time.sleep(0.1)
        sys.stdout.write("\r")
        sys.stdout.flush()
    
    def start(self):
        self.running = True
        threading.Thread(target=self._spin).start()
    
    def stop(self):
        self.running = False

敲代码时,我差点忘了关线程导致程序卡死,AI Cursor 立刻提醒:“用 stop() 清理,别让动画抢主线程的风头。” 加上彩色输出(借助 click.style),界面一下从黑白默片变成了彩色大片。

第五步:细节打磨——配置文件和错误处理

AI 还建议我加个配置文件,让用户自定义 API Key 和偏好:

import json

def load_config(config_file="config.json"):
    try:
        with open(config_file, "r") as f:
            return json.load(f)
    except FileNotFoundError:
        return {"api_key": "", "platform": "auto"}

它还帮我加了错误处理,比如 API 超时或输入乱七八糟时,友好提示而不是直接崩掉。这些小细节让我意识到:好工具不只看功能,还得“体贴”。

项目“闪光点”:AI 赋予的超能力

  1. 聪明到爆:AI 能从“找大文件”生成 find . -size +100M,意图理解精准得像读心术。
  2. 跨平台无忧:Windows 的 dir 和 Linux 的 ls,AI 自动适配,我都不用操心。
  3. 赏心悦目:旋转动画、彩色提示,小心思拉满用户好感。
  4. 随心所欲:配置文件简单易改,API Key 一填就用,灵活性满分。

成长日记:从“慌”到“行”

  • 学到了啥:类怎么写、线程怎么开、API 怎么调,AI 边教边练,我从零基础到能看懂代码逻辑。
  • 摔过的坑:Linux 命令在 Windows 上跑崩、API 偶尔“脑抽”生成奇怪结果、动画线程忘了关。
  • AI 的救场:它不仅指出问题(“你忘了判断平台”),还给优化方案(“加个缓存试试”),甚至教我写测试用例验证效果。

我还记得第一次调试时,程序死循环,屏幕全是乱码。AI Cursor 让我加日志看变量,才发现是 API 返回空值。从那以后,我学会了“凡事留个后门查问题”。

下一步:和 AI 一起飞得更高

  1. 新玩法:加命令历史(别让我重复输入)、自定义模板(比如“备份文件”直接套模板)、支持更多命令类型(网络、权限管理等)。
  2. 跑得更快:缓存常用命令、优化 API 调用频率,争取秒级响应。
  3. 玩出圈:写份详细文档、加一堆测试用例,建个 GitHub Issue 收集反馈,搞不好还能拉几个贡献者。

我还想加个“学习模式”,让工具把生成的命令拆解解释,帮新手边用边学。AI 听完直夸:“这想法有潜力!”

尾声:AI 编程,未来已来

从一个被命令行虐到怀疑人生的菜鸟,到用 AI Cursor 打造出自己的工具,这一路我不仅学会了编程,还摸到了 AI 的“魔法边界”。它让我意识到:编程不是高不可攀的山,而是可以和 AI 一起翻越的坡。

如果你也厌倦了翻教程的日子,或者好奇 AI 怎么把创意变成现实,欢迎来 GitHub 仓库 围观我的“处女作”。有问题?提 kwest!有想法?来 PR!让我们一起,在 AI 的加持下,探索编程的新疆界!