项目地址
https://github.com/BlendTreeD/PlayBook
类别
Python
项目标题
把 AI 客服的对话流程写成可执行的 YAML"剧本",引擎按剧本确定性推进,LLM 只管意图理解。 meta coding替代vibe coding(核心编码)概念:不是一行代码不写,而是只处理核心代码。
项目描述
这是让不懂代码的vibe coder 十分钟开始学会看懂项目核心代码,学会编写核心代码
我把它称之为meta coding,意为只写核心代码而不是纯氛围感编程,代码对于0代码基础的小白也不再是黑盒
亮点
项目亮点:
- 概念有趣:从 vibecoding 到 metacoding——用结构化 YAML 替代自然语言传递流程需求,产品写剧本、开发写 Action、LLM 管意图,三方各司其职
- 入门友好:零依赖、零 API Key,一条命令
python examples/quickstart_mock.py 就能看到引擎完整执行轨迹(追问、校验拦截、条件分支逐行打印)
- 文档齐全:中英文双语 README,源码全中文注释,自带 AI 客服示例剧本(5 个流程,覆盖全部框架能力)
- 安全设计:条件表达式走 AST 白名单求值(替代裸 eval),禁 import/私有属性反射
- 贴心彩蛋:仓库自带给编码 Agent 安装的 SKILL,装上后 AI 会按框架规范帮你写剧本
适合人群:
-不想被别人嘲讽不懂代码的vibe coder
- 正在做 AI 客服 / 对话机器人、被 prompt 失控折磨过的开发者
- 对"低代码编排 LLM 对话流程"感兴趣的产品、运营
- 想给自己项目加确定性流程控制的 LLM 应用开发者
示例代码
flows:
logistics_tracking:
name: 物流查询
steps:
- id: start
type: start
next: ask_order
- id: ask_order
type: collect
slot_name: order_number
response:
mode: static
text: "请提供订单号(至少 5 位字符)。"
validation:
condition: "len(str(slots.get('order_number', ''))) >= 5"
failure_response:
mode: static
text: "订单号格式好像不对,能再说一次吗?"
next: query
- id: query
type: action
action: action_query_logistics
next:
- if: "slots.get('logistics_status') == 'delivered'"
then: reply_delivered
- else: reply_in_transit
- id: end
type: end
next: []
截图或演示视频
相关文章(项目介绍与设计思路):
项目地址
https://github.com/BlendTreeD/PlayBook
类别
Python
项目标题
把 AI 客服的对话流程写成可执行的 YAML"剧本",引擎按剧本确定性推进,LLM 只管意图理解。 meta coding替代vibe coding(核心编码)概念:不是一行代码不写,而是只处理核心代码。
项目描述
这是让不懂代码的vibe coder 十分钟开始学会看懂项目核心代码,学会编写核心代码
我把它称之为meta coding,意为只写核心代码而不是纯氛围感编程,代码对于0代码基础的小白也不再是黑盒
亮点
项目亮点:
python examples/quickstart_mock.py就能看到引擎完整执行轨迹(追问、校验拦截、条件分支逐行打印)适合人群:
-不想被别人嘲讽不懂代码的vibe coder
示例代码
flows: logistics_tracking: name: 物流查询 steps: - id: start type: start next: ask_order - id: ask_order type: collect slot_name: order_number response: mode: static text: "请提供订单号(至少 5 位字符)。" validation: condition: "len(str(slots.get('order_number', ''))) >= 5" failure_response: mode: static text: "订单号格式好像不对,能再说一次吗?" next: query - id: query type: action action: action_query_logistics next: - if: "slots.get('logistics_status') == 'delivered'" then: reply_delivered - else: reply_in_transit - id: end type: end next: []截图或演示视频
相关文章(项目介绍与设计思路):
→ https://blog.csdn.net/qq_48860282/article/details/163801030