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.
- package/README.en.md +21 -1
- package/README.md +27 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -77
- package/dist/index.js.map +1 -1
- package/dist/src/cli/research.d.ts.map +1 -1
- package/dist/src/cli/research.js +47 -23
- package/dist/src/cli/research.js.map +1 -1
- package/dist/src/commands/metabolism-status.d.ts.map +1 -1
- package/dist/src/commands/metabolism-status.js +5 -25
- package/dist/src/commands/metabolism-status.js.map +1 -1
- package/dist/src/commands.d.ts +8 -8
- package/dist/src/commands.d.ts.map +1 -1
- package/dist/src/commands.js +230 -243
- package/dist/src/commands.js.map +1 -1
- package/dist/src/release-gate.d.ts +14 -0
- package/dist/src/release-gate.d.ts.map +1 -0
- package/dist/src/release-gate.js +124 -0
- package/dist/src/release-gate.js.map +1 -0
- package/dist/src/templates/bootstrap.d.ts.map +1 -1
- package/dist/src/templates/bootstrap.js +157 -94
- package/dist/src/templates/bootstrap.js.map +1 -1
- package/dist/src/types.d.ts +2 -10
- package/dist/src/types.d.ts.map +1 -1
- package/openclaw.plugin.json +11 -17
- package/package.json +2 -3
- package/skills/algorithm-selection/SKILL.md +103 -0
- package/skills/algorithm-selection/references/candidate-template.md +13 -0
- package/skills/algorithm-selection/references/selection-template.md +39 -0
- package/skills/artifact-review/SKILL.md +146 -0
- package/skills/artifact-review/references/release-gate-template.md +40 -0
- package/skills/artifact-review/references/review-checklist.md +45 -0
- package/skills/artifact-review/references/style-review-checklist.md +30 -0
- package/skills/baseline-runner/SKILL.md +103 -0
- package/skills/baseline-runner/references/baseline-matrix-template.md +9 -0
- package/skills/baseline-runner/references/baseline-report-template.md +25 -0
- package/skills/dataset-validate/SKILL.md +104 -0
- package/skills/dataset-validate/references/data-validation-template.md +38 -0
- package/skills/figure-standardize/SKILL.md +110 -0
- package/skills/figure-standardize/references/caption-template.md +12 -0
- package/skills/figure-standardize/references/figure-placement-template.md +30 -0
- package/skills/figure-standardize/references/figure-style-guide.md +36 -0
- package/skills/idea-generation/SKILL.md +20 -44
- package/skills/idea-generation/references/code-mapping.md +3 -3
- package/skills/idea-generation/references/idea-template.md +1 -1
- package/skills/idea-generation/references/reading-long-papers.md +3 -3
- package/skills/metabolism/SKILL.md +80 -36
- package/skills/paper-download/SKILL.md +61 -0
- package/skills/release-layout/SKILL.md +73 -0
- package/skills/release-layout/references/page-structure.md +14 -0
- package/skills/research-collect/SKILL.md +41 -111
- package/skills/research-experiment/SKILL.md +20 -12
- package/skills/research-implement/SKILL.md +10 -11
- package/skills/research-pipeline/SKILL.md +23 -31
- package/skills/research-plan/SKILL.md +7 -11
- package/skills/research-review/SKILL.md +21 -22
- package/skills/research-survey/SKILL.md +28 -25
- package/skills/write-paper/SKILL.md +252 -0
- package/skills/write-paper/references/boundary-notes-template.md +34 -0
- package/skills/write-paper/references/claim-inventory-template.md +32 -0
- package/skills/write-paper/references/evidence-contract.md +57 -0
- package/skills/write-paper/references/figure-callout-template.md +38 -0
- package/skills/write-paper/references/figures-manifest-template.md +44 -0
- package/skills/write-paper/references/latex/README.md +22 -0
- package/skills/write-paper/references/latex/build_paper.sh +41 -0
- package/skills/write-paper/references/latex/manuscript.tex +39 -0
- package/skills/write-paper/references/latex/references.bib +10 -0
- package/skills/write-paper/references/latex/sections/ablations.tex +3 -0
- package/skills/write-paper/references/latex/sections/abstract.tex +3 -0
- package/skills/write-paper/references/latex/sections/conclusion.tex +3 -0
- package/skills/write-paper/references/latex/sections/discussion_scope.tex +7 -0
- package/skills/write-paper/references/latex/sections/experimental_protocol.tex +3 -0
- package/skills/write-paper/references/latex/sections/introduction.tex +3 -0
- package/skills/write-paper/references/latex/sections/main_results.tex +9 -0
- package/skills/write-paper/references/latex/sections/method_system.tex +3 -0
- package/skills/write-paper/references/latex/sections/problem_setup.tex +3 -0
- package/skills/write-paper/references/latex/sections/related_work.tex +3 -0
- package/skills/write-paper/references/paper-template.md +155 -0
- package/skills/write-paper/references/paragraph-contract.md +139 -0
- package/skills/write-paper/references/paragraph-examples.md +171 -0
- package/skills/write-paper/references/style-banlist.md +81 -0
- package/skills/write-review-paper/SKILL.md +22 -16
- package/skills/write-review-paper/references/note-template.md +1 -1
- package/skills/write-review-paper/references/survey-template.md +1 -1
- package/dist/src/hooks/research-mode.d.ts +0 -22
- package/dist/src/hooks/research-mode.d.ts.map +0 -1
- package/dist/src/hooks/research-mode.js +0 -35
- package/dist/src/hooks/research-mode.js.map +0 -1
- package/dist/src/hooks/scientify-cron-autofill.d.ts +0 -15
- package/dist/src/hooks/scientify-cron-autofill.d.ts.map +0 -1
- package/dist/src/hooks/scientify-cron-autofill.js +0 -156
- package/dist/src/hooks/scientify-cron-autofill.js.map +0 -1
- package/dist/src/hooks/scientify-signature.d.ts +0 -21
- package/dist/src/hooks/scientify-signature.d.ts.map +0 -1
- package/dist/src/hooks/scientify-signature.js +0 -150
- package/dist/src/hooks/scientify-signature.js.map +0 -1
- package/dist/src/knowledge-state/project.d.ts +0 -13
- package/dist/src/knowledge-state/project.d.ts.map +0 -1
- package/dist/src/knowledge-state/project.js +0 -88
- package/dist/src/knowledge-state/project.js.map +0 -1
- package/dist/src/knowledge-state/render.d.ts +0 -63
- package/dist/src/knowledge-state/render.d.ts.map +0 -1
- package/dist/src/knowledge-state/render.js +0 -368
- package/dist/src/knowledge-state/render.js.map +0 -1
- package/dist/src/knowledge-state/store.d.ts +0 -19
- package/dist/src/knowledge-state/store.d.ts.map +0 -1
- package/dist/src/knowledge-state/store.js +0 -978
- package/dist/src/knowledge-state/store.js.map +0 -1
- package/dist/src/knowledge-state/types.d.ts +0 -182
- package/dist/src/knowledge-state/types.d.ts.map +0 -1
- package/dist/src/knowledge-state/types.js +0 -2
- package/dist/src/knowledge-state/types.js.map +0 -1
- package/dist/src/literature/subscription-state.d.ts +0 -112
- package/dist/src/literature/subscription-state.d.ts.map +0 -1
- package/dist/src/literature/subscription-state.js +0 -696
- package/dist/src/literature/subscription-state.js.map +0 -1
- package/dist/src/research-subscriptions/constants.d.ts +0 -16
- package/dist/src/research-subscriptions/constants.d.ts.map +0 -1
- package/dist/src/research-subscriptions/constants.js +0 -59
- package/dist/src/research-subscriptions/constants.js.map +0 -1
- package/dist/src/research-subscriptions/cron-client.d.ts +0 -8
- package/dist/src/research-subscriptions/cron-client.d.ts.map +0 -1
- package/dist/src/research-subscriptions/cron-client.js +0 -81
- package/dist/src/research-subscriptions/cron-client.js.map +0 -1
- package/dist/src/research-subscriptions/delivery.d.ts +0 -10
- package/dist/src/research-subscriptions/delivery.d.ts.map +0 -1
- package/dist/src/research-subscriptions/delivery.js +0 -82
- package/dist/src/research-subscriptions/delivery.js.map +0 -1
- package/dist/src/research-subscriptions/handlers.d.ts +0 -6
- package/dist/src/research-subscriptions/handlers.d.ts.map +0 -1
- package/dist/src/research-subscriptions/handlers.js +0 -204
- package/dist/src/research-subscriptions/handlers.js.map +0 -1
- package/dist/src/research-subscriptions/parse.d.ts +0 -11
- package/dist/src/research-subscriptions/parse.d.ts.map +0 -1
- package/dist/src/research-subscriptions/parse.js +0 -492
- package/dist/src/research-subscriptions/parse.js.map +0 -1
- package/dist/src/research-subscriptions/prompt.d.ts +0 -5
- package/dist/src/research-subscriptions/prompt.d.ts.map +0 -1
- package/dist/src/research-subscriptions/prompt.js +0 -347
- package/dist/src/research-subscriptions/prompt.js.map +0 -1
- package/dist/src/research-subscriptions/types.d.ts +0 -66
- package/dist/src/research-subscriptions/types.d.ts.map +0 -1
- package/dist/src/research-subscriptions/types.js +0 -2
- package/dist/src/research-subscriptions/types.js.map +0 -1
- package/dist/src/research-subscriptions.d.ts +0 -2
- package/dist/src/research-subscriptions.d.ts.map +0 -1
- package/dist/src/research-subscriptions.js +0 -2
- package/dist/src/research-subscriptions.js.map +0 -1
- package/dist/src/services/auto-updater.d.ts +0 -15
- package/dist/src/services/auto-updater.d.ts.map +0 -1
- package/dist/src/services/auto-updater.js +0 -188
- package/dist/src/services/auto-updater.js.map +0 -1
- package/dist/src/tools/arxiv-download.d.ts +0 -24
- package/dist/src/tools/arxiv-download.d.ts.map +0 -1
- package/dist/src/tools/arxiv-download.js +0 -177
- package/dist/src/tools/arxiv-download.js.map +0 -1
- package/dist/src/tools/github-search-tool.d.ts +0 -25
- package/dist/src/tools/github-search-tool.d.ts.map +0 -1
- package/dist/src/tools/github-search-tool.js +0 -114
- package/dist/src/tools/github-search-tool.js.map +0 -1
- package/dist/src/tools/openreview-lookup.d.ts +0 -31
- package/dist/src/tools/openreview-lookup.d.ts.map +0 -1
- package/dist/src/tools/openreview-lookup.js +0 -414
- package/dist/src/tools/openreview-lookup.js.map +0 -1
- package/dist/src/tools/paper-browser.d.ts +0 -23
- package/dist/src/tools/paper-browser.d.ts.map +0 -1
- package/dist/src/tools/paper-browser.js +0 -121
- package/dist/src/tools/paper-browser.js.map +0 -1
- package/dist/src/tools/scientify-cron.d.ts +0 -63
- package/dist/src/tools/scientify-cron.d.ts.map +0 -1
- package/dist/src/tools/scientify-cron.js +0 -265
- package/dist/src/tools/scientify-cron.js.map +0 -1
- package/dist/src/tools/scientify-literature-state.d.ts +0 -303
- package/dist/src/tools/scientify-literature-state.d.ts.map +0 -1
- package/dist/src/tools/scientify-literature-state.js +0 -957
- package/dist/src/tools/scientify-literature-state.js.map +0 -1
- package/dist/src/tools/unpaywall-download.d.ts +0 -21
- package/dist/src/tools/unpaywall-download.d.ts.map +0 -1
- package/dist/src/tools/unpaywall-download.js +0 -169
- package/dist/src/tools/unpaywall-download.js.map +0 -1
- package/dist/src/tools/workspace.d.ts +0 -32
- package/dist/src/tools/workspace.d.ts.map +0 -1
- package/dist/src/tools/workspace.js +0 -69
- package/dist/src/tools/workspace.js.map +0 -1
- package/skills/metabolism-init/SKILL.md +0 -80
- package/skills/research-subscription/SKILL.md +0 -119
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: figure-standardize
|
|
3
|
+
description: "Use this when the user wants to improve chart quality, standardize plotting style, regenerate release figures, or add captions/protocol notes. Normalizes fonts, colors, legends, units, and scope notes across Scientify figures."
|
|
4
|
+
metadata:
|
|
5
|
+
{
|
|
6
|
+
"openclaw":
|
|
7
|
+
{
|
|
8
|
+
"emoji": "📊",
|
|
9
|
+
},
|
|
10
|
+
}
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Figure Standardization
|
|
14
|
+
|
|
15
|
+
**Don't ask permission. Just do it.**
|
|
16
|
+
|
|
17
|
+
Use this skill to turn one-off Scientify charts into release-ready figures.
|
|
18
|
+
|
|
19
|
+
**Do not run new experiments here.** Work from existing results, plotting scripts, and figure bundles. If the source data is missing or inconsistent, report that explicitly instead of smoothing it over.
|
|
20
|
+
|
|
21
|
+
## Required Outputs
|
|
22
|
+
|
|
23
|
+
1. Updated plotting script(s) or a shared style helper
|
|
24
|
+
2. Regenerated `.png` and `.pdf` files when the pipeline supports both
|
|
25
|
+
3. A figure spec file:
|
|
26
|
+
- prefer `reports/figures/figure_spec.md`
|
|
27
|
+
- otherwise `project/figures/figure_spec.md`
|
|
28
|
+
4. `paper/figures_manifest.md` when the figure family is paper-facing or a `paper/` workspace already exists
|
|
29
|
+
|
|
30
|
+
## Workflow
|
|
31
|
+
|
|
32
|
+
### Step 1: Inspect Inputs
|
|
33
|
+
|
|
34
|
+
Read:
|
|
35
|
+
|
|
36
|
+
- existing figures
|
|
37
|
+
- the generator script(s)
|
|
38
|
+
- the result tables / JSON / Markdown that feed the figures
|
|
39
|
+
- any surrounding README or release notes that explain the figure family
|
|
40
|
+
|
|
41
|
+
Prefer improving an existing generator over creating a second one-off script.
|
|
42
|
+
|
|
43
|
+
### Step 2: Standardize the Figure Family
|
|
44
|
+
|
|
45
|
+
Normalize the full family, not just one chart:
|
|
46
|
+
|
|
47
|
+
- font family and title hierarchy
|
|
48
|
+
- semantic color mapping
|
|
49
|
+
- axis labels and units
|
|
50
|
+
- legend order and naming
|
|
51
|
+
- decimal precision and tick formatting
|
|
52
|
+
- line widths / marker sizes
|
|
53
|
+
- caption structure
|
|
54
|
+
- protocol note wording
|
|
55
|
+
- callout wording
|
|
56
|
+
- paper placement intent
|
|
57
|
+
|
|
58
|
+
Use:
|
|
59
|
+
|
|
60
|
+
- `references/figure-style-guide.md`
|
|
61
|
+
- `references/caption-template.md`
|
|
62
|
+
- `references/figure-placement-template.md`
|
|
63
|
+
|
|
64
|
+
### Step 3: Write the Figure Spec
|
|
65
|
+
|
|
66
|
+
Create or update `figure_spec.md` with one section per figure:
|
|
67
|
+
|
|
68
|
+
- figure filename
|
|
69
|
+
- source files
|
|
70
|
+
- metrics shown
|
|
71
|
+
- baseline or comparison family
|
|
72
|
+
- quality guard / evaluation constraint
|
|
73
|
+
- simulator/runtime note
|
|
74
|
+
- intended takeaway
|
|
75
|
+
|
|
76
|
+
If the figure is used in a paper or paper-facing report, also create or update the matching entry in `paper/figures_manifest.md` with:
|
|
77
|
+
|
|
78
|
+
- `figure_id`
|
|
79
|
+
- `file_path`
|
|
80
|
+
- `latex_label`
|
|
81
|
+
- `section`
|
|
82
|
+
- `placement_hint`
|
|
83
|
+
- `caption_short`
|
|
84
|
+
- `caption_long`
|
|
85
|
+
- `takeaway_sentence`
|
|
86
|
+
- `callout_sentence`
|
|
87
|
+
- `baseline`
|
|
88
|
+
- `evidence_type`
|
|
89
|
+
- `source_metrics`
|
|
90
|
+
- `source_files`
|
|
91
|
+
- `supports_claim_ids`
|
|
92
|
+
- `must_appear_before_claim_ids`
|
|
93
|
+
|
|
94
|
+
Keep `figure_spec.md` and `paper/figures_manifest.md` aligned. The spec is the release-facing summary; the manifest is the paper-facing contract.
|
|
95
|
+
|
|
96
|
+
### Step 4: Re-render and Verify
|
|
97
|
+
|
|
98
|
+
Re-render the figures after script updates.
|
|
99
|
+
|
|
100
|
+
Keep filenames stable unless the user explicitly asked for a new release bundle.
|
|
101
|
+
|
|
102
|
+
## Figure Rules
|
|
103
|
+
|
|
104
|
+
1. Keep metric semantics identical across a figure family.
|
|
105
|
+
2. Always show units explicitly.
|
|
106
|
+
3. If a result comes from simulator or proxy evaluation, state that in the caption or protocol note.
|
|
107
|
+
4. Do not hide failing or quality-guard-breaking baselines; mark them clearly.
|
|
108
|
+
5. Do not change the scientific claim. This skill improves packaging, not evidence.
|
|
109
|
+
6. If a figure is paper-facing, produce both a long caption and a first-use callout sentence.
|
|
110
|
+
7. If a figure supports a claim, the manifest must name that claim in `supports_claim_ids`.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Caption Template
|
|
2
|
+
|
|
3
|
+
```text
|
|
4
|
+
caption_short:
|
|
5
|
+
Figure X. {Short statement of what is compared}.
|
|
6
|
+
|
|
7
|
+
caption_long:
|
|
8
|
+
Figure X. {What the figure shows and the main takeaway}. Baseline: {baseline family}. Metric: {metric + unit}. Evidence type: {simulator/local_runtime/runtime}. Protocol: {guardrail or evaluation scope}. Boundary: {scope note if needed}.
|
|
9
|
+
|
|
10
|
+
callout_sentence:
|
|
11
|
+
Figure \ref{{latex_label}} shows {takeaway_sentence} under {protocol or evaluation frame}.
|
|
12
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Figure Placement Template
|
|
2
|
+
|
|
3
|
+
Use this guide when assigning `section` and `placement_hint` in `paper/figures_manifest.md`.
|
|
4
|
+
|
|
5
|
+
Recommended fields:
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
section: "main_results"
|
|
9
|
+
placement_hint: "figure[t]"
|
|
10
|
+
must_appear_before_claim_ids:
|
|
11
|
+
- "claim-001"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Placement hint options:
|
|
15
|
+
|
|
16
|
+
- `figure[t]`
|
|
17
|
+
- standard single-column top placement
|
|
18
|
+
- `figure[b]`
|
|
19
|
+
- standard single-column bottom placement
|
|
20
|
+
- `figure* [t]`
|
|
21
|
+
- wide figure for two-column layouts
|
|
22
|
+
- `inline_reference_only`
|
|
23
|
+
- no figure block in the current section; the text only points to a figure placed elsewhere
|
|
24
|
+
|
|
25
|
+
Placement rules:
|
|
26
|
+
|
|
27
|
+
- Put the figure in the same section that carries its main supported claim whenever possible.
|
|
28
|
+
- If a figure supports a headline result, the first callout should appear before or immediately adjacent to the corresponding claim.
|
|
29
|
+
- Do not place a figure so late that the reader sees the claim well before the figure is introduced.
|
|
30
|
+
- Use `must_appear_before_claim_ids` to mark claims that should not appear before the figure callout.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Figure Style Guide
|
|
2
|
+
|
|
3
|
+
Use one consistent style across a figure family:
|
|
4
|
+
|
|
5
|
+
- one font family
|
|
6
|
+
- one semantic color per method family
|
|
7
|
+
- one stable baseline line style
|
|
8
|
+
- explicit units in axis labels
|
|
9
|
+
- compact legend names
|
|
10
|
+
- protocol note under the figure or in the caption
|
|
11
|
+
- one stable caption and callout structure across the family
|
|
12
|
+
|
|
13
|
+
Required paper-facing figure contract fields:
|
|
14
|
+
|
|
15
|
+
- `caption_short`
|
|
16
|
+
- `caption_long`
|
|
17
|
+
- `callout_sentence`
|
|
18
|
+
- `placement_hint`
|
|
19
|
+
- `supports_claim_ids`
|
|
20
|
+
|
|
21
|
+
Required caption fields:
|
|
22
|
+
|
|
23
|
+
- what is compared
|
|
24
|
+
- which baseline is used
|
|
25
|
+
- what metric is shown
|
|
26
|
+
- what evidence type supports the figure
|
|
27
|
+
- what protocol or guardrail defines the evaluation regime when that matters for the claim
|
|
28
|
+
|
|
29
|
+
Paper-facing figures should stay aligned across four surfaces:
|
|
30
|
+
|
|
31
|
+
1. `paper/figures_manifest.md`
|
|
32
|
+
2. the first prose callout
|
|
33
|
+
3. the figure caption
|
|
34
|
+
4. the eventual LaTeX figure block
|
|
35
|
+
|
|
36
|
+
Do not let these four surfaces drift apart.
|
|
@@ -19,27 +19,25 @@ 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
|
-
|
|
22
|
+
Outputs go to `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:
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
ls
|
|
32
|
-
ls
|
|
33
|
-
ls $W/survey/ 2>/dev/null
|
|
31
|
+
ls papers/ 2>/dev/null | head -20
|
|
32
|
+
ls knowledge/ 2>/dev/null
|
|
34
33
|
```
|
|
35
34
|
|
|
36
35
|
### Assess Available Resources
|
|
37
36
|
|
|
38
37
|
| Resource | Location | Status |
|
|
39
38
|
|----------|----------|--------|
|
|
40
|
-
| Papers |
|
|
41
|
-
|
|
|
42
|
-
| Repos | `$W/repos/` | Count: ? |
|
|
39
|
+
| Papers | `papers/` | Count: ? |
|
|
40
|
+
| Knowledge | `knowledge/_index.md` | Exists: Y/N |
|
|
43
41
|
|
|
44
42
|
---
|
|
45
43
|
|
|
@@ -77,7 +75,7 @@ This will:
|
|
|
77
75
|
- Search 100+ papers systematically
|
|
78
76
|
- Filter by relevance (score ≥4)
|
|
79
77
|
- Cluster into research directions
|
|
80
|
-
- Save to
|
|
78
|
+
- Save to papers/
|
|
81
79
|
|
|
82
80
|
After survey completes, run /idea-generation again.
|
|
83
81
|
```
|
|
@@ -86,31 +84,25 @@ After survey completes, run /idea-generation again.
|
|
|
86
84
|
|
|
87
85
|
For fast iteration, do minimal search:
|
|
88
86
|
|
|
89
|
-
1. **
|
|
87
|
+
1. **Search papers:**
|
|
90
88
|
```
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
query: "{user_topic}"
|
|
94
|
-
max_results: 10
|
|
89
|
+
arxiv_search({ query: "{user_topic}", max_results: 10 })
|
|
90
|
+
openalex_search({ query: "{user_topic}", max_results: 10 })
|
|
95
91
|
```
|
|
96
92
|
|
|
97
|
-
2. **
|
|
98
|
-
```bash
|
|
99
|
-
mkdir -p $W/repos
|
|
100
|
-
git clone --depth 1 {repo_url} $W/repos/{name}
|
|
101
|
-
```
|
|
93
|
+
2. **Download papers:** 按 /paper-download 的方式下载到 `papers/`
|
|
102
94
|
|
|
103
|
-
3. **
|
|
95
|
+
3. **Clone reference repos (optional):**
|
|
104
96
|
```bash
|
|
105
|
-
|
|
106
|
-
|
|
97
|
+
gh search repos "{paper_title} implementation" --limit 5 --sort stars
|
|
98
|
+
git clone --depth 1 {repo_url} repos/{name}
|
|
107
99
|
```
|
|
108
100
|
|
|
109
101
|
---
|
|
110
102
|
|
|
111
103
|
## Step 4: Analyze Literature
|
|
112
104
|
|
|
113
|
-
**Prerequisites:** At least 5 papers in
|
|
105
|
+
**Prerequisites:** At least 5 papers in `papers/`
|
|
114
106
|
|
|
115
107
|
### 4.1 Read Papers
|
|
116
108
|
|
|
@@ -130,7 +122,7 @@ Look for:
|
|
|
130
122
|
- Scalability issues
|
|
131
123
|
- Assumptions that could be relaxed
|
|
132
124
|
|
|
133
|
-
Document gaps in
|
|
125
|
+
Document gaps in `ideas/gaps.md`:
|
|
134
126
|
```markdown
|
|
135
127
|
# Research Gaps Identified
|
|
136
128
|
|
|
@@ -146,7 +138,7 @@ Document gaps in `$W/ideas/gaps.md`:
|
|
|
146
138
|
|
|
147
139
|
## Step 5: Generate 5 Ideas
|
|
148
140
|
|
|
149
|
-
Create
|
|
141
|
+
Create `ideas/idea_1.md` through `idea_5.md` using template in `references/idea-template.md`.
|
|
150
142
|
|
|
151
143
|
**Requirements:**
|
|
152
144
|
- Each idea cites ≥2 papers by arXiv ID
|
|
@@ -175,28 +167,12 @@ Create `$W/ideas/idea_1.md` through `idea_5.md` using template in `references/id
|
|
|
175
167
|
|
|
176
168
|
### 6.2 Enhance Selected Idea
|
|
177
169
|
|
|
178
|
-
Create
|
|
170
|
+
Create `ideas/selected_idea.md` with:
|
|
179
171
|
- Detailed math (loss functions, gradients)
|
|
180
172
|
- Architecture choices
|
|
181
173
|
- Hyperparameters
|
|
182
174
|
- Implementation roadmap
|
|
183
175
|
|
|
184
|
-
### 6.3 (Optional but recommended) OpenReview Evidence Check
|
|
185
|
-
|
|
186
|
-
For the top 1-2 shortlisted ideas, validate novelty/positioning risk with `openreview_lookup`:
|
|
187
|
-
|
|
188
|
-
- Query using core title keywords or representative baseline paper title
|
|
189
|
-
- Extract evidence:
|
|
190
|
-
- decision (if available)
|
|
191
|
-
- average rating/confidence
|
|
192
|
-
- reviewer weakness patterns
|
|
193
|
-
- Add a short "submission risk note" section per idea:
|
|
194
|
-
- likely reviewer concern
|
|
195
|
-
- mitigation experiment to add
|
|
196
|
-
- positioning adjustment
|
|
197
|
-
|
|
198
|
-
Do not claim accept/reject predictions as facts. Report evidence-backed risk signals only.
|
|
199
|
-
|
|
200
176
|
---
|
|
201
177
|
|
|
202
178
|
## Step 7: Code Survey
|
|
@@ -205,13 +181,13 @@ Map idea concepts to reference implementations.
|
|
|
205
181
|
|
|
206
182
|
See `references/code-mapping.md` for template.
|
|
207
183
|
|
|
208
|
-
**Output:**
|
|
184
|
+
**Output:** `ideas/implementation_report.md`
|
|
209
185
|
|
|
210
186
|
---
|
|
211
187
|
|
|
212
188
|
## Step 8: Summary
|
|
213
189
|
|
|
214
|
-
Create
|
|
190
|
+
Create `ideas/summary.md`:
|
|
215
191
|
- All 5 ideas with scores
|
|
216
192
|
- Selected idea details
|
|
217
193
|
- Next steps: `/research-pipeline` to implement
|
|
@@ -9,13 +9,13 @@ From `selected_idea.md`, list concepts needing implementation.
|
|
|
9
9
|
## Step 2: Survey Codebases
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
grep -r "class.*Attention"
|
|
13
|
-
grep -r "def forward"
|
|
12
|
+
grep -r "class.*Attention" repos/
|
|
13
|
+
grep -r "def forward" repos/
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
## Step 3: Implementation Report
|
|
17
17
|
|
|
18
|
-
Write to
|
|
18
|
+
Write to `ideas/implementation_report.md`:
|
|
19
19
|
|
|
20
20
|
```markdown
|
|
21
21
|
# Implementation Report
|
|
@@ -5,8 +5,8 @@ For papers >50KB or >15k tokens, use chunked reading.
|
|
|
5
5
|
## Step 1: Structure Scan
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
ls -la
|
|
9
|
-
wc -l
|
|
8
|
+
ls -la papers/{arxiv_id}/
|
|
9
|
+
wc -l papers/{arxiv_id}/*.tex
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
## Step 2: Chunked Reading
|
|
@@ -16,7 +16,7 @@ Use Read tool with `offset` and `limit`:
|
|
|
16
16
|
```
|
|
17
17
|
Tool: Read
|
|
18
18
|
Arguments:
|
|
19
|
-
file_path: "
|
|
19
|
+
file_path: "papers/2404.04429/main.tex"
|
|
20
20
|
offset: 1
|
|
21
21
|
limit: 500 # First 500 lines
|
|
22
22
|
```
|
|
@@ -1,24 +1,80 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: metabolism
|
|
3
|
-
description: "Knowledge metabolism cycle
|
|
4
|
-
user-invokable: true
|
|
3
|
+
description: "Knowledge metabolism: Day 0 init (discuss + baseline survey) or daily cycle (incremental search + update knowledge + generate hypotheses). Triggered by bootstrap and daily cron."
|
|
5
4
|
---
|
|
6
5
|
|
|
7
|
-
#
|
|
6
|
+
# Knowledge Metabolism
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
读取 `config.json` 的 `currentDay` 字段判断执行哪个分支:
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
- **`currentDay == 0` 或 config.json 不存在** → 执行 Day 0(初始化)
|
|
11
|
+
- **`currentDay >= 1`** → 执行每日增量循环
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Day 0:初始化
|
|
16
|
+
|
|
17
|
+
与用户讨论研究方向后,构建领域基线知识。
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
2. 读取 `metabolism/knowledge/_index.md` 获取当前知识状态
|
|
19
|
+
### 准备
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
1. 检查 `config.json` 是否存在
|
|
22
|
+
- 不存在:询问用户研究方向,创建 `config.json`(包含 `keywords`, `arxivCategories`, `sources`, `currentDay: 0`, `processed_ids: []`)
|
|
23
|
+
- 已存在且 `currentDay > 0`:跳转到每日循环
|
|
19
24
|
|
|
20
|
-
|
|
25
|
+
### Step 1: 宽泛调研
|
|
21
26
|
|
|
27
|
+
委托 /research-collect 执行宽泛调研(不限日期),构建初始知识:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
sessions_spawn({
|
|
31
|
+
task: "/research-collect\n研究主题: {从 config.json 的 keywords 提取}\n这是 Day 0 基线构建,请做宽泛调研(不限日期),覆盖领域经典工作和近期进展。",
|
|
32
|
+
label: "Day 0 Baseline Survey",
|
|
33
|
+
runTimeoutSeconds: 1800
|
|
34
|
+
})
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
等待完成后,读取 `papers/` 获取论文列表。
|
|
38
|
+
|
|
39
|
+
### Step 2: 阅读与知识提取
|
|
40
|
+
|
|
41
|
+
对每篇论文:
|
|
42
|
+
- 读 .tex 源码(优先)或 PDF
|
|
43
|
+
- 提取:核心方法、关键结论、领域现状
|
|
44
|
+
|
|
45
|
+
将每篇论文的 arXiv ID / DOI 追加到 `config.json` 的 `processed_ids`。
|
|
46
|
+
|
|
47
|
+
### Step 3: 构建初始知识状态
|
|
48
|
+
|
|
49
|
+
创建 `knowledge/_index.md`:
|
|
50
|
+
- Research Goal(从 config.json 提取)
|
|
51
|
+
- Topics 表格(按论文主题聚类)
|
|
52
|
+
- Cross-topic Links(如有)
|
|
53
|
+
- Timeline(记录 Day 0)
|
|
54
|
+
|
|
55
|
+
为每个识别出的主题创建 `knowledge/topic-{name}.md`:
|
|
56
|
+
- 已知方法
|
|
57
|
+
- 关键论文与结论
|
|
58
|
+
- 开放问题
|
|
59
|
+
|
|
60
|
+
### Step 4: 记录日志
|
|
61
|
+
|
|
62
|
+
写入 `log/{YYYY-MM-DD}-init.md`,更新 `config.json`:`currentDay` 设为 1。
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Day 1+:每日增量循环
|
|
67
|
+
|
|
68
|
+
### 准备
|
|
69
|
+
|
|
70
|
+
1. 读取 `config.json` 获取关键词、arXiv 分类、`sources`、`processed_ids` 和 `currentDay`
|
|
71
|
+
2. 读取 `knowledge/_index.md` 获取当前知识状态
|
|
72
|
+
|
|
73
|
+
### Step 1: Search(增量搜索)
|
|
74
|
+
|
|
75
|
+
根据 `config.json` 的 `sources` 字段选择搜索来源,用滑动窗口(过去 5 天)搜索,靠 `processed_ids` 去重:
|
|
76
|
+
|
|
77
|
+
**arXiv**(如果 sources 包含 "arxiv"):
|
|
22
78
|
```
|
|
23
79
|
arxiv_search({
|
|
24
80
|
query: "{keywords} AND cat:{category}",
|
|
@@ -26,7 +82,10 @@ arxiv_search({
|
|
|
26
82
|
sort_by: "submittedDate",
|
|
27
83
|
max_results: 30
|
|
28
84
|
})
|
|
85
|
+
```
|
|
29
86
|
|
|
87
|
+
**OpenAlex**(如果 sources 包含 "openalex"):
|
|
88
|
+
```
|
|
30
89
|
openalex_search({
|
|
31
90
|
query: "{keywords}",
|
|
32
91
|
filter: "from_publication_date:{5天前 YYYY-MM-DD}",
|
|
@@ -37,14 +96,9 @@ openalex_search({
|
|
|
37
96
|
|
|
38
97
|
合并结果,按 arXiv ID / DOI 去重,**跳过 `processed_ids` 中已有的论文**。
|
|
39
98
|
|
|
40
|
-
|
|
99
|
+
按 /paper-download 的方式下载新论文到 `papers/`(arXiv 优先 .tex 源文件,DOI 通过 Unpaywall 获取 OA PDF)。
|
|
41
100
|
|
|
42
|
-
|
|
43
|
-
arxiv_download({ arxiv_ids: ["{id1}", "{id2}", ...] })
|
|
44
|
-
unpaywall_download({ dois: ["{doi1}", "{doi2}", ...] })
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Step 2: Read(阅读)
|
|
101
|
+
### Step 2: Read(阅读)
|
|
48
102
|
|
|
49
103
|
对每篇新论文:
|
|
50
104
|
- 读 .tex 源码(优先)或 PDF
|
|
@@ -52,9 +106,9 @@ unpaywall_download({ dois: ["{doi1}", "{doi2}", ...] })
|
|
|
52
106
|
|
|
53
107
|
将每篇论文的 arXiv ID / DOI 追加到 `config.json` 的 `processed_ids`。
|
|
54
108
|
|
|
55
|
-
|
|
109
|
+
### Step 3: Update Knowledge
|
|
56
110
|
|
|
57
|
-
读取当前 `
|
|
111
|
+
读取当前 `knowledge/_index.md` 和相关 `topic-*.md`,根据今日阅读的论文更新。
|
|
58
112
|
|
|
59
113
|
**更新原则:**
|
|
60
114
|
- 新发现 → 添加到相关章节
|
|
@@ -64,15 +118,15 @@ unpaywall_download({ dois: ["{doi1}", "{doi2}", ...] })
|
|
|
64
118
|
|
|
65
119
|
**篇幅管理:** 每个 topic 文件控制在 200 行以内。接近上限时,压缩早期内容(合并相似结论、删除低价值条目),保留信息密度。不要为了压缩而丢失关键结论和来源引用。
|
|
66
120
|
|
|
67
|
-
|
|
121
|
+
### Step 4: Hypothesize(假设)
|
|
68
122
|
|
|
69
|
-
|
|
123
|
+
更新完知识后,回顾今日新增内容,自问:
|
|
70
124
|
|
|
71
125
|
- 有没有反复出现但尚未被验证的模式?
|
|
72
126
|
- 有没有两个独立发现组合后暗示的新方向?
|
|
73
127
|
- 有没有现有方法的明显空白?
|
|
74
128
|
|
|
75
|
-
**有想法** → 写入 `
|
|
129
|
+
**有想法** → 写入 `ideas/hyp-{NNN}.md`:
|
|
76
130
|
|
|
77
131
|
```markdown
|
|
78
132
|
# Hypothesis {NNN}
|
|
@@ -94,27 +148,17 @@ unpaywall_download({ dois: ["{doi1}", "{doi2}", ...] })
|
|
|
94
148
|
|
|
95
149
|
然后用 `sessions_send` 通知 main session。
|
|
96
150
|
|
|
97
|
-
**说明:** 发送给用户的内容不要输出“触发条件检查表/列表”,只需解释为什么这个假设合理、哪些已读内容启发了它。
|
|
98
|
-
|
|
99
151
|
**没有想法** → 跳过,不要硬凑。
|
|
100
152
|
|
|
101
|
-
|
|
153
|
+
### Step 5: Log & Finish
|
|
102
154
|
|
|
103
|
-
写入 `
|
|
155
|
+
写入 `log/{YYYY-MM-DD}.md`,更新 `config.json`:`currentDay` +1。
|
|
104
156
|
|
|
105
|
-
|
|
106
|
-
# Day {currentDay} — {YYYY-MM-DD}
|
|
107
|
-
|
|
108
|
-
新论文: {N} 篇
|
|
109
|
-
知识更新: {简述主要变更}
|
|
110
|
-
假设: {有/无}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
更新 `config.json`:`currentDay` +1。
|
|
157
|
+
---
|
|
114
158
|
|
|
115
159
|
## 行为约束
|
|
116
160
|
|
|
117
161
|
1. 不捏造论文中未出现的事实性声明,但可以用自身知识做推理和关联判断
|
|
118
162
|
2. 没有想法时不生成假设
|
|
119
|
-
3.
|
|
163
|
+
3. 自主运行,不向人类提问(Day 0 初始配置除外)
|
|
120
164
|
4. 修改知识文件前必须先读取当前内容
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: paper-download
|
|
3
|
+
description: "Download academic papers: arXiv source/PDF by ID, DOI papers via Unpaywall open access. Supports batch download."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Paper Download
|
|
7
|
+
|
|
8
|
+
将论文下载到当前工作目录的 `papers/` 下。
|
|
9
|
+
|
|
10
|
+
## arXiv 论文
|
|
11
|
+
|
|
12
|
+
**优先下载 .tex 源文件**(可读性远优于 PDF):
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
mkdir -p papers/{arxiv_id}
|
|
16
|
+
curl -L "https://arxiv.org/src/{arxiv_id}" | tar -xz -C papers/{arxiv_id}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
如果 tar 解压失败(部分论文只提供 PDF),回退到 PDF:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
curl -L -o papers/{arxiv_id}.pdf "https://arxiv.org/pdf/{arxiv_id}"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
> arXiv 限速:连续下载时每篇间隔 3 秒(`sleep 3`)。
|
|
26
|
+
|
|
27
|
+
## DOI 论文(通过 Unpaywall)
|
|
28
|
+
|
|
29
|
+
查询开放获取链接,有则下载,无则跳过:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
curl -s "https://api.unpaywall.org/v2/{doi}?email=research@openclaw.ai" | \
|
|
33
|
+
python3 -c "
|
|
34
|
+
import sys, json
|
|
35
|
+
d = json.load(sys.stdin)
|
|
36
|
+
oa = d.get('best_oa_location') or {}
|
|
37
|
+
url = oa.get('url_for_pdf') or oa.get('url')
|
|
38
|
+
if url: print(url)
|
|
39
|
+
else: print('NO_OA', file=sys.stderr)
|
|
40
|
+
" | xargs -I{} curl -L -o papers/{doi_slug}.pdf "{}"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
> `{doi_slug}` = DOI 中的 `/` 替换为 `_`,例如 `10.1000/xyz123` → `10.1000_xyz123`。
|
|
44
|
+
> 非开放获取论文静默跳过,不报错。
|
|
45
|
+
|
|
46
|
+
## 批量下载
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# 批量 arXiv
|
|
50
|
+
for id in 2401.12345 2403.00001 2405.67890; do
|
|
51
|
+
mkdir -p papers/$id
|
|
52
|
+
curl -L "https://arxiv.org/src/$id" | tar -xz -C papers/$id || \
|
|
53
|
+
curl -L -o papers/$id.pdf "https://arxiv.org/pdf/$id"
|
|
54
|
+
sleep 3
|
|
55
|
+
done
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## 下载后
|
|
59
|
+
|
|
60
|
+
- 下载的论文 ID 应追加到 `config.json` 的 `processed_ids`(如果存在)
|
|
61
|
+
- 优先读 `.tex` 源码而非 PDF(信息更完整,公式可直接提取)
|