Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,32 @@ jobs:
- name: Type check
run: pnpm exec tsc --noEmit

- name: Verify packed plugin stays dependency-free
run: |
PACK_FILE="$(npm pack --silent)"
TMP_DIR="$(mktemp -d)"
tar -xzf "$PACK_FILE" -C "$TMP_DIR"

node - "$TMP_DIR/package/package.json" <<'EOF'
const fs = require("node:fs");
const manifestPath = process.argv[2];
const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf8"));

const deps = manifest.dependencies ?? {};
if (Object.keys(deps).length > 0) {
console.error("Packed plugin must not publish runtime dependencies.");
console.error(JSON.stringify(deps, null, 2));
process.exit(1);
}

const peerDeps = manifest.peerDependencies ?? {};
if (Object.keys(peerDeps).length > 0) {
console.error("Packed plugin must not publish peer dependencies.");
console.error(JSON.stringify(peerDeps, null, 2));
process.exit(1);
}
EOF

release:
needs: build
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
Expand Down
44 changes: 22 additions & 22 deletions README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,8 @@ Driven by multi-agent iteration: the orchestrator holds hypotheses and all accum
│ │──→│ edit them too │
│ arxiv_search │ └──────────────────────────────┘
│ openalex_search │
│ github_search │
│ paper_browser │
│ code_executor │
│ platform / local exec │
│ / skill steps │
└──────────────────────────┘
```

Expand All @@ -116,14 +115,23 @@ Pipeline internally uses multi-agent iteration: the orchestrator holds hypothese

### Tool Layer

The agents' hands and eyes:
Scientify organizes research capabilities as a unified semantic layer spanning the runtime registration surface and the workflow execution surface:

| Tool | Capability |
|------|-----------|
| `arxiv_search` / `openalex_search` | Search academic papers (arXiv + cross-disciplinary) |
| `github_search` | Search open-source code implementations |
| `paper_browser` | Paginated paper reading, avoids context overflow |
| `code_executor` | Execute experiment code in `uv`-isolated environment |
| Capability semantic | Primary carrier | Typical target | Execution path | Typical outputs |
|---------------------|-----------------|----------------|----------------|-----------------|
| `arxiv_search`-like capability | Runtime-registered tool | arXiv metadata and candidate paper sets | Registered in the plugin entrypoint and invoked through standard tool calls | search results, candidate paper lists, survey inputs |
| `openalex_search`-like capability | Runtime-registered tool | cross-disciplinary metadata, DOI, citation, and OA signals | Registered in the plugin entrypoint and invoked through standard tool calls | search results, complementary literature sources, survey inputs |
| `github_search`-like capability | Workflow execution step | open-source implementations, baseline repos, reproduction leads | carried out through OpenClaw platform capabilities, local environment commands, or steps defined inside skills | `survey_res.md`, implementation references, repo links |
| `paper_browser`-like capability | Workflow execution step | `.md`, `.tex`, long papers, and drafts | carried out through OpenClaw platform capabilities, local environment commands, or steps defined inside skills | chunked reading results, local excerpts, structured notes |
| `code_executor`-like capability | Workflow execution step | workspace training, evaluation, scripts, and experiment runs | carried out through OpenClaw platform capabilities, local environment commands, or steps defined inside skills | run logs, validation outputs, experiment artifacts |
| `arxiv_download`-like capability | Workflow execution step | arXiv source or PDF acquisition | carried out through OpenClaw platform capabilities, local environment commands, or steps defined inside skills | paper files under `papers/` |
| `openreview_lookup`-like capability | Workflow execution step | reviews, decisions, and forum context | carried out through OpenClaw platform capabilities, local environment commands, or steps defined inside skills | review evidence, comparison notes, review summaries |
| `unpaywall_download`-like capability | Workflow execution step | OA PDF acquisition by DOI | carried out through OpenClaw platform capabilities, local environment commands, or steps defined inside skills | downloaded PDFs and provenance records |

At the implementation boundary:
- the `tool registry` exposes stable, named, directly invokable runtime interfaces
- `skills` define stage ordering, input/output contracts, and artifact materialization
- file reads, command execution, downloads, and external-site interactions are carried out through OpenClaw platform capabilities, local environment commands, or steps defined inside skills

> Scientify runs on [OpenClaw](https://github.com/openclaw/openclaw), natively leveraging the platform's MCP servers (Slack / Feishu push), browser automation (paywalled paper downloads), multi-session concurrency (parallel multi-direction research), and more.

Expand Down Expand Up @@ -275,25 +283,19 @@ Check status anytime:

| Skill | Description |
|-------|-------------|
| **paper-download** | Acquire paper files into the project workspace for downstream reading and analysis. |
| **metabolism** | Run day-0 bootstrapping or day-N daily knowledge metabolism for a research topic. |
| **write-review-paper** | Draft a review/survey paper from project research outputs. |
| **research-subscription** | Create/list/remove scheduled Scientify jobs via `scientify_cron_job` (research digests or plain reminders). |

</details>

<details>
<summary><b>Tools (available to LLM)</b></summary>
<summary><b>Runtime-registered Tools</b></summary>

| Tool | Description |
|------|-------------|
| `arxiv_search` | Search arXiv papers. Returns metadata (title, authors, abstract, ID). Supports sorting by relevance/date and date filtering. |
| `arxiv_download` | Batch download papers by arXiv ID. Prefers .tex source files (PDF fallback). |
| `openalex_search` | Search cross-disciplinary academic papers via OpenAlex API. Returns DOI, authors, citation count, OA status. |
| `openreview_lookup` | Lookup OpenReview evidence by title/ID/forum. Returns decision, review rating/confidence aggregates, and review summaries. |
| `unpaywall_download` | Download open access PDFs by DOI via Unpaywall API. Non-OA papers are silently skipped. |
| `github_search` | Search GitHub repositories. Returns repo name, description, stars, URL. Supports language filtering and sorting. |
| `paper_browser` | Paginated browsing of large paper files (.tex/.md) to avoid context overflow. |
| `scientify_cron_job` | Manage scheduled Scientify jobs (`upsert`/`list`/`remove`). |
| `scientify_literature_state` | Persistent incremental state for subscriptions: dedupe, record, feedback, and status inspection. |

</details>

Expand All @@ -308,9 +310,7 @@ Check status anytime:
| `/projects` | List all projects |
| `/project-switch <id>` | Switch active project |
| `/project-delete <id>` | Delete a project |
| `/research-subscribe ...` | Create/update scheduled Scientify jobs |
| `/research-subscriptions` | Show your scheduled Scientify jobs |
| `/research-unsubscribe [job-id]` | Remove your scheduled Scientify jobs |
| `/metabolism-status` | Show knowledge metabolism status for the active project |

</details>

Expand Down
30 changes: 19 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,8 @@ Scientify 采用**新陈代谢模式**——持续地摄入、消化、沉淀、
│ │──→│ │
│ arxiv_search │ └──────────────────────────────┘
│ openalex_search │
│ github_search │
│ paper_browser │
│ code_executor │
│ 平台能力 / 本地命令 │
│ / skill 执行步骤 │
└──────────────────────────┘
```

Expand All @@ -116,14 +115,23 @@ Pipeline 内部是多 Agent 迭代:编排器持有假设,spawn 子 agent 执

### 工具层

Agent 的手和眼:

| 工具 | 能力 |
|------|------|
| `arxiv_search` / `openalex_search` | 搜索学术论文(arXiv + 跨学科) |
| `github_search` | 搜索开源代码实现 |
| `paper_browser` | 分页精读论文,避免上下文溢出 |
| `code_executor` | 在 `uv` 隔离环境中执行实验代码 |
Scientify 将研究能力组织为统一的能力语义层,并分别落在运行时注册面与工作流执行面中:

| 能力语义 | 主要载体 | 典型对象 | 执行路径 | 典型产物 |
|---------|----------|----------|----------|----------|
| `arxiv_search` 类能力 | 运行时注册 tool | arXiv 论文元数据、候选论文集合 | 由插件入口注册,并通过标准 tool call 调用 | 检索结果、候选论文列表、survey 输入 |
| `openalex_search` 类能力 | 运行时注册 tool | 跨学科论文元数据、DOI、引用与 OA 信息 | 由插件入口注册,并通过标准 tool call 调用 | 检索结果、补充文献来源、survey 输入 |
| `github_search` 类能力 | 工作流执行步骤 | 开源实现、baseline 仓库、复现线索 | 由 OpenClaw 平台能力、本地环境命令或 skill 内步骤来完成 | `survey_res.md`、实现参考、仓库链接 |
| `paper_browser` 类能力 | 工作流执行步骤 | `.md`、`.tex`、长论文文本、草稿 | 由 OpenClaw 平台能力、本地环境命令或 skill 内步骤来完成 | 分段阅读结果、局部摘录、结构化笔记 |
| `code_executor` 类能力 | 工作流执行步骤 | 工作区中的训练、评测、脚本与实验运行 | 由 OpenClaw 平台能力、本地环境命令或 skill 内步骤来完成 | 运行日志、验证结果、实验产物 |
| `arxiv_download` 类能力 | 工作流执行步骤 | arXiv source / PDF 获取 | 由 OpenClaw 平台能力、本地环境命令或 skill 内步骤来完成 | `papers/` 下的论文文件 |
| `openreview_lookup` 类能力 | 工作流执行步骤 | review、decision、forum 上下文 | 由 OpenClaw 平台能力、本地环境命令或 skill 内步骤来完成 | 评审证据、对比说明、review notes |
| `unpaywall_download` 类能力 | 工作流执行步骤 | DOI 对应的 OA PDF 获取 | 由 OpenClaw 平台能力、本地环境命令或 skill 内步骤来完成 | 下载后的 PDF、来源记录 |

从实现边界看:
- `tool registry` 提供稳定、命名、可直接调用的运行时接口
- `skill` 负责编排研究阶段中的执行顺序、输入输出契约与产物落盘
- 文件读取、命令执行、下载与外部站点交互由 OpenClaw 平台能力、本地环境命令或 skill 内步骤来完成

> Scientify 运行在 [OpenClaw](https://github.com/openclaw/openclaw) 之上,天然可调用平台的 MCP 服务器(Slack / 飞书推送)、浏览器自动化(付费文献下载)、多会话并发(多方向并行研究)等能力。

Expand Down
6 changes: 0 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,6 @@
"prepublishOnly": "npm run clean && npm run build",
"release": "npm version patch && git push && git push --tags"
},
"dependencies": {
"@sinclair/typebox": "^0.32.0"
},
"devDependencies": {
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/commit-analyzer": "^13.0.1",
Expand All @@ -55,9 +52,6 @@
"semantic-release": "^25.0.3",
"typescript": "^5.3.0"
},
"peerDependencies": {
"openclaw": ">=2024.0.0"
},
"openclaw": {
"extensions": [
"./dist/index.js"
Expand Down
Loading
Loading