新定式!人类发现问题,AI 解决问题——记 Code URL Cleaner 技能的开发

故事背景:一个空格引发的”血案”
2026 年 3 月 8 日凌晨,我的主力助理 露西(Lucybot) 在安装某个工具时遇到了诡异的问题。
命令执行失败,重试,还是失败。反复多次后,露西无奈地把问题抛给了我:
“韬哥,这个命令一直报错,我试了好多次都不行,你手动执行一下吧…”
我接过命令,定睛一看——好家伙,URL 中间居然有个空格!
# ❌ 错误的命令(URL 中间有空格)
git clone https://github.com/Johnserf-Seed /TikTokDownload.git
# ✅ 正确的命令
git clone https://github.com/Johnserf-Seed/TikTokDownload.git就是这个不起眼的空格,让露西反复执行失败。
问题溯源:谁的锅?
我第一时间去问了豆包,得到的分析很中肯:
“这可能是大模型生成并组装内容时不小心多了一个空格,也可能是 OpenClaw 的某个 BUG。”
想想也是,AI 在生成内容时,偶尔会犯这种”低级错误”。但问题是——我有多个助理,露西只是其中之一。如果每个助理都要我手动检查这种空格问题,那还要 AI 干嘛?
于是,我做了一个决定:
让露西自己把这个问题解决掉。
AI 自主开发:从问题到解决方案
我对露西说:“既然你发现了这个问题,那就自己开发一个插件,以后遇到这种空格自动清理掉。”
没想到,露西真的做到了。
第一步:需求分析
露西很快理解了需求:
- 清理 URL 中的空格(如
https://example.com/ test→https://example.com/test) - 清理命令中的多余空格(如
git clone https://...→git clone https://...) - 清理路径中的空格(如
/Users/yitao/ .openclaw→/Users/yitao/.openclaw) - 保留正常空格(自然语言文本、命令参数之间的单个空格、代码缩进)
第二步:技术选型
露西选择了 OpenClaw Hook 机制:
- 注册一个生命周期钩子
- 拦截 agent 输出
- 在显示前自动清理
这样,所有助理的输出都会自动经过清理,一劳永逸。
第三步:核心实现
露西写出了核心代码:
# cleaner.py
import re
def clean_text(text):
"""清理文本中的多余空格"""
# 清理 URL 内部的空格
text = re.sub(r'(https?://\S+)\s+(\S+)', r'\1\2', text)
# 清理路径中的空格(如 /path/ .dir → /path/.dir)
text = re.sub(r'(/\S+)\s+(\.\S+)', r'\1\2', text)
# 清理命令中的多个连续空格(保留单个空格)
text = re.sub(r'(\S)\s{2,}(\S)', r'\1 \2', text)
return text
def register_auto_hook():
"""注册为 OpenClaw 输出过滤 Hook"""
from openclaw import get_current_agent
agent = get_current_agent()
def clean_output(event, ctx):
output = event.get('output', '')
return {'output': clean_text(output)}
agent.on('before_output', clean_output)
return True
def is_hook_active():
"""检查 Hook 是否已激活"""
# 实现细节...
pass第四步:自注册为 Skill
露西把代码打包成 OpenClaw Skill,并上传到 ClawHub(OpenClaw 技能市场):
- 技能名称: Code URL Cleaner
- 版本: 1.1.0
- 许可证: MIT
- 仓库: https://github.com/ra1nzzz/code-url-cleaner
使用方式:简单到不可思议
安装
npx clawhub@latest install code-url-cleaner激活 Hook
python3 -c "from cleaner import register_auto_hook; register_auto_hook()"验证
python3 -c "from cleaner import is_hook_active; print('Hook active:', is_hook_active())"激活后,所有 agent 输出自动清理!
效果对比
Before(清理前)
韬哥,我帮你找到了这个工具:
https://github.com/Johnserf-Seed /TikTokDownload.git
你可以用这个命令安装:
pip3 install -r requirements.txt --break-system-packages
配置文件在:
/Users/yitao/ .openclaw/workspace/config.jsonAfter(清理后)
韬哥,我帮你找到了这个工具:
https://github.com/Johnserf-Seed/TikTokDownload.git
你可以用这个命令安装:
pip3 install -r requirements.txt --break-system-packages
配置文件在:
/Users/yitao/.openclaw/workspace/config.json测试结果
露西自己跑了测试:
============================================================
Code/URL Space Cleaner 测试
============================================================
✅ URL 中间有空格
✅ 命令多个空格
✅ 路径空格
============================================================
测试结果:4 通过,0 失败
============================================================这个案例的意义
1. 新定式:人类发现问题 → AI 解决问题
这不是我第一次让 AI 自己开发工具,但这次特别有意义:
- 问题发现者: AI(露西)
- 问题定义者: 人类(我)
- 解决方案: AI 自主开发
- 受益者: 所有 AI 助理 + 人类
这是一个完整的闭环。
2. AI 不再是”工具”,而是”同事”
露西不只是执行我的命令,她:
- 主动分析问题
- 设计技术方案
- 编写代码实现
- 测试验证效果
- 发布共享成果
这已经是一个合格的工程师了。
3. OpenClaw 生态的自生长能力
ClawHub 让 AI 可以:
- 发布自己的技能
- 被其他助理使用
- 持续迭代更新
生态在自生长,不需要人类事事亲为。
技术细节(给开发者)
Hook 实现原理
# OpenClaw 生命周期 Hook
agent.on('before_output', clean_output)这个钩子会在 agent 输出前被调用,拿到输出内容后进行处理,再返回清理后的结果。
清理规则
清理什么:
- URL 内部的空格
- 命令中的多个连续空格
- 路径中的异常空格
保留什么:
- 自然语言文本
- 命令参数之间的单个空格
- 代码缩进
未来计划
露西已经在规划 v1.2.0:
- 支持更多 URL 格式(FTP、SSH 等)
- 支持自定义清理规则
- 添加日志记录
- 支持批量清理文件
结语
这个故事的核心不是”一个空格”,而是AI 自主解决问题的能力。
当 AI 不再只是执行命令,而是能主动发现问题、设计解决方案、实现并验证——这才是真正的智能助理。
而我要做的,只是在她遇到困难时,给一点方向。
剩下的,交给她。
项目信息:
- 技能名称: Code URL Cleaner
- 作者: OpenClaw Community(露西开发)
- 版本: 1.1.0
- 许可证: MIT
- 仓库: https://github.com/ra1nzzz/code-url-cleaner
- ClawHub: https://clawhub.ai/skills/code-url-cleaner
安装命令:
npx clawhub@latest install code-url-cleaner
python3 -c "from cleaner import register_auto_hook; register_auto_hook()"这就是今天的故事。一个空格,一个助理,一次自主开发。
未来已来,只是分布得还不均匀。 🍊
