一、先说结论
我是个做音乐的,编曲、制作。不会写代码。
昨天我把自己造了 4 个月的东西开源了:Real —— 一个本地优先的 AI Agent 工作台。Rust 后端 + Tauri 2 桌面壳,几万行代码。
这几万行,我一个字都没有手写。
不是"我口述让 AI 敲"那种 —— 我用的是另一套东西。下面我会讲清楚那套东西是什么,以及我在过程中想明白的几个技术判断。我觉得技术判断比代码本身更值得看。
二、为什么会有这个东西
起点很具体:我想给编曲加个 AI 助手。
我说「给这段吉他加一段鼓」,它就去加;说「照这个旋律补一条贝斯」,它就去补。说得出,就做得到。
但真动手才发现,难的不是"让它听懂",而是让它可靠:
- 改错了要能退回去
- 每一轮干了什么要留得下痕迹
- 上下文会爆,爆之前得能归档而不是丢掉
- 它不能随便删我的东西
这些都不是"模型能力"问题,是平台能力问题。我缺的不是一个更聪明的助手,是一个自己的、可控的、不裸奔的 Agent 平台。
于是先去造平台。这一造 4 个月。先造工具,再造产品。
三、它长什么样
【此处插入截图:主界面】
一次真实任务进行中的状态(旁白、工具调用、注入的工作规范):
【此处插入截图:运行中】
四、让 AI 可靠干活的 4 个硬设计
1. 模型说"我改好了"不算数 —— 后端自己扫
这条是我最坚持的。
模型很会讲故事。"我已经修复了这个问题""改动已完成"—— 但它可能只是写了句话。
Real 的做法:每轮结束,后端按文件 mtime 自己扫一遍工作区,找出"自某个标记以来被写过的源文件",这个清单不由模型计算、也不由模型解释。然后喂给三处:触发自动验证、卡壳反射(轮数 ≥ 8 且本轮没有任何写入证据,就注入对账事实)、以及给模型看的"这轮改了哪些文件"。
配合一条人格纪律:要求模型每轮跑 git status --porcelain 和 git diff --stat,把实数原样贴进回复;连续两轮该数字为空 → 判定为亏,不管叙事多漂亮。
2. 工具只给 4 个,是按前缀成本算的
我给模型的工具只有四个:read / write / modify / run。
为什么?因为工具定义住在每次请求的最前段,是前缀里最贵的一块 —— 而且工具越多,模型每轮还要多做一次"我该用哪个"的选择,这也是钱。
所以按能力收敛到四条:读写改 + 万能命令通道。被砍掉的 search / ask / web_search 实现全都保留着,只是不挂进工具面。search 的能力并进 run(grep -rn 走原生壳),web_search 并进 run + curl。
3. 不是"问一句答一句",是一轮轮收敛到交付
任务不是一次问答,是一轮一轮收敛:
一轮 = 决策相(上下文 → 模型表态,1 次 LLM 调用)
├─ 有工具调用 → 执行相:执行 + 回执进流 → 下一轮
└─ 纯文本回答 → 收敛相:这就是答案,循环结束
配一套停滞止损:连续零进展到 4 轮注入唤醒提示、8 轮进入只读收窄(只能交总结或提问)、12 轮收束交付。另外还有两个兜底 —— 全程没改过文件的按纯诊断 30 轮收口,轮数不足 20 不判停机。
判断"有没有进展"的口径是:改文件成功 = 实体进展;首读新文件 / 换新命令成功 = 探索进展;复读旧文件与重跑同一命令不算进展。
4. 提示词当代码管
提示词不是散落一地的字符串,是按部门编制的:每个文件一个职责、一个注入点、一个时机。
排在最前的四份(人格 / 输出纪律 / 旁白 / 留痕)拼成固定的系统前缀 —— 顺序即缓存,永不重排。剩下的"怎么干活"(检索策略、判结束信号、编码坑)住 specs/,按关键词命中才注入,不占固定前缀。
三条铁律:改话术不改逻辑、改逻辑不改话术;话术变更视同代码变更;一条契约只住一个文件。
五、我到底是怎么"不写代码"造出来的
这才是可能对你有用的部分。
我没有把 AI 当"代码生成器"用,我把它当一个需要被管理的部门。
具体讲三件事:
① 我写的是边界,不是代码。 "这个改动归哪个部门?现有部门能不能承载?这是架构缺口还是实现 bug?" —— 我在动手前只回答这三个问题。答案决定的东西,比任何一行代码都多。
② 我给每个东西定"归属",而不是"步骤"。
工具归 tools/,规范归 specs/,话术按文件分管各自的时机。定完了,改哪一处、谁会被影响,是自然推出来的 —— 我不需要记住流程。
③ 判断"它对不对"靠证据,不靠感觉。 每轮结束我去看那些不由模型自己算的数字:改了哪些文件(后端扫的)、测试跑没跑过、连续多少轮没进展。模型的自述我一个都不信。
所以那句话可以这么理解:我不是在写代码,我是在设计一个能约束 AI 把代码写对的系统。
六、现在的状态
- Windows 上双击
.msi就能装,不需要 Node、不需要 Rust,WebView2 也打包进去了 - 或者用便携版 zip,解压双击就能开,数据跟着文件夹走
- 我目前只有 Windows 机器,macOS 版本还没实测过 —— 代码里有 macOS 分支,有 Mac 的开发者欢迎帮忙验证、提 issue
说句实话:设置面板里有一部分功能还没完全对接上,是我确实没精力做完了,先摆在那儿。后面会补,也欢迎你基于这个版本自己往下做,不用等我。
GitHub: github.com/Azzrenz/Rea…
说句可能不讨喜的实话:它不是一个拿来就有一排现成按钮的软件。它更像一间车间——工具和材料都给你,但得你说清楚要造什么、怎么算造好了。所以它挑的不是会写代码的人,是会把事情想清楚的人。想不清楚,它也跟着乱;想清楚了,加什么功能都是一句话的事。
它不是终点,是手段。我要做的是那个音乐软件,而它需要一个安全、自主、能长期演化的开发底座。
一个人做不完。多一双眼睛,就少一个坑。