scientify 1.11.0 → 1.12.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 (43) hide show
  1. package/README.md +2 -2
  2. package/README.zh.md +2 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +16 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/cli/research.d.ts +10 -0
  7. package/dist/src/cli/research.d.ts.map +1 -0
  8. package/dist/src/cli/research.js +283 -0
  9. package/dist/src/cli/research.js.map +1 -0
  10. package/dist/src/commands/metabolism-status.d.ts +6 -0
  11. package/dist/src/commands/metabolism-status.d.ts.map +1 -0
  12. package/dist/src/commands/metabolism-status.js +100 -0
  13. package/dist/src/commands/metabolism-status.js.map +1 -0
  14. package/dist/src/hooks/cron-skill-inject.d.ts +21 -0
  15. package/dist/src/hooks/cron-skill-inject.d.ts.map +1 -0
  16. package/dist/src/hooks/cron-skill-inject.js +53 -0
  17. package/dist/src/hooks/cron-skill-inject.js.map +1 -0
  18. package/dist/src/templates/bootstrap.d.ts +8 -0
  19. package/dist/src/templates/bootstrap.d.ts.map +1 -0
  20. package/dist/src/templates/bootstrap.js +153 -0
  21. package/dist/src/templates/bootstrap.js.map +1 -0
  22. package/dist/src/tools/arxiv-download.d.ts +2 -2
  23. package/dist/src/tools/arxiv-download.d.ts.map +1 -1
  24. package/dist/src/tools/arxiv-download.js +9 -11
  25. package/dist/src/tools/arxiv-download.js.map +1 -1
  26. package/dist/src/tools/unpaywall-download.d.ts +2 -2
  27. package/dist/src/tools/unpaywall-download.js +4 -4
  28. package/dist/src/tools/unpaywall-download.js.map +1 -1
  29. package/openclaw.plugin.json +4 -2
  30. package/package.json +1 -1
  31. package/skills/idea-generation/SKILL.md +24 -29
  32. package/skills/metabolism/SKILL.md +118 -0
  33. package/skills/metabolism-init/SKILL.md +80 -0
  34. package/skills/{literature-survey → research-collect}/SKILL.md +23 -33
  35. package/skills/research-experiment/SKILL.md +1 -1
  36. package/skills/research-implement/SKILL.md +1 -1
  37. package/skills/research-pipeline/SKILL.md +6 -11
  38. package/skills/research-plan/SKILL.md +3 -3
  39. package/skills/research-review/SKILL.md +1 -1
  40. package/skills/research-survey/SKILL.md +6 -6
  41. package/skills/write-review-paper/SKILL.md +14 -14
  42. package/skills/_shared/workspace-spec.md +0 -164
  43. package/skills/install-scientify/SKILL.md +0 -106
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Templates for research project agent workspace files.
3
+ * Generated by `openclaw research init <id>` CLI command.
4
+ */
5
+ export function renderBootstrapMd(projectName) {
6
+ return `# Research Agent Bootstrap
7
+
8
+ 你刚刚被创建为课题「${projectName}」的研究 agent。你需要完成首次配置。
9
+
10
+ ## 引导流程
11
+
12
+ 1. 向用户问好,说明你是课题「${projectName}」的研究 agent,请用户描述研究方向
13
+ 2. 根据用户回答,提取:
14
+ - 核心域关键词(3-5 个)
15
+ - 建议的 arXiv 分类(如 cs.LG, cs.AI)
16
+ - 建议的监测带相邻领域分类
17
+ 3. 向用户确认以上配置,接受调整
18
+ 4. 确认后执行以下写入操作:
19
+ - 更新 SOUL.md:填写研究方向、核心域、监测带各字段
20
+ - 生成 metabolism/config.json(参考下方模板)
21
+ 5. 询问用户是否立即执行 Day 0(构建初始知识状态 K(T0))
22
+ - 如果是,使用 arxiv_search 按配置的关键词检索论文,执行 skills/metabolism/SKILL.md 中的四步循环
23
+ 6. 删除本文件(BOOTSTRAP.md)
24
+
25
+ ## config.json 模板
26
+
27
+ \`\`\`json
28
+ {
29
+ "projectId": "${projectName}",
30
+ "coreQuery": {
31
+ "keywords": ["关键词1", "关键词2"],
32
+ "arxivCategories": ["cs.LG"],
33
+ "dateMode": "daily-new"
34
+ },
35
+ "monitorZone": {
36
+ "categories": ["相邻领域分类"],
37
+ "enabled": true
38
+ },
39
+ "heartbeat": {
40
+ "cronExpression": "0 6 * * *",
41
+ "timezone": "Asia/Shanghai",
42
+ "enabled": true
43
+ },
44
+ "agentId": "research-${projectName}",
45
+ "currentDay": 0,
46
+ "createdAt": "${new Date().toISOString()}"
47
+ }
48
+ \`\`\`
49
+ `;
50
+ }
51
+ export function renderSoulMd(projectName) {
52
+ return `# Project Agent — ${projectName}
53
+
54
+ 你是课题「${projectName}」的研究 agent。
55
+
56
+ ## 研究方向
57
+ {由 BOOTSTRAP 流程填写}
58
+
59
+ ## 核心域
60
+ 关键词: {由 BOOTSTRAP 流程填写}
61
+ arXiv 分类: {由 BOOTSTRAP 流程填写}
62
+
63
+ ## 监测带
64
+ 相邻领域: {由 BOOTSTRAP 流程填写}
65
+ `;
66
+ }
67
+ export function renderAgentsMd() {
68
+ return `# Agent Operating Manual
69
+
70
+ ## Workspace Layout
71
+
72
+ 本 agent 的工作目录即为项目根目录(\`$W\`)。所有文件相对于 \`$W\` 组织:
73
+
74
+ \`\`\`
75
+ $W/
76
+ ├── SOUL.md # 身份 + 研究方向
77
+ ├── AGENTS.md # 本文档
78
+ ├── metabolism/ # 知识新陈代谢
79
+ │ ├── config.json # 项目配置(关键词、分类、heartbeat)
80
+ │ ├── knowledge/ # K(t) 持久知识状态
81
+ │ │ ├── _index.md # 全景索引
82
+ │ │ └── topic-*.md # 主题文件(上限 50)
83
+ │ ├── diffs/ # 每日 diff 报告
84
+ │ ├── hypotheses/ # 生成的假设
85
+ │ └── log/ # 运行日志
86
+ ├── survey/ # /research-collect outputs
87
+ │ ├── search_terms.json
88
+ │ └── report.md
89
+ ├── papers/ # 下载的论文
90
+ │ ├── _downloads/ # 原始下载
91
+ │ ├── _meta/ # 元数据 {arxiv_id}.json
92
+ │ └── {direction}/ # 按方向分类
93
+ ├── repos/ # 参考代码仓库
94
+ ├── notes/ # /research-survey: 逐篇深度笔记
95
+ │ └── paper_{arxiv_id}.md
96
+ ├── ideas/ # /idea-generation outputs
97
+ ├── review/ # /write-review-paper outputs
98
+ ├── survey_res.md # /research-survey: 方法对比报告
99
+ ├── plan_res.md # /research-plan: 实现计划
100
+ ├── project/ # /research-implement: 代码实现
101
+ ├── ml_res.md # /research-implement: 执行报告
102
+ ├── iterations/ # /research-review: 审查迭代
103
+ │ └── judge_v*.md
104
+ ├── experiment_res.md # /research-experiment: 实验报告
105
+ └── skills/ # workspace skills (metabolism 等)
106
+ \`\`\`
107
+
108
+ ## Session Context
109
+
110
+ 你可能在不同类型的 session 中被唤醒:
111
+ - **Main session**:与人类直接对话,可触发 research-pipeline 等编排 skill
112
+ - **Cron session**:定时触发,执行周期性任务(如每日 metabolism)
113
+ - **Spawn session**:被 main session 调度(sessions_spawn),执行一次性重任务
114
+
115
+ 任务指令会在 session 启动时注入,按指令执行即可。
116
+
117
+ ## Conventions
118
+
119
+ ### File Existence = Step Completion
120
+ 检查产出文件是否存在再执行。已存在则跳过。支持崩溃恢复和增量推进。
121
+
122
+ ### Immutability
123
+ 产出文件一旦写入不修改,除非用户明确要求。例外:\`project/\` 在 implement-review 迭代中可变。
124
+
125
+ ### Knowledge File Rules
126
+ - knowledge/ 下的文件是持久知识状态,修改需谨慎
127
+ - 每次修改必须先读取当前内容再更新
128
+ - _index.md 是全景索引,必须与 topic 文件保持同步
129
+ - topic 文件数上限 50,低活跃主题应合并归档
130
+
131
+ ## Research Rigor
132
+
133
+ - 先读原文,再思考,最后作答
134
+ - 不捏造引用或实验结果,每个断言需有来源
135
+ - 不确定时说「不确定」而非猜测
136
+ - 读论文全文(.tex),不能只读 abstract
137
+ - 想法必须扎根于真实论文
138
+
139
+ ## Skill Outputs Summary
140
+
141
+ | Skill | Primary Outputs |
142
+ |-------|-----------------|
143
+ | /research-collect | survey/, papers/ |
144
+ | /research-survey | notes/paper_*.md, survey_res.md |
145
+ | /research-plan | plan_res.md |
146
+ | /research-implement | project/, ml_res.md |
147
+ | /research-review | iterations/judge_v*.md |
148
+ | /research-experiment | experiment_res.md |
149
+ | /idea-generation | ideas/ |
150
+ | /write-review-paper | review/ |
151
+ `;
152
+ }
153
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/templates/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,OAAO;;YAEG,WAAW;;;;kBAIL,WAAW;;;;;;;;;;;;;;;;;kBAiBX,WAAW;;;;;;;;;;;;;;;yBAeJ,WAAW;;kBAElB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;CAGzC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,qBAAqB,WAAW;;OAElC,WAAW;;;;;;;;;;;CAWjB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFR,CAAC;AACF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export declare const ArxivDownloadSchema: import("@sinclair/typebox").TObject<{
2
2
  arxiv_ids: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
3
- output_dir: import("@sinclair/typebox").TString;
3
+ output_dir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
4
4
  }>;
5
5
  /**
6
6
  * arxiv_download: Download papers by arxiv_id. Requires explicit output_dir.
@@ -11,7 +11,7 @@ export declare function createArxivDownloadTool(): {
11
11
  description: string;
12
12
  parameters: import("@sinclair/typebox").TObject<{
13
13
  arxiv_ids: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
14
- output_dir: import("@sinclair/typebox").TString;
14
+ output_dir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
15
15
  }>;
16
16
  execute: (_toolCallId: string, rawArgs: unknown) => Promise<{
17
17
  type: "tool_result";
@@ -1 +1 @@
1
- {"version":3,"file":"arxiv-download.d.ts","sourceRoot":"","sources":["../../../src/tools/arxiv-download.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,mBAAmB;;;EAO9B,CAAC;AAoIH;;GAEG;AACH,wBAAgB,uBAAuB;;;;;;;;2BAMN,MAAM,WAAW,OAAO;;;;;;;;EA4DxD"}
1
+ {"version":3,"file":"arxiv-download.d.ts","sourceRoot":"","sources":["../../../src/tools/arxiv-download.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,mBAAmB;;;EAO9B,CAAC;AAoIH;;GAEG;AACH,wBAAgB,uBAAuB;;;;;;;;2BAMN,MAAM,WAAW,OAAO;;;;;;;;EA0DxD"}
@@ -11,9 +11,9 @@ export const ArxivDownloadSchema = Type.Object({
11
11
  arxiv_ids: Type.Array(Type.String(), {
12
12
  description: "List of arXiv IDs to download (e.g. ['2401.12345', '2312.00001']).",
13
13
  }),
14
- output_dir: Type.String({
15
- description: "Directory to save files. MUST be an absolute path.",
16
- }),
14
+ output_dir: Type.Optional(Type.String({
15
+ description: "Directory to save files. Defaults to 'papers/' relative to cwd. Can be relative or absolute.",
16
+ })),
17
17
  });
18
18
  function readStringParam(params, key, opts) {
19
19
  const value = params[key];
@@ -131,19 +131,17 @@ export function createArxivDownloadTool() {
131
131
  return {
132
132
  label: "ArXiv Download",
133
133
  name: "arxiv_download",
134
- description: "Download arXiv papers by ID. Downloads .tex source (with PDF fallback). Requires explicit output_dir (absolute path).",
134
+ description: "Download arXiv papers by ID. Downloads .tex source (with PDF fallback). output_dir defaults to 'papers/' if omitted.",
135
135
  parameters: ArxivDownloadSchema,
136
136
  execute: async (_toolCallId, rawArgs) => {
137
137
  const params = rawArgs;
138
138
  const arxivIds = readArrayParam(params, "arxiv_ids");
139
- const outputDir = readStringParam(params, "output_dir", { required: true });
139
+ const outputDir = readStringParam(params, "output_dir") ?? "papers";
140
140
  if (arxivIds.length === 0) {
141
141
  return Result.err("invalid_params", "arxiv_ids must be a non-empty array");
142
142
  }
143
- if (!path.isAbsolute(outputDir)) {
144
- return Result.err("invalid_params", `output_dir must be an absolute path, got: ${outputDir}`);
145
- }
146
- await fs.promises.mkdir(outputDir, { recursive: true });
143
+ const resolvedOutputDir = path.resolve(outputDir);
144
+ await fs.promises.mkdir(resolvedOutputDir, { recursive: true });
147
145
  const logger = { debug: (msg) => console.log(`[arxiv-download] ${msg}`) };
148
146
  const downloads = [];
149
147
  for (let i = 0; i < arxivIds.length; i++) {
@@ -153,7 +151,7 @@ export function createArxivDownloadTool() {
153
151
  await delay(RATE_LIMIT_MS);
154
152
  }
155
153
  // Always try .tex first, fallback to PDF automatically
156
- const result = await downloadTexSource(arxivId, outputDir, logger);
154
+ const result = await downloadTexSource(arxivId, resolvedOutputDir, logger);
157
155
  downloads.push({
158
156
  arxiv_id: arxivId,
159
157
  success: result.success,
@@ -167,7 +165,7 @@ export function createArxivDownloadTool() {
167
165
  const successful = downloads.filter((d) => d.success).length;
168
166
  const failed = downloads.filter((d) => !d.success).length;
169
167
  return Result.ok({
170
- output_dir: outputDir,
168
+ output_dir: resolvedOutputDir,
171
169
  total: arxivIds.length,
172
170
  successful,
173
171
  failed,
@@ -1 +1 @@
1
- {"version":3,"file":"arxiv-download.js","sourceRoot":"","sources":["../../../src/tools/arxiv-download.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arxiv-download.js","sourceRoot":"","sources":["../../../src/tools/arxiv-download.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export declare const UnpaywallDownloadToolSchema: import("@sinclair/typebox").TObject<{
2
2
  dois: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
3
- output_dir: import("@sinclair/typebox").TString;
3
+ output_dir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
4
4
  }>;
5
5
  export declare function createUnpaywallDownloadTool(): {
6
6
  label: string;
@@ -8,7 +8,7 @@ export declare function createUnpaywallDownloadTool(): {
8
8
  description: string;
9
9
  parameters: import("@sinclair/typebox").TObject<{
10
10
  dois: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
11
- output_dir: import("@sinclair/typebox").TString;
11
+ output_dir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
12
12
  }>;
13
13
  execute: (_toolCallId: string, rawArgs: unknown) => Promise<{
14
14
  type: "tool_result";
@@ -10,9 +10,9 @@ export const UnpaywallDownloadToolSchema = Type.Object({
10
10
  minItems: 1,
11
11
  maxItems: 20,
12
12
  }),
13
- output_dir: Type.String({
14
- description: "Absolute path to output directory where PDFs will be saved.",
15
- }),
13
+ output_dir: Type.Optional(Type.String({
14
+ description: "Output directory where PDFs will be saved. Defaults to 'papers/' relative to cwd. Can be relative or absolute.",
15
+ })),
16
16
  });
17
17
  function readStringParam(params, key, opts) {
18
18
  const value = params[key];
@@ -61,7 +61,7 @@ export function createUnpaywallDownloadTool() {
61
61
  return Result.err("invalid_input", "dois must be a non-empty array");
62
62
  }
63
63
  const dois = doisRaw.map((d) => String(d).trim()).filter((d) => d.length > 0);
64
- const outputDir = readStringParam(params, "output_dir", { required: true });
64
+ const outputDir = readStringParam(params, "output_dir") ?? "papers";
65
65
  const resolvedOutputDir = resolve(outputDir);
66
66
  // Create output directory if it doesn't exist
67
67
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"unpaywall-download.js","sourceRoot":"","sources":["../../../src/tools/unpaywall-download.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unpaywall-download.js","sourceRoot":"","sources":["../../../src/tools/unpaywall-download.ts"],"names":[],"mappings":"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"}
@@ -27,8 +27,10 @@
27
27
  "skills/research-implement",
28
28
  "skills/research-review",
29
29
  "skills/research-experiment",
30
- "skills/literature-survey",
30
+ "skills/research-collect",
31
31
  "skills/write-review-paper",
32
- "skills/research-subscription"
32
+ "skills/research-subscription",
33
+ "skills/metabolism",
34
+ "skills/metabolism-init"
33
35
  ]
34
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scientify",
3
- "version": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "description": "Scientify - AI-powered research workflow automation for OpenClaw. Includes idea generation, literature review, research pipeline skills, and arxiv tool.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -19,32 +19,27 @@ Generate innovative research ideas grounded in literature analysis. This skill r
19
19
 
20
20
  **Core principle:** Ideas MUST be grounded in actual papers, not generated from model knowledge.
21
21
 
22
- **Workspace:** See `../_shared/workspace-spec.md` for directory structure. Outputs go to `$WORKSPACE/ideas/`.
22
+ **Workspace:** `$W` = working directory provided in task parameter. Outputs go to `$W/ideas/`.
23
23
 
24
24
  ---
25
25
 
26
26
  ## Step 1: Check Workspace Resources
27
27
 
28
- First, check what resources already exist:
28
+ First, check what resources already exist in `$W`:
29
29
 
30
30
  ```bash
31
- # Check active project
32
- cat ~/.openclaw/workspace/projects/.active 2>/dev/null
33
-
34
- # Check papers
35
- ls ~/.openclaw/workspace/projects/*/papers/ 2>/dev/null | head -20
36
-
37
- # Check survey results
38
- cat ~/.openclaw/workspace/projects/*/survey/clusters.json 2>/dev/null | head -5
31
+ ls $W/papers/ 2>/dev/null | head -20
32
+ ls $W/papers/_meta/ 2>/dev/null | head -10
33
+ ls $W/survey/ 2>/dev/null
39
34
  ```
40
35
 
41
36
  ### Assess Available Resources
42
37
 
43
38
  | Resource | Location | Status |
44
39
  |----------|----------|--------|
45
- | Papers | `$WORKSPACE/papers/` | Count: ? |
46
- | Survey clusters | `$WORKSPACE/survey/clusters.json` | Exists: Y/N |
47
- | Repos | `$WORKSPACE/repos/` | Count: ? |
40
+ | Papers | `$W/papers/` | Count: ? |
41
+ | Survey clusters | `$W/survey/clusters.json` | Exists: Y/N |
42
+ | Repos | `$W/repos/` | Count: ? |
48
43
 
49
44
  ---
50
45
 
@@ -57,14 +52,14 @@ Based on workspace state, ask user:
57
52
  >
58
53
  > Options:
59
54
  > 1. **Use existing papers** - Generate ideas from current collection
60
- > 2. **Search more** - Run `/literature-survey` to expand collection
55
+ > 2. **Search more** - Run `/research-collect` to expand collection
61
56
  > 3. **Quick search** - Add 5-10 more papers on specific topic
62
57
 
63
58
  **If no papers:**
64
59
  > 📭 No papers found in workspace.
65
60
  >
66
61
  > To generate grounded ideas, I need literature. Options:
67
- > 1. **Run /literature-survey** - Comprehensive search (100+ papers, recommended)
62
+ > 1. **Run /research-collect** - Comprehensive search (100+ papers, recommended)
68
63
  > 2. **Quick search** - Fetch 10-15 papers on your topic now
69
64
  > 3. **You provide papers** - Point me to existing PDFs/tex files
70
65
 
@@ -72,17 +67,17 @@ Based on workspace state, ask user:
72
67
 
73
68
  ## Step 3: Acquire Resources (if needed)
74
69
 
75
- ### Option A: Delegate to /literature-survey (Recommended)
70
+ ### Option A: Delegate to /research-collect (Recommended)
76
71
 
77
72
  If user wants comprehensive search:
78
73
  ```
79
- Please run: /literature-survey {topic}
74
+ Please run: /research-collect {topic}
80
75
 
81
76
  This will:
82
77
  - Search 100+ papers systematically
83
78
  - Filter by relevance (score ≥4)
84
79
  - Cluster into research directions
85
- - Save to $WORKSPACE/papers/
80
+ - Save to $W/papers/
86
81
 
87
82
  After survey completes, run /idea-generation again.
88
83
  ```
@@ -101,21 +96,21 @@ Arguments:
101
96
 
102
97
  2. **Clone 3-5 reference repos:**
103
98
  ```bash
104
- mkdir -p $WORKSPACE/repos
105
- git clone --depth 1 {repo_url} $WORKSPACE/repos/{name}
99
+ mkdir -p $W/repos
100
+ git clone --depth 1 {repo_url} $W/repos/{name}
106
101
  ```
107
102
 
108
103
  3. **Download paper sources:**
109
104
  ```bash
110
- mkdir -p $WORKSPACE/papers/{arxiv_id}
111
- curl -L "https://arxiv.org/src/{arxiv_id}" | tar -xz -C $WORKSPACE/papers/{arxiv_id}
105
+ mkdir -p $W/papers/{arxiv_id}
106
+ curl -L "https://arxiv.org/src/{arxiv_id}" | tar -xz -C $W/papers/{arxiv_id}
112
107
  ```
113
108
 
114
109
  ---
115
110
 
116
111
  ## Step 4: Analyze Literature
117
112
 
118
- **Prerequisites:** At least 5 papers in `$WORKSPACE/papers/`
113
+ **Prerequisites:** At least 5 papers in `$W/papers/`
119
114
 
120
115
  ### 4.1 Read Papers
121
116
 
@@ -135,7 +130,7 @@ Look for:
135
130
  - Scalability issues
136
131
  - Assumptions that could be relaxed
137
132
 
138
- Document gaps in `$WORKSPACE/ideas/gaps.md`:
133
+ Document gaps in `$W/ideas/gaps.md`:
139
134
  ```markdown
140
135
  # Research Gaps Identified
141
136
 
@@ -151,7 +146,7 @@ Document gaps in `$WORKSPACE/ideas/gaps.md`:
151
146
 
152
147
  ## Step 5: Generate 5 Ideas
153
148
 
154
- Create `$WORKSPACE/ideas/idea_1.md` through `idea_5.md` using template in `references/idea-template.md`.
149
+ Create `$W/ideas/idea_1.md` through `idea_5.md` using template in `references/idea-template.md`.
155
150
 
156
151
  **Requirements:**
157
152
  - Each idea cites ≥2 papers by arXiv ID
@@ -180,7 +175,7 @@ Create `$WORKSPACE/ideas/idea_1.md` through `idea_5.md` using template in `refer
180
175
 
181
176
  ### 6.2 Enhance Selected Idea
182
177
 
183
- Create `$WORKSPACE/ideas/selected_idea.md` with:
178
+ Create `$W/ideas/selected_idea.md` with:
184
179
  - Detailed math (loss functions, gradients)
185
180
  - Architecture choices
186
181
  - Hyperparameters
@@ -210,13 +205,13 @@ Map idea concepts to reference implementations.
210
205
 
211
206
  See `references/code-mapping.md` for template.
212
207
 
213
- **Output:** `$WORKSPACE/ideas/implementation_report.md`
208
+ **Output:** `$W/ideas/implementation_report.md`
214
209
 
215
210
  ---
216
211
 
217
212
  ## Step 8: Summary
218
213
 
219
- Create `$WORKSPACE/ideas/summary.md`:
214
+ Create `$W/ideas/summary.md`:
220
215
  - All 5 ideas with scores
221
216
  - Selected idea details
222
217
  - Next steps: `/research-pipeline` to implement
@@ -236,6 +231,6 @@ Create `$WORKSPACE/ideas/summary.md`:
236
231
 
237
232
  ## Integration
238
233
 
239
- - **Before:** `/literature-survey` to collect papers
234
+ - **Before:** `/research-collect` to collect papers
240
235
  - **After:** `/research-pipeline` to implement selected idea
241
236
  - **Alternative:** `/write-review-paper` to write survey instead
@@ -0,0 +1,118 @@
1
+ ---
2
+ name: metabolism
3
+ description: "Knowledge metabolism cycle: ingest new papers, update knowledge state, detect cross-topic links, generate hypotheses. Use /metabolism to trigger manually."
4
+ user-invokable: true
5
+ ---
6
+
7
+ # Continuous Knowledge Metabolism — Incremental Cycle
8
+
9
+ 你正在执行知识新陈代谢循环。严格按以下步骤执行。
10
+
11
+ **前提:** `metabolism/config.json` 必须已存在且 `currentDay >= 1`。如果不存在或 `currentDay` 为 0,提示用户先执行 /metabolism-init 完成初始化。
12
+
13
+ ## 准备
14
+
15
+ 1. 读取 `metabolism/config.json` 获取关键词、arXiv 分类、`processed_ids` 和 `currentDay`
16
+ 2. 读取 `metabolism/knowledge/_index.md` 获取当前知识状态
17
+
18
+ ## Step 1: Search(增量搜索)
19
+
20
+ 用滑动窗口(过去 5 天)搜索,靠 `processed_ids` 去重:
21
+
22
+ ```
23
+ arxiv_search({
24
+ query: "{keywords} AND cat:{category}",
25
+ date_from: "{5天前 YYYY-MM-DD}",
26
+ sort_by: "submittedDate",
27
+ max_results: 30
28
+ })
29
+
30
+ openalex_search({
31
+ query: "{keywords}",
32
+ filter: "from_publication_date:{5天前 YYYY-MM-DD}",
33
+ sort: "publication_date",
34
+ max_results: 20
35
+ })
36
+ ```
37
+
38
+ 合并结果,按 arXiv ID / DOI 去重,**跳过 `processed_ids` 中已有的论文**。
39
+
40
+ 下载新论文:
41
+
42
+ ```
43
+ arxiv_download({ arxiv_ids: ["{id1}", "{id2}", ...] })
44
+ unpaywall_download({ dois: ["{doi1}", "{doi2}", ...] })
45
+ ```
46
+
47
+ ## Step 2: Read(阅读)
48
+
49
+ 对每篇新论文:
50
+ - 读 .tex 源码(优先)或 PDF
51
+ - 提取:核心方法、关键结论、与已有知识的关系
52
+
53
+ 将每篇论文的 arXiv ID / DOI 追加到 `config.json` 的 `processed_ids`。
54
+
55
+ ## Step 3: Update Knowledge
56
+
57
+ 读取当前 `metabolism/knowledge/_index.md` 和相关 `topic-*.md`,根据今日阅读的论文更新。
58
+
59
+ **更新原则:**
60
+ - 新发现 → 添加到相关章节
61
+ - 印证已有认知 → 补充证据来源
62
+ - 与已有认知矛盾 → 标注分歧,保留两方论据
63
+ - 跨领域关联 → 记录连接
64
+
65
+ **篇幅管理:** 每个 topic 文件控制在 200 行以内。接近上限时,压缩早期内容(合并相似结论、删除低价值条目),保留信息密度。不要为了压缩而丢失关键结论和来源引用。
66
+
67
+ ## Step 4: Hypothesize(假设)
68
+
69
+ 更新完 knowledge.md 后,回顾今日新增内容,自问:
70
+
71
+ - 有没有反复出现但尚未被验证的模式?
72
+ - 有没有两个独立发现组合后暗示的新方向?
73
+ - 有没有现有方法的明显空白?
74
+
75
+ **有想法** → 写入 `metabolism/hypotheses/hyp-{NNN}.md`:
76
+
77
+ ```markdown
78
+ # Hypothesis {NNN}
79
+
80
+ ## 假设
81
+ {一句话}
82
+
83
+ ## 推理过程
84
+ {基于哪些论文/知识得出,2-3 段}
85
+
86
+ ## 来源论文
87
+ - {arxiv_id}: {title}
88
+
89
+ ## 自评
90
+ - 新颖性: {1-5}
91
+ - 可行性: {1-5}
92
+ - 影响力: {1-5}
93
+ ```
94
+
95
+ 然后用 `sessions_send` 通知 main session。
96
+
97
+ **没有想法** → 跳过,不要硬凑。
98
+
99
+ ## Step 5: Log & Finish
100
+
101
+ 写入 `metabolism/log/{YYYY-MM-DD}.md`:
102
+
103
+ ```markdown
104
+ # Day {currentDay} — {YYYY-MM-DD}
105
+
106
+ 新论文: {N} 篇
107
+ 知识更新: {简述主要变更}
108
+ 假设: {有/无}
109
+ ```
110
+
111
+ 更新 `config.json`:`currentDay` +1。
112
+
113
+ ## 行为约束
114
+
115
+ 1. 不捏造论文中未出现的事实性声明,但可以用自身知识做推理和关联判断
116
+ 2. 没有想法时不生成假设
117
+ 3. 自主运行,不向人类提问
118
+ 4. 修改知识文件前必须先读取当前内容