Co-creation-projects/melxy1997-ColumnWriter/README.md
一个基于 HelloAgents 框架构建的智能专栏写作系统,采用多智能体/多设计模式,自动完成专栏的规划、撰写、评审和优化。
这个智能体模拟了一个专业的创作者团队,包括:
支持树形递归生成专栏目录,可以创作出结构严谨、内容详实的长篇技术专栏。
智能规划与分解:
多模式智能写作:
联网搜索增强:
质量闭环控制:
智能缓存与容错:
系统由以下核心模块组成:
| 模块 | 文件 | 说明 |
|---|---|---|
| Orchestrator | orchestrator.py | 主控中心。负责协调各个 Agent 的工作流程,管理状态流转,组合最终结果。 |
| Agents | agents.py | 智能体实现。包含 PlannerAgent (规划)、WriterAgent (写作)、ReviewerAgent (评审)、RevisionAgent (修改)、ReflectionWriterAgent (反思写作) 等核心类。 |
| Models | models.py | 数据建模。定义了 ContentNode (内容树)、ColumnPlan (规划)、ReviewResult (评审结果) 等数据结构。 |
| Tools | agents.py | 工具。集成了 SearchTool (Tavily/SerpApi) 和 MCPTool (GitHub),赋予 Agent 联网和代码库访问能力。 |
| Prompts | prompts.py | 提示词。包含规划、写作、评审、修改等各个环节的 Prompt Template。 |
| Config | config.py | 配置管理。处理环境变量、模型参数、评审阈值等。 |
| Utils | utils.py | 工具函数。包含 JSONExtractor (JSON 提取)、parse_react_output (ReAct 输出解析) 等公共工具。 |
系统工作流是一个多阶段、递归的过程:
规划阶段 (Planning)
PlanAndSolveAgent) 分析主题,分解任务,生成结构化的 ColumnPlan (包含标题、简介、目标读者、子话题列表)。写作阶段 (Writing - Recursive)
ReActAgent 或 ReflectionAgent) 负责生成内容。MAX_DEPTH 自动判断是否继续展开。工具调用 (Tool Use)
web_search: 搜索最新技术动态、统计数据。search_code_examples: 查找代码示例。verify_facts: 验证事实准确性。github: (可选) 搜索 GitHub 仓库,读取真实项目代码。评审与优化 (Review & Refine)
ReviewerAgent 进行多维度评分(内容质量、结构逻辑、语言表达、格式规范)。如果分数低于阈值(默认75分),RevisionAgent 根据评审意见进行修改,循环直到通过或达到最大修改次数。ReflectionAgent,Agent 生成初稿后立即自我反思 (Self-Reflection) 并自动优化,一步到位。组装与导出 (Assembly & Export)
REPORT.md),包含字数、耗时、质量评分等数据。本项目应用了多种 Agent 设计模式:
PlannerAgentWriterAgentReflectionWriterAgentReviewerAgent + RevisionAgentReviewerAgent: 对生成的内容进行多维度评审(内容质量40分、结构逻辑30分、语言表达20分、格式规范10分),输出详细的评分和修改建议。RevisionAgent: 根据评审意见进行针对性修改,保留优点、修复问题。通过 config.py 配置,支持多种 LLM 后端:
CachedExecutor 会缓存规划阶段的每个步骤结果。如果主题相同,再次运行时会直接加载缓存,节省 Token 和时间。ColumnPlan) 会持久化到本地 .cache 目录。history) 中回溯提取有效信息,防止因某次输出格式错误导致整个任务失败。ReActAgent 达到最大步数或执行失败时,会自动回退到 SimpleAgent,利用已有的历史信息 (history_summary) 尝试直接生成结果,确保流程不直接终止。pip install -r requirements.txt
复制 env.example 到 .env 并填写配置:
# LLM 配置
OPENAI_API_KEY=your_key
OPENAI_BASE_URL=...
# 搜索配置 (可选,但推荐)
TAVILY_API_KEY=tvly-...
# 或
SERPAPI_API_KEY=...
# GitHub MCP (可选)
GITHUB_PERSONAL_ACCESS_TOKEN=...
# 交互式模式
python main.py
# 命令行模式
python main.py "Python 异步编程"
运行完成后,结果将保存在 output_YYYYMMDD_HHMMSS 目录下。
- Name: Xinyu Liu
- Work: Trip.com
- Role: Web Developer
- Github: melxy1997
- EMail: melxy#foxmail.com