项目开发指南
PRD拆解结构
PRD = 组件 + 工作流 + 数据结构
- 组件 (Components) - 实现具体业务功能
- 工作流 (Workflow) - 编排组件执行顺序和流程逻辑
- 数据结构 (Data Structures) - 定义状态格式和数据传递规范
实现原则
优先复用,其次修改,最后完全新增
- 优先复用 - 已有组件完全符合 → 直接复用 (import)
- 其次修改 - 已有组件部分符合 → Copy并修改
- 最后完全新增 - 没有合适组件 → 从Base组件新建文件
重要提醒: 判断组件是否符合需求,需要查看具体代码实现,而不仅仅是组件名称
开发约束
- 面向需求:一切以PRD需求为准,已有的组件和工作流仅供参考
组件架构设计原则
Agent vs Tool/Function 选择标准
Agent组件特征:
- 任务类型: 不确定性任务
- 核心能力: LLM智能能力 (内置多模态理解,无需额外工具支持)
- 处理内容: 推理、多模态理解、语义分析、语义对比、内容生成、模式识别、创意分析
- 依赖关系: 依赖LLM模型
注:Agent 自身有多模态的能力,无需额外的tool支持
Tool/Function组件特征:
- 任务类型: 确定性任务
- 核心能力: 数据处理
- 处理内容: 数值计算、数据转换、格式化、排序、统计、API调用、文件操作等代码能简单实现的任务
- 依赖关系: 无LLM依赖
Tool vs Function 选择标准
唯一区别:是否可以被Agent调用
Tool组件:
- Agent调用: ✅ 可以被Agent调用
- 技术实现:
@tool装饰器或继承BaseTool
Function组件:
- Agent调用: ❌ 不能被Agent调用
- 技术实现: 普通函数或继承
BaseFunction
注:除了Agent调用能力外,Tool和Function在功能上没有本质区别
开发建议
- 需要LLM能力 → Agent
- 需要Agent调用 → Tool
- 其他情况 → Function
架构原则: 非必要情况下,组件以Agent为主
现有组件清单
Agent组件 (15个)
agents/base.py - BaseComponent/BaseAgent/BaseLLMAgent/BaseReactAgent/BaseGraphAgent
- 功能: Agent基础抽象类,提供四种Agent实现模式
- 核心类:
- BaseComponent: 最基础的组件抽象,定义初始化和状态管理
- BaseAgent: Agent通用接口,支持工具绑定和模型切换
- BaseLLMAgent: 基于LLM的单轮对话Agent,适用于简单任务
- BaseReactAgent: 基于LangGraph的ReAct模式Agent,支持工具调用和推理
- BaseGraphAgent: 基于StateGraph的复杂工作流Agent,支持多节点编排
agents/comment_analysis_agent.py - CommentAnalysisAgent
- 功能: 从评论中提取帖子解构维度(两步法:评论过滤 → 维度提取)
- 核心流程:
- 第1步: 过滤评论,只保留描述物理特征的相关评论
- 第2步: 从相关评论中提取解构维度(处理状态、色彩特征、材质特征等)
- 输出: deconstruction_dimensions(解构维度列表)、filtered_comments(过滤后的评论)
agents/content_filter_agent.py - ContentFilterAgent
- 功能: 从bodytext中识别并移除与帖子主内容不相关的话题标签
- 判断方法: 双重验证(显性匹配检查 + 主题相关性检查)
- 输出: filtered_body(过滤后的bodytext)、removed_hashtags(移除的标签)、kept_hashtags(保留的标签)
agents/content_weight_agent.py - ContentWeightAgent
- 功能: 判断帖子中图片和文字的权重分配
- 评分维度: 信息量维度(0-10分)、独立理解性(0-10分)、核心价值承载(0-10分)
- 输出: image_weight(图片权重)、text_weight(文字权重)、primary_source(主要信息源:image/text/both)
agents/inspiration_points_agent.py - InspirationPointsAgent
- 功能: 从创作者视角提取触发创作的刺激源(7步流程)
- 核心流程:
- Step1: 历史对比分析(三维度:共性内容、共性差异、全新内容)
- Step2: 识别候选灵感点(按三种来源分类)
- Step3: 逆向推导验证
- Step4: 去重检查
- Step5: 三维度评分(人设契合度、触发可能性、内容解释力)
- Step6: 排序筛选
- Step7: 组装最终输出
- 输出: 分类的灵感点字典(全新内容、共性差异、共性内容)+ 元数据
agents/key_points_agent.py - KeyPointsAgent
- 功能: 从消费者视角提取核心吸引点(5步流程)
- 维度体系: 形式(风格、关系)、实质(元素、分类)
- 核心流程:
- Step1: 识别候选关键点
- Step2: 第一轮去重(与灵感点、目的点去重)
- Step3: 第二轮去重(关键点之间去重)
- Step4: 构建层级关系(树形结构)
- Step5: 组装最终输出
- 输出: 具有层级关系的关键点树形结构
agents/knowledge_requirement_agent.py - KnowledgeRequirementAgent
- 功能: 分析帖子需要的知识补充需求
- 输出: 知识需求列表(每个需求包含类别、描述、重要性等)
agents/post_summary_deconstruction_agent.py - PostSummaryDeconstructionAgent
agents/post_understanding_agent.py - PostUnderstandingAgent
agents/purpose_point_agent.py - PurposePointAgent
- 功能: 从创作者视角提取创作目的
- 输出: 创作目的点列表(包含维度、目的点、描述等)
agents/recursive_image_deconstruction_agent.py - RecursiveImageDeconstructionAgent
- 功能: 递归解构图像(多层级深度分析)
- 输出: 图像的递归解构结果
agents/recursive_text_deconstruction_agent.py - RecursiveTextDeconstructionAgent
- 功能: 递归解构文本(多层级深度分析)
- 输出: 文本的递归解构结果
agents/script_section_division_agent.py - ScriptSectionDivisionAgent
- 功能: 脚本段落划分 - 分析已有帖子的分段结构,理解创作者是如何组织内容的
- 核心流程: 根据图文权重策略识别创作者的分段逻辑
- 输出: 段落列表(树状结构)、内容品类
agents/script_element_extraction_agent.py - ScriptElementExtractionAgent
- 功能: 脚本元素提取 - 从已有帖子内容中提取核心元素(实质性+概念性)
- 核心流程(4步):
- Step1: 候选元素识别(实质性元素+概念性元素)
- Step2: 双维度评分(主题支撑性+多段落共性,分视角分析)
- Step3: 严格筛选(阈值6.0)
- Step4: 去重与整合(生成树状结构)
- 输出: 元素列表(树状结构)
agents/topic_selection_understanding_agent.py - TopicSelectionUnderstandingAgent
Tool组件 (4个)
tools/base.py - BaseTool
- 功能: Tool基础抽象类
- 特性: 可被Agent调用,使用@tool装饰器或继承BaseTool
tools/knowledge_retrieval_tools.py - 知识检索工具集
- 功能: 根据Query词查询知识库
- 核心工具: knowledge_search(知识搜索)
tools/nanobanana_tools.py - NanoBanana图像生成与编辑工具
- 功能: 图像生成、图像编辑、图片融合、图片元素提取
- 核心工具: generate_image、edit_image、merge_images、extract_elements
tools/segment_tools.py - 图像分割工具
- 功能: 图像分割与目标检测
- 核心工具: segment_image(图像分割)
Function组件 (3个)
functions/base.py - BaseFunction
- 功能: Function基础抽象类
- 特性: 不能被Agent调用,适用于纯函数式数据处理
functions/json_utils.py - JSON处理函数集
- 功能: JSON格式化、解析、验证
- 核心函数: format_json、parse_json、validate_json
functions/result_aggregation_function.py - ResultAggregationFunction
- 功能: 聚合多个组件的处理结果,生成最终输出
- 核心方法: aggregate(结果聚合)
公共组件 (Utils)
utils/json_extractor.py - JSONExtractor
- 功能: JSON提取和解析工具类
- 核心方法:
- extract_json_from_response: 从LLM响应中提取JSON内容(支持markdown代码块)
- safe_parse_json: 安全解析JSON,失败时返回默认值
- extract_and_parse: 一步完成提取和解析
utils/logger.py - DeconstructionLogger
- 功能: 解构系统专用日志器(单例模式)
- 核心方法:
- get_logger: 获取指定名称的子日志器
- log_agent_start: 记录Agent开始执行
- log_agent_finish: 记录Agent完成执行
- log_tool_call: 记录工具调用
- log_validation_result: 记录验证结果
- log_error_with_context: 记录带上下文的错误
- 特性: 文件日志+控制台日志,自动创建日志目录
utils/llm_invoker.py - LLMInvoker
- 功能: LLM调用封装工具类
- 核心方法:
- safe_invoke: 安全的LLM调用,支持自动初始化、JSON解析、降级处理
utils/utils.py - 通用工具函数集
- 功能: 提供常用工具函数
- 核心方法:
- remove_duplicates: 去重并保持元素顺序
- oss_resize_image: OSS图片URL尺寸调整
现有工作流
WhatDeconstructionWorkflow
- 数据结构: WhatDeconstructionState
- 功能: What业务递归解构工作流
- 核心流程:
- 内容过滤(ContentFilterAgent)- 过滤bodytext中的无关标签
- 内容权重判断(ContentWeightAgent)- 判断图文权重
- 评论分析(CommentAnalysisAgent)- 提取解构维度
- 灵感点提取(InspirationPointsAgent)- 创作者视角的触发源
- 目的点提取(PurposePointAgent)- 创作者视角的创作目的
- 关键点提取(KeyPointsAgent)- 消费者视角的吸引点
- 选题理解(TopicSelectionUnderstandingAgent)- 选题分析
- 知识需求分析(KnowledgeRequirementAgent)- 知识补充需求
- 结果汇总(ResultAggregationFunction)- 聚合所有结果
- 依赖组件:
- Agent: ContentFilterAgent、ContentWeightAgent、CommentAnalysisAgent、InspirationPointsAgent、PurposePointAgent、KeyPointsAgent、TopicSelectionUnderstandingAgent、KnowledgeRequirementAgent
- Function: ResultAggregationFunction