Skip to content

Repository files navigation

AI4Sec logo

AI4Sec · 本地 AI 论文研究工作台

面向安全与 AI 研究的本地论文工作台,覆盖论文导入、PDF 解析、证据化精读、跨论文检索、知识卡片、综合发现、写作导出和知识库同步。

English README

当前能力

  • 论文导入与解析:上传 PDF 或从每日推荐导入论文,使用 MinerU 解析正文、公式、表格、图片和补充材料,并保存到本地 SQLite 与文件目录。
  • 四类分析工作流:Insight Snap 做快速价值判断,Logic Lens 做结构化深读,Research Sphere 扩展引用/相关工作图谱,Smart Q&A 自动判断问题并路由到摘要、深读、图谱或单篇问答。
  • 证据化知识资产:从分析结果生成 claim、method、dataset、metric、result、limitation、question、writing snippet 等知识卡片,保留页码、片段和来源关系。
  • 本地论文库与知识空间:管理论文元数据、分组、阅读状态、笔记、批注、AI review marks、Dify 同步状态,并把不同知识空间绑定到不同 Dify dataset。
  • 每日 arXiv 推荐:按主题抓取候选论文,打分、翻译、反馈、导入、提升到知识空间,并可直接启动后续分析。
  • 跨论文检索与综合:基于本地图谱和可选 Dify RAG 做语料检索、跨论文问答、问答历史复用与删除、冲突关系发现、研究 gap 候选和综合卡片沉淀。
  • 写作与导出:从已确认卡片生成 related work/method/experiment/limitation 片段,生成论文对比表;导出以复制为主,必要时下载 Markdown、Obsidian、BibTeX、RIS、Zotero CSL JSON。
  • 运行维护:提供 LLM 运行时设置、模型连通性测试、DeepLX 翻译、健康检查、缓存清理、限流和公开发布检查。

页面入口

页面 用途
/upload 上传 PDF 并创建论文记录
/daily 每日推荐、反馈、导入和提升
/papers 论文列表、分析入口、最近运行和 PDF 查看
/library 本地论文库、分组、状态、同步、跨库问答和历史记录管理
/knowledge 知识卡片、批量审核、合并和去重
/synthesis 综合卡、冲突关系、研究 gap 看板和批量构建
/writing 草稿合成、对比表和复制优先的外部导出
/knowledge-spaces 知识空间、dataset 绑定和 Dify 文档管理
/translate DeepLX 文本翻译
/health 解析、同步、知识资产和索引健康检查
/settings LLM Base URL、模型、API Key 和 reasoning effort

架构

服务 技术栈 默认端口 说明
frontend Next.js 15 / React 19 / Tailwind 3001 Web UI、PDF 查看、SSE 运行状态和 API 代理
backend FastAPI / LangGraph / SQLite 8001 论文解析、LLM 工作流、知识资产、检索、导出和健康检查
dify-proxy FastAPI 3002 可选服务,把 Dify Dataset API Key 留在服务端

默认只需要 frontendbackend。启用跨论文 RAG、Dify 文档同步或知识空间 dataset 绑定时,再启动 dify-proxy

快速启动

需要 Docker 24+ 和 Docker Compose 2.20+。

git clone https://github.com/NewWr/ai4sec.git
cd ai4sec
./scripts/ai4sec_config.sh init

init 会复制 .env.example,并只为缺失的 APP_ACCESS_PASSWORDAPP_ACCESS_SESSION_SECRETBACKEND_INTERNAL_API_TOKENDIFY_PROXY_TOKEN 生成四个相互独立的安全随机值;重复执行不会覆盖已有值。

编辑 .env,填写实际使用的 LLM 与 MinerU 配置:

LLM_BASEURL=https://api.openai.com/v1
LLM_APIKEY=
THINKING_MODELNAME=
MINERU_TOKEN=

如果不使用本机代理,请清空 AI4SEC_BACKEND_PROXY;如果使用本机代理,保持为实际代理地址。

./start_ai4sec.sh

启动前会一次性检查全部必需配置。默认 minimal profile 只构建并启动 backend frontend,不要求 Dify checkout、Dify 网络或 Dify API。

访问:

停止服务:

docker compose --profile dify down

运行数据保存在 ./docker-data/,该目录不会提交到 Git。

配置 Dify RAG

dify-rag/ 是本地开发目录,不随本项目发布。公开部署时请单独部署 Dify,再让 AI4Sec 通过 dify-proxy 访问 Dify Dataset API。

示例:

git clone https://github.com/langgenius/dify.git dify-rag
cd dify-rag/docker
cp .env.example .env
docker compose up -d

在 AI4Sec 的 .env 中配置:

DIFY_DOCKER_NETWORK=docker_default
DIFY_API_BASE=http://dify-proxy:3002
DIFY_BASE_URL=http://nginx
DIFY_DATASET_API_KEY=
DIFY_DEFAULT_DATASET_ID=
DIFY_ANALYSIS_DATASET_ID=
DIFY_SEARCH_METHOD=keyword_search

当 Dify 由其他部署工具管理时,保持 AI4SEC_DIFY_COMPOSE_FILE= 为空。需要由 AI4Sec 启动本地 Dify checkout 时,配置仓库相对路径:

AI4SEC_DIFY_COMPOSE_FILE=dify-rag/docker/docker-compose.yaml
AI4SEC_DIFY_PROFILES=postgresql,weaviate,collaboration
AI4SEC_DIFY_PUBLIC_URL=http://127.0.0.1:3080

启动完整服务:

./start_ai4sec.sh dify

dify profile 会启动 dify-proxy backend frontend;只有 AI4SEC_DIFY_COMPOSE_FILE 非空时才会额外启动该 Dify Compose 栈。文档同步由 backend 的 durable outbox worker 唯一执行,真实 Dataset API Key 只注入 dify-proxy

检查集成状态:

curl http://localhost:3002/health
curl http://localhost:8001/api/system/health

两个公开健康端点成功后,可从前端知识库页面检查已认证的 Dify 集成状态。

常用配置

变量 作用
LLM_BASEURL / LLM_APIKEY / THINKING_MODELNAME OpenAI 兼容 LLM 地址、密钥和可选模型列表,多个模型用逗号分隔
MINERU_TOKEN PDF 解析必需
EASYSCHOLAR_SECRET_KEY / TAVILY_KEY 期刊/会议分级和 Web 兜底检索
UNPAYWALL_EMAIL / CORE_API_KEY / ELSEVIER_API_KEY / WILEY_TDM_TOKEN Research Sphere 参考文献全文获取
DIFY_* Dify RAG、同步和知识空间 dataset 绑定
DEEPLX_API_BASE / DEEPLX_API_KEY 翻译页面和每日推荐翻译
DAILY_RECOMMENDATION_* 每日推荐主题、数量、阈值、自动刷新时间和目标知识空间
AUTO_KNOWLEDGE_CARDS_ENABLED 是否允许在知识卡片页手动构建研究方向卡片
RESEARCH_DISCOVERY_LLM_VERIFY_ENABLED 是否用 LLM 复核跨论文关系候选
DOCUMENT_PARTITION_ENABLED / SUPPLEMENTARY_INDEX_ENABLED 大文档分段和补充材料索引
APP_ACCESS_PASSWORD / APP_ACCESS_SESSION_SECRET 前端功能页访问密码和会话签名密钥;首页仍公开
BACKEND_INTERNAL_API_TOKEN 前端服务端代理访问后端的内部凭据,不得使用 NEXT_PUBLIC_* 变量
ADMIN_API_TOKEN 保护 /api/admin/* 和运行时设置写入接口
ENABLE_DOCS=false 生产环境关闭 Swagger/OpenAPI

完整变量见 .env.example

本地开发

后端:

cd backend
uv sync
BACKEND_INTERNAL_API_TOKEN="dev-internal-token" \
uv run uvicorn app.main:app --reload --port 8000
uv run pytest

前端:

cd frontend
npm install
BACKEND_URL="http://127.0.0.1:8000" \
BACKEND_INTERNAL_API_TOKEN="dev-internal-token" \
APP_ACCESS_PASSWORD="dev-password" \
APP_ACCESS_SESSION_SECRET="dev-session-secret" \
npm run dev
npm run build

生产构建不读取运行时密码或 session secret。部署契约检查可直接运行 ./scripts/test_deployment_config.sh

项目结构

ai4sec/
├── backend/          # FastAPI、LangGraph 工作流、SQLite、PDF/LLM/Dify/知识资产服务
├── frontend/         # Next.js 页面、组件、PDF 查看和 API 客户端
├── dify-proxy/       # 可选 Dify Dataset API 代理
├── docs/             # 发布与部署说明
├── scripts/          # 配置预检、部署契约和公开发布检查脚本
├── start_ai4sec.sh   # 默认最小启动;显式 dify profile 启动可选代理/栈
├── docker-compose.yml
└── .env.example

隐私与公开发布

不要提交 .envdocker-data/.local-dev-data/backend/data/dify-rag/ai4sec-dify-sync/state/*.db、PDF、数据库、解析产物或任何 API Key。使用以下命令构建公开发布产物:

scripts/export_public_release.sh --output /tmp/ai4sec-public

导出产物只有一个干净提交,并会自动执行发布扫描;它保留当前工作树源码,但不复制既有 Git 历史。

许可证

本项目以 MIT License 开源。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages