1 line
9.4 KiB
JSON
1 line
9.4 KiB
JSON
{"repo": "ch1nyzzz/zotero-llm-reader", "files": {"doc/PRD.md": {"a6ac18b3681a4e1df66d0baa1b6d63abe0da2b1b": {"t": 1785746481.6516209, "n": 2625, "h": "fc29ee8ca01c37d0", "c": "# Zotero LLM Reader 插件 PRD\n\n## 背景与目标\n- 在 Zotero 内直接把选中文献或 PDF 交给 LLM(GPT/Gemini/自定义兼容接口),生成总结并可继续问答,减少切换成本。\n- 提供统一的多厂商接入层:OpenAI/Gemini + PDF `api.pdf` 中列出的国内外主流兼容接口(Minimax、Kimi/Moonshot、智谱 GLM、DeepSeek、Qwen)。\n- 保留可插入 Zotero 笔记的结构化总结与对话记录,便于检索和复用。\n\n## 用户故事\n- 我选中一篇论文,点击“LLM 总结”,几秒后得到结构化摘要,并能一键写入该条目笔记。\n- 我在 PDF 中选中高亮,提问“这段的核心贡献是什么?”,获得基于高亮上下文的回答。\n- 我能在偏好页配置自己的 API Key/模型/代理,并测试连通性和限流。\n- 我想保留总结/对话历史,下次打开条目可快速查看或刷新。\n\n## 范围\n- Zotero 7 插件;支持主窗口与 Reader 面板。\n- 交互:总结、一问一答、流式输出、插入笔记、历史查看/清除。\n- 内容:元数据 + PDF 文本/高亮提取,分块/截断控制上下文大小。\n- 配置:多 Provider 参数、默认 Prompt、调试日志。\n- 不含:账号体系、本地模型部署。\n\n## 功能需求\n- Provider 统一接口:`summarize`、`chat`(可流式)。支持 OpenAI 兼容协议 + Gemini 原生 + 下列 API:\n - **Minimax (MiniMax-M2)**:`base_url=https://api.minimax.io/v1`,`model=MiniMax-M2` 或 `MiniMax-M2-Stable`,路径 `/chat/completions`(OpenAI 兼容)。\n - **Kimi / Moonshot**:`base_url=https://api.moonshot.ai/v1`,路径 `/chat/completions`,模型 `kimi-latest`、`kimi-k2-*`(含 `kimi-k2-thinking`)。\n - **智谱 GLM(z.ai)**:HTTP POST `https://api.z.ai/api/paas/v4/chat/completions`,`Authorization: Bearer <API_KEY>`,`model=glm-4.6`。\n - **DeepSeek**:`base_url=https://api.deepseek.com`,路径 `/chat/completions`,模型 `deepseek-chat`、`deepseek-reasoner`。\n - **Qwen(通义千问)**:兼容模式 `base_url=https://dashscope-intl.aliyuncs.com/compatible-mode/v1`(国际)或 `https://dashscope.aliyuncs.com/compatible-mode/v1`(北京),路径 `/chat/completions`,模型 `qwen3-max`、`qwen-plus`、`qwen-flash`。\n- 参数支持:API Key、Base URL(可自定义代理)、模型名、超时、最大 tokens、温度、是否流式、是否上传全文/仅元数据/仅高亮。\n- 内容提取:元数据(题目/作者/摘要/标签)+ PDF 文本/高亮;过大时提示降级(仅元数据/高亮)。\n- UI 入口:\n - 右键/工具栏:对选中条目触发“发送到 LLM 总结”。\n - Item Pane / Reader 自定义面板:展示总结、历史,输入框+发送/取消,Provider/模型下拉。\n - 结果操作:复制、刷新、插入到条目笔记(追加 “LLM Summary” 小节)。\n- 流式与状态:支持流式增量渲染;显示加载/错误/取消;并发队列串行化,支持取消。\n- 日志与测试:调试日志开关(默认关,日志不含正文,可选仅记录元数据和错误);偏好页“测试连接”。\n- 国际化:至少中/英字符串占位。\n\n## 非功能需求\n- 性能:常规总结响应目标 < 8 秒;大文档分块;UI 不阻塞主线程。\n- 兼容:Zotero 7;macOS/Windows/Linux。\n- 安全与隐私:API Key 仅本地存储;默认不把正文写入日志;上传全文需显式提示。\n- 可维护性:模块化(提取/LLM/偏好/UI);TypeScript 类型完备;错误分类明确(鉴权/超时/限流/内容过大/网络)。\n\n## 关键接口设计(内部)\n- `extractContent(item, mode)` -> `{ meta, textChunks?, highlights? }`\n- `summarize(payload, options)` -> `summary`(可流式回调)\n- `chat(payload, options)` -> `answer`(可流式)\n- `saveNote(item, content)` -> `noteId`\n- `testConnection(config)` -> `ok | error`\n\n## 配置项(偏好页)\n- Provider 选择:OpenAI / Gemini / Minimax / Kimi(Moonshot) / GLM(z.ai) / DeepSeek / Qwen / 自定义。\n- API Key、Base URL、模型名、超时、最大 tokens、温度、流式开关。\n- 上传范围:全文 / 仅元数据 / 仅高亮。\n- 默认总结 Prompt;调试日志开关;“测试连接”按钮。\n\n## 里程碑(建议)\n- M1:清理模板、完成偏好页、多 Provider 客户端骨架(含上述 API)。\n- M2:PDF/高亮提取、总结/聊天流程、UI 面板和右键入口、流式显示。\n- M3:笔记写入、历史缓存、错误与隐私防护、双语文案。\n- M4:测试与打包发布(`npm run build`/`release`),编写用户指南。\n"}, "ae5c8289abe7003ca912476cfc570d7b934cef6e": {"t": 1785764794.133238, "n": 2625, "h": "fc29ee8ca01c37d0", "c": "# Zotero LLM Reader 插件 PRD\n\n## 背景与目标\n- 在 Zotero 内直接把选中文献或 PDF 交给 LLM(GPT/Gemini/自定义兼容接口),生成总结并可继续问答,减少切换成本。\n- 提供统一的多厂商接入层:OpenAI/Gemini + PDF `api.pdf` 中列出的国内外主流兼容接口(Minimax、Kimi/Moonshot、智谱 GLM、DeepSeek、Qwen)。\n- 保留可插入 Zotero 笔记的结构化总结与对话记录,便于检索和复用。\n\n## 用户故事\n- 我选中一篇论文,点击“LLM 总结”,几秒后得到结构化摘要,并能一键写入该条目笔记。\n- 我在 PDF 中选中高亮,提问“这段的核心贡献是什么?”,获得基于高亮上下文的回答。\n- 我能在偏好页配置自己的 API Key/模型/代理,并测试连通性和限流。\n- 我想保留总结/对话历史,下次打开条目可快速查看或刷新。\n\n## 范围\n- Zotero 7 插件;支持主窗口与 Reader 面板。\n- 交互:总结、一问一答、流式输出、插入笔记、历史查看/清除。\n- 内容:元数据 + PDF 文本/高亮提取,分块/截断控制上下文大小。\n- 配置:多 Provider 参数、默认 Prompt、调试日志。\n- 不含:账号体系、本地模型部署。\n\n## 功能需求\n- Provider 统一接口:`summarize`、`chat`(可流式)。支持 OpenAI 兼容协议 + Gemini 原生 + 下列 API:\n - **Minimax (MiniMax-M2)**:`base_url=https://api.minimax.io/v1`,`model=MiniMax-M2` 或 `MiniMax-M2-Stable`,路径 `/chat/completions`(OpenAI 兼容)。\n - **Kimi / Moonshot**:`base_url=https://api.moonshot.ai/v1`,路径 `/chat/completions`,模型 `kimi-latest`、`kimi-k2-*`(含 `kimi-k2-thinking`)。\n - **智谱 GLM(z.ai)**:HTTP POST `https://api.z.ai/api/paas/v4/chat/completions`,`Authorization: Bearer <API_KEY>`,`model=glm-4.6`。\n - **DeepSeek**:`base_url=https://api.deepseek.com`,路径 `/chat/completions`,模型 `deepseek-chat`、`deepseek-reasoner`。\n - **Qwen(通义千问)**:兼容模式 `base_url=https://dashscope-intl.aliyuncs.com/compatible-mode/v1`(国际)或 `https://dashscope.aliyuncs.com/compatible-mode/v1`(北京),路径 `/chat/completions`,模型 `qwen3-max`、`qwen-plus`、`qwen-flash`。\n- 参数支持:API Key、Base URL(可自定义代理)、模型名、超时、最大 tokens、温度、是否流式、是否上传全文/仅元数据/仅高亮。\n- 内容提取:元数据(题目/作者/摘要/标签)+ PDF 文本/高亮;过大时提示降级(仅元数据/高亮)。\n- UI 入口:\n - 右键/工具栏:对选中条目触发“发送到 LLM 总结”。\n - Item Pane / Reader 自定义面板:展示总结、历史,输入框+发送/取消,Provider/模型下拉。\n - 结果操作:复制、刷新、插入到条目笔记(追加 “LLM Summary” 小节)。\n- 流式与状态:支持流式增量渲染;显示加载/错误/取消;并发队列串行化,支持取消。\n- 日志与测试:调试日志开关(默认关,日志不含正文,可选仅记录元数据和错误);偏好页“测试连接”。\n- 国际化:至少中/英字符串占位。\n\n## 非功能需求\n- 性能:常规总结响应目标 < 8 秒;大文档分块;UI 不阻塞主线程。\n- 兼容:Zotero 7;macOS/Windows/Linux。\n- 安全与隐私:API Key 仅本地存储;默认不把正文写入日志;上传全文需显式提示。\n- 可维护性:模块化(提取/LLM/偏好/UI);TypeScript 类型完备;错误分类明确(鉴权/超时/限流/内容过大/网络)。\n\n## 关键接口设计(内部)\n- `extractContent(item, mode)` -> `{ meta, textChunks?, highlights? }`\n- `summarize(payload, options)` -> `summary`(可流式回调)\n- `chat(payload, options)` -> `answer`(可流式)\n- `saveNote(item, content)` -> `noteId`\n- `testConnection(config)` -> `ok | error`\n\n## 配置项(偏好页)\n- Provider 选择:OpenAI / Gemini / Minimax / Kimi(Moonshot) / GLM(z.ai) / DeepSeek / Qwen / 自定义。\n- API Key、Base URL、模型名、超时、最大 tokens、温度、流式开关。\n- 上传范围:全文 / 仅元数据 / 仅高亮。\n- 默认总结 Prompt;调试日志开关;“测试连接”按钮。\n\n## 里程碑(建议)\n- M1:清理模板、完成偏好页、多 Provider 客户端骨架(含上述 API)。\n- M2:PDF/高亮提取、总结/聊天流程、UI 面板和右键入口、流式显示。\n- M3:笔记写入、历史缓存、错误与隐私防护、双语文案。\n- M4:测试与打包发布(`npm run build`/`release`),编写用户指南。\n"}}}} |