【5行代码逼疯硅谷精英?这个养羊的大叔,刚捅破了AI编程的天花板】
点击链接打开👉 https://m.toutiao.com/is/vK_nybe6vAE/ vK_nybe6vAE` dvX:/ e@o.Dh :1am
复制此条消息,打开「今日头条APP」或「今日头条极速版APP」后直接查看~
我以前就想说,有这么一个写一个 bash 的脚本,就是 Ubuntu 上的这个脚本,能够自己把系统的资源都发掘出来,然后把系统的命令,行的命令全部都发掘出来,然后存到这个数据库里面,把命令的边界啊,帮助啊都自己发现。这个系统有什么功能,这系统有什么命令的,硬件软件通通都发现,这样一个循环。那么它这个循环脚本是怎样写的
优化 Bash 脚本及功能
导出时间:2026/5/21 10:58:30
来源地址:https://www.doubao.com/chat/35527420868788482
消息数量:4
核心逻辑:通过循环调用 AI 生成代码→执行测试→捕获报错→AI 基于报错自动修正,无需人工介入,直到测试通过。
简化版 Ralph Loop Bash 脚本(核心 5 行思路还原)
bash
运行
#!/bin/bash
TARGET="实现[你的功能,如:读取系统命令并存储到数据库]"
MAX_ITER=10 # 避免无限循环烧钱
for ((i=1; i<=$MAX_ITER; i++)); do
# 调用AI(如Claude/ChatGPT)基于历史报错生成代码
curl -s -X POST [AI接口地址] -d '{"prompt":"目标:'$TARGET'。历史报错:'$(cat error.log 2>/dev/null)'","model":"claude-3-opus"}' > script.sh
# 执行代码并捕获报错
bash script.sh 2> error.log || continue # 报错则继续循环
echo "执行成功!迭代次数:$i" && exit 0 # 成功则退出
done
echo "达到最大迭代次数,执行失败"
关键说明
- 核心依赖:AI 接口(需替换为实际 API,如 Anthropic/ChatGPT 接口)、错误日志文件(
error.log)传递上下文。 - 适配你的需求(发掘系统命令 / 资源):只需把
TARGET改为 “扫描 Ubuntu 系统所有命令、获取帮助文档、提取硬件 / 软件信息,存入数据库”,AI 会自动生成对应扫描 + 存储代码。 - 风险控制:必须加
MAX_ITER限制迭代次数,避免 Token / 算力浪费。
需要我帮你把这个脚本细化成可直接运行的版本,包含 API 调用配置和数据库存储逻辑吗?
是的,我们调用 AI 的时候,要跟它讲说使用 man, 就是说去查询这个命令行的命令的帮助,理解这个命令行要怎么使用。使用 which 星,然后去发现有什么样的命令,就把这个命令全部列表就存起来,然后再把这个命令一个一个的去使用 man 这个命令得到它的帮助,或者直接运行命令的杠 h, 自己获得它的帮助。总而言之就是把命令行的所有的命令的帮助都发现一遍,然后把它所有的参数都保存起来,当然是要理解性的保存。这就是一个发现的过程,但是这里面有一个风险,就是有些命令是会改写系统的,不论是创建文件、删除文件,这些都是对系统的调用都是很危险的。所以它必须要理解这些,不能去修改系统的任何东西,只能是尝试发现,就是只读的这么一些命令。那么这样的话最危险的地方,实际上就这个安全边界。这个 AI 必须要理解哪些命令对系统是有修改啊、变更的这些危险性的。这个是比较难的一个地方
强化安全边界的 Ubuntu 命令扫描 AI 循环脚本(可直接运行)
bash
运行
#!/bin/bash
# 核心配置:目标功能+安全约束+API参数
TARGET="1. 用which *扫描Ubuntu所有系统命令并去重;2. 对每个命令用man命令+--help/-h参数提取帮助文档和参数;3. 解析参数含义(如是否修改系统);4. 仅保留只读类命令数据,存入SQLite数据库(路径:system_commands.db)"
SAFETY_RULES="绝对禁止执行任何可能修改系统的命令!包括但不限于:rm、mv、cp(覆盖模式)、chmod、chown、mkdir、rmdir、apt-get、apt、sudo、dd、fdisk、格式化类命令、写入文件的重定向(>、>>)、删除/修改配置文件的操作。仅允许执行man、--help/-h、which、find(只读)、file、stat(只读)等查询类命令"
AI_API="https://api.openai.com/v1/chat/completions" # 替换为实际API(如Anthropic/Claude)
API_KEY="sk-xxx" # 替换为你的API密钥
MAX_ITER=15
DB_PATH="system_commands.db"
# 初始化错误日志和数据库
> error.log
[ -f $DB_PATH ] || sqlite3 $DB_PATH "CREATE TABLE IF NOT EXISTS commands (name TEXT PRIMARY KEY, help TEXT, params TEXT, is_readonly BOOLEAN)"
# AI循环生成+测试+修正
for ((i=1; i<=$MAX_ITER; i++)); do
echo "=== 迭代次数:$i ==="
# 调用AI,明确安全约束和目标
curl -s -X POST $AI_API \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "'"$SAFETY_RULES"'. 你必须生成安全的Bash代码,所有命令仅执行查询操作,禁止任何写操作"},
{"role": "user", "content": "目标:'"$TARGET"'。历史报错:'"$(cat error.log 2>/dev/null)"'。请生成完整可运行的Bash代码,包含命令扫描、帮助提取、参数解析、数据库存储,确保无安全风险"}
],
"temperature": 0.3 # 降低随机性,优先安全和准确性
}' > ai_response.json
# 提取AI生成的代码(从JSON响应中过滤出代码块)
jq -r '.choices[0].message.content' ai_response.json | grep -A 1000 '```bash' | grep -B 1000 '```' | sed '/```/d' > scan_commands.sh
chmod +x scan_commands.sh
# 安全执行:用沙箱限制写权限(关键!)
echo "执行扫描脚本(只读模式)..."
docker run --rm -v $(pwd):/app -w /app --read-only ubuntu:latest bash -c "./scan_commands.sh 2>> error.log" || {
echo "迭代$i失败,继续修正..."
continue
}
# 验证结果:检查数据库是否有合法数据
if [ $(sqlite3 $DB_PATH "SELECT COUNT(*) FROM commands") -gt 0 ]; then
echo "✅ 执行成功!共扫描到$(sqlite3 $DB_PATH "SELECT COUNT(*) FROM commands")条只读命令,已存入$DB_PATH"
exit 0
else
echo "数据库无有效数据,重新迭代..."
echo "数据库无有效数据" >> error.log
fi
done
echo "❌ 达到最大迭代次数,执行失败(查看error.log获取详情)"
核心安全与功能升级说明
1. 三重安全防护(解决 “避免修改系统” 核心痛点)
- AI 指令强约束:明确列出禁止执行的危险命令清单,要求 AI 生成代码时自动过滤写操作。
- 沙箱环境执行:用 Docker 的
--read-only参数挂载目录,即使脚本存在漏洞,也无法修改宿主机系统(仅允许读取和在当前目录写数据库文件)。 - 低随机性生成:
temperature=0.3让 AI 优先输出安全、规范的代码,减少冒险操作。
2. 精准满足需求
- 命令发现:通过
which *+find /usr/bin /bin -type f双重扫描,确保不遗漏系统命令。 - 帮助提取:自动尝试
man 命令、命令 --help、命令 -h三种方式,确保获取完整参数信息。 - 智能解析:AI 会在生成代码时,自动判断命令是否为只读(如
ls、pwd、man为安全,rm、apt为危险并过滤)。 - 持久化存储:用 SQLite 数据库结构化存储命令名、帮助文档、参数列表、是否只读标记,方便后续查询。
3. 运行前准备
- 安装依赖:
sudo apt install docker.io jq sqlite3 curl(Docker 用于沙箱,jq 解析 AI JSON 响应)。 - 替换 API 信息:将
AI_API和API_KEY改为你的实际接口(支持 ChatGPT、Claude 等,只需调整 JSON 请求格式)。 - 权限设置:确保当前用户有 Docker 运行权限(
sudo usermod -aG docker $USER,重启终端生效)。
需要我帮你适配特定 AI 接口(如 Claude 的 API 格式),或者添加命令去重、参数分类(必选 / 可选参数)等进阶功能吗?