ThinkSpace
VS Code 内的苏格拉底式阅读伴侣——人读论文/代码/网页,AI 在旁边启发式对话,思考自动沉淀为知识星图,支持间隔重复复习。
功能
- PDF 阅读器 — Webview 内嵌 pdf.js,打开本地 PDF,翻页、缩放、高亮选中文字后右键向 AI 提问
- AI Chat 面板 — 支持 OpenAI / DeepSeek / Ollama,流式输出,对话历史保存到 SQLite
- 笔记编辑器 — CodeMirror 嵌入,支持 markdown + 双向链接
[[...]] + 标签 #...
- 网页剪藏 — 命令面板输入 URL,爬取正文转 markdown 保存到
thinkspace/clips/
- 知识图谱 — D3.js 力导向图,展示笔记/代码/PDF 节点和链接
- 代码右键菜单 — 代码文件右键"创建关联笔记",自动生成带代码路径的笔记
- 间隔重复复习 — 基于笔记更新时间的简单复习机制
构建
cd thinkspace
npm install
npm run compile
开发运行
在 VS Code 中按 F5(或 Run > Start Debugging),会打开一个新的 Extension Development Host 窗口。
在该窗口中测试:
Ctrl+Shift+P → "ThinkSpace: 打开 PDF" → 选择 PDF 文件
Ctrl+Shift+P → "ThinkSpace: 打开 AI 对话"
Ctrl+Shift+P → "ThinkSpace: 剪藏网页" → 输入 URL
Ctrl+Shift+P → "ThinkSpace: 打开知识图谱"
Ctrl+Shift+P → "ThinkSpace: 创建关联笔记"(或编辑器右键)
配置
在 VS Code Settings 中搜索 thinkspace:
thinkspace.llm.provider — LLM 提供商(openai / deepseek / ollama)
thinkspace.llm.model — 模型名称
thinkspace.llm.baseUrl — 自定义 API Base URL
thinkspace.llm.temperature — 采样温度
API Key 存储在 VS Code SecretStorage 中,暂未提供设置命令(需要手动通过 SecretStorage API 设置)。
已知限制
- 复习功能目前仅基于笔记更新时间做简单排序,未实现完整 SM-2 算法
- 知识图谱链接需手动通过双向链接
[[...]] 触发(自动解析尚未实现)
- 代码右键菜单依赖 activeTextEditor,若未打开文件则命令不可用
- LLM API Key 设置暂缺 UI,需通过扩展代码手动注入或使用默认空值(Ollama 本地无需 Key)
技术栈
- VS Code Extension API(TypeScript)
- Webview 前端:原生 HTML/CSS/JS
- PDF:pdf.js CDN
- 编辑器:CodeMirror 5 CDN
- 图谱:D3.js v7 CDN
- 数据库:better-sqlite3
- LLM:fetch + SSE 流式
目录结构
thinkspace/
├── package.json
├── tsconfig.json
├── src/
│ ├── extension.ts # 入口
│ ├── commands/ # 命令实现
│ ├── panels/ # Webview Panel 管理
│ ├── providers/ # LLM + 剪藏
│ ├── db/ # SQLite 层
│ ├── parser/ # Markdown / WikiLink
│ └── utils/ # 工具
└── README.md
License
MIT
| |