这是一个能在你自己服务器上跑起来的 AI 写作工具,用户端和后台各一个网页,后端只有一个 PHP 文件加一个 SQLite 数据库。部署是把三个文件传上去,不装框架、不配数据库服务、不开任何云存储。
在线地址:https://cz.phphp.cn/app.html 体验卡密:HYE5-SB8K-83K5-CVEX
## 01 它到底长什么样
打开就是输入卡密的登录框,没有注册页,没有手机号验证,没有“同意用户协议”的勾选框。
进去以后底部六个页签:创作、文案、发现、贴图、作者、我的。
这六个页签不是随便凑的,它们对应写一篇东西时真实会卡住的六个地方。
**创作**是主界面。三个入口:给一个主题直接写、贴一篇参考文章照着写、把别人的爆款拆开看它怎么组织的。生成完的稿子按段落列出来,右边可以直接挑配图,不满意点“重新找图”换一批。
**文案**是成品口播稿库,一条一条摆着,选一条就能开拍。分类加搜索,不用自己攒素材。这一版之前它有个毛病——新装好是空的,33 条示例躺在代码里但没人导入,前台只有搜索框加一句“这个分类还没有文案”。现在改成空库自动灌一次,后台点过“清空”之后就永久不再灌。
**发现**分两块。上面是今日热榜,每条后面跟一个“去写”,点了直接跳到创作页并把题目带过去。下面是爆文库,可以按平台、赛道、时间、播放量筛,排序随意,“用这个题”同样一键带进创作。
**贴图**是上传一张别人的爆款贴图,把它改写成你能发的东西。同页也能文生图,尺寸模式、分辨率、要不要异步这些参数都在后台统一配。
**作者**解决的是“这篇以谁的身份说”。作者身份定稿子里的“我”是谁,写作口吻定同一件事用什么调子说。换个人设,同样的题目写出来完全不是一回事。
**我的**是账目:剩余算力、卡密充值、我的稿件、消耗记录。稿件默认留 3 天,后台能改。
后台是另一套,管卡密、充值码、账本、草稿、爆文库、文案库、上游模型、贴图参数、管理员、操作日志。
## 02 三个设计取舍
做这个东西的时候有三条线是我先划死再写代码的,说说为什么。
**第一,用卡密,不做注册。**
注册意味着要有手机号或邮箱、要有验证码通道、要有找回密码、要有防薅羊毛。每一样都是运维负担,而且用户第一次用就得多填一张表。
卡密是一串字符,发出去就能当账号用,长期有效。站长在后台批量生成,卖或者送都行。用户不用记账号密码,换台设备照样进——反正凭证就在手里。
算力不够了再发充值码,一个充值码只能用一次,用完作废,这样送出去的额度可控。
代价是没法做“多设备同时在线管理”这种事,一个卡密谁拿到谁用。对个人和小团队来说,这个代价可以接受。
**第二,后端地址写死,不给改/如有需要可改为自定义接口。**
用户端的每一个请求都打 `https://cz.phphp.cn/api.php`,构建的时候就固定进 HTML 里了。不读地址栏参数,不读本地存储,不给“高级设置里填个接口地址”这种口子。
这么干不是因为懒,是因为被坑过:之前打包时把本地调试地址 `127.0.0.1` 打了进去,装到服务器上所有人一打开都是“连不上后端”,根因就是构建时传错了参数。
现在构建脚本里有防呆——参数里出现 `127.0.0.1`、`localhost`、`192.168.x.x` 直接报错退出,要强来必须显式加 `–force –local`。用户端启动时还会比对本机存储里的旧地址,不一致就地改成固定值。
手动改地址这件事只留了一个口子:改完只在当前标签页生效,关掉就回默认。想长期换地址,改代码里的 `FIXED_API` 重新构建。这样至少不会出现“某个用户手机上永远连不上”的玄学故障。
**第三,宁可架构土一点,也别要一堆依赖。**
一个 `api.php` 装下所有接口,一个 `app.db` 装下所有数据,图片落在 `data/img/`。备份就是打包 `data/` 目录。
不用 MySQL 是因为很多虚拟主机只给一个库,用户还得自己去面板建库、填账号密码,这一步能劝退一半人。SQLite 是文件,PHP 自带 `pdo_sqlite`,站点根目录可写就行。
不用前端框架的构建链,是不想让用的人装 Node。Vue 3.5 的完整构建直接内联进那两个 HTML 里,没有 CDN,没有外链脚本,断网也能打开页面——这点对国内访问环境挺重要。
当然开发时还是要 Node:模板和逻辑在两个文件里,合并成一个 HTML 靠一个几十行的 `build.js`。这一步在这边做完,发出去的就是两个纯静态页。
这套架构撑不住几百人同时在线——单文件 PHP 没有常驻进程,没有连接池,一次请求一条命。这个工具的定位本来就不是平台,是一个人或者一个小团队自己用的东西。真要往上堆人,得换架构,改配置是堆不出来的。
## 03 两个绕不过去的技术麻烦
架构丑可以忍,有两件事忍不了,都是真撞过的。
**第一件,出图不能同步等。**
上游文生图一次要几十秒,而 PHP 默认执行上限是 30 秒。同步调用不是慢的问题,是必然超时,用户看到的是“点了没反应”。
改成三步:提交任务拿到 id,在库里记一条,前端拿这个 id 轮询。用户点完看到的是“排队中”“生成中”,页面关掉再回来还能续上。后台专门有个出图任务面板,卡住的、失败的都在里面列着,不用去翻服务器日志。
另外所有跟出图沾边的入口都加了 `set_time_limit(0)`。这行是保命的:服务器默认 30 秒会从中间把转存大图这一步砍断,报出来的错看起来特别像“上游挂了”,能查一下午。
**第二件,SQLite 一写就锁。**
数据库是文件,几个请求同时写就报 `database is locked`。三个人同时点生成就能撞上,第四个人看到的是“系统繁忙”。
解法不新鲜:开 WAL 模式,写不挡读;再把 `busy_timeout` 设成 5000 毫秒,抢不到锁就等一会儿重试,而不是立刻失败。这两行在连上数据库的那一刻就执行了,用户完全感知不到——感知不到才是对的。
副作用是 `data/` 目录里会多出 `app.db-wal` 和 `app.db-shm` 两个文件。备份要整个目录打包,只拷 `app.db` 有可能丢掉最后几笔记录。
## 04 这一版修的是什么
上个版本装上去,登录进去点底部页签,除了“创作”,其余五页一片白。
查下来是五个问题凑一起,最要命的一个特别没技术含量:显示阅读量用的数字格式化函数叫 `fmt()`,而“智能排版”的加载状态对象也叫 `fmt`。Vue 里 data 最后写入,方法被整个盖掉,模板一调 `fmt(x)` 就报 `fmt is not a function`,一处报错把整页渲染带崩。
剩下四个:从分享链接或刷新进来不触发数据请求;文案库空库无内容;生成失败时结果卡片整块不渲染,只剩一条两秒就消失的提示;贴图页没传图就点生成,提示同样一闪而过。
修法都不复杂,麻烦的是确认。我用无头 Chrome 把六个页签挨个点了一遍,统计每个页签可见区域里有几个 section、正文有多少字。修复前是“文案 30 字,发现 0,贴图 0,作者 0,我的 0”,修复后是 2983 / 1881 / 581 / 1054 / 776。
顺带把 7 处直接改页签变量的代码统一成一个入口函数,地址栏跟着变,刷新不会跳回别的页;提示条从 2.2 秒放到 3 秒,长一点的报错才读得完。
## 05 它不适合谁
三类人别用。
想要“打开网页注册就能用”的,这个不是。得有自己的服务器,或者至少一个能跑 PHP 的空间。
需要多人协作、审稿流、权限分级的,这个也不是。目前只有“管理员”和“持卡密的人”两种身份。
指望它替你做判断的,更加不是。它能省掉的是重复动作——找选题、起结构、按人设调语气、把稿子存下来、配张图。省不掉的是“这个题值不值得写”和“这段读起来像不像人话”。
工具能把你从空白页前挪到第一稿,剩下的还得你自己改。改稿这件事,目前没有能代劳的。
—
本文Annuo为工具开发者,文中所述功能与版本号为 V1.9.2 实际情况。转载请注明出处与原文链接。
版权:部分文章来源于互联网搜索引擎采集(如有侵权联系1832070282@qq.com删除),本站原创版权归盘州市修齐网络科技所有
转载请注明出处:https://www.xiuqiwl.com/dongtai/1326.html



微信扫一扫
支付宝扫一扫