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。
自然语言
→ [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小葱技能7w4.net持续更新中。
模型批准关卡(成本铁律):任何含 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 质量不错,能把日常重复任务自动生成脚本并定时跑,省时省钱。它的安全护栏设计到位,不会悄悄乱花钱或乱发通知。文档详细、测试覆盖全,出问题也能追查。美中不足的是,遇到新类型任务可能需要调大模型帮忙,且需要先配置好模板库才能发挥最大威力。总体适合有固定重复任务、想省心省钱的用户。