openjiuwen_deepsearch 目录结构说明
本文档基于当前 deepsearch/openjiuwen_deepsearch 的最新代码,说明目录结构与主要模块职责。
目录结构概览
openjiuwen_deepsearch/
├── algorithm/ # 核心算法模块
│ ├── prompts/ # 提示词模板
│ ├── query_understanding/ # 查询理解(router/outliner/planner/interpreter)
│ ├── report/ # 报告生成
│ ├── report_template/ # 报告模板解析与生成
│ ├── research_collector/ # 信息收集与评估
│ ├── source_trace/ # 溯源与校验
│ ├── source_tracer_infer/ # 溯源推理
│ └── user_feedback_processor/ # 报告生成后的用户反馈局部优化
├── framework/ # 框架层实现
│ └── openjiuwen/
│ ├── agent/ # 工作流与节点
│ ├── core/ # WorkflowAgent与控制器
│ ├── tools/ # 搜索工具封装
│ └── llm/ # LLM模型工厂
├── config/ # 配置管理
├── common/ # 公共异常与状态码
├── utils/ # 工具函数
└── llm/ # LLM统一封装
目录详细说明
algorithm/ - 核心算法模块
功能:研究工作流中各阶段的核心算法实现。
主要子目录:
- prompts/ - 提示词模板(
.md)synonym_rewrite_expand.md- 扩写提示词synonym_rewrite_polish.md- 润色提示词synonym_rewrite_shorten.md- 缩写提示词supplementary_search_task.md- 补充检索任务生成提示词supplementary_search_rewrite_selected_only.md- 仅改写选区的补充检索提示词supplementary_search_rewrite_selected_and_related.md- 整章联动改写的补充检索提示词new_task_assessment.md- 新增任务资料充分性评估提示词new_task_rewrite_section.md- 新增任务章节改写提示词
- query_understanding/ - 查询理解
interpreter.py- 生成澄清问题outliner.py- 生成大纲planner.py- 生成章节计划router.py- 判断是否进入深度搜索
- report/ - 报告生成
report.py- 报告生成主逻辑report_utils.py- 报告工具函数config.py- 报告样式与格式
- report_template/ - 模板生成与解析
template_generator.pytemplate_utils.py
- research_collector/ - 信息收集与评估
collector_function.pydoc_evaluation.pytool_log.py
- source_trace/ - 溯源模块
source_tracer.pychecker.pyadd_source.pycitation_checker_research.pycitation_verify_research.pycontent_analyzer.pysource_matcher.pysource_tracer_preprocessors.py
- source_tracer_infer/ - 溯源推理模块
generate_html.pyhtml_template.pyinfer.pyinfer_call_model.pyinfer_extract_info.pynumber_node.pysupplement_graph.py
- user_feedback_processor/ - 用户反馈局部优化模块
action_definitions.py- 前端 action 与统一动作定义映射common.py- 公共工具函数(会话/模型上下文获取、LLM 调用入口)history.py- 改写历史与大纲更新管理new_task_processor.py- 新增任务动作处理逻辑report_edit_utils.py- citation / inference 标记剥离与偏移更新工具section_locator.py- 根据选区定位最小 Markdown 标题区块supplementary_search.py- 补充检索与局部/整章改写执行逻辑synonym_rewrite.py- 扩写、润色、缩写执行逻辑user_feedback_processor.py- 反馈解析、校验、执行与结果发送
framework/ - 框架层实现
功能:基于 openjiuwen 的工作流与节点编排。
主要子目录:
-
openjiuwen/agent/ - 工作流与节点
workflow.py- Agent与工作流入口main_graph_nodes.py- 主图节点(Start/Entry/Outline/Reporter/SourceTracer等)editor_team_manager_node.py- 编辑团队子图管理reasoning_writing_graph/- 编辑团队子图节点与状态editor_team_nodes.pydependency_reasoning_team_nodes.pydependency_writing_team_nodes.pysection_context.py
collector_graph/- 信息收集子图collector_execution_service.py- 复用型信息采集执行服务graph_builder.pyinfo_collector.pycollector_context.py
agent_factory.py- Agent工厂base_node.py- 节点基类search_context.py- 搜索上下文数据模型
-
openjiuwen/core/workflow_agent/ - 工作流Agent与控制器
config.pyworkflow_controller.pyworkflow_agent.py
-
openjiuwen/tools/ - 搜索工具封装
web_search.pylocal_search.pysearch_api/- 联网增强引擎封装external_tool/petal/tavily/serper/xunfei/local_search_api/native_local_search_api/
-
openjiuwen/llm/ - LLM模型工厂
llm_model_factory.pyllm_adapter.py
config/ - 配置管理
主要文件:
config.py- 配置类(LLMConfig、AgentConfig、ServiceConfig等)method.py- 执行方式枚举search_mode.py- 搜索模式枚举
common/ - 公共模块
主要文件:
common_constants.py- 公共常量定义exception.py- 自定义异常类status_code.py- 状态码定义
utils/ - 工具函数
主要文件:
common_utils/- 通用工具函数llm_utils.pysecurity_utils.pystream_utils.pytext_utils.pyurl_utils.py
constants_utils/- 常量工具函数node_constants.pysession_contextvars.pysearch_engine_constants.py
debug_utils/- 调试工具函数node_debug.pyoutline_visualization.pyresult_exporter.py
log_utils/- 日志工具函数log_common.pylog_handlers.pylog_interface.pylog_manager.pylog_metrics.py
validation_utils/- 校验工具函数field_validation.pyparam_validation.py
rate_limiter_utils/- QPS 限流工具qps_limiter.py
llm/ - LLM封装
主要文件:
llm_wrapper.py- LLM调用统一封装llm_request_adapter.py- LLM 请求参数适配,包括大模型思考模式开关的厂商规则
模块关系
用户请求
↓
framework/openjiuwen/agent/workflow.py
├── 组装并校验 agent_config
├── 初始化 LLM 与搜索工具
└── Runner.run_agent_streaming(...)
↓
framework/openjiuwen/agent/main_graph_nodes.py
├── StartNode (初始化上下文与配置)
├── EntryNode → algorithm/query_understanding/router.py
├── [GenerateQuestionsNode -> FeedbackHandlerNode](HITL可选)
├── OutlineNode / DependencyOutlineNode → algorithm/query_understanding/outliner.py
├── OutlineInteractionNode / DependencyOutlineInteractionNode(大纲交互可选)
├── EditorTeamNode / DependencyReasoningTeamNode / DependencyWritingTeamNode
│ ├── ResearchPlanReasoningNode → algorithm/query_understanding/planner.py
│ ├── InfoCollectorNode → collector_graph/
│ └── SubReporterNode → algorithm/report/report.py
├── ReporterNode → algorithm/report/report.py
├── SourceTracerNode → algorithm/source_trace/
├── SourceTracerInferNode → algorithm/source_tracer_infer/
└── UserFeedbackProcessorNode → algorithm/user_feedback_processor/
快速定位指南
- 想了解工作流 →
framework/openjiuwen/agent/ - 想了解算法 →
algorithm/ - 想修改配置 →
config/config.py - 想接入联网增强引擎 →
framework/openjiuwen/tools/search_api/ - 想修改提示词 →
algorithm/prompts/ - 想了解上下文模型 →
framework/openjiuwen/agent/search_context.py
设计原则
- 分层设计:
algorithm/负责算法逻辑,framework/负责工作流编排 - 模块化:节点与算法解耦,便于维护与扩展
- 可配置:统一使用
config/管理参数 - 工具复用:
utils/提供通用能力与基础设施