scientify 1.7.2 → 1.7.3
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.md +312 -189
- package/README.zh.md +312 -189
- package/dist/src/hooks/research-mode.d.ts +4 -6
- package/dist/src/hooks/research-mode.d.ts.map +1 -1
- package/dist/src/hooks/research-mode.js +12 -129
- package/dist/src/hooks/research-mode.js.map +1 -1
- package/dist/src/tools/arxiv-search.d.ts.map +1 -1
- package/dist/src/tools/arxiv-search.js +2 -0
- package/dist/src/tools/arxiv-search.js.map +1 -1
- package/dist/src/tools/github-search-tool.d.ts.map +1 -1
- package/dist/src/tools/github-search-tool.js +2 -0
- package/dist/src/tools/github-search-tool.js.map +1 -1
- package/dist/src/tools/openalex-search.d.ts.map +1 -1
- package/dist/src/tools/openalex-search.js +2 -0
- package/dist/src/tools/openalex-search.js.map +1 -1
- package/dist/src/tools/paper-browser.d.ts.map +1 -1
- package/dist/src/tools/paper-browser.js +5 -2
- package/dist/src/tools/paper-browser.js.map +1 -1
- package/dist/src/tools/unpaywall-download.d.ts.map +1 -1
- package/dist/src/tools/unpaywall-download.js +3 -4
- package/dist/src/tools/unpaywall-download.js.map +1 -1
- package/package.json +1 -1
- package/skills/install-scientify/SKILL.md +31 -19
- package/skills/research-pipeline/SKILL.md +7 -1
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
|
-
|
|
13
|
+
Scientify 将一条研究提示转化为完整的自动化流水线。每个阶段由独立子 agent 执行,编排器在步骤间验证产出并传递上下文。
|
|
12
14
|
|
|
13
|
-
|
|
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
|
-
|
|
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
|
-
|
|
21
|
+
```mermaid
|
|
22
|
+
flowchart LR
|
|
23
|
+
A["文献调研"] --> B["深度分析"] --> C["实现计划"] --> D["代码实现"] --> E["自动审查"] --> F["完整实验"]
|
|
24
|
+
```
|
|
36
25
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
|
41
|
-
|
|
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
|
-
|
|
48
|
-
# 安装插件
|
|
49
|
-
openclaw plugins install scientify
|
|
44
|
+
> *"探索蛋白质折叠的最新进展,生成创新研究想法"*
|
|
50
45
|
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
60
|
-
openclaw plugins install scientify
|
|
61
|
-
```
|
|
59
|
+
> *"调研视觉-语言模型在医学影像中的最新论文"*
|
|
62
60
|
|
|
63
|
-
|
|
61
|
+
只需要一份结构化阅读清单时,单独运行调研阶段:
|
|
64
62
|
|
|
65
|
-
|
|
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
|
-
|
|
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
|
-
|
|
79
|
+
- 综合调研报告、分析笔记和方法对比表
|
|
80
|
+
- 按 Introduction、Related Work、Methods、Discussion 结构组织
|
|
81
|
+
- 产出可直接编辑的 Markdown 格式论文草稿
|
|
86
82
|
|
|
87
|
-
|
|
88
|
-
|
|
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
|
-
|
|
86
|
+
---
|
|
106
87
|
|
|
107
|
-
|
|
108
|
-
|
|
88
|
+
### 进阶场景 — 结合 OpenClaw 平台能力
|
|
89
|
+
|
|
90
|
+
Scientify 作为 OpenClaw 插件运行,天然可以调用平台的 MCP 服务器、浏览器自动化、多会话并发等能力,组合出更强大的工作流。
|
|
109
91
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
|
|
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
|
-
|
|
189
|
+
1. 用 `paper_browser` 精读目标论文的方法和实验部分
|
|
190
|
+
2. `research-plan` 提取实验配置(超参、数据集、指标)
|
|
191
|
+
3. `research-implement` 生成代码并在 `uv` 隔离环境中验证
|
|
192
|
+
4. `research-experiment` 运行完整实验
|
|
193
|
+
5. LLM 自动将实验结果与论文原始数据对比分析
|
|
135
194
|
|
|
136
|
-
|
|
195
|
+
---
|
|
137
196
|
|
|
138
|
-
|
|
197
|
+
## 环境要求
|
|
139
198
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
|
|
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
|
-
|
|
232
|
+
插件安装到 `~/.openclaw/extensions/scientify/`,自动启用。
|
|
156
233
|
|
|
157
|
-
|
|
234
|
+
### 从源码安装(开发用)
|
|
158
235
|
|
|
159
|
-
|
|
236
|
+
```bash
|
|
237
|
+
git clone https://github.com/user/scientify.git
|
|
238
|
+
cd scientify && pnpm install && pnpm build
|
|
160
239
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
\cite{paper2} extended this by...
|
|
240
|
+
# 链接为开发插件
|
|
241
|
+
openclaw plugins install -l ./
|
|
242
|
+
```
|
|
165
243
|
|
|
166
|
-
|
|
167
|
-
|
|
244
|
+
### 验证安装
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
openclaw plugins list
|
|
248
|
+
# 应显示: scientify (enabled)
|
|
168
249
|
```
|
|
169
250
|
|
|
170
|
-
|
|
251
|
+
安装后需 **重启 Gateway** 以加载插件:
|
|
171
252
|
|
|
253
|
+
```bash
|
|
254
|
+
# 停止运行中的 Gateway(Ctrl+C),然后:
|
|
255
|
+
openclaw gateway
|
|
172
256
|
```
|
|
173
|
-
你: 把 "强化学习" 和 "文本摘要" 两个领域结合,看能不能碰撞出新想法
|
|
174
257
|
|
|
175
|
-
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 通过 WebUI 使用
|
|
261
|
+
|
|
262
|
+
### 1. 打开 WebUI
|
|
176
263
|
|
|
177
|
-
|
|
264
|
+
浏览器访问 **http://127.0.0.1:18789/**。
|
|
178
265
|
|
|
179
|
-
|
|
180
|
-
用 RL 优化摘要的可读性和信息覆盖
|
|
181
|
-
参考: [2301.xxx], [2302.xxx]
|
|
266
|
+
### 2. 开始研究任务
|
|
182
267
|
|
|
183
|
-
|
|
184
|
-
用户反馈作为 reward 信号迭代优化摘要
|
|
268
|
+
在聊天框中输入研究提示,Scientify 的 skill 会被 LLM 自动匹配:
|
|
185
269
|
|
|
186
|
-
|
|
270
|
+
```
|
|
271
|
+
研究 "transformer efficiency",分析论文并生成创新想法
|
|
187
272
|
```
|
|
188
273
|
|
|
189
|
-
|
|
274
|
+
或者用斜杠命令直接调用特定 skill:
|
|
190
275
|
|
|
191
276
|
```
|
|
192
|
-
|
|
277
|
+
/research-pipeline
|
|
278
|
+
/literature-survey
|
|
279
|
+
/idea-generation
|
|
280
|
+
```
|
|
193
281
|
|
|
194
|
-
|
|
282
|
+
### 3. 监控子 agent 进度
|
|
195
283
|
|
|
196
|
-
|
|
284
|
+
编排器 spawn 子 agent 后,你会看到:
|
|
285
|
+
- **启动通知** — "Phase 1: Literature Survey 已启动"
|
|
286
|
+
- **完成通知** — 子 agent 完成后自动发送消息
|
|
287
|
+
- **进度推进** — 编排器验证产出后自动进入下一阶段
|
|
197
288
|
|
|
198
|
-
|
|
199
|
-
1. CNN/DailyMail - 标准新闻摘要 (287k samples)
|
|
200
|
-
2. arXiv - 长文档科学论文 (215k samples)
|
|
201
|
-
3. ...
|
|
289
|
+
随时查看状态:
|
|
202
290
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
291
|
+
```
|
|
292
|
+
/research-status
|
|
293
|
+
```
|
|
206
294
|
|
|
207
|
-
|
|
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
|
-
|
|
223
|
-
├── .active
|
|
224
|
-
├──
|
|
225
|
-
│ ├── project.json
|
|
226
|
-
│ ├── task.json
|
|
227
|
-
│ ├──
|
|
228
|
-
│ │ ├──
|
|
229
|
-
│ │ └──
|
|
230
|
-
│ ├──
|
|
231
|
-
│ │
|
|
232
|
-
│
|
|
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
|
|
238
|
-
│ ├── plan_res.md
|
|
239
|
-
│ ├── project/
|
|
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
|
|
245
|
-
│ ├── iterations/
|
|
373
|
+
│ ├── ml_res.md # 实现结果报告
|
|
374
|
+
│ ├── iterations/ # 审查迭代
|
|
246
375
|
│ │ └── judge_v*.md
|
|
247
|
-
│ ├── experiment_res.md
|
|
248
|
-
│ └── ideas/
|
|
249
|
-
│ ├──
|
|
250
|
-
│
|
|
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
|
-
|
|
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
|
|
280
|
-
|
|
281
|
-
#
|
|
282
|
-
openclaw plugins
|
|
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
|
-
|
|
296
|
-
|
|
297
|
-
|
|
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
|
|
19
|
-
*
|
|
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(): (
|
|
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;
|
|
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"}
|