前言¶
用 AI 做 CTF 時,常見兩種失敗:一是三秒給出答案,抄完什麼也沒學到;二是流水賬式的解題記錄,只記錄做了什麼,沒說爲什麼這麼做。DSH 的技能系統允許用戶爲智能體定義能力,但要讓技能真正起到”教學”作用,需要在設計上強制約束思考過程。ctf-solve-teach 插件通過一套結構化的流程和目錄契約,把解題過程拆解爲”七問循環”,每一步都要交代因果,最後生成可復現的 Writeup。
這是什麼¶
ctf-solve-teach 是一個 DSH 插件,維護者是 Wangxiaolu0716。它將 CTF 解題過程改造爲”教學式”流程:智能體在解題時必須邊解邊講,解釋每一步使用的套路、工具背後的知識點,最後在 solves/<題目名>/ 目錄下產出完整的 Writeup。插件同時作爲 npm 包 dsh-ctf-solve-teach 發佈。
插件的核心價值在於:把”會做這道題”變成”會做一類題”,通過強制輸出的”卡殼與彎路”和”同類題遷移”章節,讓解題記錄成爲可複用的知識資產。
核心功能¶
插件內置三條硬約束:
- 不許黑箱:任何命令落地前,必須說明現象、判斷屬於哪類套路、爲什麼選擇這個工具、期望輸出是什麼。
- 知識點講因果:不說”PNG 改寬高”,要說”IDAT 解壓字節數 = (1+寬×通道)×高,所以能反推”。
- 產物不外溢:所有中間文件都落在
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 不僅是答案,更是可複用、可遷移的學習資料。通過強制輸出的”卡殼與彎路”和”同類題遷移”章節,真正實現了從”會做一道題”到”會做一類題”的跨越。