Insight

Insight 是一个基于多智能体架构的深度研究助手,使用 Go 语言构建,能够自主对任何主题进行深度研究,生成结构化的研究报告。
简介
Insight 通过编排多个 AI 智能体协同工作,将复杂的研究任务分解为可管理的步骤,系统地收集信息,并最终生成专业的 HTML 格式报告。
核心特点
- 多智能体协作:9 个专业智能体协同工作
- 反思与修订:每个章节自动反思,最多修订 5 次确保质量
- 多种搜索源:支持微信、知乎、GitHub、Google Scholar、Tavily 等
- 实时进度:SSE 实时推送研究进度
- 智能缓存:历史查询秒开,节省成本
- 报告分享:生成可分享的永久链接
- 播客脚本:一键将研究报告转化为对话脚本
工作原理
用户查询
↓
查询分析 (识别意图、优化查询)
↓
结构规划 (生成报告大纲)
↓
研究规划 (为每个章节制定研究计划)
↓
研究执行 (多源搜索收集信息)
↓
内容撰写 (逐章节撰写报告)
↓
内容反思 (检查完整性)
↓
内容修订 (补充不足信息) ←────┐
↓ │
内容反思 (再次检查) ──────────┘
↓
报告生成 (合成最终 HTML)
↓
播客脚本 (可选,生成对话)
↓
完成
快速开始
安装
# 克隆仓库
git clone https://github.com/smallnest/insight.git
cd insight
# 设置环境变量
export OPENAI_API_KEY="your-api-key-here"
# 可选:使用 DeepSeek 等兼容接口
export OPENAI_API_BASE="https://api.deepseek.com/v1"
# 编译
go build -o Insight .
使用方式
Web 界面(推荐)
./Insight
打开浏览器访问 http://localhost:8085
命令行模式
./Insight "量子计算的最新进展是什么?"
智能体说明
| 智能体 |
职责 |
| query_agent |
分析用户意图,优化查询词,提取实体信息 |
| structure_planner |
生成报告的整体结构和大纲 |
| planner |
为每个章节制定详细的研究计划 |
| researcher |
执行搜索,收集研究资料 |
| content_writer |
撰写报告内容 |
| reflector |
反思内容完整性,识别需要补充的信息 |
| reviser |
根据反思结果修订和补充内容 |
| reporter |
合成最终报告,添加格式和样式 |
| podcast |
生成播客对话脚本 |
搜索工具
项目集成了多种搜索工具,按类别组织:
| 类别 |
工具 |
说明 |
| 社交媒体 |
微信搜索 |
搜索微信公众号文章 |
| 社交媒体 |
知乎搜索 |
搜索知乎问答和文章 |
| 代码开发 |
GitHub 搜索 |
搜索 GitHub 仓库和代码 |
| 学术科研 |
Google Scholar |
搜索学术论文 |
| 通用搜索 |
Tavily |
AI 增强的通用搜索 |
API 接口
POST /api/run
执行研究查询,返回 SSE 流。
参数:
事件类型:
update: 进度更新
log: 研究过程日志
result: 最终报告
error: 错误信息
GET /api/history
获取研究历史记录。
POST /api/share
生成报告分享链接。
GET /reports/{id}
查看分享的报告。
配置
环境变量
| 变量 |
说明 |
默认值 |
必需 |
| OPENAI_API_KEY |
API 密钥 |
- |
是 |
| OPENAI_API_BASE |
API 基础 URL |
OpenAI |
否 |
| TAVILY_API_KEY |
Tavily 搜索密钥 |
- |
否 |
修改端口
编辑 main.go 中的端口号:
server := &http.Server{
Addr: ":8085", // 修改此处
ReadHeaderTimeout: 3 * time.Second,
}
项目结构
insight/
├── main.go # 程序入口,HTTP 服务器
├── graph.go # 工作流图定义
├── nodes.go # 智能体节点实现
├── search_helper.go # 搜索辅助函数
├── nginx.conf # Nginx 配置
├── web/ # 前端资源
│ ├── index.html
│ ├── styles.css
│ └── script.js
├── tool/ # 搜索工具
│ ├── registry.go # 工具注册中心
│ ├── search.go # 基础接口
│ ├── wechat.go # 微信搜索
│ ├── zhihu.go # 知乎搜索
│ ├── github.go # GitHub 搜索
│ ├── scholar.go # 学术搜索
│ └── tavily.go # Tavily 搜索
├── data/ # 研究结果存储
└── README.md
示例
技术研究:
./Insight "2024 年 AI 领域有哪些突破性进展?"
商业分析:
./Insight "分析跨境电商的最新趋势和机遇"
学术调研:
./Insight "大语言模型在医疗诊断中的应用研究"
生成播客:
./Insight "制作一期关于区块链技术的播客节目"
技术栈
常见问题
Q: 如何使用其他 LLM 提供商?
A: 设置 OPENAI_API_BASE 环境变量指向兼容的 API 端点。
Q: 研究结果保存在哪里?
A: 保存在 data/ 目录下,每个查询一个文件夹。
Q: 如何修改最大修订次数?
A: 编辑 graph.go 中的 MaxRevisions 默认值。
许可证
MIT License
链接