scientify 1.7.2 → 1.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.zh.md CHANGED
@@ -2,253 +2,381 @@
2
2
 
3
3
  **为 OpenClaw 打造的 AI 驱动研究工作流自动化插件。**
4
4
 
5
+ Scientify 是一个 [OpenClaw](https://github.com/openclaw/openclaw) 插件,通过 LLM 驱动的子 agent 自动化完整的学术研究流程 — 从文献调研到实验执行。
6
+
5
7
  [English](./README.md)
6
8
 
7
9
  ---
8
10
 
9
- ## 功能
11
+ ## 它能做什么
10
12
 
11
- ### Skills (通过 LLM)
13
+ Scientify 将一条研究提示转化为完整的自动化流水线。每个阶段由独立子 agent 执行,编排器在步骤间验证产出并传递上下文。
12
14
 
13
- | Skill | 描述 |
14
- |-------|------|
15
- | **research-pipeline** | 端到端 ML 研究编排器。通过 sessions_spawn 逐阶段派发子 agent,验证产出后推进。 |
16
- | **research-survey** | 深度分析已下载论文:提取公式、映射代码、生成核心方法对比表。 |
17
- | **research-plan** | 从调研结果制定四部分实现计划(数据集/模型/训练/测试)。 |
18
- | **research-implement** | 按计划实现 ML 代码,使用 `uv` 虚拟环境隔离,2 epoch 验证,确保真实结果。 |
19
- | **research-review** | 对照计划和调研审查实现代码,最多迭代修复 3 轮。 |
20
- | **research-experiment** | 完整训练 + 消融实验 + 结果分析。需要 review PASS。 |
21
- | **literature-survey** | 文献综述:搜索 → 筛选 → 下载 → 聚类 → 报告。 |
22
- | **idea-generation** | 从研究主题生成创新想法。搜索 arXiv/GitHub、下载论文,输出 5 个研究想法。 |
15
+ ### 场景一 端到端研究流水线
23
16
 
24
- ### Commands (直接执行,不经 LLM)
17
+ > *"研究经典 ML 分类器在 Fashion-MNIST 上的缩放定律"*
25
18
 
26
- | 命令 | 描述 |
27
- |------|------|
28
- | `/research-status` | 显示工作空间状态 |
29
- | `/papers` | 列出已下载论文 |
30
- | `/ideas` | 列出已生成想法 |
31
- | `/projects` | 列出所有项目 |
32
- | `/project-switch <id>` | 切换项目 |
33
- | `/project-delete <id>` | 删除项目 |
19
+ **research-pipeline** 编排器依次 spawn 6 个阶段的子 agent:
34
20
 
35
- ### Tools
21
+ ```mermaid
22
+ flowchart LR
23
+ A["文献调研"] --> B["深度分析"] --> C["实现计划"] --> D["代码实现"] --> E["自动审查"] --> F["完整实验"]
24
+ ```
36
25
 
37
- | Tool | 描述 |
38
- |------|------|
39
- | **arxiv_search** | 搜索 arXiv API,返回论文元数据(标题、作者、摘要、ID)。 |
40
- | **arxiv_download** | ID 下载 arXiv 论文,优先 .tex 源文件,回退到 PDF。内置速率限制。 |
41
- | **github_search** | 搜索 GitHub 仓库,支持关键词、语言过滤、按 stars/更新时间排序。 |
26
+ <details>
27
+ <summary><b>各阶段产出详情</b></summary>
28
+
29
+ | 阶段 | 做了什么 | 产出文件 |
30
+ |:-----|:--------|:---------|
31
+ | **1. 文献调研** | 搜索 arXiv + OpenAlex,筛选、下载 .tex 源文件,按方向聚类 | `survey/report.md` |
32
+ | **2. 深度分析** | 提取公式,映射方法到代码,生成交叉对比 | `survey_res.md` |
33
+ | **3. 实现计划** | 四部分计划 — 数据集 / 模型 / 训练 / 测试 | `plan_res.md` |
34
+ | **4. 代码实现** | 在 `uv` 隔离虚拟环境中编写 ML 代码,2 epoch 验证 | `project/run.py` |
35
+ | **5. 自动审查** | 审查代码 → 修复 → 重跑 → 再审查(最多 3 轮) | `iterations/judge_v*.md` |
36
+ | **6. 完整实验** | 全量训练 + 消融实验,生成最终分析 | `experiment_res.md` |
37
+
38
+ </details>
42
39
 
43
40
  ---
44
41
 
45
- ## 快速开始
42
+ ### 场景二 — 创新想法生成
46
43
 
47
- ```bash
48
- # 安装插件
49
- openclaw plugins install scientify
44
+ > *"探索蛋白质折叠的最新进展,生成创新研究想法"*
50
45
 
51
- # 开始使用
52
- openclaw "研究 transformer 效率并生成研究想法"
53
- ```
46
+ **idea-generation** skill 先调研文献,然后:
47
+
48
+ 1. 基于真实论文生成 **5 个多样化研究想法**
49
+ 2. 从新颖性、可行性、影响力三个维度打分
50
+ 3. 选出最佳想法,生成带详细方法论的**增强提案**
51
+
52
+ > [!TIP]
53
+ > **产出:** `ideas/selected_idea.md` — 一份可直接推进的研究提案。
54
54
 
55
55
  ---
56
56
 
57
- ## 安装
57
+ ### 场景三 — 独立文献调研
58
58
 
59
- ```bash
60
- openclaw plugins install scientify
61
- ```
59
+ > *"调研视觉-语言模型在医学影像中的最新论文"*
62
60
 
63
- > **注意:** 不要使用 `npm install scientify`。OpenClaw 插件必须通过 `openclaw plugins install` 安装才能被正确发现。
61
+ 只需要一份结构化阅读清单时,单独运行调研阶段:
64
62
 
65
- 插件将安装到 `~/.openclaw/extensions/scientify/` 并自动启用。
63
+ - 搜索 **arXiv**(CS/ML 方向)和 **OpenAlex**(跨学科,覆盖更广)
64
+ - 下载 `.tex` 源文件;通过 **Unpaywall** 获取开放获取 PDF
65
+ - 按子主题聚类,提取每个方向的关键发现
66
+ - 生成结构化调研报告
67
+
68
+ > [!TIP]
69
+ > **产出:** `survey/report.md` + 原始论文在 `papers/_downloads/`
66
70
 
67
71
  ---
68
72
 
69
- ## 使用场景
73
+ ### 场景四 — 综述论文撰写
70
74
 
71
- ### 1. 一键生成研究想法
75
+ > *"基于项目研究产出撰写一篇综述论文"*
72
76
 
73
- ```
74
- 你: 帮我调研 "长文档摘要" 领域,生成一些创新的研究想法
75
-
76
- Agent: [自动执行]
77
- 1. 搜索 arXiv 论文
78
- 2. 搜索 GitHub 仓库
79
- 3. 下载并分析 .tex 源文件
80
- 4. 生成 5 个创新想法
81
- 5. 选出最佳想法并增强
82
- 6. 映射到代码实现
83
- ```
77
+ 完成研究流水线(或至少文献调研 + 深度分析)后,**write-review-paper** skill 自动整合:
84
78
 
85
- ### 2. 每日文献追踪
79
+ - 综合调研报告、分析笔记和方法对比表
80
+ - 按 Introduction、Related Work、Methods、Discussion 结构组织
81
+ - 产出可直接编辑的 Markdown 格式论文草稿
86
82
 
87
- ```
88
- 你: 帮我设置一个定时任务,每天早上 9 点检查 arXiv 上关于
89
- "transformer efficiency" 的新论文,如果有相关的就总结后发到飞书
90
-
91
- Agent: 好的,我来设置:
92
- 1. 创建定时 Hook (cron: "0 9 * * *")
93
- 2. 每天调用 arxiv 工具搜索最近 24h 的论文
94
- 3. 用你的 idea (selected_idea.md) 作为对比基准
95
- 4. 筛选相关论文,生成摘要
96
- 5. 通过飞书 webhook 推送
97
-
98
- [示例推送]
99
- 📚 今日相关论文 (3篇)
100
- • "FlashAttention-3: Fast Attention with ..." - 与你的 idea 高度相关,建议精读
101
- • "Efficient Long-Context Transformers" - 中等相关
102
- • "..."
103
- ```
83
+ > [!TIP]
84
+ > **产出:** 基于项目所有研究产物生成的综述/调研论文草稿。
104
85
 
105
- ### 3. 研究进展汇报
86
+ ---
106
87
 
107
- ```
108
- 你: 每周五下午帮我生成本周研究进展报告,发到 Slack
88
+ ### 进阶场景 — 结合 OpenClaw 平台能力
89
+
90
+ Scientify 作为 OpenClaw 插件运行,天然可以调用平台的 MCP 服务器、浏览器自动化、多会话并发等能力,组合出更强大的工作流。
109
91
 
110
- Agent: [每周五自动执行]
111
- 1. 读取 $WORKSPACE 变化
112
- 2. 统计: 新增论文 X 篇,新想法 Y 个,代码提交 Z 次
113
- 3. 生成周报 markdown
114
- 4. 推送到 Slack #research 频道
92
+ ---
93
+
94
+ ### 场景五 文献推送机器人
95
+
96
+ > *"每天自动搜索 diffusion model 新论文,筛选后推送到飞书群"*
97
+
98
+ 结合 OpenClaw 的 **MCP 集成**(Slack / 飞书 / 邮件)和 **定时触发**,搭建自动化文献监控:
99
+
100
+ ```mermaid
101
+ flowchart LR
102
+ A["定时触发\n(cron / webhook)"] --> B["arxiv_search\n+ openalex_search"]
103
+ B --> C["LLM 筛选\n+ 摘要生成"]
104
+ C --> D["推送到\n飞书 / Slack / 邮件"]
115
105
  ```
116
106
 
117
- ### 4. 竞品论文监控
107
+ 1. 通过外部 cron 或 OpenClaw webhook 定期触发会话
108
+ 2. Scientify 的 `arxiv_search` + `openalex_search` 搜索最新论文
109
+ 3. LLM 按你的研究方向打分筛选,生成中文摘要
110
+ 4. 通过 MCP 工具推送到飞书群、Slack 频道或邮箱
111
+
112
+ > [!NOTE]
113
+ > **依赖:** 需配置对应的 MCP 服务器(如 `feishu-mcp`、`slack-mcp`)。OpenClaw 支持在 `openclaw.json` 中声明 MCP 服务器。
114
+
115
+ ---
116
+
117
+ ### 场景六 — 浏览器下载付费文献
118
118
 
119
+ > *"用学校 VPN 下载这 5 篇 IEEE 论文的 PDF"*
120
+
121
+ Scientify 内置的 `arxiv_download` 和 `unpaywall_download` 只能获取开放获取论文。对于付费文献,结合 OpenClaw 的 **浏览器自动化**(Playwright MCP)可以突破限制:
122
+
123
+ ```mermaid
124
+ flowchart LR
125
+ A["Scientify\n提供论文 URL"] --> B["Playwright MCP\n打开浏览器"]
126
+ B --> C["机构代理/VPN\n自动认证"]
127
+ C --> D["导航到出版商\n下载 PDF"]
119
128
  ```
120
- 你: 监控 "Yann LeCun" 和 "Meta AI" 的新论文,有新发布就提醒我
121
129
 
122
- Agent: 设置监控:
123
- - 每日检查 arxiv 作者 "Yann LeCun"
124
- - 检查 arxiv 机构 "Meta AI"
125
- - 新论文出现时推送通知
130
+ - OpenClaw 启动受控浏览器(通过 Playwright MCP server)
131
+ - 浏览器通过你的机构代理 / VPN 访问出版商网站
132
+ - 自动导航到论文页面,下载 PDF 到项目 `papers/_downloads/`
133
+ - 适用于 IEEE、Springer、Elsevier、ACM 等需要机构订阅的出版商
134
+
135
+ > [!NOTE]
136
+ > **依赖:** 需配置 Playwright MCP 服务器,且本机可通过机构网络访问论文。
137
+
138
+ ---
139
+
140
+ ### 场景七 — 多主题并行研究
141
+
142
+ > *"同时调研 3 个方向:LoRA 微调、MoE 架构、KV-Cache 优化"*
143
+
144
+ 利用 OpenClaw 的 **多会话并发**(`sessions_spawn`),同时启动多条研究流水线:
145
+
146
+ ```mermaid
147
+ flowchart TD
148
+ O["主 Agent\n(编排器)"] --> A["子会话 1\nLoRA 微调"]
149
+ O --> B["子会话 2\nMoE 架构"]
150
+ O --> C["子会话 3\nKV-Cache 优化"]
151
+ A --> D["各自独立项目目录\n互不干扰"]
152
+ B --> D
153
+ C --> D
126
154
  ```
127
155
 
128
- ### 5. 论文阅读助手
156
+ - 每个子主题独立运行完整流水线,拥有独立项目目录
157
+ - 主 agent 收集各方向结果,生成跨主题对比分析
158
+ - 适合综述论文选题阶段快速摸底多个方向
159
+
160
+ ---
161
+
162
+ ### 场景八 — 论文精读助手
163
+
164
+ > *"帮我逐段精读这篇 Attention Is All You Need,解释每个公式"*
165
+
166
+ 结合 OpenClaw 的对话界面和 Scientify 的 `paper_browser` 工具,进行交互式论文阅读:
129
167
 
168
+ - `paper_browser` 按页加载论文,避免超长上下文
169
+ - 逐节讨论:LLM 解释公式推导、对比相关工作、指出创新点
170
+ - 可追问具体实现细节,LLM 用 `github_search` 找到对应开源代码
171
+ - 所有分析笔记保存到 `notes/paper_{id}.md`
172
+
173
+ ---
174
+
175
+ ### 场景九 — 从论文到可复现实验
176
+
177
+ > *"复现这篇论文的 Table 2 实验结果"*
178
+
179
+ 全流程自动化:论文理解 → 代码实现 → 实验复现 → 结果对比:
180
+
181
+ ```mermaid
182
+ flowchart LR
183
+ A["paper_browser\n精读论文"] --> B["research-plan\n提取实验设计"]
184
+ B --> C["research-implement\n实现代码"]
185
+ C --> D["research-experiment\n运行实验"]
186
+ D --> E["对比论文\nTable 2 结果"]
130
187
  ```
131
- 你: 帮我读一下 papers/2401.12345/ 这篇论文,
132
- 重点关注它的方法和我的 idea 有什么异同
133
188
 
134
- Agent: [读取论文 .tex 文件]
189
+ 1. `paper_browser` 精读目标论文的方法和实验部分
190
+ 2. `research-plan` 提取实验配置(超参、数据集、指标)
191
+ 3. `research-implement` 生成代码并在 `uv` 隔离环境中验证
192
+ 4. `research-experiment` 运行完整实验
193
+ 5. LLM 自动将实验结果与论文原始数据对比分析
135
194
 
136
- 📄 论文: "Efficient Attention for Long Documents"
195
+ ---
137
196
 
138
- ## 与你的 idea 对比
197
+ ## 环境要求
139
198
 
140
- | 方面 | 论文方法 | 你的方法 |
141
- |------|---------|---------|
142
- | 注意力机制 | Sparse Attention | Hierarchical Attention |
143
- | 复杂度 | O(n√n) | O(n log n) |
144
- | 优势 | 实现简单 | 保留更多信息 |
199
+ - **Node.js** >= 18
200
+ - **Python 3** + **uv**(用于 ML 代码执行)
201
+ - **git**
145
202
 
146
- ## 建议
147
- 可以考虑结合两者...
203
+ ---
204
+
205
+ ## 安装 OpenClaw
206
+
207
+ ```bash
208
+ # 全局安装 OpenClaw
209
+ pnpm add -g openclaw # 或: npm install -g openclaw
210
+
211
+ # 运行引导向导(配置模型提供商、API Key、工作空间)
212
+ openclaw onboard
213
+
214
+ # 启动 Gateway(WebUI 服务器)
215
+ openclaw gateway
148
216
  ```
149
217
 
150
- ### 6. Related Work 写作助手
218
+ 启动后,WebUI 地址为 **http://127.0.0.1:18789/**(默认端口)。
151
219
 
220
+ > **代理用户注意:** 如果你设置了 `http_proxy`,访问 WebUI 时需加 `--noproxy 127.0.0.1`,或在浏览器中配置代理例外。
221
+
222
+ ---
223
+
224
+ ## 安装 Scientify
225
+
226
+ ### 从 npm 安装(推荐)
227
+
228
+ ```bash
229
+ openclaw plugins install scientify
152
230
  ```
153
- 你: 基于我项目里的论文,帮我写 Related Work 章节
154
231
 
155
- Agent: [读取 papers/ 和 literature/notes/]
232
+ 插件安装到 `~/.openclaw/extensions/scientify/`,自动启用。
156
233
 
157
- 生成 related_work.tex:
234
+ ### 从源码安装(开发用)
158
235
 
159
- \section{Related Work}
236
+ ```bash
237
+ git clone https://github.com/user/scientify.git
238
+ cd scientify && pnpm install && pnpm build
160
239
 
161
- \subsection{Long Document Summarization}
162
- Recent works have explored various approaches...
163
- \cite{paper1} proposed...
164
- \cite{paper2} extended this by...
240
+ # 链接为开发插件
241
+ openclaw plugins install -l ./
242
+ ```
165
243
 
166
- \subsection{Efficient Transformers}
167
- ...
244
+ ### 验证安装
245
+
246
+ ```bash
247
+ openclaw plugins list
248
+ # 应显示: scientify (enabled)
168
249
  ```
169
250
 
170
- ### 7. 想法碰撞
251
+ 安装后需 **重启 Gateway** 以加载插件:
171
252
 
253
+ ```bash
254
+ # 停止运行中的 Gateway(Ctrl+C),然后:
255
+ openclaw gateway
172
256
  ```
173
- 你: 把 "强化学习" 和 "文本摘要" 两个领域结合,看能不能碰撞出新想法
174
257
 
175
- Agent: [搜索两个领域的论文]
258
+ ---
259
+
260
+ ## 通过 WebUI 使用
261
+
262
+ ### 1. 打开 WebUI
176
263
 
177
- 🔥 碰撞结果:
264
+ 浏览器访问 **http://127.0.0.1:18789/**。
178
265
 
179
- 1. **RL-guided Summarization**
180
- 用 RL 优化摘要的可读性和信息覆盖
181
- 参考: [2301.xxx], [2302.xxx]
266
+ ### 2. 开始研究任务
182
267
 
183
- 2. **Interactive Summarization Agent**
184
- 用户反馈作为 reward 信号迭代优化摘要
268
+ 在聊天框中输入研究提示,Scientify skill 会被 LLM 自动匹配:
185
269
 
186
- 3. ...
270
+ ```
271
+ 研究 "transformer efficiency",分析论文并生成创新想法
187
272
  ```
188
273
 
189
- ### 8. 实验设计助手
274
+ 或者用斜杠命令直接调用特定 skill:
190
275
 
191
276
  ```
192
- 你: 我的 idea 是 xxx,帮我设计实验方案
277
+ /research-pipeline
278
+ /literature-survey
279
+ /idea-generation
280
+ ```
193
281
 
194
- Agent: [读取 selected_idea.md 和相关论文]
282
+ ### 3. 监控子 agent 进度
195
283
 
196
- ## 实验设计
284
+ 编排器 spawn 子 agent 后,你会看到:
285
+ - **启动通知** — "Phase 1: Literature Survey 已启动"
286
+ - **完成通知** — 子 agent 完成后自动发送消息
287
+ - **进度推进** — 编排器验证产出后自动进入下一阶段
197
288
 
198
- ### Datasets
199
- 1. CNN/DailyMail - 标准新闻摘要 (287k samples)
200
- 2. arXiv - 长文档科学论文 (215k samples)
201
- 3. ...
289
+ 随时查看状态:
202
290
 
203
- ### Baselines
204
- 1. BART-large (参考: paper_001.md)
205
- 2. LED (参考: paper_003.md)
291
+ ```
292
+ /research-status
293
+ ```
206
294
 
207
- ### Metrics
208
- - ROUGE-1/2/L
209
- - BERTScore
210
- - 人工评估: 流畅度、信息覆盖
295
+ ### 4. 管理项目
211
296
 
212
- ### Ablation Studies
213
- 1. 去掉 xxx 模块
214
- 2. ...
215
297
  ```
298
+ /projects # 列出所有项目
299
+ /project-switch <id> # 切换项目
300
+ /papers # 列出已下载论文
301
+ /ideas # 列出已生成想法
302
+ ```
303
+
304
+ ---
305
+
306
+ ## Skills
307
+
308
+ ### 流水线 Skills(LLM 驱动)
309
+
310
+ | Skill | 斜杠命令 | 描述 |
311
+ |-------|---------|------|
312
+ | **research-pipeline** | `/research-pipeline` | 编排器。逐阶段 spawn 子 agent,验证产出后推进。 |
313
+ | **literature-survey** | `/literature-survey` | 搜索 arXiv → 筛选 → 下载 .tex 源文件 → 聚类 → 生成调研报告。 |
314
+ | **research-survey** | `/research-survey` | 深度分析论文:提取公式、映射代码、生成核心方法对比表。 |
315
+ | **research-plan** | `/research-plan` | 从调研结果制定四部分实现计划(数据集/模型/训练/测试)。 |
316
+ | **research-implement** | `/research-implement` | 按计划实现 ML 代码,`uv` 虚拟环境隔离,2 epoch 验证。 |
317
+ | **research-review** | `/research-review` | 审查实现代码,迭代修复 → 重跑 → 审查,最多 3 轮。 |
318
+ | **research-experiment** | `/research-experiment` | 完整训练 + 消融实验。需要 review PASS。 |
319
+ | **idea-generation** | `/idea-generation` | 生成 5 个创新研究想法,选出最佳并增强。 |
320
+
321
+ ### 独立 Skills
322
+
323
+ | Skill | 描述 |
324
+ |-------|------|
325
+ | **write-review-paper** | 基于项目研究产出撰写综述论文草稿。 |
326
+
327
+ ### Tools(LLM 可调用)
328
+
329
+ | Tool | 描述 |
330
+ |------|------|
331
+ | `arxiv_search` | 搜索 arXiv 论文,返回元数据(标题、作者、摘要、ID)。不下载文件。支持按相关性/日期排序、日期过滤。 |
332
+ | `arxiv_download` | 按 arXiv ID 批量下载论文,优先 .tex 源文件(PDF 回退)。需指定绝对路径输出目录。 |
333
+ | `openalex_search` | 通过 OpenAlex API 搜索跨学科学术论文,返回 DOI、作者、引用数、OA 状态。覆盖范围比 arXiv 更广。 |
334
+ | `unpaywall_download` | 通过 Unpaywall API 按 DOI 下载开放获取 PDF。非 OA 论文跳过不报错。 |
335
+ | `github_search` | 搜索 GitHub 仓库,返回仓库名、描述、star 数、URL。支持语言过滤和排序。 |
336
+ | `paper_browser` | 分页浏览大型论文文件(.tex/.md),避免一次性加载数千行到上下文。返回指定行范围和导航信息。 |
337
+
338
+ ### Commands(直接执行,不经 LLM)
339
+
340
+ | 命令 | 描述 |
341
+ |------|------|
342
+ | `/research-status` | 显示工作空间状态和当前项目 |
343
+ | `/papers` | 列出已下载论文及元数据 |
344
+ | `/ideas` | 列出已生成想法 |
345
+ | `/projects` | 列出所有项目 |
346
+ | `/project-switch <id>` | 切换当前项目 |
347
+ | `/project-delete <id>` | 删除项目 |
216
348
 
217
349
  ---
218
350
 
219
351
  ## 工作空间结构
220
352
 
353
+ 所有研究数据组织在 `~/.openclaw/workspace/projects/` 下:
354
+
221
355
  ```
222
- ~/.openclaw/workspace/projects/
223
- ├── .active # 当前项目 ID
224
- ├── nlp-summarization/ # 项目 A
225
- │ ├── project.json # 元数据
226
- │ ├── task.json # 任务定义
227
- │ ├── survey/ # /literature-survey 产出
228
- │ │ ├── search_terms.json
229
- │ │ └── report.md
230
- │ ├── papers/ # 下载的论文
231
- │ │ ├── _downloads/ # 原始文件
232
- ├── _meta/ # 元数据 JSON
233
- │ │ └── {direction}/ # 按方向聚类
234
- │ ├── repos/ # 克隆的仓库
235
- │ ├── notes/ # /research-survey: 逐篇深度笔记
356
+ projects/
357
+ ├── .active # 当前项目 ID
358
+ ├── scaling-law-fashion-mnist/ # 示例项目
359
+ │ ├── project.json # 元数据
360
+ │ ├── task.json # 任务定义
361
+ │ ├── papers/
362
+ │ │ ├── _meta/ # 论文元数据 (*.json)
363
+ │ │ └── _downloads/ # 原始 .tex/.pdf 文件
364
+ │ ├── survey/
365
+ │ │ └── report.md # 文献调研报告
366
+ │ ├── notes/ # 逐篇深度分析
236
367
  │ │ └── paper_{arxiv_id}.md
237
- │ ├── survey_res.md # /research-survey: 方法对比
238
- │ ├── plan_res.md # /research-plan: 实现计划
239
- │ ├── project/ # /research-implement: ML 代码
240
- │ │ ├── model/
241
- │ │ ├── data/
368
+ │ ├── survey_res.md # 核心方法对比表
369
+ │ ├── plan_res.md # 实现计划
370
+ │ ├── project/ # ML 代码
242
371
  │ │ ├── run.py
243
372
  │ │ └── requirements.txt
244
- │ ├── ml_res.md # /research-implement: 执行报告
245
- │ ├── iterations/ # /research-review: 审查报告
373
+ │ ├── ml_res.md # 实现结果报告
374
+ │ ├── iterations/ # 审查迭代
246
375
  │ │ └── judge_v*.md
247
- │ ├── experiment_res.md # /research-experiment: 最终结果
248
- │ └── ideas/ # 生成的想法
249
- │ ├── idea_1.md
250
- ├── idea_2.md
251
- │ └── selected_idea.md # 最佳想法
376
+ │ ├── experiment_res.md # 最终实验结果
377
+ │ └── ideas/ # 生成的想法
378
+ │ ├── idea_*.md
379
+ └── selected_idea.md
252
380
  └── another-project/
253
381
  ```
254
382
 
@@ -256,16 +384,14 @@ Agent: [读取 selected_idea.md 和相关论文]
256
384
 
257
385
  ## 配置
258
386
 
259
- 安装后插件自动启用。可以在 `~/.openclaw/openclaw.json` 中自定义设置:
387
+ 插件设置位于 `~/.openclaw/openclaw.json`:
260
388
 
261
389
  ```json
262
390
  {
263
391
  "plugins": {
264
392
  "entries": {
265
393
  "scientify": {
266
- "enabled": true,
267
- "workspaceRoot": "~/my-research",
268
- "defaultMaxPapers": 15
394
+ "enabled": true
269
395
  }
270
396
  }
271
397
  }
@@ -275,39 +401,36 @@ Agent: [读取 selected_idea.md 和相关论文]
275
401
  ### 插件管理
276
402
 
277
403
  ```bash
278
- # 列出已安装插件
279
- openclaw plugins list
280
-
281
- # 禁用插件
282
- openclaw plugins disable scientify
283
-
284
- # 启用插件
285
- openclaw plugins enable scientify
286
-
287
- # 更新到最新版本
288
- openclaw plugins update scientify
404
+ openclaw plugins list # 列出已安装插件
405
+ openclaw plugins enable scientify # 启用
406
+ openclaw plugins disable scientify # 禁用
407
+ openclaw plugins update scientify # 更新到最新版
408
+ openclaw plugins doctor # 诊断问题
289
409
  ```
290
410
 
291
411
  ---
292
412
 
293
413
  ## 已知限制
294
414
 
295
- ### Sandbox GPU
296
-
297
- `research-pipeline` skill 的代码执行步骤取决于你的 OpenClaw agent 配置:
298
-
299
- - 如果 `sandbox.mode: "off"`(CLI 默认),命令直接在主机执行
300
- - 当前 sandbox **不支持** GPU(`--gpus`)和自定义共享内存(`--shm-size`)
301
-
302
- 对于需要 GPU 加速的 ML 训练:
303
- 1. 在 sandbox 外运行(配置 agent `sandbox.mode: "off"`)
304
- 2. 使用云 GPU 实例
305
- 3. 等待 OpenClaw 添加 GPU 支持
415
+ - **子 agent 超时**:每个子 agent 超时 30 分钟(`runTimeoutSeconds: 1800`)。复杂文献调研可能需要更长时间。
416
+ - **GPU/Sandbox**:代码默认在宿主机直接执行。OpenClaw sandbox 暂不支持 GPU 透传。
417
+ - **模型依赖**:研究质量与使用的 LLM 模型强相关。推荐 Claude Opus 4.5+ 或 GPT-5+。
306
418
 
307
419
  ---
308
420
 
309
421
  ## 开发
310
422
 
423
+ ```bash
424
+ git clone https://github.com/user/scientify.git
425
+ cd scientify
426
+ pnpm install
427
+ pnpm build # 构建 TypeScript
428
+ pnpm dev # 监听模式
429
+
430
+ # 链接到 OpenClaw 测试
431
+ openclaw plugins install -l ./
432
+ ```
433
+
311
434
  参见 [CLAUDE.md](./CLAUDE.md) 了解版本更新流程和贡献指南。
312
435
 
313
436
  ---
@@ -15,12 +15,10 @@ type HookResult = {
15
15
  systemPrompt?: string;
16
16
  };
17
17
  /**
18
- * Creates the research mode hook that injects enhancement prompt
19
- * into all conversations when scientify is active.
20
- *
21
- * This ensures agents are always aware of available research skills
22
- * and know how to use them properly.
18
+ * Creates the research mode hook.
19
+ * Only injects on the first message of a session (messages array empty).
20
+ * Subsequent messages retain it via conversation history.
23
21
  */
24
- export declare function createResearchModeHook(): (_event: HookEvent, _context: HookContext) => HookResult;
22
+ export declare function createResearchModeHook(): (event: HookEvent, _context: HookContext) => HookResult;
25
23
  export {};
26
24
  //# sourceMappingURL=research-mode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"research-mode.d.ts","sourceRoot":"","sources":["../../../src/hooks/research-mode.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AA2HF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,KAC5B,QAAQ,SAAS,EAAE,UAAU,WAAW,KAAG,UAAU,CAO9D"}
1
+ {"version":3,"file":"research-mode.d.ts","sourceRoot":"","sources":["../../../src/hooks/research-mode.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AASF;;;;GAIG;AACH,wBAAgB,sBAAsB,KAC5B,OAAO,SAAS,EAAE,UAAU,WAAW,KAAG,UAAU,CAM7D"}