scientify 1.13.6 → 2.1.0

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.
Files changed (100) hide show
  1. package/README.en.md +371 -0
  2. package/README.md +167 -356
  3. package/dist/index.d.ts +8 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +131 -122
  6. package/dist/index.js.map +1 -1
  7. package/dist/src/cli/research.d.ts +1 -6
  8. package/dist/src/cli/research.d.ts.map +1 -1
  9. package/dist/src/cli/research.js +227 -123
  10. package/dist/src/cli/research.js.map +1 -1
  11. package/dist/src/commands/metabolism-status.d.ts +3 -3
  12. package/dist/src/commands/metabolism-status.d.ts.map +1 -1
  13. package/dist/src/commands/metabolism-status.js +72 -75
  14. package/dist/src/commands/metabolism-status.js.map +1 -1
  15. package/dist/src/commands.d.ts +1 -1
  16. package/dist/src/commands.d.ts.map +1 -1
  17. package/dist/src/commands.js +0 -55
  18. package/dist/src/commands.js.map +1 -1
  19. package/dist/src/hooks/cron-skill-inject.d.ts +6 -7
  20. package/dist/src/hooks/cron-skill-inject.d.ts.map +1 -1
  21. package/dist/src/hooks/cron-skill-inject.js +6 -15
  22. package/dist/src/hooks/cron-skill-inject.js.map +1 -1
  23. package/dist/src/hooks/research-mode.d.ts +1 -1
  24. package/dist/src/hooks/research-mode.d.ts.map +1 -1
  25. package/dist/src/hooks/research-mode.js +24 -101
  26. package/dist/src/hooks/research-mode.js.map +1 -1
  27. package/dist/src/hooks/scientify-signature.d.ts +1 -1
  28. package/dist/src/hooks/scientify-signature.d.ts.map +1 -1
  29. package/dist/src/hooks/scientify-signature.js +2 -5
  30. package/dist/src/hooks/scientify-signature.js.map +1 -1
  31. package/dist/src/knowledge-state/render.d.ts +1 -9
  32. package/dist/src/knowledge-state/render.d.ts.map +1 -1
  33. package/dist/src/knowledge-state/render.js +33 -187
  34. package/dist/src/knowledge-state/render.js.map +1 -1
  35. package/dist/src/knowledge-state/store.d.ts.map +1 -1
  36. package/dist/src/knowledge-state/store.js +65 -1100
  37. package/dist/src/knowledge-state/store.js.map +1 -1
  38. package/dist/src/knowledge-state/types.d.ts +0 -76
  39. package/dist/src/knowledge-state/types.d.ts.map +1 -1
  40. package/dist/src/literature/subscription-state.d.ts +0 -2
  41. package/dist/src/literature/subscription-state.d.ts.map +1 -1
  42. package/dist/src/literature/subscription-state.js +7 -1375
  43. package/dist/src/literature/subscription-state.js.map +1 -1
  44. package/dist/src/research-subscriptions/constants.d.ts +1 -1
  45. package/dist/src/research-subscriptions/constants.js +1 -1
  46. package/dist/src/research-subscriptions/cron-client.d.ts +1 -1
  47. package/dist/src/research-subscriptions/cron-client.d.ts.map +1 -1
  48. package/dist/src/research-subscriptions/delivery.d.ts +1 -1
  49. package/dist/src/research-subscriptions/delivery.d.ts.map +1 -1
  50. package/dist/src/research-subscriptions/handlers.d.ts +1 -1
  51. package/dist/src/research-subscriptions/handlers.d.ts.map +1 -1
  52. package/dist/src/research-subscriptions/handlers.js +10 -20
  53. package/dist/src/research-subscriptions/handlers.js.map +1 -1
  54. package/dist/src/research-subscriptions/parse.d.ts.map +1 -1
  55. package/dist/src/research-subscriptions/parse.js +0 -25
  56. package/dist/src/research-subscriptions/parse.js.map +1 -1
  57. package/dist/src/research-subscriptions/prompt.d.ts +1 -1
  58. package/dist/src/research-subscriptions/prompt.d.ts.map +1 -1
  59. package/dist/src/research-subscriptions/prompt.js +195 -244
  60. package/dist/src/research-subscriptions/prompt.js.map +1 -1
  61. package/dist/src/research-subscriptions/types.d.ts +1 -3
  62. package/dist/src/research-subscriptions/types.d.ts.map +1 -1
  63. package/dist/src/templates/bootstrap.d.ts.map +1 -1
  64. package/dist/src/templates/bootstrap.js +32 -19
  65. package/dist/src/templates/bootstrap.js.map +1 -1
  66. package/dist/src/tools/arxiv-download.d.ts +1 -2
  67. package/dist/src/tools/arxiv-download.d.ts.map +1 -1
  68. package/dist/src/tools/arxiv-search.d.ts +1 -2
  69. package/dist/src/tools/arxiv-search.d.ts.map +1 -1
  70. package/dist/src/tools/github-search-tool.d.ts +1 -2
  71. package/dist/src/tools/github-search-tool.d.ts.map +1 -1
  72. package/dist/src/tools/openalex-search.d.ts +1 -2
  73. package/dist/src/tools/openalex-search.d.ts.map +1 -1
  74. package/dist/src/tools/openreview-lookup.d.ts +1 -2
  75. package/dist/src/tools/openreview-lookup.d.ts.map +1 -1
  76. package/dist/src/tools/paper-browser.d.ts +1 -2
  77. package/dist/src/tools/paper-browser.d.ts.map +1 -1
  78. package/dist/src/tools/result.d.ts +3 -5
  79. package/dist/src/tools/result.d.ts.map +1 -1
  80. package/dist/src/tools/result.js +5 -7
  81. package/dist/src/tools/result.js.map +1 -1
  82. package/dist/src/tools/scientify-cron.d.ts +4 -11
  83. package/dist/src/tools/scientify-cron.d.ts.map +1 -1
  84. package/dist/src/tools/scientify-cron.js +19 -524
  85. package/dist/src/tools/scientify-cron.js.map +1 -1
  86. package/dist/src/tools/scientify-literature-state.d.ts +1 -76
  87. package/dist/src/tools/scientify-literature-state.d.ts.map +1 -1
  88. package/dist/src/tools/scientify-literature-state.js +46 -363
  89. package/dist/src/tools/scientify-literature-state.js.map +1 -1
  90. package/dist/src/tools/unpaywall-download.d.ts +1 -2
  91. package/dist/src/tools/unpaywall-download.d.ts.map +1 -1
  92. package/dist/src/types.d.ts +16 -0
  93. package/dist/src/types.d.ts.map +1 -0
  94. package/dist/src/types.js +2 -0
  95. package/dist/src/types.js.map +1 -0
  96. package/openclaw.plugin.json +4 -2
  97. package/package.json +1 -1
  98. package/skills/metabolism/SKILL.md +2 -0
  99. package/skills/research-subscription/SKILL.md +1 -29
  100. package/README.zh.md +0 -494
package/README.zh.md DELETED
@@ -1,494 +0,0 @@
1
- # Scientify
2
-
3
- **为 OpenClaw 打造的 AI 驱动研究工作流自动化插件。**
4
-
5
- Scientify 是一个 [OpenClaw](https://github.com/openclaw/openclaw) 插件,通过 LLM 驱动的子 agent 自动化完整的学术研究流程 — 从文献调研到实验执行。
6
-
7
- **官网:** [scientify.tech](https://scientify.tech) | [English](./README.md)
8
-
9
- ---
10
-
11
- ## 它能做什么
12
-
13
- Scientify 将一条研究提示转化为完整的自动化流水线。每个阶段由独立子 agent 执行,编排器在步骤间验证产出并传递上下文。
14
-
15
- ### 场景一 — 端到端研究流水线
16
-
17
- > *"研究经典 ML 分类器在 Fashion-MNIST 上的缩放定律"*
18
-
19
- **research-pipeline** 编排器依次 spawn 6 个阶段的子 agent:
20
-
21
- ```mermaid
22
- flowchart LR
23
- A["文献调研"] --> B["深度分析"] --> C["实现计划"] --> D["代码实现"] --> E["自动审查"] --> F["完整实验"]
24
- ```
25
-
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>
39
-
40
- ---
41
-
42
- ### 场景二 — 创新想法生成
43
-
44
- > *"探索蛋白质折叠的最新进展,生成创新研究想法"*
45
-
46
- **idea-generation** skill 先调研文献,然后:
47
-
48
- 1. 基于真实论文生成 **5 个多样化研究想法**
49
- 2. 从新颖性、可行性、影响力三个维度打分
50
- 3. 选出最佳想法,生成带详细方法论的**增强提案**
51
-
52
- > [!TIP]
53
- > **产出:** `ideas/selected_idea.md` — 一份可直接推进的研究提案。
54
-
55
- ---
56
-
57
- ### 场景三 — 独立文献调研
58
-
59
- > *"调研视觉-语言模型在医学影像中的最新论文"*
60
-
61
- 只需要一份结构化阅读清单时,单独运行调研阶段:
62
-
63
- - 搜索 **arXiv**(CS/ML 方向)和 **OpenAlex**(跨学科,覆盖更广)
64
- - 下载 `.tex` 源文件;通过 **Unpaywall** 获取开放获取 PDF
65
- - 按子主题聚类,提取每个方向的关键发现
66
- - 生成结构化调研报告
67
-
68
- > [!TIP]
69
- > **产出:** `survey/report.md` + 原始论文在 `papers/_downloads/`
70
-
71
- ---
72
-
73
- ### 场景四 — 综述论文撰写
74
-
75
- > *"基于项目研究产出撰写一篇综述论文"*
76
-
77
- 完成研究流水线(或至少文献调研 + 深度分析)后,**write-review-paper** skill 自动整合:
78
-
79
- - 综合调研报告、分析笔记和方法对比表
80
- - 按 Introduction、Related Work、Methods、Discussion 结构组织
81
- - 产出可直接编辑的 Markdown 格式论文草稿
82
-
83
- > [!TIP]
84
- > **产出:** 基于项目所有研究产物生成的综述/调研论文草稿。
85
-
86
- ---
87
-
88
- ### 进阶场景 — 结合 OpenClaw 平台能力
89
-
90
- Scientify 作为 OpenClaw 插件运行,天然可以调用平台的 MCP 服务器、浏览器自动化、多会话并发等能力,组合出更强大的工作流。
91
-
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 / 邮件"]
105
- ```
106
-
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
-
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"]
128
- ```
129
-
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
154
- ```
155
-
156
- - 每个子主题独立运行完整流水线,拥有独立项目目录
157
- - 主 agent 收集各方向结果,生成跨主题对比分析
158
- - 适合综述论文选题阶段快速摸底多个方向
159
-
160
- ---
161
-
162
- ### 场景八 — 论文精读助手
163
-
164
- > *"帮我逐段精读这篇 Attention Is All You Need,解释每个公式"*
165
-
166
- 结合 OpenClaw 的对话界面和 Scientify 的 `paper_browser` 工具,进行交互式论文阅读:
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 结果"]
187
- ```
188
-
189
- 1. 用 `paper_browser` 精读目标论文的方法和实验部分
190
- 2. `research-plan` 提取实验配置(超参、数据集、指标)
191
- 3. `research-implement` 生成代码并在 `uv` 隔离环境中验证
192
- 4. `research-experiment` 运行完整实验
193
- 5. LLM 自动将实验结果与论文原始数据对比分析
194
-
195
- ---
196
-
197
- ## 环境要求
198
-
199
- - **Node.js** >= 18
200
- - **Python 3** + **uv**(用于 ML 代码执行)
201
- - **git**
202
-
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
216
- ```
217
-
218
- 启动后,WebUI 地址为 **http://127.0.0.1:18789/**(默认端口)。
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
230
- ```
231
-
232
- 插件安装到 `~/.openclaw/extensions/scientify/`,自动启用。
233
-
234
- ### 从源码安装(开发用)
235
-
236
- ```bash
237
- git clone https://github.com/user/scientify.git
238
- cd scientify && pnpm install && pnpm build
239
-
240
- # 链接为开发插件
241
- openclaw plugins install -l ./
242
- ```
243
-
244
- ### 验证安装
245
-
246
- ```bash
247
- openclaw plugins list
248
- # 应显示: scientify (enabled)
249
- ```
250
-
251
- 安装后需 **重启 Gateway** 以加载插件:
252
-
253
- ```bash
254
- # 停止运行中的 Gateway(Ctrl+C),然后:
255
- openclaw gateway
256
- ```
257
-
258
- ---
259
-
260
- ## 通过 WebUI 使用
261
-
262
- ### 1. 打开 WebUI
263
-
264
- 浏览器访问 **http://127.0.0.1:18789/**。
265
-
266
- ### 2. 开始研究任务
267
-
268
- 在聊天框中输入研究提示,Scientify 的 skill 会被 LLM 自动匹配:
269
-
270
- ```
271
- 研究 "transformer efficiency",分析论文并生成创新想法
272
- ```
273
-
274
- 或者用斜杠命令直接调用特定 skill:
275
-
276
- ```
277
- /research-pipeline
278
- /research-collect
279
- /idea-generation
280
- ```
281
-
282
- ### 3. 监控子 agent 进度
283
-
284
- 编排器 spawn 子 agent 后,你会看到:
285
- - **启动通知** — "Phase 1: Literature Survey 已启动"
286
- - **完成通知** — 子 agent 完成后自动发送消息
287
- - **进度推进** — 编排器验证产出后自动进入下一阶段
288
-
289
- 随时查看状态:
290
-
291
- ```
292
- /research-status
293
- ```
294
-
295
- ### 4. 管理项目
296
-
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
- | **research-collect** | `/research-collect` | 搜索 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
- | **research-subscription** | 通过 `scientify_cron_job` 创建/查看/删除定时 Scientify 任务(研究推送或普通提醒)。 |
327
-
328
- ### Tools(LLM 可调用)
329
-
330
- | Tool | 描述 |
331
- |------|------|
332
- | `arxiv_search` | 搜索 arXiv 论文,返回元数据(标题、作者、摘要、ID)。不下载文件。支持按相关性/日期排序、日期过滤。 |
333
- | `arxiv_download` | 按 arXiv ID 批量下载论文,优先 .tex 源文件(PDF 回退)。需指定绝对路径输出目录。 |
334
- | `openalex_search` | 通过 OpenAlex API 搜索跨学科学术论文,返回 DOI、作者、引用数、OA 状态。覆盖范围比 arXiv 更广。 |
335
- | `openreview_lookup` | 按标题/ID/forum 检索 OpenReview 证据。返回(若存在)决策结论、review 的 rating/confidence 聚合,以及简要审稿摘要,用于投稿风险分析。 |
336
- | `unpaywall_download` | 通过 Unpaywall API 按 DOI 下载开放获取 PDF。非 OA 论文跳过不报错。 |
337
- | `github_search` | 搜索 GitHub 仓库,返回仓库名、描述、star 数、URL。支持语言过滤和排序。 |
338
- | `paper_browser` | 分页浏览大型论文文件(.tex/.md),避免一次性加载数千行到上下文。返回指定行范围和导航信息。 |
339
- | `scientify_cron_job` | 由模型管理 Scientify 定时任务(`upsert`/`list`/`remove`)。主要参数:`action`、`scope`、`schedule`、`topic`、`project`、`message`、`max_papers`、`recency_days`、`candidate_pool`、`score_weights`、`sources`、`channel`、`to`、`no_deliver`、`run_now`、`job_id`。当 `run_now=true` 且是研究任务时,还会返回 `status_json` 快照。 |
340
- | `scientify_literature_state` | 订阅增量状态工具:`prepare` 获取去重上下文(含记忆提示)、`record` 记录已推送论文 + 项目级 `knowledge_state` 产物(含 `paper_notes` 深读字段与全文临时清理日志)、`feedback` 写入轻量偏好记忆、`status` 查看状态与可追溯日志。 |
341
-
342
- ### Commands(直接执行,不经 LLM)
343
-
344
- | 命令 | 描述 |
345
- |------|------|
346
- | `/research-status` | 显示工作空间状态和当前项目 |
347
- | `/papers` | 列出已下载论文及元数据 |
348
- | `/ideas` | 列出已生成想法 |
349
- | `/projects` | 列出所有项目 |
350
- | `/project-switch <id>` | 切换当前项目 |
351
- | `/project-delete <id>` | 删除项目 |
352
- | `/research-subscribe ...` | 创建/更新定时 Scientify 任务(支持 `daily`、`weekly`、`every`、`at`、`cron`;可选参数:`--channel`、`--to`、`--topic`、`--project`、`--message`、`--max-papers`、`--recency-days`、`--candidate-pool`、`--score-weights`、`--sources`、`--no-deliver`) |
353
- | `/research-subscriptions` | 查看你的 Scientify 定时任务 |
354
- | `/research-unsubscribe [job-id]` | 取消你的 Scientify 定时任务(或删除指定任务) |
355
- | `/metabolism-status` | 兼容别名:查看项目 `knowledge_state` 摘要 |
356
-
357
- `/research-subscribe` 示例:
358
- - `/research-subscribe daily 09:00 Asia/Shanghai`(默认尽量推送到当前消息来源的用户/频道)
359
- - `/research-subscribe every 2h --channel feishu --to ou_xxx`
360
- - `/research-subscribe at 2m --channel feishu --to ou_xxx`
361
- - `/research-subscribe weekly mon 09:30 --channel telegram --to 123456789`
362
- - `/research-subscribe at 2m --channel webui`(`webui`/`tui` 是 `last` 的别名)
363
- - `/research-subscribe daily 08:00 --topic "LLM alignment"`
364
- - `/research-subscribe daily 08:00 --topic "LLM alignment" --project llm-alignment`
365
- - `/research-subscribe daily 08:00 --topic "LLM alignment" --max-papers 5 --recency-days 30 --sources arxiv,openalex`
366
- - `/research-subscribe daily 08:00 --topic "LLM alignment" --candidate-pool 12 --score-weights relevance:45,novelty:20,authority:25,actionability:10`
367
- - `/research-subscribe at 1m --message "Time to drink coffee."`
368
- - `/research-subscribe daily 09:00 --no-deliver`(仅后台运行,不主动推送)
369
-
370
- 行为说明:
371
- - Scoped upsert:按 sender/channel 作用域覆盖更新,同一作用域新建任务会替换旧任务。
372
- - Delivery alias:`--channel webui` 和 `--channel tui` 会映射到 `last`,不需要 `--to`。
373
- - 提醒兜底:如果 `topic` 看起来是普通提醒(例如“提醒我睡觉”),Scientify 会自动按提醒消息处理,不走文献流水线。
374
- - 一次性研究任务(`at ... --topic ...`)使用“代表论文聚焦检索”;周期任务(`daily/weekly/every/cron`)保持“增量追踪”模式。
375
- - 周期增量模式会先构建候选池并评分后再选 Top-K;若本轮无“未推送新文献”,会自动再跑一轮代表性回退检索,再决定是否返回空结果。
376
- - 默认 `max_papers` 为 5(可用 `--max-papers` 覆盖)。
377
- - 研究记录内置质量闸门:核心论文全文覆盖率 >= 80%、证据绑定率 >= 90%、引用错误率 < 2%。默认采用 soft gate:非致命缺口会记录为 warning(`quality_gate.severity=warn`)但保留 `ok`,仅 fatal 问题才降级为 `degraded_quality`。
378
- - 假设相关回复采用门禁驱动:
379
- - 当 `knowledge_state_summary.hypothesis_gate.accepted == 0`:只返回事实型周期状态(论文/阅读状态/变更/门禁),不输出泛化“下一步路线/deep dive”建议。
380
- - 当 `accepted > 0`:默认在当前消息内直接给出假设详情。
381
- - 仅在渠道/运行时明确支持多次发送时,才可拆成两条连续推送(简报 + 详情)。
382
- - 轻量偏好记忆(关键词/来源亲和)仅后台保存,不默认展示给用户,会静默影响后续排序。
383
- - 增量去重与偏好状态会持久化到 `~/.openclaw/workspace/scientify/`(`literature-state.json`、`literature-push-log.jsonl`)。
384
- - 项目级研究可追溯状态会持久化到 `~/.openclaw/workspace/projects/{project-id}/knowledge_state/`。
385
- - 全文优先的定时研究会在 `knowledge_state/paper_notes/` 中沉淀逐篇深读记录(领域/子领域/交叉领域/研究目标/方法设计/贡献/经验启发/必读要点/局限/证据锚点)。
386
- - 全文文件建议下载到临时目录并在每轮后清理,清理结果会写入 `knowledge_state` 的 run log。
387
- - 存储位置:订阅任务保存在 OpenClaw cron 存储中;知识状态产物写入项目 workspace 文件。
388
- - 全局查看:`openclaw cron list --all --json`
389
- - 兼容别名:`openclaw research init/list/status/delete` 与 `/metabolism-status` 保留用于迁移,内部都走统一的 `projects/*/knowledge_state` 架构。
390
-
391
- ---
392
-
393
- ## 工作空间结构
394
-
395
- 所有研究数据组织在 `~/.openclaw/workspace/projects/` 下:
396
-
397
- ```
398
- projects/
399
- ├── .active # 当前项目 ID
400
- ├── scaling-law-fashion-mnist/ # 示例项目
401
- │ ├── project.json # 元数据
402
- │ ├── task.json # 任务定义
403
- │ ├── papers/
404
- │ │ ├── _meta/ # 论文元数据 (*.json)
405
- │ │ └── _downloads/ # 原始 .tex/.pdf 文件
406
- │ ├── survey/
407
- │ │ └── report.md # 文献调研报告
408
- │ ├── notes/ # 逐篇深度分析
409
- │ │ └── paper_{arxiv_id}.md
410
- │ ├── survey_res.md # 核心方法对比表
411
- │ ├── plan_res.md # 实现计划
412
- │ ├── project/ # ML 代码
413
- │ │ ├── run.py
414
- │ │ └── requirements.txt
415
- │ ├── ml_res.md # 实现结果报告
416
- │ ├── iterations/ # 审查迭代
417
- │ │ └── judge_v*.md
418
- │ ├── experiment_res.md # 最终实验结果
419
- │ ├── ideas/ # 生成的想法
420
- │ │ ├── idea_*.md
421
- │ │ └── selected_idea.md
422
- │ └── knowledge_state/ # 定时研究状态产物
423
- │ ├── knowledge/
424
- │ ├── paper_notes/ # 逐篇深读沉淀
425
- │ ├── daily_changes/
426
- │ ├── hypotheses/
427
- │ ├── logs/
428
- │ ├── state.json
429
- │ └── events.jsonl
430
- └── another-project/
431
- ```
432
-
433
- ---
434
-
435
- ## 配置
436
-
437
- 插件设置位于 `~/.openclaw/openclaw.json`:
438
-
439
- ```json
440
- {
441
- "plugins": {
442
- "entries": {
443
- "scientify": {
444
- "enabled": true
445
- }
446
- }
447
- }
448
- }
449
- ```
450
-
451
- ### 插件管理
452
-
453
- ```bash
454
- openclaw plugins list # 列出已安装插件
455
- openclaw plugins enable scientify # 启用
456
- openclaw plugins disable scientify # 禁用
457
- openclaw plugins update scientify # 更新到最新版
458
- openclaw plugins doctor # 诊断问题
459
- ```
460
-
461
- ---
462
-
463
- ## 已知限制
464
-
465
- - **子 agent 超时**:每个子 agent 超时 30 分钟(`runTimeoutSeconds: 1800`)。复杂文献调研可能需要更长时间。
466
- - **GPU/Sandbox**:代码默认在宿主机直接执行。OpenClaw sandbox 暂不支持 GPU 透传。
467
- - **模型依赖**:研究质量与使用的 LLM 模型强相关。推荐 Claude Opus 4.5+ 或 GPT-5+。
468
-
469
- ---
470
-
471
- ## 开发
472
-
473
- ```bash
474
- git clone https://github.com/user/scientify.git
475
- cd scientify
476
- pnpm install
477
- pnpm build # 构建 TypeScript
478
- pnpm dev # 监听模式
479
-
480
- # 链接到 OpenClaw 测试
481
- openclaw plugins install -l ./
482
- ```
483
-
484
- 参见 [CLAUDE.md](./CLAUDE.md) 了解版本更新流程和贡献指南。
485
-
486
- ---
487
-
488
- ## License
489
-
490
- MIT
491
-
492
- ## Author
493
-
494
- tsingyuai