当Ai制作的小工具越来越多,我为什么开始需要一个桌面应用工作台

最近一段时间,我发现自己的电脑里出现了一种很奇怪的软件生态。

不是 Word、Chrome 这种传统软件,而是一堆自己写出来的 Python 小程序。

有的用来处理 Excel,有的批量改文件名,有的做数据清洗,有的其实只是一个几十行的小脚本,还有一些项目有 Web 界面,平时通过浏览器访问。

单独看,每个项目都不复杂。

真正麻烦的是:

项目越来越多以后,它们开始不像"代码",而更像"软件"。

而一旦把它们当作软件来看,很多以前被忽略的问题就会冒出来。

项目放在哪里?

怎么启动?

依赖环境怎么办?

不同项目之间会不会互相影响?

做完之后怎么变成一个随时可以使用的应用?

过几个月以后,我还能不能迅速找到它?

这件事情让我重新思考了一下 Python 项目的使用方式。


1. AI 让写程序越来越容易,但"管理程序"反而成了新问题

以前我写一个 Python 工具,会认真考虑项目结构。

复制代码
my_tool/
├── main.py
├── requirements.txt
├── config.py
└── README.md

然后创建虚拟环境:

复制代码
python -m venv .venv

激活环境:

复制代码
.venv\Scripts\activate

安装依赖:

复制代码
pip install -r requirements.txt

最后运行:

复制代码
python main.py

这种流程没有任何问题。

问题是,当 AI 编程工具加入之后,我开始越来越频繁地创建"小项目"。

以前一个下午可能写一个工具。

现在可能只是突然想到:

能不能写一个程序,把某个目录下的图片自动按照日期整理?

于是就开始做。

做完以后又想到:

能不能加一个简单的 GUI?

再过一会儿:

能不能增加一个批量处理功能?

几轮下来,一个原本只准备临时使用的脚本,已经变成了一个真正的小应用。

于是新的问题出现了。

写一个程序和长期使用一个程序,本来就是两件不同的事情。


2. 我开始把"项目"和"应用"分成两个概念

在开发阶段,我关心的是源代码。

到了使用阶段,我关心的是应用。

比如一个 Python 项目:

复制代码
from pathlib import Path

PROJECT_DIR = Path(__file__).resolve().parent

def main():
    print(f"Project: {PROJECT_DIR}")

if __name__ == "__main__":
    main()

对开发者来说,这已经足够了。

但对一个每天都要使用它的人来说,我更希望看到的是:

复制代码
文件整理器
数据清洗工具
图片压缩工具
网页采集工具
Excel 助手

点击一下就能运行。

我不希望每次使用之前,还要重新回忆:

复制代码
cd D:\projects\xxx
.venv\Scripts\activate
python main.py

所以后来在设计自己的桌面工作流时,我开始考虑一个问题:

能不能把 Python 项目变成"应用",而不是永远停留在"项目目录"这个状态?

这也是我后来做 PyBox 时一个比较核心的思路。


3. 一个真正的应用,其实需要比代码更多的东西

如果只是执行 Python 文件,代码很简单。

但应用至少还需要一些元信息。

例如:

复制代码
APP_INFO = {
    "name": "Excel 数据整理器",
    "version": "1.0.0",
    "runtime": "python",
    "entry": "main.py",
    "homepage": "https://pybox.site",
}

这里的 homepage 本质上和程序逻辑没有关系。

它只是应用元数据。

但从应用管理系统的角度看,这类信息很重要。

因为当电脑里出现几十个项目以后,仅仅知道"入口文件在哪里"已经不够了。

你还需要知道:

这个程序叫什么?

当前版本是什么?

它从哪里来?

谁制作的?

怎么启动?

需要什么运行环境?

这些东西组合起来,才更像一个真正的软件。


4. Python 环境问题,其实比代码问题更容易让人崩溃

Python 开发有一个很现实的问题:

依赖。

例如项目 A:

复制代码
requests==2.x
pandas==2.x
openpyxl==3.x

项目 B:

复制代码
requests==2.x
pandas==1.x
numpy==1.x

如果所有程序共用一个 Python 环境,迟早会出现某次升级把另一个项目弄坏的情况。

所以最基本的解决办法,就是虚拟环境。

复制代码
from pathlib import Path
import subprocess
import sys

project = Path("demo")

venv = project / ".venv"

subprocess.run(
    [sys.executable, "-m", "venv", str(venv)],
    check=True
)

这样每个项目都可以拥有相对独立的运行环境。

对于开发来说,这已经是成熟的解决方案。

但如果换一个角度:

假设电脑里已经有 20 个小应用。

难道每次运行它们,都要用户自己理解虚拟环境?

我觉得这就不应该继续暴露给最终使用者了。

环境隔离可以存在,但环境管理应该尽可能退到幕后。

这也是桌面应用管理工具存在的一个实际意义。


5. "启动程序"其实远比 python main.py复杂

最开始写脚本的时候,我们往往认为:

复制代码
python main.py

就是启动一个应用。

实际上不是。

一个桌面应用真正启动的时候,通常还要考虑:

  • 当前工作目录
  • Python 解释器
  • 虚拟环境
  • 环境变量
  • 配置文件
  • 标准输出
  • 日志
  • 进程生命周期

比如一个简化后的启动模型,可以理解成:

复制代码
def start_app(python_exe, entry_file, cwd, env):
    process = subprocess.Popen(
        [python_exe, entry_file],
        cwd=cwd,
        env=env,
    )
    return process

停止也不是简单地"关闭窗口"。

应用管理器实际上需要知道:

复制代码
process.poll()

返回 None,说明进程还在运行。

返回其他值,则说明程序已经退出。

所以当应用数量增加之后,"启动"和"停止"本身就逐渐变成了一套需要被管理的能力。

这也是为什么我后来不太满足于简单的脚本启动器。

我真正需要的是一个应用运行层。


6. Windows 桌面环境还有一个特殊问题:用户并不想永远开终端

服务器环境可能更喜欢命令行。

开发者也喜欢命令行。

但日常办公场景不一定如此。

假设我每天要使用:

复制代码
文件整理
图片处理
Excel 清洗
网页工具
自动化脚本

我更希望它们出现在一个列表里。

点击:

复制代码
▶ 文件整理
▶ Excel 清洗
▶ 图片处理
▶ 自动化任务

而不是打开几个终端窗口。

这其实就是一个很传统的桌面软件设计问题:

把"程序怎么运行"转换成"用户怎么使用"。

所以 PyBox 最终做成了一个 Windows 桌面应用工作台。

它可以把本地 Python 程序、自动化脚本和网页应用统一放进"我的应用"里进行管理。

从技术上说,背后仍然是进程、环境、路径和配置。

只是这些东西不需要每次都由用户手动处理。


7. AI 编程真正有意思的地方,是"生成"和"使用"可以形成闭环

我现在比较感兴趣的一种开发方式,并不是让 AI 一直替代人工编码。

而是:

复制代码
提出需求
   ↓
AI 创建项目
   ↓
运行测试
   ↓
人工使用
   ↓
发现问题
   ↓
AI 修改项目
   ↓
重新运行
   ↓
形成长期使用的应用

这个流程和传统的软件开发流程其实很像。

区别只在于:

以前"提出需求 → 写代码"这一步成本比较高。

现在 AI 可以把这一步压缩很多。

于是,个人开发者可以开始做很多以前懒得做的小工具。

例如一个简单的 CSV 处理程序,可能只需要一个入口:

复制代码
def process_csv(input_file, output_file):
    # 省略具体业务逻辑
    pass

AI 可以帮助补齐大量样板代码。

但项目真正产生价值的地方,不在于这个函数写得有多漂亮。

而在于:

以后我还能不能方便地把它拿出来用。

所以我越来越重视"应用层"。


8. 为什么我没有把它做成一个纯粹的 IDE

这是开发过程中比较容易陷进去的地方。

一开始很容易想:

既然可以写代码,那是不是把编辑器也做进去?

再往下想:

要不要做调试器?

要不要做 Git?

要不要做插件?

要不要做完整的 IDE?

如果继续往这个方向走,很容易变成"再造一个 IDE"。

但我的实际需求并不是这个。

我并不缺少编辑 Python 的工具。

我缺的是:

项目完成以后,如何让它变成一个可以长期使用的应用。

所以 PyBox 里的"研发中心",更倾向于把 AI 当成项目开发入口。

用户可以通过对话创建或者修改 Python 项目,然后把项目登记到应用列表中。

开发和使用之间,就这样多了一条连接。


9. 应用分享,是另外一个自然出现的问题

当自己做的小工具越来越多以后,很容易出现一个想法:

这个程序是不是别人也能用?

假设我做了一个文件整理工具。

代码可能只有几百行。

但如果直接把整个项目目录发给别人,对方还需要:

复制代码
安装 Python
安装依赖
配置环境
找到入口文件
执行命令
处理报错

这时候,"代码能运行"和"别人能使用"之间,仍然隔着一道门槛。

所以应用分享就变得有意义。

理想状态应该更接近:

复制代码
应用
 ↓
应用信息
 ↓
运行环境
 ↓
依赖
 ↓
启动方式

这些信息统一描述之后,应用就可以被同步、下载和管理。

因此在 PyBox 里,我也加入了应用商店这一层。

它既可以同步、下载别人制作的应用,也可以把自己制作的应用提交出去。

这个机制本质上还是软件分发,只不过软件的来源不再只有专业软件公司。

个人开发者也可以成为应用提供者。


10. 网页应用其实也可以放进同一个模型

有些工具不适合做成传统桌面窗口。

例如:

复制代码
Python 后端
+
Web UI

开发完成之后,浏览器就是最方便的使用方式。

这种应用如果和 Python 桌面程序完全分开管理,用户还是需要记忆两个体系。

所以我更倾向于:

复制代码
应用
├── Python 程序
├── 自动化脚本
└── 网页应用

技术实现不同没有关系。

对用户来说,它们都是"应用"。

这个抽象其实挺有价值。

因为它把关注点从:

这个程序到底是怎么实现的?

转变成:
我现在要使用哪个工具?


11. 这件事情让我重新理解了"个人软件"

过去我们谈软件,经常默认它是一个比较完整的产品。

但 AI 出现以后,我觉得软件的颗粒度可能正在变小。

以前:

复制代码
一个软件
解决很多需求

以后可能变成:

复制代码
很多小软件
分别解决一个具体问题

例如:

复制代码
图片批处理器
Excel 清洗器
文件重命名器
网页信息提取器
PDF 辅助工具
数据转换工具

这些程序可能都不值得做成商业产品。

但对于个人来说,它们可能非常有用。

AI 降低了创建它们的门槛之后,真正稀缺的东西反而变成了:

组织这些应用的能力。


12. 所以我最后做出来的,其实不是一个"更强的 Python 工具"

我现在更愿意把 PyBox 看成一个 Windows 桌面上的个人应用工作台。

它把几个原本分开的事情放到了一起:

复制代码
AI 辅助开发
      ↓
创建 / 修改项目
      ↓
登记为应用
      ↓
独立运行环境
      ↓
桌面启动与管理
      ↓
应用同步 / 分享

另外,还有一个办公秘书,用来把 AI 放进一些日常办公任务里。

从技术角度看,这些功能并不神秘。

真正有意思的是它们之间的连接。

过去:

复制代码
代码是代码
脚本是脚本
软件是软件
网页是网页

现在,我更倾向于把它们都看成"应用"。

只要一个东西能够稳定地解决某个具体问题,它就值得拥有自己的入口。


13. AI 编程之后,下一个问题可能不是"怎么写"

我觉得这是整个项目做下来最大的一个感受。

过去我们经常讨论:

怎样让程序员写代码更快?

现在 AI 已经把这件事情推进了很远。

接下来更值得考虑的问题可能变成:

写出来的这些程序,怎样才能真正进入日常工作?

因为代码数量增加并不等于生产力增加。

一个 AI 生成了 100 个项目,但最后没有一个方便使用,价值依然有限。

相反,一个几百行的小程序,只要每天能帮你节省十分钟,它就是一个有价值的工具。

所以我现在看待 AI 编程,有一点变化:

AI 负责降低"创造软件"的门槛,而应用工作台解决的是"使用软件"的问题。

两者合起来,才比较接近我理解的个人自动化工作流。

至于这种模式最后会不会成为一种新的桌面软件形态,我也没有答案。

至少对我自己来说,当电脑里的小工具从 2 个增加到 20 个以后,我已经不想再靠文件夹和记忆力管理它们了。

这大概就是我开始做这个桌面应用工作台的最直接原因。

AI 让做软件变得越来越简单,那么接下来,我们也许应该开始认真考虑:这些软件做出来以后,应该怎么生活。

相关推荐
浮光之掠影8 小时前
当 AI 开始写代码之后,我更在意的是:代码写完以后怎么办?
pybox