基于 LangChain + MCP + Obsidian + Playwright 的本地全能自主智能体。
本项目旨在构建一个高度本地化、私有化的“第二大脑”与“影子员工”,不仅能实现知识的全自动管理,更能自主执行复杂的办公任务(文档解析、模板生成、表单填报、浏览器自动化等)。
系统现已从"被动记录者"升级为"主动思考伙伴",提供5大认知增强能力:
- 🔗 思想连接者 (The Connector): 自动发现笔记之间的异质连接,将孤立知识编织成网络
- 🧠 批判性思考伙伴 (The Devil's Advocate): 挑战假设、揭示认知偏差、提供对立视角
- 🤔 元认知监控器 (Metacognition Monitor): 监控AI助手的思考质量,持续优化回答深度
- 📈 思想演化追踪器 (Thought Evolution Tracker): 追踪你对特定主题的认知如何随时间变化
- 💾 增强记忆结构: 建立认知指纹和思维特征档案
系统已全面重构为声明式技能生态 (Declarative Skills Ecosystem),主智能体从“脚本执行者”升级为“技能规划者”:
- 技能包规范 (Claude Skills): 仿照 Claude 范式,每个技能包含
SKILL.md指令手册与skill.py执行驱动,实现任务驱动的自由组合。 - 任务编排 (LangGraph): 采用有向无环图结构,实现“规划(Planner)-执行(Executor)-总结(Summarizer)”的闭环任务处理。
- 动态寻址库 (Skills Hub): 支持技能热插拔,Agent 能够根据任务语义自动发现并加载匹配的技能(如:
fill-word-template,ssh_cluster_executor)。 - 无损填充 (WordFiller): 100% 还原排版,支持复杂嵌套对象、列表及条件格式填充。
- 表单专家 (WebFiller): 基于 Playwright 自动填写网页表单,内置截图存证与错误回退机制。
- 经验长效记忆 (Experience): 将任务执行过程存入 SQLite,支持 RAG 检索以复现成功路径。
- 远程算力调度 (Remote SSH): 内置 GPU 集群管理技能,支持远程执行命令、监控状态及任务提交。
打破传统 AI 的限制,直接操控物理环境:
- 浏览器代理 (
browser-use): 接收自然语言指令,自主在浏览器中完成搜索、总结、购票或比价。 - 操作系统交互 (
open-interpreter): 自主操控键鼠、运行脚本、管理本地磁盘文件。
- 知识自动化 (Archivist): 自动将乱序对话整理为标准的 Obsidian 原子笔记。
- 深度复盘 (Reflector): 每日/每周扫描知识库,结合“长期记忆”生成复盘洞察。
- 语义搜索: 基于 FAISS 的本地向量检索,支持秒级全库语义查询。- 🆕 执行日志查看: 在仪表盘查看 Agent 执行日志和采集的 AI 对话记录(DeepSeek/ChatGPT 等)。
项目采用 Claude Skills 范式,将核心功能解耦为独立的技能包:
- 声明式指令 (SKILL.md): 每个技能包包含一份给 LLM 读的“说明书”,定义了技能的范围、输入参数示例及执行逻辑。
- 热插拔技能包: 只需在
second_brain/skills/放入新的技能文件夹(包含SKILL.md和skill.py),系统无需重启即可在下次任务规划时自动调用。 - 动态规划: Agent 会根据当前拥有的技能集,自动分解任务步骤。
MCP/
├── second_brain/ # 🧠 核心业务逻辑
│ ├── api/ # 🆕 服务端 API (FastAPI)
│ ├── agent_engine/ # 影子员工引擎 (Planner, Executor, Graph)
│ ├── skills/ # 🧩 技能仓库 (Claude Skills 标准包)
│ └── ...
├── frontend/ # 🖥️ 影子员工管理控制台 (Vue 3 + Naive UI)
│ ├── src/app/views/agent/ # 核心业务页面 (控制台、状态看板)
│ └── ...
├── src/obsidian_mcp/ # MCP Server 实现
│ ├── storage/ # Vault 扫描器与文件操作
│ ├── core/ # LLM 与 Embedding 适配器
│ └── config/ # Prompt 模板与系统设置
├── src/obsidian_mcp/ # MCP Server 实现
├── Agent_test/ # AI 智能体 (LangChain Agent 实验区)
├── tests/ # 自动化测试
└── requirements.txt # 项目依赖
browser-use 等高级功能,这些库 需要 Python 3.11+。如果您已有合适的虚拟环境(Python ≥ 3.11),可跳过此步骤,直接进行依赖安装。
# 直接激活已有的虚拟环境(以 conda 为例)
conda activate your_existing_env
# 然后安装依赖
pip install -r requirements.txt使用 Conda 创建 Python 3.12+ 环境(推荐,性能更优):
# 创建一个新的 Python 3.12 环境
conda create -n mcp_agent python=3.12 -y
# 激活新环境
conda activate mcp_agent
# 安装所有依赖项(包括自动化工具)
pip install -r requirements.txt或使用 venv 创建虚拟环境:
# 创建虚拟环境(需要本地 Python ≥ 3.11)
python3 -m venv venv
# 激活虚拟环境 (macOS/Linux)
source venv/bin/activate
# 激活虚拟环境 (Windows)
# venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt在项目根目录创建 .env 文件:
# 路径配置
OBSIDIAN_VAULT_PATH="/你的/Obsidian/库路径"
FAISS_DIR="/向量库/存储路径"
# LLM 配置 (支持 OpenAI 或本地兼容 API)
OPENAI_API_KEY="your-api-key"
BASE_URL="https://api.openai.com/v1"
MODEL="gpt-4-turbo"
# Embedding 配置 (可选)
EMBED_BACKEND="st" # 使用本地 sentence-transformers该命令会按照规范在你的 Obsidian Vault 中创建必要的文件夹(inbox, daily, notes, memory 等):
python -m second_brain.cli init一条命令启动完整的影子员工系统
项目根目录包含智能启动脚本 start-all.sh,可以自动:
- ✅ 清理所有残留的进程和端口占用
- ✅ 启动 FastAPI 后端服务(Python)
- ✅ 启动 Vite 前端开发服务(Vue 3)
- ✅ 验证两个服务是否成功启动
- ✅ 自动处理端口冲突(前端会自动选择 5100-5104 中可用端口)
- ✅ 显示完整的访问地址和日志位置
第 1 步:给脚本执行权限
chmod +x start-all.sh第 2 步:运行启动脚本
./start-all.sh第 3 步:按照脚本输出的地址访问 脚本会自动显示:
╔════════════════════════════════════════════════════════╗
║ 🚀 前后端启动完成,访问以下地址 ║
╠════════════════════════════════════════════════════════╣
📊 仪表盘(推荐):
📊 仪表盘: `http://localhost:5100/agent/dashboard`
📋 任务管理器: `http://localhost:5100/agent/manager`
📚 知识库: `http://localhost:5100/agent/knowledge`
🛠️ 工具箱: `http://localhost:5100/agent/tools`
💻 测试台: `http://localhost:5100/test-console`
📝 执行日志: `http://localhost:5100/agent/logs` 🆕
🔌 后端 API:
Swagger: http://localhost:8000/docs
╚════════════════════════════════════════════════════════╝
-
强制清理残留进程
- 杀死占用 8000(后端)、5100-5104(前端)端口的所有进程
- 清理所有 Node.js 和 Python 后端进程
- 等待 2 秒确保端口真正释放
-
启动后端服务
- 在
mcp_agentConda 环境中运行python -m second_brain.api.server - 等待 FastAPI 在 8000 端口启动
- 验证
/docs端点可响应
- 在
-
启动前端服务
- 运行
npm run dev(使用 Vite) - 自动适配可用端口(5100-5104)
- 验证前端成功启动
- 运行
-
持续监控
- 脚本启动后会持续监控两个服务状态
- 按
Ctrl+C退出监控(服务会继续在后台运行)
脚本运行时会输出日志到临时文件,可以在新开的终端中查看:
# 查看后端日志
tail -f /tmp/backend.log
# 查看前端日志
tail -f /tmp/frontend.log问题:某个端口仍然被占用
# 手动杀死占用该端口的进程
lsof -ti:8000 | xargs kill -9 # 杀死后端
lsof -ti:5100 | xargs kill -9 # 杀死前端问题:conda 找不到 mcp_agent 环境
# 确认环境存在
conda env list | grep mcp_agent
# 如果不存在,创建环境
conda create -n mcp_agent python=3.12
conda activate mcp_agent
pip install -r requirements.txt问题:npm 命令找不到
# 确认 Node.js 已安装
node --version
npm --version
# 如果未安装,请先安装 Node.jspython -m second_brain.cli archive "今天学习了 RAG 原理,重点是..."python -m second_brain.cli dailypython -m second_brain.cli weekly# 执行涉及文档解析与自动生成的复合任务
python -m second_brain.agent_engine.run_task "帮我解析 inbox/schema.pdf,并根据 context.json 填充对应的 Word 模板"系统现配备了基于 vue-bag-admin 的可视化管理界面:
后端 API 服务:
# 启动 API 服务器 (默认端口 8000)
python -m second_brain.api.server前端开发环境:
cd frontend
npm install
npm run dev访问 http://localhost:5100/agent/dashboard 即可进入仪表盘。
🆕 查看 Agent 执行日志:
访问 http://localhost:5100/agent/logs 可以查看:
- 🤖 Agent 执行日志:任务规划、步骤执行、工具调用等
- 💬 AI 对话快照:从浏览器自动采集的 DeepSeek、ChatGPT 等对话内容
- 📝 每日小结:任务统计、成功率、关键记录等
Archivist: 负责知识入库。它会调用 LLM 对文本进行清洗,生成符合元数据规范的 Markdown 文件。Reflector: 负责知识内化。通过扫描文件修改时间戳,它能精准定位“今天”发生的所有变化。VaultScanner: 本地化的文件系统扫描器,不依赖插件即可获取库内动态。
位于 src/obsidian_mcp/,提供标准工具集:
list_notes,read_note,create_note,search_vault等。
- Obsidian REST API: 虽本项目核心功能 (
second_brain) 优先使用文件系统操作以保证稳定性,但部分 Agent 功能仍需安装 obsidian-local-rest-api 插件。 - 长期记忆: 建议在
memory/persona.md中记录你的角色设定,在memory/principles.md中记录你的原则,AI 在复盘时会参考这些内容。 ⚠️ 安全使用: 为避免 Obsidian 崩溃,请定期清理inbox/目录,避免单次处理过长文本。详见 使用说明。
- 📝 Agent 执行日志与对话记录完整指南 🆕 - 日志查看、数据导出、API 参考- � Word 自动化工具完整手册 - 详细的模板编写与填充指南
- �📘 完整使用说明 - 包含快速开始、安全指南、故障排查和最佳实践
- 🔧 Second Brain 模块文档 - 核心模块详细说明
MIT License