feat: 重构项目结构并添加新功能

- 新增Cloudflare AutoRAG/Vectorize集成文档
- 实现Vertex AI记忆银行功能
- 重构项目目录结构,清理无用文件
- 更新README以反映最新架构
- 添加Google ADK集成测试脚本
- 完善需求文档和设计规范
This commit is contained in:
ben
2025-08-16 10:37:11 +00:00
parent 26338d48cf
commit c4e8cfefc7
106 changed files with 12243 additions and 1839 deletions

View File

@@ -0,0 +1,184 @@
# 稷下学宫AI辩论系统 - AutoRAG集成提示词
## 🏛️ 系统概述
稷下学宫是一个基于中国传统哲学的AI辩论系统模拟古代稷下学宫的学术辩论环境。系统中有八位仙人智能体每位都有独特的投资哲学和辩论风格需要通过AutoRAG服务获取相关的历史智慧和知识支持。
## 🎭 八仙智能体角色
### 铁拐李 (巽卦) - 逆向投资大师
- **投资哲学**: 逆向思维,挑战市场共识
- **记忆重点**: 市场异常、逆向案例、风险警示、反向策略
- **辩论风格**: 质疑主流观点,提出反向思考
### 吕洞宾 (乾卦) - 理性分析者
- **投资哲学**: 技术分析专家,数据驱动决策
- **记忆重点**: 技术分析、数据洞察、逻辑推理、理性决策
- **辩论风格**: 基于数据和逻辑的严密分析
### 何仙姑 (坤卦) - 直觉洞察者
- **投资哲学**: 风险控制专家,情感智慧
- **记忆重点**: 市场情绪、直觉判断、情感因素、人性洞察
- **辩论风格**: 基于直觉和情感智慧的分析
### 张果老 (兑卦) - 历史智慧者
- **投资哲学**: 历史数据分析师,经验导向
- **记忆重点**: 历史案例、长期趋势、周期规律、经验教训
- **辩论风格**: 引用历史案例和长期趋势
### 汉钟离 (离卦) - 平衡协调者
- **投资哲学**: 热点追踪专家,平衡思维
- **记忆重点**: 平衡策略、综合分析、协调方案、稳健建议
- **辩论风格**: 寻求各方观点的平衡点
### 蓝采和 (坎卦) - 创新思维者
- **投资哲学**: 潜力股发现者,创新导向
- **记忆重点**: 创新机会、新兴趋势、潜力发现、灵活策略
- **辩论风格**: 发现新兴机会和创新角度
### 韩湘子 (艮卦) - 艺术感知者
- **投资哲学**: 新兴资产专家,美学视角
- **记忆重点**: 美学趋势、创意洞察、感性分析、艺术视角
- **辩论风格**: 从美学和艺术角度分析市场
### 曹国舅 (震卦) - 实务执行者
- **投资哲学**: 机构视角分析师,实务导向
- **记忆重点**: 执行策略、机构动向、实务操作、专业分析
- **辩论风格**: 关注实际执行和机构操作
## 🔍 AutoRAG查询需求
### 查询类型
1. **历史智慧检索**: 根据辩论主题查找相关的古代智慧、哲学思想
2. **投资案例搜索**: 寻找历史上的投资成功/失败案例
3. **市场周期分析**: 查找关于市场周期、经济规律的古籍记录
4. **风险管理智慧**: 搜索古代关于风险控制、谨慎投资的思想
5. **人性洞察**: 查找关于人性、情绪、群体心理的古代观察
### 期望的AutoRAG接口
#### 1. 嵌入生成接口
```
POST /embed
{
"text": "需要生成嵌入的文本内容"
}
响应:
{
"embedding": [0.1, 0.2, ...], // 1024维BGE-M3嵌入向量
"model": "bge-m3"
}
```
#### 2. 记忆存储接口
```
POST /upsert
{
"vectors": [
{
"id": "memory_uuid",
"values": [0.1, 0.2, ...],
"metadata": {
"agent_name": "tieguaili",
"chinese_name": "铁拐李",
"content": "记忆内容",
"memory_type": "knowledge|conversation|preference|strategy",
"debate_topic": "辩论主题",
"timestamp": "2024-01-01T00:00:00Z"
}
}
],
"namespace": "agent_name" // 智能体命名空间
}
响应:
{
"success": true,
"inserted_count": 1
}
```
#### 3. 记忆检索接口
```
POST /query
{
"vector": [0.1, 0.2, ...], // 查询向量
"topK": 10, // 返回数量
"namespace": "tieguaili", // 智能体命名空间
"filter": { // 可选过滤条件
"memory_type": "knowledge"
}
}
响应:
{
"matches": [
{
"id": "memory_uuid",
"score": 0.95,
"metadata": {
"content": "相关记忆内容",
"agent_name": "tieguaili",
"memory_type": "knowledge",
"debate_topic": "投资哲学"
}
}
]
}
```
## 📝 使用场景示例
### 场景1: 辩论前的知识准备
```
辩论主题: "NVIDIA股票投资价值分析"
铁拐李查询: "历史上科技股泡沫的案例和教训"
张果老查询: "古代关于新兴技术投资的智慧"
何仙姑查询: "市场狂热时期的风险控制思想"
```
### 场景2: 辩论中的观点支撑
```
当前观点: "AI技术发展存在过度炒作风险"
相关查询: "古代关于技术革新的理性思考"
期望返回: 相关的古籍智慧,支持或反驳当前观点
```
### 场景3: 辩论后的经验总结
```
辩论结果: 铁拐李的逆向观点获得认同
存储记忆: "在AI股票讨论中逆向思维帮助识别了估值风险"
记忆类型: strategy
```
## 🎯 集成目标
1. **智能记忆**: 每位仙人都有独立的记忆空间,能够学习和积累经验
2. **文化融合**: 将古代智慧与现代投资分析相结合
3. **个性化**: 根据每位仙人的特点,提供差异化的知识支持
4. **持续学习**: 通过辩论过程不断丰富和完善知识库
## 🔧 技术要求
- **向量维度**: 1024 (BGE-M3模型)
- **命名空间**: 支持按智能体分离数据
- **元数据**: 丰富的元数据支持,便于过滤和分类
- **性能**: 低延迟的检索响应,支持实时辩论
- **扩展性**: 支持未来添加更多智能体和记忆类型
## 🌟 期望效果
通过AutoRAG集成稷下学宫将实现
- 🧠 **智慧传承**: 古代哲学智慧指导现代投资决策
- 🎭 **角色一致**: 每位仙人保持独特的人格和观点
- 📚 **知识积累**: 持续学习和经验沉淀
- 🔄 **动态辩论**: 基于历史记忆的深度讨论
- 🎯 **精准分析**: 结合传统智慧的投资洞察
---
**让AI辩论照亮投资智慧让古代智慧指引现代决策** 🏛️✨

View File

@@ -0,0 +1,218 @@
# 🌐 GitHub Pages 发布计划
## 📋 发布内容规划
### **🎯 发布目标**
- 展示项目功能和特性
- 提供用户友好的文档
- 吸引潜在用户和贡献者
- 保持专业形象
### **✅ 适合发布的内容**
#### **1. 项目主页 (根目录)**
```
/
├── README.md # 项目主介绍
├── RELEASE_v2.0.0.md # 版本发布说明
├── QUICK_START_GUIDE.md # 快速上手指南
├── VERSION # 版本号
├── requirements.txt # 依赖清单
└── .gitignore # Git忽略文件
```
#### **2. 用户文档 (docs/)**
```
docs/
├── index.md # 文档首页
├── guides/ # 用户指南
│ ├── quick-start.md # 快速开始
│ ├── installation.md # 安装指南
│ ├── configuration.md # 配置指南
│ ├── cloudflare-integration.md # Cloudflare集成
│ ├── google-adk-migration.md # Google ADK迁移
│ └── load-balancing.md # 负载均衡指南
├── features/ # 功能特性
│ ├── debate-system.md # 辩论系统
│ ├── memory-bank.md # 记忆系统
│ ├── eight-immortals.md # 八仙系统
│ └── tianxia-analysis.md # 天下体系
├── api/ # API文档
│ ├── rapidapi-setup.md # RapidAPI设置
│ └── vertex-memory-bank.md # Memory Bank API
└── examples/ # 示例代码
├── basic-usage.md # 基础用法
└── advanced-features.md # 高级功能
```
#### **3. 设计文档 (design/)**
```
design/
├── overview.md # 项目概览
├── architecture.md # 系统架构
├── debate-system.md # 辩论系统设计
└── roadmap.md # 开发路线图
```
#### **4. 演示和示例**
```
examples/
├── basic-debate.md # 基础辩论示例
├── memory-bank-demo.md # 记忆系统演示
└── load-balancing-demo.md # 负载均衡演示
```
### **🔒 保留在 internal/ 的内容**
#### **1. 内部开发文档**
- 开发计划和路线图
- 技术实现细节
- 内部策略文档
- 代码审查记录
#### **2. 敏感信息**
- API密钥配置
- 内部分析报告
- 迁移方案细节
- 历史文档
#### **3. 配置文件**
- 环境配置
- 内部脚本
- AI助手配置
## 🚀 发布步骤
### **第一阶段:内容准备**
1. **优化 README.md**
- 添加项目徽章
- 完善功能介绍
- 添加截图和演示
- 优化安装说明
2. **创建文档首页**
- 设计文档结构
- 创建导航菜单
- 添加搜索功能
3. **整理用户指南**
- 统一文档格式
- 添加代码示例
- 完善配置说明
### **第二阶段GitHub Pages 配置**
1. **启用 GitHub Pages**
```bash
# 在仓库设置中启用 GitHub Pages
# 选择 docs/ 文件夹作为源
```
2. **配置 Jekyll 主题**
```yaml
# _config.yml
title: 太公心易 - 稷下学宫AI辩论系统
description: 基于中国哲学传统的多AI智能体辩论平台
theme: jekyll-theme-cayman
```
3. **创建导航结构**
```markdown
# docs/index.md
---
layout: default
title: 太公心易文档
---
```
### **第三阶段:内容发布**
1. **发布核心文档**
- 项目介绍
- 快速开始指南
- 功能特性说明
2. **发布用户指南**
- 安装配置
- 使用教程
- 示例代码
3. **发布设计文档**
- 系统架构
- 技术设计
- 开发路线图
## 📊 发布效果预期
### **用户访问路径**
```
GitHub Pages 首页
├── 项目介绍 → README.md
├── 快速开始 → QUICK_START_GUIDE.md
├── 用户指南 → docs/guides/
├── 功能特性 → docs/features/
├── API文档 → docs/api/
└── 示例代码 → docs/examples/
```
### **SEO 优化**
- 添加 meta 标签
- 优化标题和描述
- 添加关键词
- 创建 sitemap
### **用户体验**
- 响应式设计
- 快速加载
- 清晰导航
- 搜索功能
## 🔧 技术实现
### **GitHub Pages 配置**
```yaml
# .github/workflows/pages.yml
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs
```
### **文档结构优化**
- 使用 Markdown 格式
- 添加目录导航
- 统一代码高亮
- 优化图片显示
## 📈 维护计划
### **定期更新**
- 每月更新功能文档
- 季度更新架构文档
- 及时更新版本说明
### **用户反馈**
- 收集用户问题
- 更新常见问题
- 优化文档内容
### **版本同步**
- 保持文档与代码同步
- 及时发布新版本说明
- 维护版本历史
---
**发布状态**:🔄 计划中
**预计完成**2025年8月底

View File

@@ -0,0 +1,270 @@
# Vertex AI Memory Bank 配置指南
## 🏛️ 稷下学宫记忆银行集成
本文档介绍如何为稷下学宫AI辩论系统配置和使用Vertex AI Memory Bank功能。
## 📋 前置要求
### 1. Google Cloud 项目设置
- 有效的 Google Cloud 项目
- 启用 Vertex AI API
- 配置适当的 IAM 权限
### 2. 必需的依赖
```bash
pip install google-cloud-aiplatform>=1.38.0
pip install google-adk # 或开发版本
```
### 3. 环境变量配置
在 Doppler 或本地环境中设置以下变量:
```bash
# 必需配置
GOOGLE_API_KEY=your_gemini_api_key
GOOGLE_CLOUD_PROJECT_ID=your-project-id
# 可选配置
GOOGLE_CLOUD_LOCATION=us-central1 # 默认区域
VERTEX_MEMORY_BANK_ENABLED=TRUE # 启用记忆银行
GOOGLE_SERVICE_ACCOUNT_KEY=path/to/service-account.json # 服务账号密钥
```
## 🚀 快速开始
### 1. 验证配置
```bash
# 验证 Google ADK 配置
python config/doppler_config.py
# 测试 Memory Bank 连接
python tests/test_vertex_memory_bank.py
```
### 2. 初始化八仙记忆银行
```python
from src.jixia.memory.vertex_memory_bank import initialize_baxian_memory_banks
# 初始化所有八仙的记忆银行
memory_bank = await initialize_baxian_memory_banks(
project_id="your-project-id",
location="us-central1"
)
```
### 3. 创建记忆增强智能体
```python
from src.jixia.agents.memory_enhanced_agent import create_memory_enhanced_council
# 创建记忆增强的八仙议会
council = await create_memory_enhanced_council()
# 进行记忆增强辩论
result = await council.conduct_memory_debate(
topic="NVIDIA股票投资分析",
participants=["tieguaili", "lvdongbin", "hexiangu"],
rounds=3
)
```
## 🎭 八仙记忆特性
每位仙人都有独特的记忆重点和学习模式:
### 铁拐李 (逆向投资大师)
- **记忆重点**: 市场异常、逆向案例、风险警示、反向策略
- **学习模式**: 关注市场共识的反面,记住历史上的逆向成功案例
### 吕洞宾 (理性分析者)
- **记忆重点**: 技术分析、数据洞察、逻辑推理、理性决策
- **学习模式**: 基于数据和逻辑的严密分析,记住成功的分析框架
### 何仙姑 (直觉洞察者)
- **记忆重点**: 市场情绪、直觉判断、情感因素、人性洞察
- **学习模式**: 关注市场情绪变化,记住情感驱动的市场事件
### 张果老 (历史智慧者)
- **记忆重点**: 历史案例、长期趋势、周期规律、经验教训
- **学习模式**: 从历史中学习,记住重要的历史模式和教训
### 汉钟离 (平衡协调者)
- **记忆重点**: 平衡策略、综合分析、协调方案、稳健建议
- **学习模式**: 寻求各方观点的平衡,记住成功的协调案例
### 蓝采和 (创新思维者)
- **记忆重点**: 创新机会、新兴趋势、潜力发现、灵活策略
- **学习模式**: 发现新兴机会,记住创新投资的成功案例
### 韩湘子 (艺术感知者)
- **记忆重点**: 美学趋势、创意洞察、感性分析、艺术视角
- **学习模式**: 从美学角度分析市场,记住艺术和创意相关的投资
### 曹国舅 (实务执行者)
- **记忆重点**: 执行策略、机构动向、实务操作、专业分析
- **学习模式**: 关注实际执行,记住机构操作和专业分析
## 🔧 高级配置
### 1. 自定义记忆类型
```python
# 支持的记忆类型
MEMORY_TYPES = [
"conversation", # 对话记忆
"preference", # 偏好记忆
"knowledge", # 知识记忆
"strategy" # 策略记忆
]
# 添加自定义记忆
await memory_bank.add_memory(
agent_name="tieguaili",
content="在熊市中,逆向投资策略往往更有效",
memory_type="strategy",
debate_topic="市场策略",
metadata={
"market_condition": "bear_market",
"confidence": 0.8,
"source": "historical_analysis"
}
)
```
### 2. 记忆搜索和过滤
```python
# 搜索特定类型的记忆
strategy_memories = await memory_bank.search_memories(
agent_name="tieguaili",
query="逆向投资",
memory_type="strategy",
limit=10
)
# 获取智能体的完整上下文
context = await memory_bank.get_agent_context(
agent_name="tieguaili",
debate_topic="NVIDIA投资分析"
)
```
### 3. 辩论会话保存
```python
# 自动保存辩论会话
await memory_bank.save_debate_session(
debate_topic="比特币投资价值",
participants=["tieguaili", "lvdongbin", "hexiangu"],
conversation_history=conversation_history,
outcomes={
"winner": "tieguaili",
"key_insights": ["逆向思维在加密货币投资中的重要性"],
"consensus": "需要更谨慎的风险管理"
}
)
```
## 📊 监控和管理
### 1. 记忆银行状态检查
```python
# 检查记忆银行状态
for agent_name, bank_name in memory_bank.memory_banks.items():
chinese_name = memory_bank.baxian_agents[agent_name]
print(f"{chinese_name}: {bank_name}")
```
### 2. 记忆使用统计
```python
# 获取记忆统计信息
stats = await memory_bank.get_memory_stats(agent_name="tieguaili")
print(f"总记忆数: {stats['total_memories']}")
print(f"对话记忆: {stats['conversation_count']}")
print(f"策略记忆: {stats['strategy_count']}")
```
### 3. 记忆清理和维护
```python
# 清理过期记忆(如果需要)
await memory_bank.cleanup_old_memories(
agent_name="tieguaili",
days_old=30,
memory_type="conversation"
)
```
## 🔒 安全和隐私
### 1. 数据加密
- 所有记忆数据在传输和存储时都会加密
- 使用 Google Cloud 的企业级安全措施
### 2. 访问控制
- 每个智能体只能访问自己的记忆银行
- 通过 IAM 控制项目级别的访问权限
### 3. 数据保留
- 可以配置记忆数据的保留期限
- 支持手动删除敏感记忆
## 🚨 故障排除
### 常见问题
#### 1. 项目ID未配置
```
❌ Google Cloud Project ID 未配置
```
**解决方案**: 设置 `GOOGLE_CLOUD_PROJECT_ID` 环境变量
#### 2. API权限不足
```
❌ 403 Forbidden: Vertex AI API access denied
```
**解决方案**:
- 在 Google Cloud Console 中启用 Vertex AI API
- 确保服务账号有适当的权限
#### 3. 记忆银行创建失败
```
❌ 创建记忆银行失败: Region not supported
```
**解决方案**:
- 检查 `GOOGLE_CLOUD_LOCATION` 设置
- 使用支持 Memory Bank 的区域(如 us-central1
#### 4. 依赖包缺失
```
❌ Google Cloud AI Platform 未安装
```
**解决方案**:
```bash
pip install google-cloud-aiplatform>=1.38.0
```
### 调试模式
```python
# 启用详细日志
import logging
logging.basicConfig(level=logging.DEBUG)
# 测试连接
python tests/test_vertex_memory_bank.py
```
## 📚 参考资源
- [Vertex AI Memory Bank 官方文档](https://cloud.google.com/blog/products/ai-machine-learning/vertex-ai-memory-bank-in-public-preview)
- [Google ADK 文档](https://github.com/google/adk-python)
- [稷下学宫项目文档](../README.md)
## 🤝 贡献指南
如果你想为 Memory Bank 功能贡献代码:
1. 确保所有新功能都有对应的测试
2. 遵循现有的代码风格和注释规范
3. 更新相关文档
4. 提交 Pull Request 前运行完整的测试套件
---
**让AI辩论照亮投资智慧记忆银行让智慧永续传承** 🏛️✨

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,140 @@
# RSS代码只能抓取一条数据的问题分析
## 问题现象
原代码期望抓取100条RSS数据但实际只能抓取到1条数据。
## 可能的原因分析
### 1. RSS数据结构识别问题
**最可能的原因**RSS数据的实际结构与代码中的4种预设情况都不匹配。
常见的RSS数据结构包括
- `rss.channel.item[]` (标准RSS 2.0)
- `feed.entry[]` (Atom格式)
- `channel.item[]` (简化RSS)
- `data[]` (某些API返回格式)
- 直接的对象数组
### 2. 输入数据获取问题
```javascript
const rssSource = inputs[0]?.json; // 可能inputs[0]为空或结构不对
```
### 3. 去重逻辑过于严格
如果MongoDB中已有大量数据可能导致新数据被过度过滤。
### 4. 错误处理不足
原代码缺乏详细的调试信息,难以定位具体问题。
## 解决方案
### 1. 增强数据结构识别
```javascript
// 扩展RSS结构处理
if (rssSource?.rss?.channel?.item && Array.isArray(rssSource.rss.channel.item)) {
rssItems = rssSource.rss.channel.item;
}
else if (rssSource?.feed?.entry && Array.isArray(rssSource.feed.entry)) {
rssItems = rssSource.feed.entry;
}
// ... 更多结构支持
```
### 2. 添加详细调试信息
```javascript
console.log('输入数据结构:', JSON.stringify(inputs[0], null, 2).substring(0, 500));
console.log('RSS源数据的所有键:', Object.keys(rssSource || {}));
```
### 3. 改进去重逻辑
```javascript
// 只有当MongoDB确实有数据时才进行去重
if (existingItems.length > 0 && existingItems[0] !== null) {
// 执行去重逻辑
} else {
console.log('MongoDB中无现有数据跳过去重检查');
}
```
### 4. 增强错误处理
```javascript
try {
// 主要逻辑
} catch (error) {
console.error("处理错误:", error.message);
console.error("错误堆栈:", error.stack);
}
```
## 调试步骤
1. **检查输入数据结构**
```javascript
console.log('inputs长度:', inputs.length);
console.log('第一个输入:', inputs[0]);
```
2. **检查RSS源数据**
```javascript
console.log('RSS源数据类型:', typeof rssSource);
console.log('RSS源数据键:', Object.keys(rssSource || {}));
```
3. **检查提取结果**
```javascript
console.log('提取到的RSS条目数:', rssItems.length);
console.log('第一个RSS条目:', rssItems[0]);
```
4. **检查去重影响**
```javascript
console.log('MongoDB现有数据数量:', existingItems.length);
console.log('去重后输出数量:', outputItems.length);
```
## 建议的修复代码
使用 `improved_rss_code.js` 中的改进版本,它包含:
- 更全面的RSS结构支持
- 详细的调试信息输出
- 改进的去重逻辑
- 更好的错误处理
- 更灵活的字段映射
## 常见RSS结构示例
### RSS 2.0格式
```json
{
"rss": {
"channel": {
"item": [
{"title": "新闻1", "link": "url1"},
{"title": "新闻2", "link": "url2"}
]
}
}
}
```
### Atom格式
```json
{
"feed": {
"entry": [
{"title": "新闻1", "link": {"href": "url1"}},
{"title": "新闻2", "link": {"href": "url2"}}
]
}
}
```
### 简化格式
```json
{
"items": [
{"title": "新闻1", "url": "url1"},
{"title": "新闻2", "url": "url2"}
]
}
```

View File

@@ -0,0 +1,211 @@
# 🔄 Google ADK 迁移指南
## 📋 迁移概述
本指南将帮助您将项目从当前的 OpenRouter/OpenAI Swarm 架构迁移到 Google Agent Development Kit (ADK)。
## 🎯 迁移目标
- **从**: OpenRouter + OpenAI Swarm + 多厂商AI模型
- **到**: Google ADK + Gemini 模型 + Express Mode API
- **保持**: 稷下学宫八仙论道系统的核心逻辑和哲学框架
## 📦 第一步:安装 Google ADK
### 1.1 更新 Python 环境要求
<mcreference link="https://google.github.io/adk-docs/get-started/quickstart/" index="1">1</mcreference>
```bash
# 确保 Python 3.9+ 版本
python --version
# 创建新的虚拟环境(推荐)
python -m venv .venv
# 激活虚拟环境
# macOS/Linux:
source .venv/bin/activate
# Windows CMD:
# .venv\Scripts\activate.bat
# Windows PowerShell:
# .venv\Scripts\Activate.ps1
```
### 1.2 安装 Google ADK
<mcreference link="https://pypi.org/project/google-adk/" index="2">2</mcreference>
```bash
# 安装稳定版本
pip install google-adk
# 或安装最新开发版本
pip install git+https://github.com/google/adk-python.git@main
```
## 🔑 第二步:配置 API 密钥
### 2.1 获取 Gemini API 密钥
<mcreference link="https://google.github.io/adk-docs/get-started/quickstart/" index="1">1</mcreference>
您有三种选择:
**选项A: Google AI Studio (推荐开发环境)**
- 前往 [Google AI Studio](https://aistudio.google.com/) 获取免费 API 密钥
- 环境变量:`GOOGLE_API_KEY`
**选项B: Google Cloud Vertex AI Express Mode**
- 在 Google Cloud 项目中启用 Express Mode
- 环境变量:`GOOGLE_API_KEY` + `GOOGLE_GENAI_USE_VERTEXAI=TRUE`
**选项C: Google Cloud Vertex AI (完整版)**
- 需要 Google Cloud 认证,使用 IAM 而非 API 密钥
### 2.2 更新 Doppler 配置
在您的 Doppler 项目中添加新的环境变量:
```bash
# 添加 Gemini API 密钥
doppler secrets set GOOGLE_API_KEY=YOUR_GEMINI_API_KEY
# 如果使用 Express Mode
doppler secrets set GOOGLE_GENAI_USE_VERTEXAI=TRUE
# 保留现有的 RapidAPI 配置(数据源仍然需要)
# RAPIDAPI_KEY=your_rapidapi_key
```
## 🏗️ 第三步:重构核心组件
### 3.1 更新配置管理
需要更新 `config/doppler_config.py`
```python
def get_google_api_key() -> str:
"""获取 Google API 密钥"""
return get_secret('GOOGLE_API_KEY')
def get_google_genai_config() -> Dict[str, str]:
"""获取 Google GenAI 配置"""
return {
'api_key': get_google_api_key(),
'use_vertex_ai': get_secret('GOOGLE_GENAI_USE_VERTEXAI', 'FALSE'),
'project_id': get_secret('GOOGLE_CLOUD_PROJECT_ID', '')
}
```
### 3.2 重构稷下学宫智能体系统
将基于 OpenAI Swarm 的八仙论道系统迁移到 ADK
**原架构**: `src/jixia/debates/swarm_debate.py` (OpenAI Swarm)
**新架构**: `src/jixia/debates/adk_debate.py` (Google ADK)
### 3.3 ADK 智能体定义
每个"仙"将成为独立的 ADK Agent
```python
# 示例:铁拐李智能体
from google_adk import Agent, FunctionTool
tie_guai_li_agent = Agent(
name="铁拐李",
model="gemini-2.0-flash-exp",
description="逆向思维专家,善于从困境中寻找突破",
system_message="你是铁拐李,八仙中的逆向思维专家...",
tools=[
FunctionTool(name="逆向分析", function=reverse_analysis),
FunctionTool(name="困境突破", function=breakthrough_analysis)
]
)
```
## 🔄 第四步:分阶段迁移策略
### 阶段1基础设施迁移 (第1-2天)
- [ ] 安装 Google ADK
- [ ] 配置 API 密钥
- [ ] 创建简单的测试智能体
- [ ] 验证基本功能
### 阶段2核心逻辑迁移 (第3-5天)
- [ ] 重构八仙智能体定义
- [ ] 迁移论道逻辑
- [ ] 保持数据源 (RapidAPI) 集成
- [ ] 测试单个智能体功能
### 阶段3系统集成 (第6-7天)
- [ ] 多智能体协作
- [ ] Streamlit 界面适配
- [ ] 完整功能测试
- [ ] 性能优化
### 阶段4部署和监控 (第8天)
- [ ] 部署配置
- [ ] 监控设置
- [ ] 文档更新
## 📊 功能对照表
| 当前 (OpenRouter/Swarm) | 迁移后 (Google ADK) | 状态 |
|-------------------------|-------------------|------|
| OpenAI Swarm 多智能体 | ADK Multi-Agent | ✅ 等价替换 |
| OpenRouter 模型池 | Gemini 模型系列 | ✅ 统一模型 |
| 自定义 Tool 系统 | ADK FunctionTool | ✅ 等价替换 |
| 论道逻辑 | ADK Agent协作 | ✅ 保持逻辑 |
| RapidAPI 数据源 | 保持不变 | ✅ 无需改动 |
| Streamlit 界面 | ADK Dev UI + Streamlit | ✅ 双界面 |
## 🎛️ 开发工具对比
### 当前工具
- OpenRouter API 测试
- 自定义调试脚本
- Streamlit 界面
### ADK 工具
<mcreference link="https://google.github.io/adk-docs/get-started/quickstart/" index="1">1</mcreference>
```bash
# ADK 开发界面 (推荐)
adk web
# 命令行运行
adk run multi_tool_agent
# API 服务器模式
adk api_server
```
## 🚨 注意事项
### 保留的组件
- **RapidAPI 数据源**: 继续使用,无需更改
- **MongoDB 数据库**: 继续使用
- **Doppler 配置管理**: 继续使用,仅添加新密钥
- **稷下学宫哲学框架**: 完全保持
### 移除的组件
- OpenAI Swarm 依赖
- OpenRouter API 调用
- 多厂商 API 密钥管理
### 新增优势
- **统一的模型生态**: 专注 Gemini 系列
- **更强的 Google 服务集成**: Search、Cloud 等
- **官方支持的框架**: 长期维护保证
- **更好的开发工具**: ADK Dev UI
## 📝 下一步行动
1. **立即开始**: 运行第一步的环境配置
2. **获取 API 密钥**: 访问 Google AI Studio
3. **阅读 ADK 文档**: [官方文档](https://google.github.io/adk-docs/)
4. **测试简单智能体**: 验证基本功能
准备好开始迁移了吗?我可以帮您逐步执行每个阶段!

View File

@@ -0,0 +1,116 @@
# 🚀 炼妖壶项目迁移计划
## 🎯 目标
从混乱的当前项目状态迁移到干净、安全、可维护的新项目结构。
## 📍 迁移路径
```
当前位置: /home/ben/cauldron (混乱状态)
目标位置: /home/ben/liurenchaxin (全新开始)
```
## 📋 迁移步骤
### 阶段1: 文档准备 ✅
- [x] 创建需求规范
- [x] 制定迁移计划
- [ ] 完善设计文档
- [ ] 创建任务清单
### 阶段2: 环境准备
- [ ] 创建新项目目录
- [ ] 设置虚拟环境
- [ ] 配置Doppler (干净的配置)
- [ ] 建立Git仓库
### 阶段3: 核心功能迁移
- [ ] 迁移稷下学宫AI辩论系统
- [ ] 迁移Streamlit主界面
- [ ] 迁移数据库连接模块
- [ ] 迁移API集成代码
### 阶段4: 安全加固
- [ ] 实施密钥管理最佳实践
- [ ] 配置GitGuardian检查
- [ ] 设置pre-commit hooks
- [ ] 建立安全扫描流程
### 阶段5: 测试验证
- [ ] 功能测试
- [ ] 安全测试
- [ ] 性能测试
- [ ] 部署测试
## 🔒 安全原则
1. **零密钥原则** - 代码中绝不包含任何密钥
2. **环境变量优先** - 所有配置通过环境变量
3. **Doppler集中管理** - 统一的密钥管理
4. **自动化检查** - 提交前自动安全扫描
## 📁 新项目结构
```
liurenchaxin/
├── app/ # 应用入口
│ ├── streamlit_app.py # 主界面
│ └── components/ # UI组件
├── src/ # 核心代码
│ ├── jixia/ # 稷下学宫系统
│ ├── database/ # 数据库模块
│ └── api/ # API集成
├── config/ # 配置管理
│ └── doppler_config.py # Doppler配置
├── tests/ # 测试代码
├── docs/ # 文档
├── scripts/ # 工具脚本
└── .kiro/ # Kiro配置
└── specs/ # 规范文档
```
## 🚫 不迁移的内容
- 历史实验代码
- 重复的功能实现
- 过时的依赖
- 混乱的配置文件
- 包含密钥的文件
- 无用的调试脚本
## ✅ 迁移检查清单
### 功能验证
- [ ] AI辩论系统正常工作
- [ ] Streamlit界面完整显示
- [ ] 数据库连接成功
- [ ] API调用正常
- [ ] 配置加载正确
### 安全验证
- [ ] GitGuardian扫描通过
- [ ] 无硬编码密钥
- [ ] Doppler配置正确
- [ ] 环境变量隔离
- [ ] 访问权限合理
### 质量验证
- [ ] 代码风格一致
- [ ] 文档完整
- [ ] 测试覆盖充分
- [ ] 性能满足要求
- [ ] 部署流程顺畅
## 🎉 成功标准
迁移成功的标志:
1. 新项目通过所有安全扫描
2. 核心功能100%可用
3. 启动时间 < 30秒
4. 代码质量 A级
5. 文档完整度 > 90%
---
**准备好开始迁移了吗?让我们带着这些文档,前往新的开始!** 🚀

View File

@@ -0,0 +1,275 @@
# 稷下学宫八仙论道 - RapidAPI负载均衡系统
## 🏛️ 系统概述
本系统实现了稷下学宫八仙论道的智能API负载均衡策略通过将不同的RapidAPI数据源分配给不同的"仙人"角色,实现了高效的负载分担和数据获取。
### 🎯 核心目标
- **负载分担**: 将API调用压力分散到多个数据源
- **高可用性**: 通过故障转移确保服务连续性
- **数据统一**: 标准化不同API的数据格式
- **智能缓存**: 减少重复调用,提升响应速度
- **实时监控**: 跟踪API健康状态和负载分布
## 👥 八仙角色与API分配
| 仙人 | 角色 | 专长 | 主要API | 备用API |
|------|------|------|---------|----------|
| 🗡️ 吕洞宾 | 主力剑仙 | 综合分析与决策 | Alpha Vantage | Webull, Yahoo Finance |
| 🌸 何仙姑 | 风控专家 | 风险管理与合规 | Yahoo Finance 15 | Webull, Alpha Vantage |
| 🧙 张果老 | 技术分析师 | 技术指标与图表分析 | Webull | Alpha Vantage, Yahoo Finance |
| 🎵 韩湘子 | 基本面研究员 | 财务分析与估值 | Alpha Vantage | Seeking Alpha |
| ⚡ 汉钟离 | 量化专家 | 数据挖掘与算法交易 | Yahoo Finance 15 | Alpha Vantage |
| 🎭 蓝采和 | 情绪分析师 | 市场情绪与舆情监控 | Webull | Seeking Alpha |
| 👑 曹国舅 | 宏观分析师 | 宏观经济与政策分析 | Seeking Alpha | Yahoo Finance |
| 🦯 铁拐李 | 逆向投资专家 | 价值发现与逆向思维 | Alpha Vantage | Webull, Yahoo Finance |
## 📊 可用API资源
### 🥇 高性能API (第一优先级)
- **Alpha Vantage**: 专业金融数据,实时报价,财务数据
- **Webull**: 强大搜索功能,活跃数据,技术分析
### 🥈 标准API (第二优先级)
- **Yahoo Finance 15**: 稳定市场数据,新闻资讯
- **Seeking Alpha**: 分析报告,专业观点,新闻资讯
## 🏗️ 系统架构
```
稷下学宫负载均衡系统
├── 🎭 八仙角色层
│ ├── 角色定义与专长分工
│ ├── API偏好配置
│ └── 数据类型映射
├── 🔄 负载均衡层
│ ├── 智能路由算法
│ ├── 健康检查机制
│ ├── 速率限制管理
│ └── 故障转移策略
├── 🌐 API接入层
│ ├── Alpha Vantage 接口
│ ├── Yahoo Finance 15 接口
│ ├── Webull 接口
│ └── Seeking Alpha 接口
├── 🔧 数据处理层
│ ├── 数据标准化处理
│ ├── 格式统一转换
│ └── 错误处理机制
├── 💾 缓存层
│ ├── 内存缓存管理
│ ├── TTL策略控制
│ └── 缓存命中优化
└── 📊 监控层
├── API调用统计
├── 负载分布监控
├── 性能指标跟踪
└── 健康状态报告
```
## 🚀 核心功能
### 1. 智能负载分担
- **角色分工**: 每个仙人使用不同的主要API
- **权重分配**: 基于API性能和可靠性的智能分配
- **动态调整**: 根据实时负载情况自动调整
### 2. 自动故障转移
- **健康检查**: 实时监控API可用性
- **故障检测**: 连续失败次数阈值检测
- **备用切换**: 自动切换到备用API
- **恢复机制**: 主API恢复后自动切回
### 3. 数据标准化
```python
# 统一的数据格式
{
'symbol': 'AAPL',
'price': 202.38,
'change': -5.12,
'change_percent': '-2.50%',
'volume': 45678900,
'high': 207.50,
'low': 201.85,
'source': 'alpha_vantage',
'timestamp': '2025-08-02'
}
```
### 4. 智能缓存策略
- **分层缓存**: 不同数据类型使用不同TTL
- **缓存预热**: 预先加载热点数据
- **缓存穿透保护**: 避免缓存雪崩
### 5. 实时监控
- **API调用统计**: 实时跟踪每个API的调用次数
- **负载分布**: 可视化负载分布情况
- **性能指标**: 响应时间、成功率等关键指标
- **告警机制**: 异常情况自动告警
## 📁 文件结构
```
/home/ben/liurenchaxin/
├── src/jixia/
│ ├── engines/
│ │ └── jixia_load_balancer.py # 核心负载均衡引擎
│ └── config/
│ └── immortal_api_config.json # 八仙角色与API配置
├── demo_jixia_load_balancing.py # 演示脚本
├── jixia_load_balancing_strategy.md # 策略文档
└── README_jixia_load_balancing.md # 本说明文档
```
## 🎮 使用方法
### 1. 环境准备
```bash
# 确保已配置RapidAPI密钥
export RAPIDAPI_KEY="your_rapidapi_key"
# 或使用Doppler管理环境变量
doppler run python demo_jixia_load_balancing.py
```
### 2. 基本使用
```python
from src.jixia.engines.jixia_load_balancer import JixiaLoadBalancer
# 创建负载均衡器
load_balancer = JixiaLoadBalancer(rapidapi_key)
# 单个仙人获取数据
result = load_balancer.get_data_for_immortal('吕洞宾', 'stock_quote', 'AAPL')
# 八仙论道(完整演示)
results = load_balancer.conduct_immortal_debate('TSLA')
# 查看负载分布
distribution = load_balancer.get_load_distribution()
```
### 3. 运行演示
```bash
# 完整演示
cd /home/ben/liurenchaxin
doppler run python demo_jixia_load_balancing.py
# 查看演示结果
ls demo_results_*.json
```
## 📊 演示结果
### 负载分布统计
基于实际运行的演示结果:
| API | 调用次数 | 负载占比 | 健康状态 | 平均响应时间 |
|-----|----------|----------|----------|-------------|
| Alpha Vantage | 8次 | 33.3% | 🟢 健康 | ~1.3s |
| Yahoo Finance 15 | 7次 | 29.2% | 🟢 健康 | ~1.9s |
| Webull | 9次 | 37.5% | 🟢 健康 | ~2.0s |
| Seeking Alpha | 0次 | 0.0% | 🟢 健康 | N/A |
### 性能指标
- **总API调用**: 24次
- **成功率**: 100%
- **平均响应时间**: 1.7秒
- **缓存命中率**: 约30%
- **故障转移**: 自动且无缝
## 🔧 配置说明
### API配置 (`immortal_api_config.json`)
```json
{
"immortals": {
"吕洞宾": {
"title": "主力剑仙",
"specialty": "综合分析与决策",
"preferred_apis": {
"stock_quote": "alpha_vantage",
"company_overview": "alpha_vantage"
},
"api_weight": 0.15
}
},
"api_configurations": {
"alpha_vantage": {
"reliability_score": 0.95,
"response_time_avg": 0.8,
"cost_per_call": 0.001
}
}
}
```
### 负载均衡策略
- **轮询分配**: 确保负载均匀分布
- **健康感知**: 基于API健康状态的智能分配
- **性能优化**: 基于响应时间的动态分配
- **成本控制**: 优先使用低成本API可选
## 🎯 优势特点
### 1. 高可用性
- ✅ 多API冗余单点故障不影响整体服务
- ✅ 自动故障检测和恢复机制
- ✅ 实时健康监控和告警
### 2. 高性能
- ✅ 智能缓存减少重复调用
- ✅ 并发处理提升响应速度
- ✅ 负载均衡避免单API过载
### 3. 高扩展性
- ✅ 模块化设计易于添加新API
- ✅ 配置驱动,无需修改代码
- ✅ 插件化架构支持自定义扩展
### 4. 成本优化
- ✅ 智能API选择降低调用成本
- ✅ 缓存策略减少不必要的API调用
- ✅ 负载分散避免超出免费额度
## 🔮 未来规划
### 短期目标
- [ ] 添加更多RapidAPI数据源
- [ ] 实现WebSocket实时数据推送
- [ ] 优化缓存策略和命中率
- [ ] 添加详细的性能分析报告
### 中期目标
- [ ] 机器学习驱动的智能路由
- [ ] 预测性故障检测
- [ ] 自适应负载均衡算法
- [ ] 成本优化自动化
### 长期目标
- [ ] 分布式部署支持
- [ ] 多租户架构
- [ ] 实时数据流处理
- [ ] AI驱动的投资决策支持
## 🤝 贡献指南
1. **Fork** 项目仓库
2. **创建** 功能分支 (`git checkout -b feature/AmazingFeature`)
3. **提交** 更改 (`git commit -m 'Add some AmazingFeature'`)
4. **推送** 到分支 (`git push origin feature/AmazingFeature`)
5. **创建** Pull Request
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 📞 联系方式
- **项目维护者**: 稷下学宫开发团队
- **技术支持**: 通过 GitHub Issues 提交问题
- **文档更新**: 欢迎提交文档改进建议
---
*🏛️ 稷下学宫 - 让智慧的光芒照亮投资的道路*

123
docs/requirements.md Normal file
View File

@@ -0,0 +1,123 @@
# 炼妖壶项目清理与重构需求文档
## 介绍
炼妖壶项目经过长期开发,积累了大量代码和配置文件,但项目结构变得混乱,存在安全隐患(密钥泄露)和维护困难。本规范旨在系统性地清理和重构项目,建立清晰的架构和安全的开发流程。
## 需求
### 需求1项目结构清理
**用户故事:** 作为开发者,我希望项目有清晰的目录结构和文件组织,以便快速理解和维护代码。
#### 验收标准
1. WHEN 查看项目根目录 THEN 应该只包含必要的核心文件和目录
2. WHEN 查看任何目录 THEN 应该有清晰的README说明其用途
3. WHEN 寻找特定功能代码 THEN 应该能在预期的目录中找到
4. WHEN 删除无用文件后 THEN 项目仍能正常运行
5. IF 文件超过6个月未使用 THEN 应该被归档或删除
### 需求2安全配置管理
**用户故事:** 作为开发者,我希望所有密钥和敏感配置都安全管理,不会意外泄露到代码库中。
#### 验收标准
1. WHEN 扫描代码库 THEN 不应该发现任何硬编码的密钥或敏感信息
2. WHEN 开发者需要密钥 THEN 应该从环境变量或Doppler获取
3. WHEN 提交代码 THEN 应该自动检查是否包含敏感信息
4. WHEN 新开发者加入 THEN 应该有清晰的密钥管理指南
5. IF 发现密钥泄露 THEN 应该有自动化的处理流程
### 需求3核心功能保留
**用户故事:** 作为用户我希望在项目重构后所有核心功能AI辩论、数据分析、Streamlit界面仍然可用。
#### 验收标准
1. WHEN 启动Streamlit应用 THEN 应该能正常访问所有功能页面
2. WHEN 运行AI辩论 THEN 应该能正常生成辩论内容
3. WHEN 连接数据库 THEN 应该能正常读写数据
4. WHEN 调用外部API THEN 应该能正常获取响应
5. WHEN 运行测试 THEN 所有核心功能测试应该通过
### 需求4开发体验优化
**用户故事:** 作为开发者,我希望有良好的开发体验,包括清晰的文档、简单的启动流程和有效的调试工具。
#### 验收标准
1. WHEN 新开发者克隆项目 THEN 应该能在10分钟内启动应用
2. WHEN 查看文档 THEN 应该能找到所有必要的设置和使用说明
3. WHEN 遇到问题 THEN 应该有清晰的故障排除指南
4. WHEN 添加新功能 THEN 应该有明确的开发规范可遵循
5. WHEN 部署应用 THEN 应该有自动化的部署流程
### 需求5技术债务清理
**用户故事:** 作为维护者,我希望清理技术债务,移除过时的代码和依赖,提高代码质量。
#### 验收标准
1. WHEN 检查依赖 THEN 不应该有未使用或过时的包
2. WHEN 运行代码分析 THEN 不应该有严重的代码质量问题
3. WHEN 查看代码 THEN 应该有一致的编码风格和注释
4. WHEN 运行性能测试 THEN 应用响应时间应该在可接受范围内
5. IF 发现重复代码 THEN 应该被重构为可复用的模块
### 需求6部署和运维简化
**用户故事:** 作为运维人员,我希望部署和监控应用变得简单可靠。
#### 验收标准
1. WHEN 部署到生产环境 THEN 应该使用一键部署脚本
2. WHEN 应用运行异常 THEN 应该有清晰的日志和监控信息
3. WHEN 需要扩展 THEN 应该支持水平扩展
4. WHEN 备份数据 THEN 应该有自动化的备份策略
5. WHEN 回滚版本 THEN 应该能快速回滚到稳定版本
## 优先级
1. **P0 (紧急)**: 安全配置管理 - 立即解决密钥泄露问题
2. **P1 (高)**: 项目结构清理 - 建立清晰的项目架构
3. **P2 (中)**: 核心功能保留 - 确保重构不影响核心功能
4. **P3 (中)**: 开发体验优化 - 改善开发流程
5. **P4 (低)**: 技术债务清理 - 长期代码质量改进
6. **P5 (低)**: 部署和运维简化 - 运维流程优化
## 迁移策略
鉴于当前项目状态混乱,采用**全新开始**的策略:
1. **文档先行** - 完善所有需求和设计文档
2. **干净迁移** - 在新目录 `/home/ben/liurenchaxin` 重新开始
3. **选择性迁移** - 只迁移核心功能代码,抛弃历史包袱
4. **安全优先** - 从一开始就建立安全的配置管理
## 核心功能清单(需要保留)
### 必须迁移的功能
- 🤖 **稷下学宫AI辩论系统** (八仙辩论)
- 📊 **Streamlit主界面**
- 🔗 **Doppler配置管理**
- 💾 **数据库连接** (PostgreSQL, MongoDB, Zilliz)
- 🔌 **外部API集成** (OpenRouter, Anthropic等)
### 可选迁移的功能
- 📈 **金融数据分析**
- 🔄 **N8N工作流**
- 📱 **MCP服务器**
- 🧪 **实验性功能**
## 成功标准
项目重构成功的标志:
- ✅ 通过GitGuardian安全扫描无密钥泄露
- ✅ 项目目录结构清晰,符合最佳实践
- ✅ 所有核心功能正常工作
- ✅ 新开发者能在10分钟内启动项目
- ✅ 代码质量评分达到B级以上
- ✅ 部署时间缩短到5分钟以内
- ✅ 完全摆脱历史技术债务