雅典娜认知引擎
一个全面的法律工作流程自动化系统,具有电子邮件管理、案件跟踪、自主人工智能代理和用于智能文档处理和法律分析的模型上下文协议(MCP)服务器。
特性
电子邮件管理
- 自动接收和分类电子邮件
- 基于人工智能的电子邮件分类与实体提取
- 附件提取和处理
- 电子邮件到案例链接和跟踪
- 从Athena认知引擎MCP直接执行Microsoft Graph邮箱操作
- 实时邮箱读取权限 - 发送、回复和回复全部 - 将邮件标记为重要/读为未读 - 请求读取和交付收据 - 附加Athena通过MCP文档ID生成的文档
- **HTML电子邮件以原始RFC-5322 MIME(UTF-8+base64)的形式发送
multipart/alternative)** 通过Graph /sendMail,绕过Exchange 默认Windows-1252+引用可打印重新编码,有些严格 收件人邮件卫生用具条(空白正文投递)。这 原始MIME路径自动用于HTML发送和回复,而无需 附件;带附件的发送和纯文本发送仍然使用 草稿+附件+发送流程。回复流保留 In-Reply-To / References 线程和Exchange格式的引用原件。 共享实施存在于 graph_mail.py 并且是 被...使用 mcp服务器/mcp_server_v2.py, email_api.py,以及 代理/电子邮件util.py.
- 优先邮件到达时的短信提醒 --Telnyx短信到威廉的手机
当新的入站电子邮件与VIP过滤器(法院、对方律师等)匹配时, 医疗提供者、特定联系人、, importance=high,紧急关键字)。 调度员强制执行安静时间(太平洋时间晚上10点至早上7点),5分钟的限速, 批处理会突然变成一条短信。请参阅 telnyx_sms.py, 电子邮件通知.py,以及 _deliver_sms_batch 在 notification_service.py.
案件管理
- 法律案件跟踪和组织
- 每日简报的战略案例分析
- 文档关系映射
MCP服务器
- 法律案件MCP服务器(OAuth 2.0安全)
- 病历MCP服务器
- 无纸化NGX集成
- Word/DOCX代理、iMessage代理、调查员MCP
权限管理内容(Microsoft权限/AIP)
用于Microsoft RMS加密电子邮件和AIP保护的服务器端解密管道 Debian上的文件——不需要Outlook。手柄 .rpmsg 包装和AIP PDF/Office文档嵌套在其中,包括由发布的跨租户内容 您是有效收件人的外部租户。看 PURVIEW_DECRYPT.md.
多提供商LLM路由
该平台使用具有自动故障转移功能的智能模型路由器:
| 优先级 | 提供商 | 型号 | 授权 | 最适合 |
|---|---|---|---|---|
| 1 | 人类API | Haiku 4.5、Sonnet 4.6、Opus 4.6 | API关键 | 快速、经济高效 |
| 2 | Claude Code CLI | 俳句、十四行诗、作品 | 最大订阅量(OAuth) | 零成本回退 |
| 3 | OpenAI | GPT-5.4、GPT-5.2编解码器 | API密钥 | 复杂任务 |
| 4 | Ollama | 电话3.2:3b | 本地 | 私人/离线 |
- 任务感知路由(分流、法律、医疗、代码、推理)
- 每个供应商的断路器都有自动恢复功能
- 隐私意识:敏感PII查询的本地模式
- 看 model_router.py 用于配置
智能代理(13个代理车队)
所有代理都通过运行 wdws-agents systemd服务,由cron表达式调度,具有并发限制和基于优先级的调度。
| 代理 | 优先级 | 日程安排 | 角色 |
|---|---|---|---|
| 编排器 | P0 | */5 min | 车队经理——验证调查结果、解决冲突、升级 |
| 雅典娜 | P1 | */10 min | 自主推理——LLM驱动的决策、模式迁移、代码补丁 |
| 代码医生 | P1 | */10 min | 自动修复——诊断故障,通过Codex生成修复程序 |
| 看门狗 | P1 | */2 min | 系统监视器——CPU/内存/磁盘、日志扫描、服务运行状况、Cloudflare隧道 |
| 每日摘要 | P2 | 7 AM | 通知聚合器——每日一封电子邮件(周一的每周记分卡) |
| 安全哨兵 | P2 | */10 min | OAuth/PII扫描器——访问模式、威胁检测、未知客户端警报 |
| 自愈 | P2 | 4 AM +按需 | 自动修复-杀死卡住的连接,重新启动服务,清理孤儿 |
| 数据库管理员 | P2 | 3 AM | 数据库管理员--膨胀/VACUUM、索引分析、模式漂移、查询终止 |
| 数据质量 | P3 | */6 hr | 数据完整性——缺少嵌入、OCR错误、重复、孤立记录 |
| 质量评估 | P3 | */12 hr | RAG评估——检索评分、PII安全检查、回归检测 |
| 案例策略 | P4 | 6 AM | 法律情报----交叉案件分析、政党摸底、晨间简报 |
| 保留 | P4 | Sun 3 AM | 数据治理——清除过期的运营数据、PII检测、诉讼搁置 |
| 查询洞察 | P5 | */8 hr | MCP分析——工具使用模式、搜索质量评分 |
代理基础结构:
- framework.py --基类、LLM与多提供者回退的集成、数据库池、结构化日志记录
- run.py --带有cron+croniter的调度器、并发控制、@note唤醒的通知监视器
- 可靠性.py --断路器,指数回退重试,速率限制
- model_router.py --具有任务分类和回退链的多提供商LLM路由
- config.py --所有配置来自
/opt/wdws/.env
仪表盘
- 实时案例和电子邮件监控
- 与AI代理的交互式聊天界面
- 文档搜索和检索
- 系统状态和健康监测
建筑
/opt/wdws/
├── agents/ # AI agent framework and 13 agent implementations
│ ├── framework.py # BaseAgent, RunContext, LLM helpers with fallback
│ ├── run.py # Scheduler daemon (systemd: wdws-agents)
│ ├── config.py # Environment configuration
│ ├── reliability.py # Circuit breakers, retry, rate limiting
│ └── agent_*.py # Individual agent implementations
├── model_router.py # Multi-provider LLM router (Anthropic, Claude CLI, OpenAI, Ollama)
├── dashboard/ # Web dashboard (systemd: wdws-dashboard, port 9100)
├── mcp-server/ # Main MCP server (systemd: wdws-mcp, port 9200)
├── mcp-servers/ # Specialized MCP servers
│ └── paperless-ngx/ # Paperless-NGX integration
├── docx-proxy/ # Document proxy service
├── imessage-proxy/ # iMessage integration proxy
├── migrations/ # Database schema migrations (PostgreSQL 17 + pgvector)
├── data/ # Data storage (cases, emails, medical records)
└── patches/ # System patches and utilities先决条件
- Python 3.11+
- PostgreSQL 17,带pgvector扩展
- 至少配置了一个LLM提供程序(请参阅环境变量)
- Claude Code CLI(用于Max订阅回退--
pip install claude-code) - nginx(用于代理)
环境变量
创建一个 .env 项目根目录中的文件:
# Database (required)
DATABASE_URL=postgresql://user:password@localhost:5432/wdws
# LLM Providers (at least one required)
OPENAI_API_KEY=sk-... # OpenAI — primary provider
ANTHROPIC_API_KEY=sk-ant-... # Anthropic — fallback provider
# Claude Code CLI uses Max subscription OAuth — no key needed
# LLM Model Configuration
AGENT_LLM_MODEL=gpt-5.4 # Default model
AGENT_LLM_MODEL_HIGH=gpt-5.4 # High-risk tasks (legal, medical)
AGENT_LLM_MODEL_LOW=gpt-5.4 # Low-risk tasks (triage, routing)
AGENT_LLM_MODEL_CODEX=gpt-5.2-codex # Code generation
AGENT_LLM_ROUTING_ENABLED=true # Enable task-aware model routing
# Agent Configuration
AGENT_MAX_CONCURRENT=3 # Max agents running simultaneously
AGENT_TICK_SECONDS=30 # Scheduler tick interval
AGENT_RUN_TIMEOUT_SECONDS=900 # Max agent run time (15 min)
# Microsoft Graph API (email notifications)
GRAPH_TENANT_ID=your_tenant_id
GRAPH_CLIENT_ID=your_client_id
GRAPH_CLIENT_SECRET=your_client_secret
GRAPH_SENDER_EMAIL=athena@yourdomain.com
# Optional override for AI-drafted email composition in the MCP server
ATHENA_EMAIL_DRAFT_MODEL=gpt-5.4
# Alerts
ALERT_EMAIL=you@yourdomain.com
# Server
MCP_PORT=9200
DASHBOARD_PORT=9100安装
- 克隆存储库:
git clone https://github.com/wjnelson78/wdws.git
cd wdws- 安装Python依赖项:
pip install -r agents/requirements.txt
pip install -r requirements-chat.txt- 设置数据库:
psql -U postgres -f migrations/001_enterprise_schema.sql
# Apply subsequent migrations in order (002, 003, ...)- 配置环境变量(见上文)
用法
启动代理系统
# Systemd (recommended — runs as daemon)
sudo systemctl start wdws-agents
sudo systemctl status wdws-agents
# Or manually
cd agents && python run.py
# Run a single agent once (testing)
cd agents && python run.py --once watchdog
# Show fleet status
cd agents && python run.py --status启动仪表板
sudo systemctl start wdws-dashboard
# Or: cd dashboard && python app.py启动MCP服务器
sudo systemctl start wdws-mcp
# Or: cd mcp-server && python mcp_server_v2.py --http --port 9200原始文档传输(首选二进制文件)
对于较大的文档和附件,更喜欢Graph风格的原始HTTP传输流,而不是base64有效载荷。
通过Athena MCP工具控制平面:
create_document_upload_session(...)返回aupload_urlcreate_document_download_session(document_id=...)返回adownload_urldownload_original_document(...)仍然可用作读取的base64回退
通过原始HTTP的数据平面:
- 上传至
PUT到upload_url和一个Content-Range头球 - 轮询上传状态
GET upload_url - 取消与的上载会话
DELETE upload_url - 使用下载原始字节
GET download_url - 继续/部分阅读
Range: bytes=...
默认服务器限制:
- 最大文件大小:
100 MiB - 最大上传块大小:
4 MiB - 上传会话TTL:
3600s - 下载会话TTL:
900s
快速示例:
# Upload raw bytes to an existing session URL
curl -X PUT "$UPLOAD_URL" \
-H "Content-Range: bytes 0-1048575/7340032" \
--data-binary @chunk.bin
# Check upload status
curl "$UPLOAD_URL"
# Download the full file
curl -L "$DOWNLOAD_URL" -o output.bin
# Download just the first KiB
curl -L "$DOWNLOAD_URL" -H "Range: bytes=0-1023" -o first-kib.bin原始HTTP侧通道包含一个小助手:
python mcp-server/raw_transfer_client.py upload --upload-url "$UPLOAD_URL" --file ./report.pdf
python mcp-server/raw_transfer_client.py status --upload-url "$UPLOAD_URL"
python mcp-server/raw_transfer_client.py download --download-url "$DOWNLOAD_URL" --output ./report.pdf
python mcp-server/raw_transfer_client.py head --download-url "$DOWNLOAD_URL"还有一个完整的端到端示例,它使用真实的MCP控制平面来 首先创建会话,然后自动执行原始HTTP传输。 它需要一个具有正确作用域的承载令牌(read 对于下载, write 用于上传):
export MCP_ACCESS_TOKEN="..."
# Upload via MCP + raw HTTP
python mcp-server/mcp_transfer_client.py upload \
--endpoint http://127.0.0.1:9200/mcp/sse \
--transfer-base-url http://127.0.0.1:9200 \
--file ./report.pdf \
--domain operations \
--compute-sha256
# Download via MCP + raw HTTP
python mcp-server/mcp_transfer_client.py download \
--endpoint http://127.0.0.1:9200/mcp/sse \
--transfer-base-url http://127.0.0.1:9200 \
--document-id "$DOCUMENT_ID" \
--output ./report-copy.pdf \
--overwrite
# Upload, download, and verify the bytes match
python mcp-server/mcp_transfer_client.py roundtrip \
--endpoint http://127.0.0.1:9200/mcp/sse \
--transfer-base-url http://127.0.0.1:9200 \
--file ./sample.txt \
--output ./sample.out.txt \
--domain operations \
--compute-sha256 \
--overwrite为什么 --transfer-base-url?Athena可能会根据以下内容为公共传输网址做广告 MCP_BASE_URL。当您直接在本地服务器上进行测试时 9200, 该标志将返回的会话URL重写为本地基,同时保留 这 /transfer/... 路径和令牌。
传输+邮件工具的OAuth范围说明
create_document_upload_session(...)邮件发送/更新工具需要write范围。create_document_download_session(...)要求read范围。- 可信任的第一方MCP客户端,如Claude Desktop和ChatGPT,将获得
在授权/刷新期间设置完整的注册范围,这样重新连接就不会静默 将它们降级为只读访问。
- 如果连接器仍在使用在此修复之前生成的旧令牌,请重新连接或
重新授权一次,以领取更正后的范围授权。
系统化服务
| 服务 | 端口 | 描述 |
|---|---|---|
wdws-agents | -- | 代理舰队调度守护程序 |
wdws-mcp | 9200 | 主MCP服务器(OAuth安全) |
wdws-dashboard | 9100 | 网络仪表板 |
wdws-docx-proxy | -- | 文档代理 |
wdws-imessage-proxy | -- | iMessage代理 |
wdws-word-mcp | -- | Word/DOCX MCP服务器 |
wdws-investigator-mcp | -- | 调查员MCP服务器 |
wdws-paperless-mcp | -- | 无纸化NGX MCP服务器 |
安全
- 永不承诺
.env文件或版本控制的API密钥 - 在MCP服务器上使用client_secret_post验证的OAuth 2.0
- Athena电子邮件MCP操作所需的Microsoft Graph应用程序权限:
- Mail.Send --发送新邮件并发送回复草稿 - Mail.ReadWrite --读取实时邮箱内容、创建回复草稿、添加附件和更新邮件元数据
- 该系统处理敏感的法律和医疗(HIPAA)信息
- Security Sentinel代理监控访问模式和PII暴露
- Retention agent执行诉讼搁置和数据治理
- 在生产环境中使用HTTPS(配置了Cloudflare隧道)
许可证
专有-保留所有权利
支持
如有疑问,请联系开发团队。
