EvoScientist 0.0.1.dev4__py3-none-any.whl → 0.1.0rc1__py3-none-any.whl
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.
- EvoScientist/EvoScientist.py +26 -62
- EvoScientist/__init__.py +0 -19
- EvoScientist/backends.py +0 -26
- EvoScientist/cli.py +1111 -498
- EvoScientist/middleware.py +8 -61
- EvoScientist/stream/__init__.py +0 -25
- EvoScientist/stream/utils.py +16 -23
- EvoScientist/tools.py +2 -75
- evoscientist-0.1.0rc1.dist-info/METADATA +199 -0
- evoscientist-0.1.0rc1.dist-info/RECORD +21 -0
- evoscientist-0.1.0rc1.dist-info/entry_points.txt +2 -0
- EvoScientist/config.py +0 -274
- EvoScientist/llm/__init__.py +0 -21
- EvoScientist/llm/models.py +0 -99
- EvoScientist/memory.py +0 -715
- EvoScientist/onboard.py +0 -725
- EvoScientist/paths.py +0 -44
- EvoScientist/skills/accelerate/SKILL.md +0 -332
- EvoScientist/skills/accelerate/references/custom-plugins.md +0 -453
- EvoScientist/skills/accelerate/references/megatron-integration.md +0 -489
- EvoScientist/skills/accelerate/references/performance.md +0 -525
- EvoScientist/skills/bitsandbytes/SKILL.md +0 -411
- EvoScientist/skills/bitsandbytes/references/memory-optimization.md +0 -521
- EvoScientist/skills/bitsandbytes/references/qlora-training.md +0 -521
- EvoScientist/skills/bitsandbytes/references/quantization-formats.md +0 -447
- EvoScientist/skills/find-skills/SKILL.md +0 -133
- EvoScientist/skills/find-skills/scripts/install_skill.py +0 -211
- EvoScientist/skills/flash-attention/SKILL.md +0 -367
- EvoScientist/skills/flash-attention/references/benchmarks.md +0 -215
- EvoScientist/skills/flash-attention/references/transformers-integration.md +0 -293
- EvoScientist/skills/llama-cpp/SKILL.md +0 -258
- EvoScientist/skills/llama-cpp/references/optimization.md +0 -89
- EvoScientist/skills/llama-cpp/references/quantization.md +0 -213
- EvoScientist/skills/llama-cpp/references/server.md +0 -125
- EvoScientist/skills/lm-evaluation-harness/SKILL.md +0 -490
- EvoScientist/skills/lm-evaluation-harness/references/api-evaluation.md +0 -490
- EvoScientist/skills/lm-evaluation-harness/references/benchmark-guide.md +0 -488
- EvoScientist/skills/lm-evaluation-harness/references/custom-tasks.md +0 -602
- EvoScientist/skills/lm-evaluation-harness/references/distributed-eval.md +0 -519
- EvoScientist/skills/ml-paper-writing/SKILL.md +0 -937
- EvoScientist/skills/ml-paper-writing/references/checklists.md +0 -361
- EvoScientist/skills/ml-paper-writing/references/citation-workflow.md +0 -562
- EvoScientist/skills/ml-paper-writing/references/reviewer-guidelines.md +0 -367
- EvoScientist/skills/ml-paper-writing/references/sources.md +0 -159
- EvoScientist/skills/ml-paper-writing/references/writing-guide.md +0 -476
- EvoScientist/skills/ml-paper-writing/templates/README.md +0 -251
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/README.md +0 -534
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-supp.tex +0 -144
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-template.tex +0 -952
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.bib +0 -111
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.bst +0 -1493
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.sty +0 -315
- EvoScientist/skills/ml-paper-writing/templates/acl/README.md +0 -50
- EvoScientist/skills/ml-paper-writing/templates/acl/acl.sty +0 -312
- EvoScientist/skills/ml-paper-writing/templates/acl/acl_latex.tex +0 -377
- EvoScientist/skills/ml-paper-writing/templates/acl/acl_lualatex.tex +0 -101
- EvoScientist/skills/ml-paper-writing/templates/acl/acl_natbib.bst +0 -1940
- EvoScientist/skills/ml-paper-writing/templates/acl/anthology.bib.txt +0 -26
- EvoScientist/skills/ml-paper-writing/templates/acl/custom.bib +0 -70
- EvoScientist/skills/ml-paper-writing/templates/acl/formatting.md +0 -326
- EvoScientist/skills/ml-paper-writing/templates/colm2025/README.md +0 -3
- EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bib +0 -11
- EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bst +0 -1440
- EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.pdf +0 -0
- EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.sty +0 -218
- EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.tex +0 -305
- EvoScientist/skills/ml-paper-writing/templates/colm2025/fancyhdr.sty +0 -485
- EvoScientist/skills/ml-paper-writing/templates/colm2025/math_commands.tex +0 -508
- EvoScientist/skills/ml-paper-writing/templates/colm2025/natbib.sty +0 -1246
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/fancyhdr.sty +0 -485
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bib +0 -24
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bst +0 -1440
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.pdf +0 -0
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.sty +0 -246
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.tex +0 -414
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/math_commands.tex +0 -508
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/natbib.sty +0 -1246
- EvoScientist/skills/ml-paper-writing/templates/icml2026/algorithm.sty +0 -79
- EvoScientist/skills/ml-paper-writing/templates/icml2026/algorithmic.sty +0 -201
- EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.bib +0 -75
- EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.pdf +0 -0
- EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.tex +0 -662
- EvoScientist/skills/ml-paper-writing/templates/icml2026/fancyhdr.sty +0 -864
- EvoScientist/skills/ml-paper-writing/templates/icml2026/icml2026.bst +0 -1443
- EvoScientist/skills/ml-paper-writing/templates/icml2026/icml2026.sty +0 -767
- EvoScientist/skills/ml-paper-writing/templates/icml2026/icml_numpapers.pdf +0 -0
- EvoScientist/skills/ml-paper-writing/templates/neurips2025/Makefile +0 -36
- EvoScientist/skills/ml-paper-writing/templates/neurips2025/extra_pkgs.tex +0 -53
- EvoScientist/skills/ml-paper-writing/templates/neurips2025/main.tex +0 -38
- EvoScientist/skills/ml-paper-writing/templates/neurips2025/neurips.sty +0 -382
- EvoScientist/skills/peft/SKILL.md +0 -431
- EvoScientist/skills/peft/references/advanced-usage.md +0 -514
- EvoScientist/skills/peft/references/troubleshooting.md +0 -480
- EvoScientist/skills/ray-data/SKILL.md +0 -326
- EvoScientist/skills/ray-data/references/integration.md +0 -82
- EvoScientist/skills/ray-data/references/transformations.md +0 -83
- EvoScientist/skills/skill-creator/LICENSE.txt +0 -202
- EvoScientist/skills/skill-creator/SKILL.md +0 -356
- EvoScientist/skills/skill-creator/references/output-patterns.md +0 -82
- EvoScientist/skills/skill-creator/references/workflows.md +0 -28
- EvoScientist/skills/skill-creator/scripts/init_skill.py +0 -303
- EvoScientist/skills/skill-creator/scripts/package_skill.py +0 -110
- EvoScientist/skills/skill-creator/scripts/quick_validate.py +0 -95
- EvoScientist/skills_manager.py +0 -391
- EvoScientist/stream/display.py +0 -604
- EvoScientist/stream/events.py +0 -415
- EvoScientist/stream/state.py +0 -343
- evoscientist-0.0.1.dev4.dist-info/METADATA +0 -367
- evoscientist-0.0.1.dev4.dist-info/RECORD +0 -117
- evoscientist-0.0.1.dev4.dist-info/entry_points.txt +0 -5
- {evoscientist-0.0.1.dev4.dist-info → evoscientist-0.1.0rc1.dist-info}/WHEEL +0 -0
- {evoscientist-0.0.1.dev4.dist-info → evoscientist-0.1.0rc1.dist-info}/licenses/LICENSE +0 -0
- {evoscientist-0.0.1.dev4.dist-info → evoscientist-0.1.0rc1.dist-info}/top_level.txt +0 -0
EvoScientist/EvoScientist.py
CHANGED
|
@@ -13,47 +13,34 @@ Usage:
|
|
|
13
13
|
...
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
+
import os
|
|
16
17
|
from datetime import datetime
|
|
17
18
|
from pathlib import Path
|
|
18
19
|
|
|
19
20
|
from deepagents import create_deep_agent
|
|
20
21
|
from deepagents.backends import FilesystemBackend, CompositeBackend
|
|
22
|
+
from langchain.chat_models import init_chat_model
|
|
21
23
|
|
|
22
|
-
from .backends import CustomSandboxBackend,
|
|
23
|
-
from .
|
|
24
|
-
from .llm import get_chat_model
|
|
25
|
-
from .middleware import create_skills_middleware, create_memory_middleware
|
|
24
|
+
from .backends import CustomSandboxBackend, ReadOnlyFilesystemBackend
|
|
25
|
+
from .middleware import create_skills_middleware
|
|
26
26
|
from .prompts import RESEARCHER_INSTRUCTIONS, get_system_prompt
|
|
27
27
|
from .utils import load_subagents
|
|
28
|
-
from .tools import tavily_search, think_tool
|
|
29
|
-
from .paths import (
|
|
30
|
-
ensure_dirs,
|
|
31
|
-
default_workspace_dir,
|
|
32
|
-
MEMORY_DIR as _MEMORY_DIR_PATH,
|
|
33
|
-
USER_SKILLS_DIR as _USER_SKILLS_DIR_PATH,
|
|
34
|
-
)
|
|
28
|
+
from .tools import tavily_search, think_tool
|
|
35
29
|
|
|
36
30
|
# =============================================================================
|
|
37
31
|
# Configuration
|
|
38
32
|
# =============================================================================
|
|
39
33
|
|
|
40
|
-
# Load configuration from file/env/defaults
|
|
41
|
-
_config = get_effective_config()
|
|
42
|
-
apply_config_to_env(_config)
|
|
43
|
-
|
|
44
34
|
# Backend mode: "sandbox" (with execute) or "filesystem" (read/write only)
|
|
45
35
|
BACKEND_MODE = "sandbox"
|
|
46
36
|
|
|
47
|
-
# Research limits
|
|
48
|
-
MAX_CONCURRENT =
|
|
49
|
-
MAX_ITERATIONS =
|
|
37
|
+
# Research limits
|
|
38
|
+
MAX_CONCURRENT = 3 # Max parallel sub-agents
|
|
39
|
+
MAX_ITERATIONS = 3 # Max delegation rounds
|
|
50
40
|
|
|
51
41
|
# Workspace settings
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
MEMORY_DIR = str(_MEMORY_DIR_PATH) # Shared across sessions (not per-session)
|
|
55
|
-
SKILLS_DIR = str(Path(__file__).parent / "skills")
|
|
56
|
-
USER_SKILLS_DIR = str(_USER_SKILLS_DIR_PATH)
|
|
42
|
+
WORKSPACE_DIR = "./workspace/"
|
|
43
|
+
SKILLS_DIR = "./skills/"
|
|
57
44
|
SUBAGENTS_CONFIG = Path(__file__).parent / "subagent.yaml"
|
|
58
45
|
|
|
59
46
|
# =============================================================================
|
|
@@ -69,10 +56,10 @@ SYSTEM_PROMPT = get_system_prompt(
|
|
|
69
56
|
max_iterations=MAX_ITERATIONS,
|
|
70
57
|
)
|
|
71
58
|
|
|
72
|
-
# Initialize chat model
|
|
73
|
-
chat_model =
|
|
74
|
-
model=
|
|
75
|
-
|
|
59
|
+
# Initialize chat model
|
|
60
|
+
chat_model = init_chat_model(
|
|
61
|
+
model="claude-sonnet-4-5-20250929",
|
|
62
|
+
model_provider="anthropic",
|
|
76
63
|
# thinking={"type": "enabled", "budget_tokens": 2000},
|
|
77
64
|
)
|
|
78
65
|
|
|
@@ -89,25 +76,16 @@ else:
|
|
|
89
76
|
virtual_mode=True,
|
|
90
77
|
)
|
|
91
78
|
|
|
92
|
-
# Skills backend:
|
|
93
|
-
_skills_backend =
|
|
94
|
-
|
|
95
|
-
secondary_dir=SKILLS_DIR, # package built-in, fallback
|
|
96
|
-
)
|
|
97
|
-
|
|
98
|
-
# Memory backend: persistent filesystem for long-term memory (shared across sessions)
|
|
99
|
-
_memory_backend = FilesystemBackend(
|
|
100
|
-
root_dir=MEMORY_DIR,
|
|
79
|
+
# Skills backend: read-only access to ./skills/
|
|
80
|
+
_skills_backend = ReadOnlyFilesystemBackend(
|
|
81
|
+
root_dir=SKILLS_DIR,
|
|
101
82
|
virtual_mode=True,
|
|
102
83
|
)
|
|
103
84
|
|
|
104
|
-
# Composite backend: workspace as default, skills
|
|
85
|
+
# Composite backend: workspace as default, skills mounted at /skills/
|
|
105
86
|
backend = CompositeBackend(
|
|
106
87
|
default=_workspace_backend,
|
|
107
|
-
routes={
|
|
108
|
-
"/skills/": _skills_backend,
|
|
109
|
-
"/memory/": _memory_backend,
|
|
110
|
-
},
|
|
88
|
+
routes={"/skills/": _skills_backend},
|
|
111
89
|
)
|
|
112
90
|
|
|
113
91
|
tool_registry = {
|
|
@@ -129,13 +107,10 @@ subagents = load_subagents(
|
|
|
129
107
|
_AGENT_KWARGS = dict(
|
|
130
108
|
name="EvoScientist",
|
|
131
109
|
model=chat_model,
|
|
132
|
-
tools=[think_tool
|
|
110
|
+
tools=[think_tool],
|
|
133
111
|
backend=backend,
|
|
134
112
|
subagents=subagents,
|
|
135
|
-
middleware=[
|
|
136
|
-
create_memory_middleware(MEMORY_DIR, extraction_model=chat_model),
|
|
137
|
-
create_skills_middleware(SKILLS_DIR, user_skills_dir=USER_SKILLS_DIR),
|
|
138
|
-
],
|
|
113
|
+
middleware=[create_skills_middleware(SKILLS_DIR, WORKSPACE_DIR)],
|
|
139
114
|
system_prompt=SYSTEM_PROMPT,
|
|
140
115
|
)
|
|
141
116
|
|
|
@@ -149,7 +124,7 @@ def create_cli_agent(workspace_dir: str | None = None):
|
|
|
149
124
|
Args:
|
|
150
125
|
workspace_dir: Optional per-session workspace directory. If provided,
|
|
151
126
|
creates a fresh backend rooted at this path. If None, uses the
|
|
152
|
-
module-level default backend (./workspace).
|
|
127
|
+
module-level default backend (./workspace/).
|
|
153
128
|
"""
|
|
154
129
|
from langgraph.checkpoint.memory import InMemorySaver # type: ignore[import-untyped]
|
|
155
130
|
|
|
@@ -159,26 +134,15 @@ def create_cli_agent(workspace_dir: str | None = None):
|
|
|
159
134
|
virtual_mode=True,
|
|
160
135
|
timeout=300,
|
|
161
136
|
)
|
|
162
|
-
sk_backend =
|
|
163
|
-
|
|
164
|
-
secondary_dir=SKILLS_DIR,
|
|
165
|
-
)
|
|
166
|
-
# Memory always uses SHARED directory (not per-session) for cross-session persistence
|
|
167
|
-
mem_backend = FilesystemBackend(
|
|
168
|
-
root_dir=MEMORY_DIR,
|
|
137
|
+
sk_backend = ReadOnlyFilesystemBackend(
|
|
138
|
+
root_dir=SKILLS_DIR,
|
|
169
139
|
virtual_mode=True,
|
|
170
140
|
)
|
|
171
141
|
be = CompositeBackend(
|
|
172
142
|
default=ws_backend,
|
|
173
|
-
routes={
|
|
174
|
-
"/skills/": sk_backend,
|
|
175
|
-
"/memory/": mem_backend,
|
|
176
|
-
},
|
|
143
|
+
routes={"/skills/": sk_backend},
|
|
177
144
|
)
|
|
178
|
-
mw = [
|
|
179
|
-
create_memory_middleware(MEMORY_DIR, extraction_model=chat_model),
|
|
180
|
-
create_skills_middleware(SKILLS_DIR, user_skills_dir=USER_SKILLS_DIR),
|
|
181
|
-
]
|
|
145
|
+
mw = [create_skills_middleware(SKILLS_DIR, workspace_dir)]
|
|
182
146
|
kwargs = dict(
|
|
183
147
|
_AGENT_KWARGS,
|
|
184
148
|
backend=be,
|
EvoScientist/__init__.py
CHANGED
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
"""EvoScientist Agent — AI-powered research & code execution."""
|
|
2
2
|
|
|
3
3
|
from .backends import CustomSandboxBackend, ReadOnlyFilesystemBackend
|
|
4
|
-
from .config import (
|
|
5
|
-
EvoScientistConfig,
|
|
6
|
-
load_config,
|
|
7
|
-
save_config,
|
|
8
|
-
get_effective_config,
|
|
9
|
-
get_config_path,
|
|
10
|
-
)
|
|
11
|
-
from .llm import get_chat_model, MODELS, list_models, DEFAULT_MODEL
|
|
12
4
|
from .middleware import create_skills_middleware
|
|
13
5
|
from .prompts import get_system_prompt, RESEARCHER_INSTRUCTIONS
|
|
14
6
|
from .tools import tavily_search, think_tool
|
|
@@ -21,17 +13,6 @@ __all__ = [
|
|
|
21
13
|
# Backends
|
|
22
14
|
"CustomSandboxBackend",
|
|
23
15
|
"ReadOnlyFilesystemBackend",
|
|
24
|
-
# Configuration
|
|
25
|
-
"EvoScientistConfig",
|
|
26
|
-
"load_config",
|
|
27
|
-
"save_config",
|
|
28
|
-
"get_effective_config",
|
|
29
|
-
"get_config_path",
|
|
30
|
-
# LLM
|
|
31
|
-
"get_chat_model",
|
|
32
|
-
"MODELS",
|
|
33
|
-
"list_models",
|
|
34
|
-
"DEFAULT_MODEL",
|
|
35
16
|
# Middleware
|
|
36
17
|
"create_skills_middleware",
|
|
37
18
|
# Prompts
|
EvoScientist/backends.py
CHANGED
|
@@ -9,8 +9,6 @@ from deepagents.backends import FilesystemBackend
|
|
|
9
9
|
from deepagents.backends.filesystem import WriteResult, EditResult
|
|
10
10
|
from deepagents.backends.protocol import (
|
|
11
11
|
ExecuteResponse,
|
|
12
|
-
FileDownloadResponse,
|
|
13
|
-
FileUploadResponse,
|
|
14
12
|
SandboxBackendProtocol,
|
|
15
13
|
)
|
|
16
14
|
|
|
@@ -225,30 +223,6 @@ class MergedReadOnlyBackend:
|
|
|
225
223
|
async def aedit(self, file_path: str, old_string: str, new_string: str, replace_all: bool = False) -> EditResult:
|
|
226
224
|
return self.edit(file_path, old_string, new_string, replace_all)
|
|
227
225
|
|
|
228
|
-
# -- download / upload (required by BackendProtocol) --
|
|
229
|
-
|
|
230
|
-
def download_files(self, paths: list[str]) -> list[FileDownloadResponse]:
|
|
231
|
-
"""Download files, trying primary then secondary."""
|
|
232
|
-
responses: list[FileDownloadResponse] = []
|
|
233
|
-
for path in paths:
|
|
234
|
-
resp = self._primary.download_files([path])[0]
|
|
235
|
-
if resp.error is not None:
|
|
236
|
-
resp = self._secondary.download_files([path])[0]
|
|
237
|
-
responses.append(resp)
|
|
238
|
-
return responses
|
|
239
|
-
|
|
240
|
-
async def adownload_files(self, paths: list[str]) -> list[FileDownloadResponse]:
|
|
241
|
-
return self.download_files(paths)
|
|
242
|
-
|
|
243
|
-
def upload_files(self, files: list[tuple[str, bytes]]) -> list[FileUploadResponse]:
|
|
244
|
-
return [
|
|
245
|
-
FileUploadResponse(path=path, error="permission_denied")
|
|
246
|
-
for path, _ in files
|
|
247
|
-
]
|
|
248
|
-
|
|
249
|
-
async def aupload_files(self, files: list[tuple[str, bytes]]) -> list[FileUploadResponse]:
|
|
250
|
-
return self.upload_files(files)
|
|
251
|
-
|
|
252
226
|
|
|
253
227
|
class CustomSandboxBackend(FilesystemBackend, SandboxBackendProtocol):
|
|
254
228
|
"""
|