跳到主要内容

Demiurge 0.3.2

Demiurge 是 alpha / developer-preview 软件。APIs、runtime layout 和 authoring contracts 之后仍可能变化。

概述

这个版本把本地 runtime surface 扩展到了 external gateway channels、provider setup profiles、streamed TUI output,以及更多 package-catalog 方案,包括 style、context reseeding 和 provider-backed text-to-speech。

用户可见变化

  • 新增默认禁用的 gateway channel 支持,覆盖通用 webhooks、Slack、Mattermost、 Matrix 和 email,并保留现有的 Telegram gateway。
  • 新增 demiurge gateway 入口点,用于通过 host-owned channel gateway 运行已启用的 external channels。
  • 新增 provider setup 命令和 presets,用于创建 host provider profiles、把 API keys 写入 .env、设置 core model、列出 profile 状态,以及运行显式 provider tests。
  • 更新了 setup flow 使用的默认 provider presets 和 model-writing 行为。
  • TUI 现在会流式展示 provider response deltas,并在 footer 中报告 provider/model 状态。
  • 新增 package recipes,覆盖 conversation style hints、context reseed notes,以及 OpenAI、Gemini 和 xAI 的 text-to-speech 输出/工具集成。
  • 新增一个用于检查 assembled system prompts 的 debug 命令。
  • 新增 GitHub issue templates、pull-request template 和面向公开项目反馈的贡献指南。

修复

  • System prompt assembly 现在会合并 system prompt messages,而不是丢弃后续 context。
  • Telegram polling 能够从临时 transport failures 中恢复。
  • Provider setup 会规范化 profile identifiers,并一致地写入 preset model 选择。
  • TUI stream delta timers 在变旧时会被取消,因此旧 deltas 不会泄漏到后续 transcript state 中。

破坏性变更

  • 本版本没有包含有意的破坏性变更。
  • External channels 仍然是 host gateway 管理的声明式 agent.yaml 配置;旧的实验性 agent/channels slot directories 不会被自动发现。

已知限制

  • package catalog 仍然是 local-only。
  • code slots 默认运行在 host-shared Python environment 中。
  • external gateway channels 默认禁用,需要显式的认证相关环境变量或 token。
  • Telegram 仍然只是 long-polling。
  • candidate core evolution 和 automatic promotion 仍未完成。
  • Provider profile tests 只有在显式调用时才会进行 live network calls。

验证

  • uv run pytest tests/cli/test_cli.py tests/channels tests/runtime/test_modular_io.py tests/packages/test_packages.py
  • uv run python -c 'import tomllib, demiurge; print(tomllib.load(open("pyproject.toml", "rb"))["project"]["version"]); print(demiurge.__version__)'
  • git diff --check -- pyproject.toml demiurge/__init__.py uv.lock docs/releases/0.3.2.md website/docusaurus.config.ts website/i18n/zh-CN/docusaurus-theme-classic/footer.json
  • rg -n "0\\.3\\.2|/docs/releases/0\\.3\\.2" pyproject.toml demiurge/__init__.py uv.lock docs/releases/0.3.2.md website/docusaurus.config.ts website/i18n/zh-CN/docusaurus-theme-classic/footer.json