ctf-solve-teach:教學式 CTF 解題技能插件

前言

用 AI 做 CTF 時,常見兩種失敗:一是三秒給出答案,抄完什麼也沒學到;二是流水賬式的解題記錄,只記錄做了什麼,沒說爲什麼這麼做。DSH 的技能系統允許用戶爲智能體定義能力,但要讓技能真正起到”教學”作用,需要在設計上強制約束思考過程。ctf-solve-teach 插件通過一套結構化的流程和目錄契約,把解題過程拆解爲”七問循環”,每一步都要交代因果,最後生成可復現的 Writeup。

這是什麼

ctf-solve-teach 是一個 DSH 插件,維護者是 Wangxiaolu0716。它將 CTF 解題過程改造爲”教學式”流程:智能體在解題時必須邊解邊講,解釋每一步使用的套路、工具背後的知識點,最後在 solves/<題目名>/ 目錄下產出完整的 Writeup。插件同時作爲 npm 包 dsh-ctf-solve-teach 發佈。

插件的核心價值在於:把”會做這道題”變成”會做一類題”,通過強制輸出的”卡殼與彎路”和”同類題遷移”章節,讓解題記錄成爲可複用的知識資產。

核心功能

插件內置三條硬約束:

  1. 不許黑箱:任何命令落地前,必須說明現象、判斷屬於哪類套路、爲什麼選擇這個工具、期望輸出是什麼。
  2. 知識點講因果:不說”PNG 改寬高”,要說”IDAT 解壓字節數 = (1+寬×通道)×高,所以能反推”。
  3. 產物不外溢:所有中間文件都落在 solves/<題目名>/ 裏,工作區根目錄不許出現臨時文件。

插件通過”七問循環”流程組織解題過程,每一步都包含:現象 → 判斷 → 工具選擇 → 執行 → 結果解讀 → 知識點說明 → 下一步規劃。完成後自動生成目錄結構:

solves/<題目名>/
├── README.md              # 最終 Writeup(9 個章節)
├── 00-brief.md            # 題目情報卡
├── journal.md             # 解題日誌(每步七字段,含失敗命令)
├── flag.txt               # 一行 flag
├── artifacts/             # 原始附件只讀副本
├── work/                  # 解包產物、修復圖、爆破日誌
└── scripts/               # 一次性腳本(別人能復跑)

README.md 的 9 個章節是質量門強制項:題目情報、一句話結論、解題路徑、關鍵步驟復盤、工具與用法清單、知識點地圖、卡殼與彎路、可複用腳本、同類題遷移。其中”卡殼與彎路”和”同類題遷移”是關鍵,前者記錄失敗嘗試,後者促進知識遷移。

安裝與啓用

作爲 DSH 插件安裝(推薦):

dsh plugin add dsh-ctf-solve-teach

插件裝完後重啓 DSH,技能目錄裏會直接出現 ctf-solve-teach。插件的工作方式是:cordis.patch.yml 把插件插進 profile,插件啓動時讀取包內的 skills/ctf-solve-teach/SKILL.md,調用 ctx.skills.register() 註冊成 runtime skill,並把 references/ 與 scripts/ 作爲 resourceBase 一起交出去。

作爲獨立 skill 使用(不裝插件,任何 agent 通用):

git clone https://github.com/Wangxiaolu0716/ctf-solve-teach.git /tmp/cst
cp -r /tmp/cst/skills/ctf-solve-teach ~/.dsh/skills/

Claude Code 把目標換成 ~/.claude/skills/,其他 agent 同理。

典型用法

裝好之後直接用自然語言觸發:

幫我解一下這道雜項題,附件在 D:\ctf\chall.zip
這道流量分析題我的思路卡住了,邊解邊講
給我寫個 wp,按教學向的那種

Agent 會自動:建目錄 → 建情報卡 → 逐步解題並講解 → 收尾寫 README → 跑質量門。

也可以手動調用腳本:

# 建目錄骨架
python skills/ctf-solve-teach/scripts/new_solve.py "題目名" --src 附件或目錄 --category misc

# 交付前自檢
python skills/ctf-solve-teach/scripts/check_doc.py "solves/題目名"

new_solve.py 是冪等的,目錄已存在時只補缺失文件。

適用場景與注意

適合需要系統化訓練解題思路、希望保留可復現解題記錄的開發者和學習者。插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。

插件設計原則是”教學優先”——寧可多花時間解釋工具選型,也不要快進到答案;”可復現”——命令原樣保留,路徑相對化,腳本進 scripts/;”誠實”——做不出來就寫 PARTIAL: ...,並在”卡殼與彎路”裏說明卡在哪;”不綁平臺”——判型表和工具箱按能力組織,本地工具只是示例。

結尾

ctf-solve-teach 通過結構化的約束和目錄契約,讓 AI 解題過程從”答案導向”轉向”知識導向”,生成的 Writeup 不僅是答案,更是可複用、可遷移的學習資料。通過強制輸出的”卡殼與彎路”和”同類題遷移”章節,真正實現了從”會做一道題”到”會做一類題”的跨越。

目錄頁 | GitHub

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜