Initial project setup: Obsidian intelligent journal organizer

- Add core agent architecture with Command + Skill pattern
- Implement Claude API integration for content analysis
- Add Obsidian REST API integration for vault operations
- Create conversational interface (v2.0) with natural language processing
- Add comprehensive configuration management and validation
- Include project documentation and developer guides
- Set up testing framework with unit, integration, and property tests
- Add Kiro specs for Claude API configuration and code quality improvements
- Configure project steering files for development guidelines
This commit is contained in:
windyboy
2025-12-31 17:55:10 +08:00
parent 3200ad3dd5
commit f7e54692a9
67 changed files with 23088 additions and 0 deletions
+581
View File
@@ -0,0 +1,581 @@
# Claude API 配置指南
本指南详细介绍如何配置和使用 Claude API 的增强功能,包括自定义 API 端点、模型选择和环境变量管理。
## 概述
Claude API 配置系统支持以下增强功能:
- **自定义 API 端点**:支持代理服务器、区域端点和自定义部署
- **灵活的模型选择**:支持所有当前 Claude 模型和自动迁移
- **环境变量集成**:完整的环境变量支持和默认值处理
- **向后兼容性**:自动迁移旧配置格式
- **全面的错误处理**:详细的错误消息和修复建议
## 基本配置
### 最小配置
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
```
系统将自动使用以下默认值:
- `api_url`: `https://api.anthropic.com`
- `model`: `claude-3-5-sonnet-20241022`
- `max_tokens`: `4096`
- `temperature`: `0.7`
### 完整配置示例
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
api_url: "https://api.anthropic.com"
model: "claude-3-5-sonnet-20241022"
max_tokens: 4096
temperature: 0.7
```
## API 端点配置
### 官方 API 端点
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
api_url: "https://api.anthropic.com" # 默认官方端点
```
### 代理服务器配置
#### 企业代理服务器
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
api_url: "https://claude-proxy.company.com"
```
#### 带端口的代理服务器
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
api_url: "https://proxy.example.com:8080"
```
#### 内部 API 网关
```yaml
claude:
api_key: "${COMPANY_CLAUDE_KEY}"
api_url: "https://api-gateway.internal:8443/claude"
```
### 本地开发环境
#### HTTP 本地端点
```yaml
claude:
api_key: "local-dev-key"
api_url: "http://localhost:3128"
```
#### HTTPS 本地端点
```yaml
claude:
api_key: "local-dev-key"
api_url: "https://localhost:8080"
```
**注意**:本地 HTTPS 端点会自动禁用 SSL 证书验证。
### 区域端点(如果可用)
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
api_url: "https://api-eu.anthropic.com" # 欧洲端点
```
## 模型配置
### 支持的模型
#### 当前推荐模型
```yaml
claude:
model: "claude-3-5-sonnet-20241022" # 最新最强,推荐用于生产
```
#### 所有支持的模型
```yaml
# Claude 3.5 系列(最新)
model: "claude-3-5-sonnet-20241022" # 最强性能
model: "claude-3-5-haiku-20241022" # 快速响应
# Claude 3 系列
model: "claude-3-opus-20240229" # 最强推理能力
model: "claude-3-sonnet-20240229" # 平衡性能和成本
model: "claude-3-haiku-20240307" # 最快最经济
# 最新别名(自动使用最新版本)
model: "claude-3-5-sonnet-latest"
model: "claude-3-5-haiku-latest"
model: "claude-3-opus-latest"
model: "claude-3-sonnet-latest"
model: "claude-3-haiku-latest"
```
### 模型选择建议
#### 生产环境
```yaml
claude:
model: "claude-3-5-sonnet-20241022" # 最佳性能
max_tokens: 4096
temperature: 0.7
```
#### 开发和测试
```yaml
claude:
model: "claude-3-haiku-20240307" # 快速且经济
max_tokens: 2048
temperature: 0.5
```
#### 复杂分析任务
```yaml
claude:
model: "claude-3-opus-20240229" # 最强推理能力
max_tokens: 8192
temperature: 0.3
```
### 自动模型迁移
系统会自动迁移旧的模型名称:
```yaml
# 旧配置(自动迁移)
model: "claude-3-sonnet" # → claude-3-sonnet-20240229
model: "claude-3-opus" # → claude-3-opus-20240229
model: "claude-3-haiku" # → claude-3-haiku-20240307
model: "sonnet" # → claude-3-5-sonnet-20241022
model: "opus" # → claude-3-opus-20240229
model: "haiku" # → claude-3-haiku-20240307
```
## 环境变量配置
### 基本环境变量
#### 必需的环境变量
```bash
# Claude API 密钥(必需)
export ANTHROPIC_API_KEY="sk-ant-your-api-key-here"
```
#### 可选的环境变量
```bash
# 自定义 API 端点
export CLAUDE_API_URL="https://api.anthropic.com"
# 自定义模型
export CLAUDE_MODEL="claude-3-5-sonnet-20241022"
# 自定义参数
export CLAUDE_MAX_TOKENS="4096"
export CLAUDE_TEMPERATURE="0.7"
```
### 环境变量语法
#### 基本语法
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}" # 必需变量
api_url: "${CLAUDE_API_URL}" # 可选变量
```
#### 带默认值的语法
```yaml
claude:
api_url: "${CLAUDE_API_URL:-https://api.anthropic.com}"
model: "${CLAUDE_MODEL:-claude-3-5-sonnet-20241022}"
max_tokens: "${CLAUDE_MAX_TOKENS:-4096}"
temperature: "${CLAUDE_TEMPERATURE:-0.7}"
```
#### 带错误消息的语法
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY:?请设置 ANTHROPIC_API_KEY 环境变量}"
```
### 环境变量管理
#### 使用 .env 文件
```bash
# 创建 .env 文件
cat > .env << EOF
ANTHROPIC_API_KEY=sk-ant-your-api-key-here
CLAUDE_API_URL=https://api.anthropic.com
CLAUDE_MODEL=claude-3-5-sonnet-20241022
CLAUDE_MAX_TOKENS=4096
CLAUDE_TEMPERATURE=0.7
EOF
# 加载环境变量
set -a; source .env; set +a
```
#### 永久设置环境变量
```bash
# 添加到 shell 配置文件
echo 'export ANTHROPIC_API_KEY="sk-ant-your-api-key-here"' >> ~/.bashrc
echo 'export CLAUDE_API_URL="https://api.anthropic.com"' >> ~/.bashrc
# 重新加载配置
source ~/.bashrc
```
## 高级配置
### 参数调优
#### 最大 Token 数配置
```yaml
claude:
max_tokens: 1024 # 短回复,快速响应
max_tokens: 4096 # 标准回复(推荐)
max_tokens: 8192 # 长回复,详细分析
max_tokens: 16384 # 超长回复,复杂任务
```
#### 温度参数配置
```yaml
claude:
temperature: 0.0 # 最确定的输出
temperature: 0.3 # 较确定,适合分析任务
temperature: 0.7 # 平衡创造性和一致性(推荐)
temperature: 1.0 # 最有创造性的输出
```
### 多环境配置
#### 开发环境
```yaml
claude:
api_key: "${DEV_CLAUDE_KEY}"
api_url: "${DEV_CLAUDE_URL:-https://dev-api.example.com}"
model: "claude-3-haiku-20240307" # 快速且经济
max_tokens: 2048
temperature: 0.0 # 确定性输出用于测试
```
#### 生产环境
```yaml
claude:
api_key: "${PROD_CLAUDE_KEY}"
api_url: "https://api.anthropic.com"
model: "claude-3-5-sonnet-20241022" # 最佳性能
max_tokens: 4096
temperature: 0.7
```
#### 测试环境
```yaml
claude:
api_key: "${TEST_CLAUDE_KEY}"
api_url: "${TEST_CLAUDE_URL:-https://test-api.example.com}"
model: "claude-3-haiku-20240307"
max_tokens: 1024
temperature: 0.0
```
## 配置验证
### 验证配置文件
```bash
# 检查配置文件语法
python -c "
import yaml
with open('config.yaml', 'r') as f:
config = yaml.safe_load(f)
print('配置文件语法正确')
"
```
### 验证环境变量
```bash
# 检查必需的环境变量
echo "ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-(未设置)}"
echo "CLAUDE_API_URL: ${CLAUDE_API_URL:-(使用默认值)}"
echo "CLAUDE_MODEL: ${CLAUDE_MODEL:-(使用默认值)}"
```
### 测试配置加载
```python
# 测试完整配置加载
from config import Config
try:
config = Config('config.yaml')
print('✅ 配置加载成功')
print(f'API URL: {config.claude.api_url}')
print(f'Model: {config.claude.model}')
print(f'Max Tokens: {config.claude.max_tokens}')
print(f'Temperature: {config.claude.temperature}')
except Exception as e:
print(f'❌ 配置错误: {e}')
```
## 故障排除
### 常见错误和解决方案
#### API 密钥格式错误
```
ClaudeAPIKeyError: Claude API key should start with 'sk-ant-'
```
**解决方案**
- 确保 API 密钥以 `sk-ant-` 开头
- 检查密钥长度(应该超过 50 个字符)
- 从 https://console.anthropic.com/ 获取正确的密钥
#### API URL 格式错误
```
ClaudeAPIURLError: Invalid URL format: not-a-url
```
**解决方案**
- 使用完整的 URL,包括协议(http:// 或 https://
- 检查 URL 格式是否正确
- 确保端点可访问
#### 模型名称无效
```
ClaudeModelValidationError: Invalid model name: invalid-model
```
**解决方案**
- 使用支持的模型名称
- 检查模型名称拼写
- 参考本文档的模型列表
#### 环境变量未设置
```
EnvironmentVariableError: Environment variable 'ANTHROPIC_API_KEY' is not set
```
**解决方案**
- 设置必需的环境变量
- 检查环境变量名称拼写
- 使用带默认值的语法
### 调试技巧
#### 启用详细日志
```bash
python -m journal_organizer --log-level DEBUG organize
```
#### 检查配置值
```python
from config import Config
config = Config('config.yaml')
print(f'实际配置值:')
print(f' API Key: {"已设置" if config.claude.api_key else "未设置"}')
print(f' API URL: {config.claude.api_url}')
print(f' Model: {config.claude.model}')
```
## 最佳实践
### 安全最佳实践
1. **使用环境变量存储敏感信息**
```yaml
# ✅ 推荐
api_key: "${ANTHROPIC_API_KEY}"
# ❌ 不推荐
api_key: "sk-ant-actual-key-here"
```
2. **设置适当的文件权限**
```bash
chmod 600 config.yaml
```
3. **使用 .gitignore 保护配置文件**
```bash
echo "config.yaml" >> .gitignore
echo ".env" >> .gitignore
```
### 性能最佳实践
1. **选择合适的模型**
- 生产环境:`claude-3-5-sonnet-20241022`
- 开发测试:`claude-3-haiku-20240307`
- 复杂任务:`claude-3-opus-20240229`
2. **优化参数设置**
- 根据任务调整 `max_tokens`
- 根据需求设置 `temperature`
3. **使用连接池和重试机制**
- 系统自动处理连接管理
- 内置错误重试机制
### 维护最佳实践
1. **定期更新配置**
- 检查新的模型版本
- 更新 API 端点配置
2. **监控配置变化**
- 记录配置迁移
- 验证配置更新
3. **备份重要配置**
```bash
cp config.yaml config.yaml.backup
```
## 示例配置
### 企业环境完整配置
```yaml
# 企业环境 Claude API 配置
claude:
# 使用企业 API 密钥
api_key: "${COMPANY_CLAUDE_KEY:?请设置企业 Claude API 密钥}"
# 使用企业代理服务器
api_url: "${CLAUDE_PROXY_URL:-https://claude-proxy.company.com}"
# 使用最新最强模型
model: "${CLAUDE_MODEL:-claude-3-5-sonnet-20241022}"
# 企业级参数设置
max_tokens: "${CLAUDE_MAX_TOKENS:-8192}"
temperature: "${CLAUDE_TEMPERATURE:-0.5}"
# 企业环境变量设置
# export COMPANY_CLAUDE_KEY="sk-ant-company-key-here"
# export CLAUDE_PROXY_URL="https://claude-proxy.company.com"
# export CLAUDE_MODEL="claude-3-5-sonnet-20241022"
# export CLAUDE_MAX_TOKENS="8192"
# export CLAUDE_TEMPERATURE="0.5"
```
### 开发环境完整配置
```yaml
# 开发环境 Claude API 配置
claude:
# 使用个人 API 密钥
api_key: "${ANTHROPIC_API_KEY:?请设置 ANTHROPIC_API_KEY 环境变量}"
# 可选择使用本地代理或官方 API
api_url: "${CLAUDE_API_URL:-https://api.anthropic.com}"
# 开发环境使用快速模型
model: "${CLAUDE_MODEL:-claude-3-haiku-20240307}"
# 开发环境参数设置
max_tokens: "${CLAUDE_MAX_TOKENS:-2048}"
temperature: "${CLAUDE_TEMPERATURE:-0.0}"
# 开发环境变量设置
# export ANTHROPIC_API_KEY="sk-ant-your-personal-key"
# export CLAUDE_API_URL="https://api.anthropic.com"
# export CLAUDE_MODEL="claude-3-haiku-20240307"
# export CLAUDE_MAX_TOKENS="2048"
# export CLAUDE_TEMPERATURE="0.0"
```
## 更新和迁移
### 从旧版本迁移
系统会自动检测和迁移旧配置:
1. **检查是否需要迁移**
```python
from configuration_migrator import ConfigurationMigrator
migrator = ConfigurationMigrator()
with open('config.yaml', 'r') as f:
config = yaml.safe_load(f)
if migrator.check_migration_needed(config):
print('配置需要迁移')
preview = migrator.get_migration_preview(config)
for change in preview:
print(f' - {change}')
```
2. **执行迁移**
```python
migrated_config = migrator.migrate_configuration(config)
with open('config.yaml', 'w') as f:
yaml.dump(migrated_config, f, default_flow_style=False)
```
### 配置更新检查清单
- [ ] API 密钥是否有效
- [ ] API 端点是否可访问
- [ ] 模型名称是否支持
- [ ] 环境变量是否正确设置
- [ ] 配置文件权限是否安全
- [ ] 备份是否已创建
## 支持和帮助
如果遇到配置问题:
1. 查看 [TROUBLESHOOTING.md](TROUBLESHOOTING.md) 获取详细的故障排除指南
2. 检查日志文件中的错误信息
3. 验证环境变量和配置文件格式
4. 测试网络连接和 API 访问
更多信息请参考项目文档和示例配置文件。