
1. 这个项目解决了什么问题短剧生产里的协作与效率困局AI智能体这两年火到什么程度不夸张地说从企业知识库问答到大模型 PPT 生成几乎每个技术群里都有人在折腾。但多数方案停留在单个智能体陪聊的层面真正把智能体引入内容生产闭环、并且以仓库形式沉淀下来的项目其实少之又少。这个名为AI 智能体共建仓库的开源实践做的事情很直接把短剧生产从剧本创作、分镜规划到数据反馈的完整链路拆解成若干个可独立运行又能协同调度的 AI 智能体配合一套可视化看板把产量和效果指标实时呈现出来。短剧生产这个场景过去一年里曝光度极高伴随而来的问题也很典型剧本产出速度快但质量参差、素材管理散落各地、数据反馈严重滞后——一期剧集投放之后要等上几天甚至一周才能看到完播表现这时候想调方向已经来不及了。我自己带着团队做内容工具链很多年最大的感受是短剧生产不缺创意缺的是把创意流程化、可观测化的一套基础设施。这个开源项目本质上就在补这块短板而且是用一种任何人都能拉下来跑通、按需改造的方式去补。项目本身适合谁来参考如果你是做 AI 应用开发的工程师可以从中看到智能体如何按职责拆解、如何通过仓库管理提示词与工具配置如果你是内容团队的负责人可以理解怎么用智能体把创意工作流标准化如果你只是对可视化看板感兴趣那里面基于生产指标搭建的图表体系也可以直接抄作业。仓库里所有代码、配置、文档都是公开的拉下来就能本地部署改几个字段就能适配自己的业务。接下来我会把这套实践的完整思路、架构选择、落地细节和踩坑记录一一展开尽量把为什么这么做讲透而不是只给一堆能跑的代码。2. 整体设计思路为什么是智能体仓库看板三件套2.1 从单体脚本到多智能体协作一次架构演进的必然一开始做短剧生产工具时我见过很多团队的做法是写一个超大脚本从输入故事梗概到输出分镜表一口气全跑完。这种方式在 demo 阶段没问题但一进入真实生产就崩需求方改一个角色设定整个脚本重跑一遍某个环节比如对白生成想换个模型代码里到处是分支判断更麻烦的是不同人负责不同步骤却共享同一套脚本改完连 git 都合不拢。后来我们换成了多智能体架构核心思路是把短剧生产拆成若干个可以独立演进、独立测试的环节——lore 设定、剧本大纲、对白润色、分镜描述、角色一致性校验、合规规则检查——每个环节由一个智能体负责智能体之间通过结构化的输入输出对接而不是共享一块可变的全局状态。这个设计带来的直接收益是改一个环节不影响其他环节每个智能体可以单独评估效果也能用不同的模型或者提示词策略做 A/B 对比。那为什么还要一个仓库因为智能体的价值不在于跑一次而在于被持续复用和迭代。提示词怎么存档、工具函数怎么组织、不同版本的智能体如何回溯这都需要仓库作为唯一的可信源。尤其是团队协作场景没有仓库意味着每个人本地都有一份自己的版本最终一定会出现配置漂移。仓库在这里扮演的角色相当于把所有智能体资产做了版本化你可以随时知道当前线上跑的到底是哪一版出问题也能快速回滚。2.2 可视化看板在整条链路里的定位看板不是锦上添花的展示层而是这套智能体体系的仪表盘。没有看板之前智能体的运行效果只能靠翻日志生产效率只能靠拍脑袋。接入看板之后我们能实时看到今天一共生成了多少条剧本片段、平均每个智能体的处理耗时是多少、重试率有没有异常、不同模型的生成质量评分走势如何。这里有一个很多人容易忽略的点看板不只是给人看的更是给智能体体系做反馈调优的输入。比如某个智能体的失败率突然升高看板会触发告警再比如不同提示词版本的产出质量评分可以直接在看板上做对比。也就是说看板把生产和评估两条线串了起来让短剧生产从开环变成了闭环。仓库管的是资产和版本看板管的是运行和反馈两者互补缺一个都不完整。2.3 为什么一定要开源共建开源对于一个垂直场景的项目来说不是情怀是效率。短剧生产工具链里很多模块根本不值得从零开发但闭源项目之间很难互相复用。一个团队花了三个月调好的分镜写作提示词另一个团队又要重来一遍这纯属社会性浪费。把智能体定义、提示词模板、工具配置、看板组件全部开源意味着任何人可以在别人成果的基础上往前再走一步。共建的另一个好处是逼着你把代码写干净。代码一旦公开别人会在真实场景里帮你测出边界条件提交 issue 和 PR 的过程本身就是免费的测试和文档。我们仓库里最初只有三个智能体上线一个月后社区就贡献了角色对话风格分析、爆款开头检测等新模块这比自己闭门造车快得多。3. 仓库目录规划与智能体模块设计3.1 一份可以直接落地的仓库结构这个项目的开源性体现在它不只是一个 demo而是可以直接当作新项目的脚手架来用。仓库根目录下的组织结构经过多次调整最终固定为下面这套它在职责分离和上手成本之间找到了一个平衡点。agent-forge/ ├── agents/ # 智能体定义目录每个子目录是一个独立智能体 │ ├── lore_writer/ # 世界观/角色设定智能体 │ ├── script_outliner/ # 剧本大纲智能体 │ ├── dialogue_polisher/ # 对白润色智能体 │ ├── shot_designer/ # 分镜设计智能体 │ └── consistency_checker # 角色一致性校验智能体 ├── workflows/ # 多智能体之间的编排逻辑 │ ├── short_drama_pipeline.py # 短剧生产主流程 │ └── review_pipeline.py # 质量审查流程 ├── data/ # 样例数据与运行时数据目录 │ ├── samples/ # 剧本样例 │ ├── knowledge/ # 供智能体检索的知识片段 │ └── outputs/ # 智能体产出的结果 ├── dashboard/ # 可视化看板前端 │ ├── src/ # 前端源码 │ └── public/ # 静态资源 ├── services/ # 后端服务与 API │ ├── api_server.py # 看板数据接口 │ └── scheduler.py # 智能体任务调度 ├── tests/ # 自动化测试 ├── scripts/ # 运维与部署脚本 ├── docs/ # 项目文档 └── docker-compose.yml # 一键部署配置这套结构里有几个设计细节值得展开说说。agents 目录下每个智能体都是自包含的它内部有 prompt 模板、工具函数和默认参数外部通过统一的输入输出接口通信。这样做的目的是让智能体可以脱离主流程单独跑你在调试某个智能体时不需要启动整个系统直接调用它的入口函数就能看输出。data 目录单独拎出来是因为短剧生产链路对数据的依赖度非常高。智能体需要参考历史剧本、风格库和角色人设这些数据被拆成了 samples用于快速上手、knowledge用于检索增强、outputs用于结果沉淀。看板展示的指标和数据来源也统一从这个目录读取避免出现代码用的数据和展示用的数据不一致的问题。3.2 每个智能体内部到底是什么样的以 script_outliner剧本大纲智能体为例它的内部结构是这样的config.yaml定义智能体的模型参数、温度、最大 token 等prompt.py把用户输入和系统提示词拼接成最终的 prompttools.py包含调外部 API 的方法比如检索相似剧本片段main.py智能体的入口接收结构化输入返回结构化输出如果要给这个智能体的 prompt 模板举一个真实的例子可以看这一段简化版你是一位深耕短剧赛道的内容策划主编擅长在 300 字以内写出钩子密集、 节奏紧凑的故事大纲。请根据以下故事主题和角色设定输出大纲 故事主题{topic} 核心角色{characters} 目标受众{audience} 输出格式按 分集数、每集标题、核心冲突、反转点 四部分组织。 注意单集不可超过 80 字第一集必须有强冲突后续每集结尾必须留悬念。这里面的关键是输出格式和注意事项它们决定了智能体的产出是否稳定。很多团队在写 prompt 时只关注让它写什么忽略让它按什么格式写结果就是智能体偶尔会跑偏下游环节一解析就把程序搞崩了。所以我们从第一天起就要求所有智能体的输出必须能被程序解析也就是要么输出 JSON要么输出高度结构化的 Markdown并且用测试用例把它锁住。再往下层看agent 与 agent 之间的数据流也是仓库建设的重点。我们的做法是定义一个全局的 StoryContext 数据结构它包含剧名、世界观描述、角色列表、分集大纲等字段。每个智能体接收的是完整的 StoryContext输出的字段回写到这个 Context 里但只允许更新自己负责的那几个键。这个约定让整个链路的数据流清晰可见排查问题时可以明确知道是谁改了哪个字段。3.3 共建仓库的版本管理经验代码层面用 git 管理是常识但智能体的提示词和配置的版本管理很多人容易忽略。我们专门把 prompt 模板和代码放在同一个 repo 里原因是 prompt 的变更往往比代码变更更频繁而且直接影响产出质量。如果不做版本管理你很难回答一个经典问题上周那个生成结果特别好用的是哪版 prompt针对这个问题仓库里采用的做法是prompt 模板里加入version字段每次调整都要更新同时建议在 commit message 里注明调整前后的效果对比。效果指标看板会关联对应的 commit hash这样一来看板上的某个质量评分对应哪版代码、哪版 prompt全部可追溯。这里我强烈建议其他团队的智能体项目也采用同样的方式prompt 才是智能体项目中的一等公民不能用改一下试试的草率方式去管理。4. 从短剧生产到看板的完整落地过程4.1 智能体的运行与任务调度短剧生产主流程workflows/short_drama_pipeline.py的调度逻辑是这样的用户或系统触发一个新剧生产任务传入故事主题、目标受众和基础设定lore_writer 生成世界观与角色设定script_outliner 基于设定生成分集大纲dialogue_polisher 对大纲中的关键对白进行润色shot_designer 为分集生成分镜描述consistency_checker 对全流程产出做一致性校验发现问题则标记告警并请求重跑相关环节全部完成后产出结果写入 data/outputs 目录同时向看板写入生产指标调度器用了最简单的 DAG 驱动方式没有引入重型编排框架。因为短剧生产流程的依赖关系相对固定用轻量级的队列加状态机就能控制住。这里我特意提醒一点不要为了技术复杂度而复杂化。短剧生产不是高并发交易系统单条链路跑完几秒钟用 Celery、Airflow 这类重框架反而是负担简单到可以一眼看全的编排逻辑才是能持续维护的编排逻辑。4.2 生产数据的采集与指标定义看板不能只展示跑了多少任务那些数字没有指向性。我们结合短剧业务的特点定义了一套指标大概分三类生产类指标任务完成数、任务耗时分布p50/p95、各环节重试率质量类指标一致性校验通过率、人工抽检评分、对白可读性评分效率类指标单条剧集从启动到产出平均耗时、热门主题命中率这些指标的数据来源有两个一个是调度器在每次任务完成时写入的 JSON 日志另一个是质量审查流程产出的结构化评估结果。api_server.py 从这两个来源读取数据聚合成接口返回给前端。我建议你在落地自己的看板时不要一上来就追求大而全的指标先把三个最关键的指标做出来让看板能用起来再逐步增加。否则容易陷入指标瘫痪——满屏数字但没人看。4.3 可视化看板实现技术选型与核心图表看板前端的技术选型是 React ECharts后端是 FastAPI SQLite整体通过 docker-compose 部署。选 React 是因为社区生态成熟ECharts 是因为做图表不需要自己造轮子而且各类看板组件网上有大量现成方案可以直接改。SQLite 足以支撑个人项目和中型团队的看板数据量没必要一开始就上 PostgreSQL。看板的核心页面有三个生产监控页展示当天任务数量和耗时趋势柱状图加折线图组合质量评估页按智能体维度展示质量评分分布使用箱线图直观呈现异常剧本产出浏览页列出最近完成的剧本列表支持点击查看分集大纲详情其中质量评估页里的评分走势图是用户使用频率最高的。我把质量评分设计成实时写入的方式审查环节每评完一个样本接口就更新一次均值这样团队在调整 prompt 后几分钟内就能看到评分的变化极大缩短了提示词迭代的反馈回路。代码层面的实现api_server.py 的一个核心接口大概是这样的app.get(/api/agents/{agent_id}/scores) def get_agent_scores(agent_id: str): records query_recent_scores(agent_id, limit100) return { agent_id: agent_id, scores: [r.score for r in records], p50: percentile([r.score for r in records], 50), p95: percentile([r.score for r in records], 95), }前端拿到接口数据后渲染成 ECharts 折线图响应时间基本在 100ms 以内交互体验很流畅。4.4 端到端的部署步骤为了让读者能够真正复现这套系统我给出完整的本地部署步骤基于 Ubuntu 22.04 Docker 环境拉取仓库代码git clone https://github.com/yourname/agent-forge.git cd agent-forge配置环境变量复制.env.example为.env填入大模型 API 的 Key支持 OpenAI 兼容接口看板服务端口默认 8080。构建并启动docker-compose up --build -d这个命令会启动三个服务scheduler调度器、api_server看板后端、frontend前端静态页面服务。启动后访问http://localhost:8080即可看到看板界面。触发一条生产任务验证curl -X POST http://localhost:8080/api/tasks \ -H Content-Type: application/json \ -d {topic: 都市逆袭, audience: 18-30岁女性}任务完成后刷新看板就能看到当天的生产指标更新。整个部署流程大约十分钟内可以完成这也是项目强调低门槛复现的体现——先跑通再二次开发。5. 可视化看板的建设逻辑不只是画图表5.1 看板的业务闭环设计思路刚开始做看板时容易陷入图表设计的自嗨总想把交互做得花哨、指标堆得复杂。后来跟几位做运营的朋友聊完才想通看板的价值不在于信息全而在于能推动决策或行动。所以这个项目里的看板遵循一个原则每一个图表都必须对应一个可以采取行动的问题。任务耗时趋势上升对应的行动是排查哪个环节变慢是否需要降级模型或增加并发某个智能体重试率超过阈值对应的行动是检查它的输出是否符合下游解析格式质量评分连续下降对应的行动是回滚最近一次 prompt 变更按照这个思路看板只保留能够回答特定问题的图表宁缺毋滥。生产监控页上的三个图表、质量评估页上的两个图表都是经过筛选留下来的每个都有明确的业务指向性。5.2 看板与智能体迭代的反馈机制更有意思的是看板最终变成了一套 prompt 调优的辅助系统。过去调 prompt 靠感觉现在可以在看板上做 AB 对比把两个提示词版本分别应用到同一批剧本主题上各跑 50 条看质量评分分布和耗时差异数据会告诉你哪个版本更值得保留。这个机制在仓库中的实现路径是每个智能体的 config.yaml 中有prompt_version字段看板的评分接口按版本聚合前端用不同颜色的折线区分版本。这样一来智能体迭代变成了一个可以度量的工程过程而不是玄学。个人体会是prompt 调试最怕没有对照组有了版本对比看板所有改动回归起来非常直观。6. 常见问题与排查技巧实录6.1 高频问题速查表这个项目从上线到现在国内外开发者在 issue 区反馈了不少踩坑经历我把高频问题整理成一张速查表。问题现象可能原因解决方案智能体输出经常被下游解析报错prompt 中输出格式约束不够强硬在 prompt 中加只输出合法 JSON不要包含解释文字的硬约束并在测试中锁定看板无数据api_server 读取的 outputs 目录路径不一致检查 docker-compose 中挂载的 volume 路径是否与 api_server 配置一致分镜设计长时间无响应模型单次生成 token 超出限制减小单次输出规模或增加流式输出支持质量评分一直偏高/偏低不稳定抽检样本量太少将抽检样本量增加到至少 30 条再参与均值计算任务重试率异常升高上游输出的字段缺省导致下游异常在全局 StoryContext 中为每个字段设置默认值6.2 分享三个调试排查经验第一个经验是给智能体链路加呼吸灯。在调度器的日志里为每个环节打上明确的开始和结束标记并输出耗时与 token 消耗。很多异常其实一眼就能从耗时标记得出结论某个环节突然从 2 秒变成 20 秒基本可以断定是模型 API 侧出现波动而不是代码问题。第二个经验是善用最小复现手段。当一致性校验器报错时不要只看最终结果应该把它的输入 (StoryContext) 和输出 (校验报告) 单独提取出来做一个 10 条的迷你测试集反复试验 prompt 修改对错误率的影响。这比在完整流程里反复跑要快得多。第三个经验是统一日志格式。看板数据源是结构化日志因此所有智能体在记录日志时必须遵守同一个 JSON 格式字段名和时间戳格式不能混乱。这里没有捷径唯一的办法是在代码 review 时把关并在 CI 里加一个日志格式校验。7. 项目扩展方向与共建建议以个人经验收尾这个项目目前的定位是短剧生产的工具链但从仓库的架构来看它并不局限于短剧。任何以多角色协作 结构化产出 效果度量为特征的内容生产场景都可以迁移复用。我自己在测试中试过把它接到短视频脚本生成和企业培训剧本生成上需要改的主要是 prompt 里的角色设定和看板上的指标定义代码结构基本不用动。最后分享几个我在这个项目上沉淀下来的个人体会。第一把 prompt 当代码管理这件事越早做越好不要等到团队里出现同一个智能体跑出不同结果的混乱局面才补救。第二看板的指标定义一定要跟业务方对齐技术团队自己闭门造车定义出来的指标大概率是好看但没用。第三开源共建不是发完代码就结束要持续维护 issue 区、响应 PR、沉淀文档这个项目之所以能积累下来靠的正是持续的共建循环。如果你正在做类似的智能体项目可以直接把仓库拉下来跑一遍替换自己的业务场景再反哺回社区。踩过一次坑之后你就会明白智能体的价值不在于单个模型多强而在于你围绕它建立的基础设施有多扎实。