关于

用完龙虾之后感觉龙虾的很多东西都很冗余,用起来也不顺手。在没有代理的情况下使用openclaw非常坐牢。

然后就有了这个项目 https://github.com/54huarui/huarui-cli

主要就是放在vps上当个智能体聊聊天,顺便干点简单的运维工作

huarui-cli

一个最小可运行的 Python CLI:

  • 兼容 OpenAI SDK 的 base_url
  • 本地 skills/ 自动扫描
  • 先让模型挑选 skill,再把 skill prompt 注入主 agent
  • 主 agent 可以真正执行 shell 命令

目录

mini_shell_skills_cli/
├── app.py
├── requirements.txt
├── .env.example
└── skills/
    └── shell/
        ├── skill.json
        └── prompt.md

安装

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env

你也可以直接导出环境变量:

export OPENAI_API_KEY="sk-xxxxxxxx"
export OPENAI_BASE_URL="https://us.novaiapi.com/v1"
export AI_MODEL="gemini-3-pro-preview"

运行

交互模式:

python app.py

单次执行:

python app.py "帮我查看当前目录里最大的 5 个文件"

指定工作目录:

python app.py "列出最近 20 行 nginx error log" --workspace /var/log

skill 格式

每个 skill 是一个目录,至少包含两个文件:

skill.json

{
  "name": "shell",
  "description": "linux shell tasks, file inspection, logs, process checks, package checks, and common vps ops"
}

prompt.md

这里写该 skill 的附加系统提示,比如:

  • 遇到日志问题优先用 tail, grep, journalctl
  • 遇到磁盘问题优先用 df -h, du -sh
  • 命令要非交互

工作原理

  1. CLI 启动后扫描 skills/
  2. 先调用一次模型做 skill routing
  3. 再把命中的 skill prompt 注入 agent
  4. agent 必须输出 JSON:
    • {"action":"shell","command":"...","reason":"..."}
    • {"action":"final","content":"..."}
  5. Python 主程序收到 shell 就真的执行命令
  6. shell 输出再喂回模型,直到得到最终答案

重要提醒

这是真执行 shell,所以默认风险很高。最少建议:

  • 用普通用户运行,不要直接 root 常驻
  • 配合容器、chroot、受限 sudo、AppArmor 或 systemd sandbox
  • 生产环境务必加 allowlist / denylist
  • 当前这个最小版没有做高强度安全隔离,它的目标只是“先跑起来”

TODO

  1. 命令白名单 / 黑名单
  2. 每个 skill 自己的工具权限
  3. shell 执行审计日志
  4. workspace 隔离与超时/资源限制