diff --git a/.github/assets/badge-pypi-dark.svg b/.github/assets/badge-pypi-dark.svg index af9b708..a592454 100644 --- a/.github/assets/badge-pypi-dark.svg +++ b/.github/assets/badge-pypi-dark.svg @@ -5,5 +5,5 @@ v0.2.0 + font-size="13" font-weight="700" fill="#ffffff">v0.2.1 \ No newline at end of file diff --git a/.github/assets/badge-pypi-light.svg b/.github/assets/badge-pypi-light.svg index f5eebd8..b9096dd 100644 --- a/.github/assets/badge-pypi-light.svg +++ b/.github/assets/badge-pypi-light.svg @@ -5,5 +5,5 @@ v0.2.0 + font-size="13" font-weight="700" fill="#ffffff">v0.2.1 \ No newline at end of file diff --git a/.github/assets/wechat_group.jpeg b/.github/assets/wechat_group.jpeg index b8b3458..820fb0d 100644 Binary files a/.github/assets/wechat_group.jpeg and b/.github/assets/wechat_group.jpeg differ diff --git a/EvoScientist/llm/context_window.py b/EvoScientist/llm/context_window.py index 2e4005f..e1f3c95 100644 --- a/EvoScientist/llm/context_window.py +++ b/EvoScientist/llm/context_window.py @@ -29,6 +29,9 @@ _KNOWN_MODEL_CONTEXT_WINDOWS: dict[str, int] = { # Covers OpenRouter ``minimax/minimax-m3`` (via split('/')[-1]) and direct # ``MiniMax-M3`` (via lowercased exact match). "minimax-m3": 1_000_000, + # Zhipu GLM-5.2 — 1M context, an exception to the ``glm-5`` family (203K). + # Matches OpenRouter ``z-ai/glm-5.2`` via split('/')[-1]. + "glm-5.2": 1_000_000, } # Family-level fallbacks: tried only after exact-name lookup misses. diff --git a/EvoScientist/llm/models.py b/EvoScientist/llm/models.py index 978897c..9eeb1af 100644 --- a/EvoScientist/llm/models.py +++ b/EvoScientist/llm/models.py @@ -85,6 +85,7 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [ # Anthropic (current generation) ("claude-fable-5", "claude-fable-5", "anthropic"), ("claude-opus-4-8", "claude-opus-4-8", "anthropic"), + ("claude-sonnet-5", "claude-sonnet-5", "anthropic"), ("claude-sonnet-4-6", "claude-sonnet-4-6", "anthropic"), ("claude-haiku-4-5", "claude-haiku-4-5", "anthropic"), # OpenAI @@ -122,6 +123,7 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [ # NVIDIA ("nemotron-super", "nvidia/nemotron-3-super-120b-a12b", "nvidia"), ("nemotron-nano", "nvidia/nemotron-3-nano-30b-a3b", "nvidia"), + ("glm-5.2", "z-ai/glm-5.2", "nvidia"), ("glm4.7", "z-ai/glm4.7", "nvidia"), ("deepseek-v3.2", "deepseek-ai/deepseek-v3.2", "nvidia"), ("deepseek-v3.1", "deepseek-ai/deepseek-v3.1-terminus", "nvidia"), @@ -133,6 +135,7 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [ ("step-3.5-flash", "stepfun-ai/step-3.5-flash", "nvidia"), # SiliconFlow ("minimax-m2.5", "Pro/MiniMaxAI/MiniMax-M2.5", "siliconflow"), + ("glm-5.2", "Pro/zai-org/GLM-5.2", "siliconflow"), ("glm-5", "Pro/zai-org/GLM-5", "siliconflow"), ("kimi-k2.5", "Pro/moonshotai/Kimi-K2.5", "siliconflow"), ("glm-4.7", "Pro/zai-org/GLM-4.7", "siliconflow"), @@ -140,6 +143,7 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [ ("claude-fable-5", "anthropic/claude-fable-5", "openrouter"), ("claude-opus-4.8", "anthropic/claude-opus-4.8", "openrouter"), ("claude-opus-4.8-fast", "anthropic/claude-opus-4.8-fast", "openrouter"), + ("claude-sonnet-5", "anthropic/claude-sonnet-5", "openrouter"), ("claude-sonnet-4.6", "anthropic/claude-sonnet-4.6", "openrouter"), ("gpt-5.5-pro", "openai/gpt-5.5-pro", "openrouter"), ("gpt-5.5", "openai/gpt-5.5", "openrouter"), @@ -149,6 +153,7 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [ ("gemini-3.1-pro", "google/gemini-3.1-pro-preview", "openrouter"), ("gemini-3-flash", "google/gemini-3-flash-preview", "openrouter"), ("kimi-k2.6", "moonshotai/kimi-k2.6", "openrouter"), + ("glm-5.2", "z-ai/glm-5.2", "openrouter"), ("glm-5v-turbo", "z-ai/glm-5v-turbo", "openrouter"), ("minimax-m3", "minimax/minimax-m3", "openrouter"), ("mimo-v2.5-pro", "xiaomi/mimo-v2.5-pro", "openrouter"), @@ -162,12 +167,14 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [ ("deepseek-v4-pro", "deepseek/deepseek-v4-pro", "openrouter"), ("deepseek-v4-flash", "deepseek/deepseek-v4-flash", "openrouter"), # Zhipu CodePlan (智谱代码计划 — coding-only endpoint) + ("glm-5.2", "glm-5.2", "zhipu-code"), ("glm-5.1", "glm-5.1", "zhipu-code"), ("glm-5", "glm-5", "zhipu-code"), ("glm-5-turbo", "glm-5-turbo", "zhipu-code"), ("glm-5v-turbo", "glm-5v-turbo", "zhipu-code"), ("glm-4.7", "glm-4.7", "zhipu-code"), # Zhipu (智谱 — general endpoint, default for simple lookups) + ("glm-5.2", "glm-5.2", "zhipu"), ("glm-5.1", "glm-5.1", "zhipu"), ("glm-5", "glm-5", "zhipu"), ("glm-5-turbo", "glm-5-turbo", "zhipu"), diff --git a/README.md b/README.md index 99cee43..55e8093 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ - PyPI v0.2.0 + PyPI v0.2.1 @@ -123,6 +123,7 @@ Moving beyond traditional human-in-the-loop systems, EvoScientist adopts a human ## ✨ Features - **🤖 Multi-Agent Team** — 6 sub-agents (plan, research, code, debug, analyze, write) working in concert. - **🧠 Self-Evolving Memory** — Auto-distilled each turn, self-linking into a knowledge graph that grows across sessions. +- **🛠️ AutoSkills** — Distills recurring patterns from its own memory into reusable skills on a schedule — proposed for your review via `/autoskills`. - **🌐 Multi-Provider** — Anthropic, OpenAI, Google, MiniMax, NVIDIA — one config to switch. - **📱 Multi-Channel** — CLI as the hub; Telegram, Slack, Feishu, WeChat, and more — one agent session. - **🖥️ Desktop WebUI** — Workspace-panel web app, one terminal via `--ui webui`. @@ -150,7 +151,8 @@ Moving beyond traditional human-in-the-loop systems, EvoScientist adopts a human
📦 Release Highlights — version changelog -- **[26 Jun 2026]** **[v0.2.0](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.2.0)** — **Autonomy milestone.** Scheduled tasks: cron-style recurring runs you set up with `/schedule` or natural language, running unattended with shell-access gating for safety; self-linking memory that connects related observations into a knowledge graph (complements / contradicts / supersedes) as it grows; a read-only **`GET /api/models`** endpoint exposing the model registry to the WebUI picker; the main agent now always keeps its memory tools available; deps: deepagents 0.6.12 / langchain-quickjs 0.3.2. +- **[05 Jul 2026]** **[v0.2.1](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.2.1)** — AutoSkills: EvoMemory drafts reusable skills from its own observation clusters for you to review via `/autoskills`; a new `--output-format stream-json` for headless / SDK clients; richer slash-command completions; Windows UTF-8 config reads; a TUI welcome-banner fix; langchain-openrouter 0.2.5. +- **[26 Jun 2026]** **[v0.2.0](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.2.0)** — Scheduled tasks: cron-style recurring runs via `/schedule` or natural language, run unattended with shell-access gating; self-linking memory that connects observations into a knowledge graph (complements / contradicts / supersedes); a read-only `GET /api/models` endpoint for the WebUI model picker. - **[23 Jun 2026]** **[v0.1.9](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.1.9)** — Hotfix for fresh installs: the first message crashed with `The subagent `task` tool cannot be exposed via `ptc`` after deepagents 0.6.11 / langchain-quickjs 0.3 reserved `task` as the REPL global. Removed `task` from the code-interpreter PTC allowlist (`task()` stays available as the REPL global; async dispatch stays in PTC) and pinned `deepagents[quickjs]~=0.6.11`. - **[22 Jun 2026]** **[v0.1.8](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.1.8)** — LangGraph gateway layer: UI-agnostic graph & thread access shared across CLI / TUI / serve / channel; OpenRouter Anthropic prompt caching now **on by default** (opt out with `openrouter_anthropic_prompt_cache=false`); slash-command Enter now submits correctly when a command name prefixes another; pre-commit ruff bump. - **[16 Jun 2026]** **[v0.1.7](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.1.7)** — Memory retrieval: agents run a per-task preflight over stored observations (`search_observations` ranked keyword search + `read_memory`); multi-stage slash-command completions with subcommand awareness; Windows reliability fixes (async MCP tool execution + graph-state recovery after interruptions, `cmd.exe` path quoting); quoted virtual-path handling; deepagents 0.6.10. diff --git a/README.zh-CN.md b/README.zh-CN.md index f230b26..04c3427 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -15,7 +15,7 @@ - PyPI v0.2.0 + PyPI v0.2.1 @@ -131,6 +131,7 @@ EvoScientist 超越了传统的人在回路(Human-in-the-Loop)模式,采 - **🤖 多智能体协作** — 6 个子智能体(规划、调研、编码、调试、分析、写作)协同工作。 - **🧠 自进化记忆** — 每轮自动提炼并连成知识图谱,跨会话持续进化。 +- **🛠️ AutoSkills 自建技能** — 定期从自身记忆中提炼重复模式,起草为可复用技能——通过 `/autoskills` 供你审核。 - **🌐 多模型供应商** — Anthropic、OpenAI、Google、MiniMax、NVIDIA——一处配置,随时切换。 - **📱 多渠道接入** — CLI 为中心;Telegram、Slack、飞书、微信等——共享同一智能体会话。 - **🖥️ Desktop WebUI** — 单终端 `--ui webui` 启动带工作区面板的 Web 应用。 @@ -159,7 +160,8 @@ EvoScientist 超越了传统的人在回路(Human-in-the-Loop)模式,采
📦 版本更新摘要(changelog) -- **[2026 年 6 月 26 日]** **[v0.2.0](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.2.0)** — **自主化里程碑。** 定时任务:用 `/schedule` 或自然语言设置 cron 风格的重复运行,无人值守执行并对 shell 访问做安全门控;记忆自连成图:相互关联的观察记录连成知识图谱(互补 / 矛盾 / 取代)并持续生长;新增只读 **`GET /api/models`** 端点,向 WebUI 模型选择器暴露模型注册表;主智能体现在始终保留记忆工具;依赖:deepagents 0.6.12 / langchain-quickjs 0.3.2。 +- **[2026 年 7 月 5 日]** **[v0.2.1](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.2.1)** — AutoSkills:EvoMemory 从自身的观察记录聚类中起草可复用技能,供你用 `/autoskills` 审核;新增面向无头 / SDK 客户端的 `--output-format stream-json`;更丰富的斜杠命令补全;修复 Windows UTF-8 配置读取;TUI 欢迎横幅修复;langchain-openrouter 升级到 0.2.5。 +- **[2026 年 6 月 26 日]** **[v0.2.0](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.2.0)** — 定时任务:用 `/schedule` 或自然语言设置 cron 风格的重复运行,无人值守并对 shell 访问做门控;记忆自连成图:将观察记录连成知识图谱(互补 / 矛盾 / 取代);新增只读 `GET /api/models` 端点,供 WebUI 模型选择器使用。 - **[2026 年 6 月 23 日]** **[v0.1.9](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.1.9)** — 新安装热修复:deepagents 0.6.11 / langchain-quickjs 0.3 将 `task` 保留为 REPL 全局后,首次对话即崩溃(`The subagent `task` tool cannot be exposed via `ptc``)。从 code-interpreter 的 PTC 白名单移除 `task`(`task()` 仍作为 REPL 全局可用,异步分发工具继续保留在 PTC 中),并将 deepagents pin 升级到 `~=0.6.11`。 - **[2026 年 6 月 22 日]** **[v0.1.8](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.1.8)** — LangGraph gateway 层:CLI / TUI / serve / channel 共用、UI 无关的图与线程访问;OpenRouter Anthropic prompt caching **默认开启**(通过 `openrouter_anthropic_prompt_cache=false` 关闭);命令名互为前缀时 Enter 现在能正确提交斜杠命令;pre-commit ruff 升级。 - **[2026 年 6 月 16 日]** **[v0.1.7](https://github.com/EvoScientist/EvoScientist/releases/tag/v0.1.7)** — 记忆检索:agent 在每个任务开始前对历史 observation 做 preflight 检索(`search_observations` 关键词排序检索 + `read_memory`);多级斜杠命令补全(带子命令感知);Windows 稳定性修复(async MCP 工具执行 + 中断后图状态恢复、`cmd.exe` 路径转义);含空格的虚拟路径处理;deepagents 0.6.10。 diff --git a/pyproject.toml b/pyproject.toml index 5019dac..808222d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "EvoScientist" -version = "0.2.0" +version = "0.2.1" description = "EvoScientist: Towards Self-Evolving AI Scientists for End-to-End Scientific Discovery" readme = "README.md" requires-python = ">=3.11"