scientify 2.1.0 → 3.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 (186) hide show
  1. package/README.en.md +21 -1
  2. package/README.md +27 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -77
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/cli/research.d.ts.map +1 -1
  7. package/dist/src/cli/research.js +47 -23
  8. package/dist/src/cli/research.js.map +1 -1
  9. package/dist/src/commands/metabolism-status.d.ts.map +1 -1
  10. package/dist/src/commands/metabolism-status.js +5 -25
  11. package/dist/src/commands/metabolism-status.js.map +1 -1
  12. package/dist/src/commands.d.ts +8 -8
  13. package/dist/src/commands.d.ts.map +1 -1
  14. package/dist/src/commands.js +230 -243
  15. package/dist/src/commands.js.map +1 -1
  16. package/dist/src/release-gate.d.ts +14 -0
  17. package/dist/src/release-gate.d.ts.map +1 -0
  18. package/dist/src/release-gate.js +124 -0
  19. package/dist/src/release-gate.js.map +1 -0
  20. package/dist/src/templates/bootstrap.d.ts.map +1 -1
  21. package/dist/src/templates/bootstrap.js +157 -94
  22. package/dist/src/templates/bootstrap.js.map +1 -1
  23. package/dist/src/types.d.ts +2 -10
  24. package/dist/src/types.d.ts.map +1 -1
  25. package/openclaw.plugin.json +11 -17
  26. package/package.json +2 -3
  27. package/skills/algorithm-selection/SKILL.md +103 -0
  28. package/skills/algorithm-selection/references/candidate-template.md +13 -0
  29. package/skills/algorithm-selection/references/selection-template.md +39 -0
  30. package/skills/artifact-review/SKILL.md +146 -0
  31. package/skills/artifact-review/references/release-gate-template.md +40 -0
  32. package/skills/artifact-review/references/review-checklist.md +45 -0
  33. package/skills/artifact-review/references/style-review-checklist.md +30 -0
  34. package/skills/baseline-runner/SKILL.md +103 -0
  35. package/skills/baseline-runner/references/baseline-matrix-template.md +9 -0
  36. package/skills/baseline-runner/references/baseline-report-template.md +25 -0
  37. package/skills/dataset-validate/SKILL.md +104 -0
  38. package/skills/dataset-validate/references/data-validation-template.md +38 -0
  39. package/skills/figure-standardize/SKILL.md +110 -0
  40. package/skills/figure-standardize/references/caption-template.md +12 -0
  41. package/skills/figure-standardize/references/figure-placement-template.md +30 -0
  42. package/skills/figure-standardize/references/figure-style-guide.md +36 -0
  43. package/skills/idea-generation/SKILL.md +20 -44
  44. package/skills/idea-generation/references/code-mapping.md +3 -3
  45. package/skills/idea-generation/references/idea-template.md +1 -1
  46. package/skills/idea-generation/references/reading-long-papers.md +3 -3
  47. package/skills/metabolism/SKILL.md +80 -36
  48. package/skills/paper-download/SKILL.md +61 -0
  49. package/skills/release-layout/SKILL.md +73 -0
  50. package/skills/release-layout/references/page-structure.md +14 -0
  51. package/skills/research-collect/SKILL.md +41 -111
  52. package/skills/research-experiment/SKILL.md +20 -12
  53. package/skills/research-implement/SKILL.md +10 -11
  54. package/skills/research-pipeline/SKILL.md +23 -31
  55. package/skills/research-plan/SKILL.md +7 -11
  56. package/skills/research-review/SKILL.md +21 -22
  57. package/skills/research-survey/SKILL.md +28 -25
  58. package/skills/write-paper/SKILL.md +252 -0
  59. package/skills/write-paper/references/boundary-notes-template.md +34 -0
  60. package/skills/write-paper/references/claim-inventory-template.md +32 -0
  61. package/skills/write-paper/references/evidence-contract.md +57 -0
  62. package/skills/write-paper/references/figure-callout-template.md +38 -0
  63. package/skills/write-paper/references/figures-manifest-template.md +44 -0
  64. package/skills/write-paper/references/latex/README.md +22 -0
  65. package/skills/write-paper/references/latex/build_paper.sh +41 -0
  66. package/skills/write-paper/references/latex/manuscript.tex +39 -0
  67. package/skills/write-paper/references/latex/references.bib +10 -0
  68. package/skills/write-paper/references/latex/sections/ablations.tex +3 -0
  69. package/skills/write-paper/references/latex/sections/abstract.tex +3 -0
  70. package/skills/write-paper/references/latex/sections/conclusion.tex +3 -0
  71. package/skills/write-paper/references/latex/sections/discussion_scope.tex +7 -0
  72. package/skills/write-paper/references/latex/sections/experimental_protocol.tex +3 -0
  73. package/skills/write-paper/references/latex/sections/introduction.tex +3 -0
  74. package/skills/write-paper/references/latex/sections/main_results.tex +9 -0
  75. package/skills/write-paper/references/latex/sections/method_system.tex +3 -0
  76. package/skills/write-paper/references/latex/sections/problem_setup.tex +3 -0
  77. package/skills/write-paper/references/latex/sections/related_work.tex +3 -0
  78. package/skills/write-paper/references/paper-template.md +155 -0
  79. package/skills/write-paper/references/paragraph-contract.md +139 -0
  80. package/skills/write-paper/references/paragraph-examples.md +171 -0
  81. package/skills/write-paper/references/style-banlist.md +81 -0
  82. package/skills/write-review-paper/SKILL.md +22 -16
  83. package/skills/write-review-paper/references/note-template.md +1 -1
  84. package/skills/write-review-paper/references/survey-template.md +1 -1
  85. package/dist/src/hooks/research-mode.d.ts +0 -22
  86. package/dist/src/hooks/research-mode.d.ts.map +0 -1
  87. package/dist/src/hooks/research-mode.js +0 -35
  88. package/dist/src/hooks/research-mode.js.map +0 -1
  89. package/dist/src/hooks/scientify-cron-autofill.d.ts +0 -15
  90. package/dist/src/hooks/scientify-cron-autofill.d.ts.map +0 -1
  91. package/dist/src/hooks/scientify-cron-autofill.js +0 -156
  92. package/dist/src/hooks/scientify-cron-autofill.js.map +0 -1
  93. package/dist/src/hooks/scientify-signature.d.ts +0 -21
  94. package/dist/src/hooks/scientify-signature.d.ts.map +0 -1
  95. package/dist/src/hooks/scientify-signature.js +0 -150
  96. package/dist/src/hooks/scientify-signature.js.map +0 -1
  97. package/dist/src/knowledge-state/project.d.ts +0 -13
  98. package/dist/src/knowledge-state/project.d.ts.map +0 -1
  99. package/dist/src/knowledge-state/project.js +0 -88
  100. package/dist/src/knowledge-state/project.js.map +0 -1
  101. package/dist/src/knowledge-state/render.d.ts +0 -63
  102. package/dist/src/knowledge-state/render.d.ts.map +0 -1
  103. package/dist/src/knowledge-state/render.js +0 -368
  104. package/dist/src/knowledge-state/render.js.map +0 -1
  105. package/dist/src/knowledge-state/store.d.ts +0 -19
  106. package/dist/src/knowledge-state/store.d.ts.map +0 -1
  107. package/dist/src/knowledge-state/store.js +0 -978
  108. package/dist/src/knowledge-state/store.js.map +0 -1
  109. package/dist/src/knowledge-state/types.d.ts +0 -182
  110. package/dist/src/knowledge-state/types.d.ts.map +0 -1
  111. package/dist/src/knowledge-state/types.js +0 -2
  112. package/dist/src/knowledge-state/types.js.map +0 -1
  113. package/dist/src/literature/subscription-state.d.ts +0 -112
  114. package/dist/src/literature/subscription-state.d.ts.map +0 -1
  115. package/dist/src/literature/subscription-state.js +0 -696
  116. package/dist/src/literature/subscription-state.js.map +0 -1
  117. package/dist/src/research-subscriptions/constants.d.ts +0 -16
  118. package/dist/src/research-subscriptions/constants.d.ts.map +0 -1
  119. package/dist/src/research-subscriptions/constants.js +0 -59
  120. package/dist/src/research-subscriptions/constants.js.map +0 -1
  121. package/dist/src/research-subscriptions/cron-client.d.ts +0 -8
  122. package/dist/src/research-subscriptions/cron-client.d.ts.map +0 -1
  123. package/dist/src/research-subscriptions/cron-client.js +0 -81
  124. package/dist/src/research-subscriptions/cron-client.js.map +0 -1
  125. package/dist/src/research-subscriptions/delivery.d.ts +0 -10
  126. package/dist/src/research-subscriptions/delivery.d.ts.map +0 -1
  127. package/dist/src/research-subscriptions/delivery.js +0 -82
  128. package/dist/src/research-subscriptions/delivery.js.map +0 -1
  129. package/dist/src/research-subscriptions/handlers.d.ts +0 -6
  130. package/dist/src/research-subscriptions/handlers.d.ts.map +0 -1
  131. package/dist/src/research-subscriptions/handlers.js +0 -204
  132. package/dist/src/research-subscriptions/handlers.js.map +0 -1
  133. package/dist/src/research-subscriptions/parse.d.ts +0 -11
  134. package/dist/src/research-subscriptions/parse.d.ts.map +0 -1
  135. package/dist/src/research-subscriptions/parse.js +0 -492
  136. package/dist/src/research-subscriptions/parse.js.map +0 -1
  137. package/dist/src/research-subscriptions/prompt.d.ts +0 -5
  138. package/dist/src/research-subscriptions/prompt.d.ts.map +0 -1
  139. package/dist/src/research-subscriptions/prompt.js +0 -347
  140. package/dist/src/research-subscriptions/prompt.js.map +0 -1
  141. package/dist/src/research-subscriptions/types.d.ts +0 -66
  142. package/dist/src/research-subscriptions/types.d.ts.map +0 -1
  143. package/dist/src/research-subscriptions/types.js +0 -2
  144. package/dist/src/research-subscriptions/types.js.map +0 -1
  145. package/dist/src/research-subscriptions.d.ts +0 -2
  146. package/dist/src/research-subscriptions.d.ts.map +0 -1
  147. package/dist/src/research-subscriptions.js +0 -2
  148. package/dist/src/research-subscriptions.js.map +0 -1
  149. package/dist/src/services/auto-updater.d.ts +0 -15
  150. package/dist/src/services/auto-updater.d.ts.map +0 -1
  151. package/dist/src/services/auto-updater.js +0 -188
  152. package/dist/src/services/auto-updater.js.map +0 -1
  153. package/dist/src/tools/arxiv-download.d.ts +0 -24
  154. package/dist/src/tools/arxiv-download.d.ts.map +0 -1
  155. package/dist/src/tools/arxiv-download.js +0 -177
  156. package/dist/src/tools/arxiv-download.js.map +0 -1
  157. package/dist/src/tools/github-search-tool.d.ts +0 -25
  158. package/dist/src/tools/github-search-tool.d.ts.map +0 -1
  159. package/dist/src/tools/github-search-tool.js +0 -114
  160. package/dist/src/tools/github-search-tool.js.map +0 -1
  161. package/dist/src/tools/openreview-lookup.d.ts +0 -31
  162. package/dist/src/tools/openreview-lookup.d.ts.map +0 -1
  163. package/dist/src/tools/openreview-lookup.js +0 -414
  164. package/dist/src/tools/openreview-lookup.js.map +0 -1
  165. package/dist/src/tools/paper-browser.d.ts +0 -23
  166. package/dist/src/tools/paper-browser.d.ts.map +0 -1
  167. package/dist/src/tools/paper-browser.js +0 -121
  168. package/dist/src/tools/paper-browser.js.map +0 -1
  169. package/dist/src/tools/scientify-cron.d.ts +0 -63
  170. package/dist/src/tools/scientify-cron.d.ts.map +0 -1
  171. package/dist/src/tools/scientify-cron.js +0 -265
  172. package/dist/src/tools/scientify-cron.js.map +0 -1
  173. package/dist/src/tools/scientify-literature-state.d.ts +0 -303
  174. package/dist/src/tools/scientify-literature-state.d.ts.map +0 -1
  175. package/dist/src/tools/scientify-literature-state.js +0 -957
  176. package/dist/src/tools/scientify-literature-state.js.map +0 -1
  177. package/dist/src/tools/unpaywall-download.d.ts +0 -21
  178. package/dist/src/tools/unpaywall-download.d.ts.map +0 -1
  179. package/dist/src/tools/unpaywall-download.js +0 -169
  180. package/dist/src/tools/unpaywall-download.js.map +0 -1
  181. package/dist/src/tools/workspace.d.ts +0 -32
  182. package/dist/src/tools/workspace.d.ts.map +0 -1
  183. package/dist/src/tools/workspace.js +0 -69
  184. package/dist/src/tools/workspace.js.map +0 -1
  185. package/skills/metabolism-init/SKILL.md +0 -80
  186. package/skills/research-subscription/SKILL.md +0 -119
@@ -0,0 +1,124 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ function isReleaseVerdict(value) {
4
+ return value === "HOLD" || value === "CONDITIONAL_GO" || value === "GO";
5
+ }
6
+ function normalizeStringArray(value) {
7
+ return Array.isArray(value)
8
+ ? value.filter((item) => typeof item === "string" && item.length > 0)
9
+ : [];
10
+ }
11
+ function defaultReleaseGateInputs(workspace) {
12
+ const candidates = [
13
+ "paper/draft.md",
14
+ "paper/claim_inventory.md",
15
+ "paper/figures_manifest.md",
16
+ "paper/manuscript.tex",
17
+ "README.md",
18
+ "docs/index.html",
19
+ ];
20
+ return candidates.filter((relativePath) => fs.existsSync(path.join(workspace, relativePath)));
21
+ }
22
+ function resolveWorkspacePath(workspace, candidate) {
23
+ return path.isAbsolute(candidate) ? candidate : path.join(workspace, candidate);
24
+ }
25
+ export function hasReleaseFacingArtifacts(workspace) {
26
+ return defaultReleaseGateInputs(workspace).length > 0;
27
+ }
28
+ export function readReleaseGateStatus(workspace) {
29
+ const gatePath = path.join(workspace, "review", "release_gate.json");
30
+ if (!fs.existsSync(gatePath)) {
31
+ return {
32
+ state: "missing",
33
+ gatePath,
34
+ checkedFiles: [],
35
+ staleReasons: [],
36
+ };
37
+ }
38
+ let parsed;
39
+ try {
40
+ parsed = JSON.parse(fs.readFileSync(gatePath, "utf-8"));
41
+ }
42
+ catch {
43
+ return {
44
+ state: "invalid",
45
+ gatePath,
46
+ checkedFiles: [],
47
+ staleReasons: ["release_gate.json is not valid JSON"],
48
+ };
49
+ }
50
+ if (!isReleaseVerdict(parsed.release_verdict)) {
51
+ return {
52
+ state: "invalid",
53
+ gatePath,
54
+ checkedFiles: [],
55
+ staleReasons: ["release_gate.json is missing a valid release_verdict"],
56
+ };
57
+ }
58
+ const checkedFiles = normalizeStringArray(parsed.checked_files);
59
+ const freshnessInputs = normalizeStringArray(parsed.stale_if_any_newer_than);
60
+ const trackedInputs = freshnessInputs.length > 0
61
+ ? freshnessInputs
62
+ : checkedFiles.length > 0
63
+ ? checkedFiles
64
+ : defaultReleaseGateInputs(workspace);
65
+ const gateMtimeMs = fs.statSync(gatePath).mtimeMs;
66
+ const staleReasons = [];
67
+ for (const candidate of trackedInputs) {
68
+ const candidatePath = resolveWorkspacePath(workspace, candidate);
69
+ const displayPath = path.isAbsolute(candidate) ? candidate : candidate;
70
+ if (!fs.existsSync(candidatePath)) {
71
+ staleReasons.push(`${displayPath} is missing`);
72
+ continue;
73
+ }
74
+ if (fs.statSync(candidatePath).mtimeMs > gateMtimeMs) {
75
+ staleReasons.push(`${displayPath} changed after the last gate`);
76
+ }
77
+ }
78
+ return {
79
+ state: staleReasons.length > 0 ? "stale" : "fresh",
80
+ verdict: parsed.release_verdict,
81
+ gatePath,
82
+ checkedFiles,
83
+ staleReasons,
84
+ generatedAt: parsed.generated_at,
85
+ };
86
+ }
87
+ export function formatReleaseGateStatus(status) {
88
+ switch (status.state) {
89
+ case "missing":
90
+ return "not run";
91
+ case "invalid":
92
+ return "invalid";
93
+ case "stale":
94
+ return status.verdict ? `${status.verdict} (stale)` : "stale";
95
+ case "fresh":
96
+ return status.verdict ? `${status.verdict} (fresh)` : "fresh";
97
+ default:
98
+ return status.state;
99
+ }
100
+ }
101
+ export function getReleaseGateNextStep(workspace, status) {
102
+ if (!hasReleaseFacingArtifacts(workspace) && status.state === "missing") {
103
+ return null;
104
+ }
105
+ switch (status.state) {
106
+ case "missing":
107
+ return "Run `/artifact-review` before sharing the current paper, figures, or release page.";
108
+ case "invalid":
109
+ return "Rerun `/artifact-review` to regenerate a valid `review/release_gate.json`.";
110
+ case "stale":
111
+ return "Rerun `/artifact-review` because one or more reviewed artifacts changed after the last gate.";
112
+ case "fresh":
113
+ if (status.verdict === "HOLD") {
114
+ return "Fix the blocking findings in `review/artifact_review.md`, then rerun `/artifact-review`.";
115
+ }
116
+ if (status.verdict === "CONDITIONAL_GO") {
117
+ return "Resolve the remaining P1 findings or explicitly accept a conditional release before sharing.";
118
+ }
119
+ return "Release gate is fresh. You can proceed to `/release-layout` or share the reviewed artifacts.";
120
+ default:
121
+ return null;
122
+ }
123
+ }
124
+ //# sourceMappingURL=release-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-gate.js","sourceRoot":"","sources":["../../src/release-gate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/templates/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA6C7D;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAexD;AAED,wBAAgB,cAAc,IAAI,MAAM,CAqFvC"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/templates/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA4D7D;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAaxD;AAED,wBAAgB,cAAc,IAAI,MAAM,CAuIvC"}
@@ -5,63 +5,76 @@
5
5
  export function renderBootstrapMd(projectName) {
6
6
  return `# Research Agent Bootstrap
7
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 模板
8
+ You were just created as the research agent for project "${projectName}". Complete the initial setup before starting downstream work.
9
+
10
+ ## Bootstrap Flow
11
+
12
+ 1. Greet the user, explain that you are the research agent for project "${projectName}", and ask them to describe the research direction.
13
+ 2. Based on the user's answer, extract:
14
+ - core-domain keywords (3-5)
15
+ - suggested arXiv categories (for example "cs.LG", "cs.AI"); leave empty if the topic is outside arXiv coverage
16
+ - preferred literature sources ("arxiv", "openalex", or both)
17
+ 3. Discuss scope and priorities with the user, confirm the configuration, and accept adjustments.
18
+ 4. Once confirmed, write the following files:
19
+ - update SOUL.md with the project direction and domain fields
20
+ - generate config.json using the template below
21
+ 5. Ask whether the user wants to run Day 0 immediately to build the initial knowledge state.
22
+ - If yes, run /metabolism to perform the first literature retrieval and knowledge-base construction pass.
23
+ 6. If the project already has partial outputs, use the shortest matching path instead of restarting from Day 0:
24
+ - existing papers/ -> /research-survey
25
+ - existing survey_res.md, but route still undecided -> /algorithm-selection
26
+ - existing survey_res.md -> /research-plan
27
+ - existing plan_res.md, but data quality still needs review -> /dataset-validate
28
+ - existing plan_res.md, and matched baseline evidence is needed -> /baseline-runner
29
+ - existing implementation code -> /research-review
30
+ - existing review PASS -> /research-experiment
31
+ - existing experiment_res.md plus figures -> /write-paper
32
+ - existing paper/draft.md -> /artifact-review
33
+ - existing figures with inconsistent captions or style -> /figure-standardize
34
+ - preparing README.md or release-facing docs -> /release-layout after a fresh release gate exists
35
+ 7. After the initial setup, tell the user the recommended next command and expected output files, then delete this file (BOOTSTRAP.md).
36
+
37
+ ## Common Entry Paths
38
+
39
+ - I only have a research direction and no materials yet -> finish setup, then run /metabolism
40
+ - I already have a batch of papers -> run /research-survey
41
+ - I finished the survey but have not chosen a model route -> run /algorithm-selection
42
+ - I already have a plan and want to validate the data first -> run /dataset-validate
43
+ - I already have a plan and want honest baseline numbers first -> run /baseline-runner
44
+ - I already have implementation code -> run /research-review
45
+ - I already have experiment results and figures -> run /write-paper
46
+ - I already have a draft that needs review -> run /artifact-review
47
+
48
+ ## config.json Template
26
49
 
27
50
  \`\`\`json
28
51
  {
29
52
  "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}",
53
+ "keywords": ["keyword-1", "keyword-2"],
54
+ "arxivCategories": ["cs.LG"],
55
+ "sources": ["arxiv", "openalex"],
45
56
  "currentDay": 0,
57
+ "processed_ids": [],
46
58
  "createdAt": "${new Date().toISOString()}"
47
59
  }
48
60
  \`\`\`
61
+
62
+ > **Note:** Configure \`arxivCategories\` and \`sources\` based on the research domain.
63
+ > For natural science, social science, or other non-CS topics, it is fine to set \`arxivCategories\` to \`[]\` and rely primarily on OpenAlex.
49
64
  `;
50
65
  }
51
66
  export function renderSoulMd(projectName) {
52
67
  return `# Project Agent — ${projectName}
53
68
 
54
- 你是课题「${projectName}」的研究 agent。
55
-
56
- ## 研究方向
57
- {由 BOOTSTRAP 流程填写}
69
+ You are the research agent for project "${projectName}".
58
70
 
59
- ## 核心域
60
- 关键词: { BOOTSTRAP 流程填写}
61
- arXiv 分类: {由 BOOTSTRAP 流程填写}
71
+ ## Research Direction
72
+ {Filled during the BOOTSTRAP flow}
62
73
 
63
- ## 监测带
64
- 相邻领域: { BOOTSTRAP 流程填写}
74
+ ## Core Domain
75
+ Keywords: {Filled during the BOOTSTRAP flow}
76
+ arXiv Categories: {Filled during the BOOTSTRAP flow; leave empty if not applicable}
77
+ Literature Sources: {arXiv / OpenAlex / both}
65
78
  `;
66
79
  }
67
80
  export function renderAgentsMd() {
@@ -69,85 +82,135 @@ export function renderAgentsMd() {
69
82
 
70
83
  ## Workspace Layout
71
84
 
72
- agent 的工作目录即为项目根目录(\`$W\`)。所有文件相对于 \`$W\` 组织:
85
+ The agent workspace root is the project root (\`$W\`). All files are organized relative to \`$W\`:
73
86
 
74
87
  \`\`\`
75
88
  $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 等)
89
+ ├── SOUL.md # identity and project direction
90
+ ├── AGENTS.md # this document
91
+ ├── config.json # project config (keywords, categories, current day)
92
+ ├── progress_status.json # agent-defined task progress for the current goal
93
+
94
+ ├── papers/ # literature artifacts
95
+ ├── {arxiv_id}/ # arXiv source files
96
+ └── {doi_slug}.pdf # PDF files
97
+
98
+ ├── knowledge/ # persistent knowledge state
99
+ ├── _index.md # global index
100
+ └── topic-*.md # topic files (limit 50)
101
+
102
+ ├── ideas/ # hypotheses and research ideas
103
+ │ ├── hyp-*.md # generated hypotheses
104
+ └── selected_idea.md # selected research idea
105
+
106
+ ├── experiments/ # experiment code and assets
107
+ ├── run.py # entry script
108
+ ├── requirements.txt
109
+ │ └── results/ # experiment outputs
110
+
111
+ ├── review/ # review, audit, and writing outputs
112
+ ├── paper/ # experiment-driven paper outputs
113
+ ├── manuscript.tex # top-level LaTeX entry
114
+ ├── build_paper.sh # PDF build script
115
+ ├── references.bib # bibliography placeholder
116
+ ├── sections/ # section-by-section TeX drafts
117
+ ├── figures/ # paper-local figures
118
+ │ ├── assets/ # supporting assets for paper generation
119
+ │ └── build/ # PDF, logs, and build errors
120
+
121
+ ├── log/ # run logs
122
+ │ └── {YYYY-MM-DD}.md
123
+
124
+ └── skills/ # workspace skills
106
125
  \`\`\`
107
126
 
108
127
  ## Session Context
109
128
 
110
- 你可能在不同类型的 session 中被唤醒:
111
- - **Main session**:与人类直接对话,可触发 research-pipeline 等编排 skill
112
- - **Cron session**:定时触发,执行周期性任务(如每日 metabolism
113
- - **Spawn session**:被 main session 调度(sessions_spawn),执行一次性重任务
129
+ You may be activated in different session types:
130
+ - **Main session**: direct interaction with a human; can trigger orchestration skills such as \`research-pipeline\`
131
+ - **Cron session**: scheduled execution for recurring work such as daily metabolism
132
+ - **Spawn session**: dispatched by the main session (\`sessions_spawn\`) for one-off heavy tasks
114
133
 
115
- 任务指令会在 session 启动时注入,按指令执行即可。
134
+ Task instructions are injected when the session starts. Follow the injected instructions for that session.
116
135
 
117
136
  ## Conventions
118
137
 
119
138
  ### File Existence = Step Completion
120
- 检查产出文件是否存在再执行。已存在则跳过。支持崩溃恢复和增量推进。
139
+ Check whether the output file already exists before running a step. If it exists, skip it. This enables crash recovery and incremental progress.
121
140
 
122
141
  ### Immutability
123
- 产出文件一旦写入不修改,除非用户明确要求。例外:\`project/\` implement-review 迭代中可变。
142
+ Do not modify output files once written unless the user explicitly asks you to. Exception: \`project/\` may change during implement-review iteration.
143
+
144
+ ### Progress Tracking
145
+ - Do not assume every project follows the same fixed stages.
146
+ - Define progress in \`progress_status.json\` based on the user's current goal.
147
+ - Update \`progress_status.json\` whenever the total task, current focus, subtask states, or next step changes.
148
+ - Recommended fields: \`overall_goal\`, \`current_focus\`, \`next_step\`, \`completed_tasks\`, \`total_tasks\`, \`subtasks\`.
124
149
 
125
150
  ### Knowledge File Rules
126
- - knowledge/ 下的文件是持久知识状态,修改需谨慎
127
- - 每次修改必须先读取当前内容再更新
128
- - _index.md 是全景索引,必须与 topic 文件保持同步
129
- - topic 文件数上限 50,低活跃主题应合并归档
151
+ - Files under \`knowledge/\` are persistent knowledge state and must be edited carefully.
152
+ - Always read the current file before updating it.
153
+ - \`_index.md\` is the global index and must stay in sync with the topic files.
154
+ - Limit topic files to 50. Merge or archive low-activity topics when needed.
130
155
 
131
156
  ## Research Rigor
132
157
 
133
- - 先读原文,再思考,最后作答
134
- - 不捏造引用或实验结果,每个断言需有来源
135
- - 不确定时说「不确定」而非猜测
136
- - 读论文全文(.tex),不能只读 abstract
137
- - 想法必须扎根于真实论文
158
+ - Read the source material first, think second, answer third.
159
+ - Do not fabricate citations or experiment results. Every claim needs a source.
160
+ - Say "uncertain" when uncertain instead of guessing.
161
+ - Read the full paper source (\`.tex\`) when available; do not rely on the abstract alone.
162
+ - Ground ideas in real papers rather than unsupported intuition.
138
163
 
139
164
  ## Skill Outputs Summary
140
165
 
141
166
  | Skill | Primary Outputs |
142
167
  |-------|-----------------|
143
- | /research-collect | survey/, papers/ |
144
- | /research-survey | notes/paper_*.md, survey_res.md |
168
+ | /metabolism | Day 0: config.json, knowledge/ / Day 1+: papers/, knowledge/, ideas/hyp-*.md, log/ |
169
+ | /research-collect | papers/ |
170
+ | /research-survey | knowledge/, survey_res.md |
171
+ | /algorithm-selection | selection_res.md |
145
172
  | /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 |
173
+ | /dataset-validate | data_validation.md |
174
+ | /baseline-runner | baseline_res.md, experiments/baselines/ |
175
+ | /research-implement | experiments/ |
176
+ | /research-review | experiments/review/ |
177
+ | /research-experiment | experiments/results/, experiment_res.md |
149
178
  | /idea-generation | ideas/ |
150
179
  | /write-review-paper | review/ |
180
+ | /write-paper | paper/claim_inventory.md, paper/figures_manifest.md, paper/draft.md, paper/manuscript.tex, paper/build/manuscript.pdf |
181
+ | /artifact-review | review/artifact_review.md, review/release_checklist.md, review/release_gate.json |
182
+ | /figure-standardize | reports/figures/figure_spec.md or project/figures/figure_spec.md |
183
+ | /release-layout | README.md, docs/index.html, release-facing pages |
184
+
185
+ ## Common ML Midstream Paths
186
+
187
+ - Survey exists but route choice is still unclear:
188
+ - run \`/algorithm-selection\`
189
+ - expected output: \`selection_res.md\`
190
+ - Plan exists and the project needs a dedicated data-quality check:
191
+ - run \`/dataset-validate\`
192
+ - expected output: \`data_validation.md\`
193
+ - Plan exists and the project needs honest comparison numbers:
194
+ - run \`/baseline-runner\`
195
+ - expected outputs: \`baseline_res.md\`, optional baseline artifacts under \`experiments/baselines/\`
196
+
197
+ ## Writing and Release Entry Points
198
+
199
+ Use these entry points when the project already has partial outputs and does not need to restart the full research pipeline:
200
+
201
+ - If you already have \`experiment_res.md\` and one or more result figures:
202
+ - run \`/write-paper\`
203
+ - expected outputs: \`paper/claim_inventory.md\`, \`paper/figures_manifest.md\`, \`paper/draft.md\`, \`paper/manuscript.tex\`, \`paper/build/manuscript.pdf\`
204
+ - If you already have \`paper/draft.md\` or another draft artifact that is about to be shared:
205
+ - run \`/artifact-review\`
206
+ - expected outputs: \`review/artifact_review.md\`, \`review/release_checklist.md\`, \`review/release_gate.json\`
207
+ - If you already have figures but their style, captioning, units, or evidence labels are inconsistent:
208
+ - run \`/figure-standardize\`
209
+ - expected outputs: figure specs, caption updates, and standardized release-facing figures
210
+ - If you are preparing a \`README.md\` or release-facing page for sharing:
211
+ - run \`/release-layout\`
212
+ - expected outputs: README updates, docs landing-page updates, and clearer release entry surfaces
213
+ - do this only after \`/artifact-review\` has produced a fresh release gate for the current artifacts
151
214
  `;
152
215
  }
153
216
  //# sourceMappingURL=bootstrap.js.map
@@ -1 +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
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/templates/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,OAAO;;2DAEkD,WAAW;;;;0EAII,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwCnE,WAAW;;;;;;kBAMX,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;;CAMzC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,qBAAqB,WAAW;;0CAEC,WAAW;;;;;;;;;CASpD,CAAC;AACF,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqIR,CAAC;AACF,CAAC"}
@@ -1,16 +1,8 @@
1
1
  /**
2
2
  * Re-export SDK types and derive types not directly exported.
3
- *
4
- * OpenClaw plugin-entry exports OpenClawPluginApi, PluginCommandContext,
5
- * PluginLogger, etc. — but not PluginRuntime, PluginCommandResult, or
6
- * RunCommandResult. We derive those from the exported interfaces.
7
3
  */
8
- import type { OpenClawPluginApi, PluginCommandContext, PluginLogger, OpenClawPluginCommandDefinition } from "openclaw/plugin-sdk/plugin-entry";
9
- export type { OpenClawPluginApi, PluginCommandContext, PluginLogger, OpenClawPluginCommandDefinition, };
10
- /** Derived from OpenClawPluginApi["runtime"] */
11
- export type PluginRuntime = OpenClawPluginApi["runtime"];
4
+ import type { OpenClawPluginApi, PluginCommandContext, OpenClawPluginCommandDefinition } from "openclaw/plugin-sdk/plugin-entry";
5
+ export type { OpenClawPluginApi, PluginCommandContext };
12
6
  /** Derived from the return type of command handlers */
13
7
  export type PluginCommandResult = Awaited<ReturnType<OpenClawPluginCommandDefinition["handler"]>>;
14
- /** Derived from runtime.system.runCommandWithTimeout return type */
15
- export type RunCommandResult = Awaited<ReturnType<PluginRuntime["system"]["runCommandWithTimeout"]>>;
16
8
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,+BAA+B,EAChC,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,+BAA+B,GAChC,CAAC;AAEF,gDAAgD;AAChD,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAEzD,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,UAAU,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC,CACvD,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GAAG,OAAO,CACpC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAC7D,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,+BAA+B,EAChC,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AAExD,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,UAAU,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC,CACvD,CAAC"}
@@ -1,25 +1,16 @@
1
1
  {
2
2
  "id": "scientify",
3
3
  "name": "Scientify",
4
- "description": "AI-powered research workflow automation for OpenClaw",
4
+ "description": "Continuous AI research workflow for survey, planning, implementation, review, experimentation, and writing",
5
5
  "configSchema": {
6
6
  "type": "object",
7
7
  "additionalProperties": false,
8
- "properties": {
9
- "autoUpdate": {
10
- "type": "boolean",
11
- "default": true,
12
- "description": "Automatically check and install updates (default: true)"
13
- }
14
- }
15
- },
16
- "uiHints": {
17
- "autoUpdate": {
18
- "label": "Auto Update",
19
- "description": "Silently check for and install Scientify updates"
20
- }
8
+ "properties": {}
21
9
  },
22
10
  "skills": [
11
+ "skills/algorithm-selection",
12
+ "skills/baseline-runner",
13
+ "skills/dataset-validate",
23
14
  "skills/idea-generation",
24
15
  "skills/research-pipeline",
25
16
  "skills/research-survey",
@@ -28,9 +19,12 @@
28
19
  "skills/research-review",
29
20
  "skills/research-experiment",
30
21
  "skills/research-collect",
22
+ "skills/paper-download",
31
23
  "skills/write-review-paper",
32
- "skills/research-subscription",
33
- "skills/metabolism",
34
- "skills/metabolism-init"
24
+ "skills/write-paper",
25
+ "skills/artifact-review",
26
+ "skills/figure-standardize",
27
+ "skills/release-layout",
28
+ "skills/metabolism"
35
29
  ]
36
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scientify",
3
- "version": "2.1.0",
3
+ "version": "3.1.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",
@@ -40,8 +40,7 @@
40
40
  "release": "npm version patch && git push && git push --tags"
41
41
  },
42
42
  "dependencies": {
43
- "@sinclair/typebox": "^0.32.0",
44
- "tar": "^7.0.0"
43
+ "@sinclair/typebox": "^0.32.0"
45
44
  },
46
45
  "devDependencies": {
47
46
  "@semantic-release/changelog": "^6.0.3",
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: algorithm-selection
3
+ description: "Use this when the user needs to choose between multiple ML routes after survey but before committing to implementation. Compares candidate approaches, selects one, records rejected routes, and keeps a fallback."
4
+ metadata:
5
+ {
6
+ "openclaw":
7
+ {
8
+ "emoji": "🧭",
9
+ },
10
+ }
11
+ ---
12
+
13
+ # Algorithm Selection
14
+
15
+ **Don't ask permission. Just do it.**
16
+
17
+ Use this skill after `/research-survey` when there are several plausible ML approaches and the project needs a deliberate route choice instead of jumping straight into implementation.
18
+
19
+ Outputs go to the workspace root.
20
+
21
+ ## Use This When
22
+
23
+ - `survey_res.md` already exists
24
+ - there are at least 2 plausible methods or model families
25
+ - the user wants a chosen route plus backups
26
+
27
+ ## Do Not Use This When
28
+
29
+ - the project has no survey yet
30
+ - the team already decided the model route and only needs implementation details
31
+
32
+ ## Required Inputs
33
+
34
+ - `SOUL.md`
35
+ - `survey_res.md`
36
+ - `knowledge/paper_*.md` when available
37
+
38
+ If `survey_res.md` is missing, stop and say: `Run /research-survey first to complete the deep analysis.`
39
+
40
+ ## Required Output
41
+
42
+ - `selection_res.md`
43
+
44
+ ## Workflow
45
+
46
+ ### Step 1: Read the Current Project Direction
47
+
48
+ Read:
49
+
50
+ - `SOUL.md`
51
+ - `survey_res.md`
52
+ - relevant `knowledge/paper_*.md`
53
+
54
+ Extract:
55
+
56
+ - the task and evaluation target
57
+ - method families mentioned in survey
58
+ - constraints such as compute, data, latency, interpretability, or deployment needs
59
+
60
+ ### Step 2: Build 2-3 Candidate Routes
61
+
62
+ Create 2-3 realistic candidate routes only. For each route, record:
63
+
64
+ - route name
65
+ - core idea
66
+ - supporting papers
67
+ - expected strengths
68
+ - expected risks
69
+ - implementation cost
70
+ - baseline compatibility
71
+
72
+ Use `references/candidate-template.md`.
73
+
74
+ ### Step 3: Select One Route and Keep Backups
75
+
76
+ Choose:
77
+
78
+ - one `Chosen Route`
79
+ - one or more `Rejected Routes`
80
+ - one `Fallback Route`
81
+
82
+ The fallback should be the route most likely to work if the chosen route underperforms or proves too expensive to implement.
83
+
84
+ ### Step 4: Write `selection_res.md`
85
+
86
+ Use `references/selection-template.md`.
87
+
88
+ The final output must include:
89
+
90
+ - project goal
91
+ - decision criteria
92
+ - candidate options table
93
+ - chosen route
94
+ - rejected routes
95
+ - fallback route
96
+ - next recommended command
97
+
98
+ ## Rules
99
+
100
+ 1. Do not present only one route unless the survey truly leaves no meaningful alternative.
101
+ 2. Every route must cite at least one paper or survey-derived basis.
102
+ 3. The chosen route must match the project constraints in `SOUL.md`.
103
+ 4. The fallback route must be different from the chosen route.