当 Ai制作小工具越来越多,我为什么开始需要一个桌面应用工作台
最近一段时间,我发现自己的电脑里出现了一种很奇怪的软件生态。
不是 Word、Chrome 这种传统软件,而是一堆自己写出来的 Python 小程序。
有的用来处理 Excel,有的批量改文件名,有的做数据清洗,有的其实只是一个几十行的小脚本,还有一些项目有 Web 界面,平时通过浏览器访问。
单独看,每个项目都不复杂。
真正麻烦的是:
项目越来越多以后,它们开始不像“代码”,而更像“软件”。

而一旦把它们当作软件来看,很多以前被忽略的问题就会冒出来。
项目放在哪里?
怎么启动?
依赖环境怎么办?
不同项目之间会不会互相影响?
做完之后怎么变成一个随时可以使用的应用?
过几个月以后,我还能不能迅速找到它?
这件事情让我重新思考了一下 Python 项目的使用方式。
1. AI 让写程序越来越容易,但“管理程序”反而成了新问题
以前我写一个 Python 工具,会认真考虑项目结构。
my_tool/
├── main.py
├── requirements.txt
├── config.py
└── README.md
然后创建虚拟环境:
python -m venv .venv
激活环境:
.venvScriptsactivate
安装依赖:
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:projectsxxx
.venvScriptsactivate
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 让做软件变得越来越简单,那么接下来,我们也许应该开始认真考虑:这些软件做出来以后,应该怎么生活。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
