我用 AI 帮我造了个 AI 编程平台,然后它帮我写了这篇文章
"再牛B的技术,也经不住你傻B式的坚持。" —— barcke 语录
前言:一个故事的开始
某个深夜,我盯着屏幕,手边是第 N 杯咖啡,脑子里转的是:
"要是有个工具,能让 AI 帮我写代码、帮我调 Bug、帮我生成文档……那该多好?"
然后我意识到,这玩意儿我可以自己造。
于是,code.ideamake.cn 诞生了。
这是个什么东西?
简单说:一个基于 Claude 的 AI 编程助手平台,支持:
- 🤖 对话式编程(你说需求,它出代码)
- 🌐 内嵌浏览器预览(写完直接看效果)
- 📁 工作区文件管理(不是单纯的聊天框)
- 🚀 一键部署本地服务(
python3 -m http.server 8080它来负责)
用一句话总结就是:你负责提需求,AI 负责秃头。
技术干货:它是怎么跑起来的?
架构层面
用户输入 Prompt ↓ Claude API (claude-sonnet-4) ↓ Tool Use(文件读写 / bash 执行 / 浏览器调用) ↓ 工作区(/workspace/project) ↓ 本地 HTTP Server(port 8080) ↓ 内嵌浏览器预览 核心是 Claude 的 Tool Use 能力,不是普通的聊天补全,而是真正的 Agent Loop: while (任务未完成) { 让 Claude 决定下一步 tool call 执行 tool(bash / file / browser) 把结果塞回 context 继续... } 这就是为什么它能"自己跑 curl 检查服务是不是活着",不是魔法,是 ReAct 模式的工程化落地。
一个值得注意的细节:上下文管理
Agent 模式下,每一轮工具执行结果都会追加进 messages 数组,这意味着:
- 长任务会快速消耗 context window
- 需要做好 history 截断 或 summarization 策略
如果你也在自己接 Claude API 实现类似功能,建议这样控制:
// 保留最近 N 轮,避免 token 爆炸
const MAX_TURNS = 20;
const trimmedMessages = messages.slice(-MAX_TURNS * 2);
文件系统 + bash = 真正的 Agent
很多人以为 AI 编程助手就是"生成代码然后复制粘贴",但真正的 Agent 是:
- 写文件:
create_file('/workspace/project/index.html', content) - 执行命令:
bash('cd /workspace && python3 -m http.server 8080 &') - 验证结果:
bash('curl -s http://localhost:8080/ | head -30') - 根据结果决策:返回 200 → 告诉用户成功;否则 → 自动 debug
这套闭环,才是让 code.ideamake.cn 感觉"真的能干活"的原因。
我对它做了什么改造?
原版是通用编程助手,我在用的过程中做了些"本地化手术":
1. 汉化 Prompt 层
把系统 Prompt 里的任务描述、工具说明全部改成中文,AI 回复也更自然了,不再一本正经说英文。
2. 接入 MiniMax 替代 Claude
Claude API 对国内开发者不算友好(延迟 + 价格),我把 LLM 层抽象了一下,换成了 MiniMax:
# 替换前
client = anthropic.Anthropic(api_key=CLAUDE_KEY)
# 替换后(MiniMax 兼容 OpenAI 协议)
client = OpenAI(
api_key=MINIMAX_KEY,
base_url="https://api.minimax.chat/v1"
)
对,MiniMax 支持 OpenAI 兼容协议,切换成本几乎为零。
3. 增加工作区持久化
原版每次对话工作区是临时的,我加了 PostgreSQL 存储工作区快照,配合 aidee 平台的 R2DBC + Redis 缓存层复用。
遇到的坑,顺便帮你踩掉
坑 1:bash 执行的进程没有回收
Agent 启动后台服务(python3 -m http.server &),对话结束没有 kill,端口就占住了。
解决:bash 工具执行前检查端口占用,或用 lsof -ti:8080 | xargs kill -9 先清理。
坑 2:文件内容太大导致 context 溢出
Agent 把整个 index.html(几百行)塞进 messages 里,token 直接爆。
解决:file read 工具加 max_lines 限制,只读前 100 行,需要更多再分页。
坑 3:浏览器预览 localhost 跨域
内嵌 iframe 访问 localhost 会被浏览器拦截。
解决:用 WebSocket tunnel 或 反向代理把 localhost:8080 映射到公网子路径。
最后说点实在的
如果你也想造类似的东西,核心思路就三个字:
工具 + 循环 + 上下文
工具决定 AI 能干什么,循环决定它能干多久,上下文管理决定它能干多好。
其余的,都是包装。
彩蛋:这篇文章的诞生过程
- 我截了个图给 Claude
- 说:"帮我写篇 blog,参考我之前的文章风格,幽默带干货"
- Claude 花了 3 分钟抓取我的 blog 首页、分析风格
- 输出了你现在看到的这篇文章
所以严格来说,这篇文章是 AI 用 AI 平台写的关于 AI 平台的文章。
套娃警告 🪆🪆🪆
如果你也在搞 AI 工具链,欢迎来聊:微信 Xiaoxin5653
— barcke @ 某个深夜