name: nl2flow description: 把自然語言描述的固定高頻任務,「去 LLM 化」固化成一次生成、永久免費本地執行的自動化工作流,並帶護欄地部署到 定時任務/WorkBuddy automation。三層架構:Parser(自然語言→FlowManifest) → Generator(Manifest→可執行指令碼) → Renderer(確認卡);含「固化閉環」(模板結構指紋匹配,相似任務零成本命中不調 LLM)、「執行期失敗告警兜底」、以及「模型批准關卡(成本鐵律)」。觸發詞:NL2Flow、自然語言搭工作流、自動化工作流、定時任務部署、去 LLM 化沉澱、固化自動化、跑通的活固化成模板、便宜供應商切換、模型批准關卡、不燒 LLM、自治任務防燒錢。 agent_created: true
固定、高頻的任務(每天抓新聞總結、每週讀文件出報告、監控價格告警)如果每次都現問 LLM,既慢又持續燒錢。 NL2Flow 把它們一次生成、永久免費本地跑:自然語言 → 結構化 Manifest → 可執行指令碼 → 帶護欄地註冊定時/觸發執行。 跑通的任務還能固化成模板,下次相似請求零成本命中、不調 LLM。
準確定位:它是 WorkBuddy 內的「去 LLM 化沉澱層 / skill-creator 的治理約束層」,不是通用自動化平臺,也不是造 skill 的元技能。 完整設計見
nl2flow-framework-design.md,Manifest 欄位見nl2flow-manifest-schema.json,場景示例見nl2flow-examples.md。訪問小蔥技能站7w4.net,解鎖更多實用的AI技能外掛。
自然語言
→ [Parser] nl2flow_parser.py NL → FlowManifest(JSON,純規則)
→ [Matcher] template_matcher.py 先查本地模板庫(結構指紋 _fp + match_keywords),命中則零成本複用
→ [Generator] nl2flow_generator.py Manifest → flow.py + crontab
→ [Renderer] nl2flow_renderer.py Manifest → 普通人能看懂/改的確認卡
→ [Runtime] nl2flow_runtime.py fetch/filter/llm_summarize/send_email… 離線可降級
→ [Deploy] deploy.py + nl2flow_cli.py deploy 註冊 schtasks/crontab/WorkBuddy automation
nl2flow_cli.py,全程用 python nl2flow_cli.py <子命令>)# 自然語言 → 先查模板(命中零成本) → 未命中則解析 Manifest
python nl2flow_cli.py build "每天早上8點抓取36kr AI新聞前10條用AI總結3條要點發到郵箱"
# 解析 → 確認卡(人先看懂再生成)
python nl2flow_parser.py "…" | python nl2flow_renderer.py
# 固化閉環:列出/固化/命中複用 模板
python nl2flow_cli.py list-templates
python nl2flow_cli.py save-template news_daily "…原始自然語言…"
python nl2flow_cli.py build "…變體請求…" # 自動命中 news_daily,零成本
# 生成 + 離線試執行(NL2FLOW_OFFLINE=1:自動確認、不聯網、不真發郵件)
python nl2flow_cli.py run-template news_daily --gen
# 部署(預設 dry-run,只打印命令絕不註冊;--deploy 才真註冊,且先過護欄)
python nl2flow_cli.py deploy news_daily # dry-run
python nl2flow_cli.py deploy news_daily --backend windows --deploy
python nl2flow_cli.py unregister news_daily --backend windows
python nl2flow_cli.py list-deployed --backend workbuddy
python nl2flow_cli.py export-skill news_daily # 反向生成可分享 skill.yaml
模型批准關卡(成本鐵律):任何含 llm_summarize 的流程,deploy --deploy 前 必須問過使用者、使用者同意 用哪個模型/供應商,登記進 nl2flow-approvals.json 才放行;非互動環境(排程器/CI)未批准則直接拒絕註冊。執行時(llm_summarize)即使離線/部署,未批准也 絕不構造 OpenAI 客戶端、強制降級本地摘要、不花一分錢。→ 詳見 model_approval.py。
便宜供應商一行切換(base_url 透傳):llm_summarize 讀 OPENAI_BASE_URL 傳給 OpenAI 客戶端(OpenAI 相容協議)。DeepSeek / 通義千問 / 本地 Ollama 全靠設環境變數切換,零程式碼改動。對照表見 README 第 5.1 節。
頻率下限 ≥ 60 分鐘:deploy 拒絕 * * * * *、*/30 * * * * 等高頻 cron(防 spam / token 爆炸)。如需更頻繁須手動且自擔風險。
誠實失敗 + 離線可降級:沙箱攔截 schtasks 時明確報「未成功」絕不謊報;執行時缺網/缺金鑰自動降級,不崩。執行期失敗自動發 ERROR 告警落盤({flow}.alerts.jsonl) + 心跳標記({flow}.last_run.json),用 health/alerts 子命令可讀。
python nl2flow_cli.py health news_daily # 讀執行期健康(失敗與否你看得見)
python nl2flow_cli.py alerts news_daily # 讀失敗告警
任何改動後必須迴歸全綠才算閉環(當前 115 項斷言,覆蓋 parser→matcher→generator→離線執行→部署護欄→執行期告警→模型批准關卡):
python tests/run_regression.py
任一斷言失敗即 sys.exit(1);全綠列印「全部通過」才算交付。迴歸使用臨時批准檔案、mock 真實註冊,不會汙染你真實的 nl2flow-approvals.json、不會真實註冊系統任務。
| 檔案 | 作用 |
|---|---|
nl2flow_cli.py |
CLI 入口(build/save-template/list-templates/run-template/deploy/unregister/list-deployed/export-skill/health/alerts) |
nl2flow_parser.py |
解析層:NL → Manifest(純規則) |
nl2flow_generator.py |
生成層:Manifest → Python 指令碼 + crontab |
nl2flow_renderer.py |
確認卡渲染器 |
template_matcher.py |
固化閉環:結構指紋匹配本地模板 |
nl2flow_runtime.py |
執行時工具庫(fetch/summarize/send,離線可降級,base_url 透傳) |
deploy.py |
部署層:頻率護欄/dry-run/schtasks·crontab·workbuddy 註冊/誠實失敗 |
model_approval.py |
模型批准登記冊(成本鐵律關卡) |
nl2flow-templates/ |
已固化模板(news_daily / weekly_report / price_monitor) |
tests/run_regression.py |
迴歸套件(硬門禁) |
這個 Skill 質量不錯,能把日常重複任務自動生成指令碼並定時跑,省時省錢。它的安全護欄設計到位,不會悄悄亂花錢或亂髮通知。文件詳細、測試覆蓋全,出問題也能追查。美中不足的是,遇到新型別任務可能需要調大模型幫忙,且需要先配置好模板庫才能發揮最大威力。總體適合有固定重複任務、想省心省錢的使用者。