CONTINUUM:面向长时间运行 AI 智能体的可验证语义恢复。 语义检查点(而非对话转储)、拒绝重复副作用的幂等动作账本,以及哈希链防篡改事件日志,全部通过默认拒绝的 MCP 服务器暴露。框架无关,支持 Python 3.11+。
如果 CONTINUUM 帮助你的智能体可靠恢复,请为本仓库点亮 Star,这能帮助更多人发现它并持续带来优质的 good first issue。
English | 简体中文 | Español | 日本語 | Português | 한국어
--- ## 目录 [为什么](#为什么) · [快速开始](#快速开始) · [工作原理](#工作原理) · [CONTINUUM 的位置](#continuum-的位置) · [功能特性](#功能特性) · [安全扩展](#安全扩展) · [实证验证](#实证验证) · [MCP 集成](#mcp-集成) · [框架集成](#框架集成) · [核心概念](#核心概念) · [架构](#架构) · [API 和 CLI](#api-和-cli) · [路线图](#路线图) · [CONTINUUM 不是什么](#continuum-不是什么) · [相关工作](#相关工作) · [状态与局限](#状态与局限) · [贡献](#贡献) · [许可证](#许可证) --- ## 为什么 现代 AI 智能体执行长时间任务(数百次 LLM 调用、工具调用、文件和数据库写入)。当它们崩溃时,常见的处理方式是从头开始重放,这会重复工作、重复副作用、浪费 token 并丢失决策。 CONTINUUM 提出一个更窄但更难的问题:智能体能否从任务状态的紧凑语义表示中恢复,同时独立验证该状态在当前环境中仍然有效?其差异化体现在三部分: - **语义检查点**:所需继续执行的最小化、带版本的紧凑表示,而非对话转储。 - **独立的环境重验证**:恢复前每个检查点组件都会对照当前环境进行验证,过期状态会通过依赖图传播。 - **可溯源的状态**:每个事实都可追溯到其来源,因此智能体报告的进度永远不会自我认证。 ## 快速开始 以 `continuum-agent` 0.1.2 发布至 PyPI,执行 `pip install continuum-agent` 即可(固定版本请用 `pip install continuum-agent==0.1.2`)。发布标签还会将构建好的 wheel 附加到 [GitHub Releases](https://github.com/Cyrax321/CONTINUUM/releases)。 零配置路径(无需克隆、无需安装、无需发布): | 路径 | 方法 | |:--|:--| | 从 PyPI 安装 | `pip install continuum-agent==0.1.2`,然后执行 `continuum --help` | | 端到端观看崩溃恢复 | `docker run --rm ghcr.io/cyrax321/continuum` | | 通过 Docker 使用 CLI | `docker run --rm ghcr.io/cyrax321/continuum continuum --help` | | 无需克隆即可运行 CLI | `uvx --from git+https://github.com/Cyrax321/CONTINUUM.git continuum --help` | | Windows PowerShell(在克隆中) | `powershell -ExecutionPolicy Bypass -File .\try-it.ps1` 或 `powershell -ExecutionPolicy Bypass -File .\try-it.ps1 cli --help` | | 在笔记本中观看同样的恢复过程 | [](https://colab.research.google.com/github/Cyrax321/CONTINUUM/blob/main/examples/demo.ipynb) | | 同样的笔记本,在 Binder 上运行 | [](https://mybinder.org/v2/gh/Cyrax321/CONTINUUM/HEAD?labpath=examples%2Fdemo.ipynb) | | 浏览器中的完整开发环境 | [](https://codespaces.new/Cyrax321/CONTINUUM?quickstart=1) | Docker 镜像由 CI 在每次推送到 `main` 和每个发布标签时发布到 GHCR(`.github/workflows/docker-publish.yml`)。Codespace 在 `.devcontainer/` 中定义。该笔记本是 [examples/demo.ipynb](examples/demo.ipynb):其首个单元格仅在导入失败时安装 CONTINUUM,因此单个文件即可在 Colab、Binder 和本地克隆三种环境中运行。 ```bash git clone https://github.com/Cyrax321/CONTINUUM.git cd CONTINUUM uv venv && source .venv/bin/activate # macOS / Linux; Windows: .venv\Scripts\activate # 贡献者(推荐):库 + CLI + 全部测试工具 + 全部适配器 uv pip install -e ".[dev]" # 或按需选择:.(最小)、[mcp]、[otel]、[langgraph]、 # [openai]、[langchain]、[attest]、[postgres] # 或完全跳过克隆: uv pip install git+https://github.com/Cyrax321/CONTINUUM.git uv pip install "continuum-agent[mcp] @ git+https://github.com/Cyrax321/CONTINUUM.git" ``` > **pip 回退:** 将上面所有命令中的 `uv pip install` 替换为 `pip install`。 验证: ```bash continuum --help # CLI 入口 continuum-mcp --help # MCP 服务器入口(需要 [mcp] 或 [dev]) pytest -q # 最小环境中约 3950 个收集,约 3,636 个通过,约 41 个跳过(具体数量因环境而异) ruff check src/ tests/ examples/ && ruff format --check src/ tests/ examples/ mypy src/continuum # CI 强制的三扇门禁 ``` 核心库只有一个运行时依赖(`pydantic>=2.7`),其余均为可选。完整的包映射、extras 矩阵、Postgres 测试配置和按命令验证说明见 [references/install.md](references/install.md)。 ### 两分钟接入编码智能体 对于 Claude Code、Gemini CLI 或 Codex,你无需编写 Python 也无需提示词文件: ```bash continuum start my-task --goal "智能体应该做什么" continuum hooks install claude-code --with-gate # 同样支持:gemini、codex ``` 此后智能体写入的每个文件都会被捕获为哈希链证据,会话开始时自动获得状态简报,在 `.continuum/gate.json` 中注册的未声明副作用会在触发前被拒绝,而任何崩溃后的全新会话都会带着可执行的下一步恢复。无需 CLAUDE.md。 最小化库示例,记录与恢复: ```python from continuum import EventType, Run, SQLiteStorage, project store = SQLiteStorage("agent.db") store.create_run(Run(run_id="run_4821", goal="分析 10,000 份文档")) store.append_event( "run_4821", EventType.RUN_STARTED, {"goal": "分析 10,000 份文档", "total": 10_000} ) for i, doc in enumerate(documents): analyze(doc) store.append_event("run_4821", EventType.WORK_COMPLETED, {"doc": i}) # 崩溃后,新进程从停止的地方精确接续: state = project("run_4821", store.read_events("run_4821")) print(state.progress.completed) # 已完成,不会重复 print(store.verify_events("run_4821").ok) # True,崩溃后链仍然完整 ``` **亲自运行验证:** ```bash python examples/crash_recovery_agent.py # 真实进程杀死,真实副作用 python examples/context_compaction.py # 转录丢失,检查点存活 python examples/model_switch.py # 模型 A 死亡,模型 B 安全接管 python scripts/mcp_smoke.py # 真实子进程,真实 JSON-RPC 流量 ``` `e2e-autonomy-test/` 套件脚本化了一个真实的发票批量任务、在运行中硬杀,以及全新的恢复会话,然后在带外对 outbox、账本和事件链进行评分。Run 1 对真实的 Claude Code 会话取得了 **7/7 机制** 评分。完整 walkthrough 见 [references/e2e.md](references/e2e.md)。 ## 工作原理 CONTINUUM 将 **LLM 上下文**(临时)与 **持久任务状态**(永久)分离开来。它不保存对话历史,而是构造语义检查点,即继续执行所需的最小化已验证信息。  详细说明、投影模型和恢复上下文见 [references/architecture.md](references/architecture.md)。 ## CONTINUUM 的位置 四个关注点在每个长时间运行的智能体中重叠。CONTINUUM 只拥有最后一项,并通过显式接缝触及其他三项。不点名任何竞品,也不做没有已交付模块或已发布套件支撑的主张。 | 层 | 回答的问题 | 如何连接(已交付模块或已发布输出) | |:--|:--|:--| | Harness | 智能体如何调用工具并朝目标推进? | 在 CONTINUUM 之外。接线点在 `src/continuum/adapters/generic.py`(`GenericAgentAdapter`)、`src/continuum/adapters/thin.py`(CrewAI、AutoGen、Pydantic AI 钩子)、`src/continuum/mcp/server.py`(MCP stdio)、`src/continuum/hooks.py` 和 `src/continuum/clienthooks.py`(编码 CLI 生命周期钩子)、`src/continuum/gateway.py`(面向任意语言的强制 HTTP 代理)和 `src/continuum/otel.py`(OpenTelemetry 桥)中交付。配方见 `docs/recipes/` 和 `references/adapters.md`。 | | 持久执行 | 崩溃前发生了什么,哪些工作可以在不丢失的情况下重放? | 哈希链事件日志 `src/continuum/events.py` 带 `verify()` 和 `trusted_through`,持久存储 `src/continuum/storage/sqlite.py`(WAL,`synchronous=FULL`,schema v6)和 `src/continuum/storage/postgres.py` 加上 `src/continuum/storage/migrations.py`,策略驱动的检查点 `src/continuum/checkpoint/manager.py` 和 `src/continuum/checkpoint/policy.py` 在 `restore()` 时重放间隔。Walkthrough 在 `docs/recovery_walkthrough.md`(`examples/recovery_walkthrough.py` 的输出)中。 | | 控制面 | 哪个 run 处于活动状态、谁可以操作它、输出去向何处? | Run 注册表和父子层级 `src/continuum/storage/` 与 `src/continuum/recovery/family.py`(`continuum tree`),allowlist 鉴权 `src/continuum/mcp/authz.py`(`CONTINUUM_MCP_MUTATING_CLIENTS` / `CONTINUUM_MCP_TOKEN`),展示面 `src/continuum/dashboard/app.py` 和 `src/continuum/serve/server.py`,CLI `src/continuum/cli/main.py`(`continuum runs`、`continuum tree`、`continuum health`)。 | | 验证基座 | 给定时间 T 的检查点和当下的世界,继续是否仍然安全和正确? | `src/continuum/state/validator.py`(过期性 `dependency -> evidence -> finding -> decision` 加上 `PlanStep.depends_on`)、`src/continuum/provenance_map.py`(`Origin` 到 `REQUIRES_REVIEW` 直至 `REVIEW_CONFIRMED`)、`src/continuum/actions/ledger.py` 配合 `src/continuum/actions/idempotency.py` 与 `src/continuum/gate.py` / `src/continuum/gateway.py`(先声明再触发,拒绝重复并为对账抛出 `UnknownSideEffect`)、`src/continuum/replayguard.py`(可移植守卫)、`src/continuum/pinning.py` 与 `src/continuum/replay_similarity.py`(重放正确性)、`src/continuum/budgets.py`(重试上限)、`src/continuum/recovery/engine.py` + `src/continuum/recovery/contract.py` + `src/continuum/recovery/planner.py` + `src/continuum/recovery/observations.py`(最大严重度 `RESUME < ... < ABORT`,带 `evidence` / `reason` / `next_allowed_action` / `human_steps` 的密封合约)、`src/continuum/checkpoint/rewind.py`(原子双状态回滚)、`src/continuum/analysis/prefix_trust.py`(建议性信任)。已发布的检查:`docs/recovery_walkthrough.md`、`benchmarks/fault_injection/`(打印 `detection_rate` / `unsafe_resume_rate` 的套件)、`src/continuum/benchmark/phase6/`(恢复正确性套件)、`docs/RESULTS.md` 以及下方可再生的可视化。 | 该表中的每一行都可在打标签的提交上追溯到 `main` 上存在的路径。表格中不复述任何基准数字,基准只活在已打印它们的套件输出中。完整的已发布套件和设计文档列表见 `docs/research.md`。 ### 崩溃恢复,真实发生 下面的图片不是模型图。它是 `python demo-run/generate_crash_visual.py` 的输出,该脚本让 `demo-run/worker.py` 运行至第 399 篇文档时执行 `os._exit(9)`,调用 `continuum resume --env dataset=v4` 并展示拒绝路径(`REQUEST_HUMAN`、`safe:false`、exit 21),用探针调和不确定的副作用,然后从同一数据库恢复并在无重复工作的情况下完成。转录也保存为 `docs/assets/crash-recovery.txt` 供审计。 重新生成: ```bash python demo-run/generate_crash_visual.py # 或:python scripts/generate_crash_visual.py ```  带代码的完整 walkthrough 见 `docs/recovery_walkthrough.md`(`examples/recovery_walkthrough.py`)。最小化 bench harness 见 `references/bench.md`(`continuum benchmark`)。 ## 功能特性 | 能力 | 它为你带来什么 | |:--|:--| | 语义检查点 | 紧凑、可版本化、可检查的状态,而非转录转储 | | 幂等动作账本 | 拒绝重复的外部副作用,对不确定的结果进行对账展示 | | 环境重验证 | 恢复前每个检查点组件都会对照当前世界进行验证 | | 可溯源状态 | 智能体报告的进度被标记为 `REQUIRES_REVIEW`,永不自我认证 | | 恢复引擎 | 七种恢复模式,带有确定性的密封下一步合约 | | 默认拒绝的 MCP 服务器 | 十二个工具,读写与变更分离,调用者 allowlist | | 框架适配器 | 通用 Python、OpenAI Agents SDK、LangGraph 和 LangChain 集成 | | 安全规划循环 | 双信号观测验证将高风险分支提升至 REQUIRES_REVIEW | | 周期性重验证 | 按计划重新检查环境,在一个周期内捕获运行中漂移 | | 防篡改日志 | 哈希链事件日志(55 种事件类型)带完整性验证 | | 强制门控 | 未声明的副作用调用在触发前被拒绝,拒绝信息会教授声明协议 | | 观测钩子 | 编码 CLI 写入的每个文件都会成为摘要验证的证据,位于模型控制之外 | | 会话简报 | 全新会话在开始时确定性地学习运行状态,包括上一会话的推理摘要 | | 调和探针 | 已注册的命令自动结算不确定的副作用,人类只看到其余部分 | | 可执行指引 | Resume 和 validate 将下一步渲染为可运行的命令,而非状态 | | 强制 HTTP 网关 | 任何语言的外发调用都需要声明,网关从真实状态码结算 | | OpenTelemetry 桥 | 来自生产追踪的工具调用跨度零代码改动成为证据 | | 动作索引 | 跨 run 的幂等查询是索引读取,而非全日志扫描 | | 版本钉扎 | 调用者断言的 prompt、工具和模型哈希按声明存储,漂移在恢复时显露 | | 重试预算 | 按动作类型在声明时强制执行尝试上限,智能体可看到剩余次数 | | 多智能体父子 | 父级恢复组合家庭最差状态,不确定的子级会阻塞父级 | | 带信息重试 | 引擎撰写的失败摘要被注入到恢复后的重试中 | | 分支语义 | 发散的延续分支为带有全新权威的子 run | | 日志压缩 | 预锚点前缀按原文归档,活跃日志为长达数月的运行保持有界 | | 已消耗授权追踪 | 单次授权引用在终态时被标记为已消耗,恢复后重用会被拒绝(`GRANT_DENIED`),防御检查点恢复路径上的授权复活 | | 链证明 | `continuum attest` 使用 Ed25519 签署 run 的链头,外部验证者可证明历史在已知密钥下未被篡改 | | HITL 仪表板 | 确认、对账和完成按钮,与 CLI 保持审计一致性 | ## 安全扩展 两个增量式安全扩展位于恢复和检查点基座之上。它们不改变恢复、重放或现有的崩溃时重验证路径。 - **安全规划循环**:观测携带可溯源性并由两个独立信号验证(`verified` / `unverified` / `contested`)。由未验证或有争议观测所门控的计划分支会被提升至 `REQUIRES_REVIEW`。决策作为 `PERCEPTION_OBSERVED` 和 `BRANCH_RESOLVED` 事件追加到账本。 - **周期性重验证**:按步骤间隔(默认 25)和应用切换时复用恢复引擎,因此运行中环境漂移在一个周期内就会被捕获,而不是等到下一次崩溃。 见 [docs/PROBLEM.md](docs/PROBLEM.md)、[docs/RESULTS.md](docs/RESULTS.md) 和 [STATUS.md](STATUS.md)。 ## 实证验证 CONTINUUM 针对真实 LLM 智能体、真实协议边界和硬进程崩溃进行验证,而不仅仅是模拟单元测试。 - **真实智能体**:多会话 Claude Code 发票批次在运行中 `SIGKILL`,在机制上取得 7/7 评分,恢复会话查询了 `continuum_resume`、通过两阶段账本路由副作用、拒绝重复已验证写入并尊重 `request_human`。真实测试暴露了 prompt 漂移去重缺口,已通过 `ActionLedger.claim()` 中的规范路径归一化和基于 token 的回退关闭。 - **第三方客户端**:Gemini CLI 和 Kilo Code 通过 stdio JSON-RPC 对接真实 SQLite 存储,验证多智能体共存和鉴权隔离。 - **协议合规**:使用 `@modelcontextprotocol/inspector --cli` 在进程死亡间端到端驱动,变更工具默认拒绝并位于 `CONTINUUM_MCP_MUTATING_CLIENTS` 后,外部声明降级为 `REQUIRES_REVIEW`(`safe: false`)。 - **自愈**:硬杀的服务器在启动时通过单次重试清理孤立的 SQLite `-wal`/`-shm` 伴生文件来恢复。 - **规模**:约 2,809 个测试被收集(约 2,775 通过,其余在缺少可选服务时跳过),覆盖 Python 3.11、3.12 和 3.13(单元、`hypothesis` 属性测试、并发、对抗)。CONTINUUM-Bench 运行五个崩溃场景加一个专门的参数漂移场景,对 CONTINUUM 测量到 0 重复工作和 0 重复副作用,而对朴素重放则为完全重复,另有一个 14 场景恢复正确性套件(`continuum.benchmark.phase6`)将持久执行调研中的崩溃点编码为可执行断言。 - **对抗审计**:完整 MCP 面已在真实协议上被审计,发现并修复了三个缺陷。方法和复现步骤见 [test.md](test.md)。 ### 地平线规模基准(真实运行,无虚构数字) Generated: 2026-09-10T07:38:24.375062 Horizon scenarios: 5 Passed: 3 Failed: 2 Accuracy: 0.6 Unnecessary escalation: 0.2 Repair precision: 0.8 Duplicate side effects: 0 Duplicate work: 0.0 Compression: 1.694 | Scenario | Cycles | Years | Correct | Actual | Accuracy | | --- | --- | --- | --- | --- | --- | | horizon_steady_progress_year | 131 | 2.3 | resume | resume | 1.0 | | horizon_quarterly_drift_year | 131 | 2.3 | repair | request_human | 0.0 | | horizon_budget_exhaustion_year | 131 | 2.3 | request_human | request_human | 1.0 | | horizon_compaction_stress_year | 164 | 2.87 | resume | resume | 1.0 | | horizon_abort_condition_year | 131 | 2.3 | abort | request_human | 0.0 | ## MCP 集成 CONTINUUM 交付 MCP 服务器,因此智能体可以在不嵌入库的情况下记录进度、打检查点并通过账本路由外部副作用: ```bash uv pip install -e ".[mcp]" CONTINUUM_MCP_MUTATING_CLIENTS=your-client-name continuum-mcp ``` 通过 stdio 的十二个工具。其中三个是只读的(`continuum_validate`、`continuum_resume`、`continuum_list_actions`),九个会变更。副作用采用两阶段(声明、执行、完成),变更工具默认位于 allowlist 之后。智能体报告的状态以 `Origin.EXTERNAL_AGENT` 可溯源性记录并标记为 `REQUIRES_REVIEW`。 验证细节,包括启动时的崩溃恢复和端到端 Claude Code 测试,见 [references/mcp.md](references/mcp.md)。如果已注册的服务器报告 `CONNECTION_CLOSED`,原因几乎总是 `PATH` 解析而非服务器本身:[docs/api/mcp.md](docs/api/mcp.md#troubleshooting) 有诊断和两种修复方法。 ## 框架集成 `src/continuum/adapters/` 中交付九个适配器(一个进程内门面加上八个集成),全部为可选安装,因此核心保持仅标准库: | 适配器 | 类 | 说明 | |:--|:--|:--| | 通用 Python 智能体 | `GenericAgentAdapter` | 进程内门面,写入可信(`Origin.DETERMINISTIC`)状态。 | | 文件系统沙箱 | `FilesystemSandboxAdapter` | 本地目录沙箱,无外部服务,文档和 CI 的默认值。 | | Python 进程内 | `PythonInProcAdapter` | 在临时工作目录中运行 Python,通过账本记录。 | | 容器 | `ContainerAdapter` | Docker 后端,当 `docker` 缺席时受保护跳过。 | | 浏览器 | `BrowserAdapter` | Playwright 后端,未安装时受保护跳过。 | | Kubernetes | `KubernetesAdapter` | `kubectl` 后端,未配置时受保护跳过。 | | OpenAI Agents SDK | `OpenAIAgentAdapter` | 实验性。钩入 `ToolContext` / `RunHooks`,可选 `openai-agents`。 | | LangGraph | `LangGraphAgentAdapter` | 实验性。包装 `StateGraph`,可选 `langgraph`。 | | LangChain | `LangChainAgentAdapter` | 实验性。将 `checkpoint_node` 放入 LCEL `Runnable` 流水线和 `create_agent` 工具调用循环,可选 `langchain`。 | 每个适配器都通过账本记录进度,并通过两阶段拦截和完成协议路由外部效应。全部三个框架适配器都有端到端集成测试,并已针对 **真实 OpenRouter 模型** 驱动,在此过程中发现并关闭了 LLM 参数漂移去重缺口和两个 OpenAI 适配器缺陷,包括每个适配器一次真实硬崩溃(`os._exit(137)` 在副作用中)证明。每个适配器的完整用法、真实模型结果和可运行示例见 [references/adapters.md](references/adapters.md)。 生产级 LangGraph 应用也可以保留其原生持久化 API:`make_continuum_checkpointer(storage)` 实现了 LangGraph 的 `BaseCheckpointSaver` 并基于 CONTINUUM 存储,因此每次 put 都落在同一哈希链、可溯源的事件日志中(见 [references/adapters.md](references/adapters.md))。 另外三个生产框架由 [`adapters/thin.py`](src/continuum/adapters/thin.py) 中无需 SDK 的薄钩子面覆盖: | 框架 | 拦截面 | 入口 | |:--|:--|:--| | CrewAI | 全局工具调用前后钩子 | `install_crewai_hooks(storage, run_id)` | | AutoGen core | 原地包装 `FunctionTool.run_json` | `wrap_autogen_tool(tool, storage, run_id)` | | Pydantic AI | 异步 Hooks 能力 | `Agent(capabilities=[wrap_pydantic_ai_hooks(storage, run_id)])` | 对于这些都未覆盖的栈:`continuum gateway` 对来自任意语言的外发 HTTP 强制声明,`continuum.otel.make_span_processor(storage)` 将现有的 OpenTelemetry 工具跨度转为证据,而 `continuum serve` 以与 MCP 工具相同的操作通过语言无关的 JSON 线路协议暴露(stdio,或通过 `--transport http` 的 HTTP 并使用 `CONTINUUM_SERVE_TOKEN` 鉴权)。 ### 恢复由智能体或 MCP 报告的运行 通过 MCP 或通过 OpenAI 适配器报告的状态携带 `Origin.EXTERNAL_AGENT` 可溯源性,并在确认前解析为 `request_human`。LangGraph 和 LangChain 运行使用 `Origin.DETERMINISTIC` 并直接恢复。要清除复审并恢复: ```bash continuum confirm成为赞助者,GitHub Sponsors,或在 FUNDING.yml 中添加自定义链接如果你偏好其他平台。
## 许可证 Apache 2.0,见 [LICENSE](LICENSE)。 --- 深度参考资料: - [references/install.md](references/install.md) - 前置条件、安装层级、包映射、验证 - [references/concepts.md](references/concepts.md) - 语义检查点、验证、账本、恢复模式、合约 - [references/architecture.md](references/architecture.md) - 数据模型、事件日志、投影、存储、检查点、恢复引擎、安全 - [references/adapters.md](references/adapters.md) - 框架适配器用法和真实模型验证结果 - [references/api.md](references/api.md) - Python 和适配器 API - [references/cli.md](references/cli.md) - 完整 CLI 命令列表、退出码、状态差异 - [references/mcp.md](references/mcp.md) - MCP 服务器状态、验证、开放问题 - [references/bench.md](references/bench.md) - CONTINUUM-Bench 设计 - [references/quickstart.md](references/quickstart.md) - 安装、示例、验证脚本 - [references/e2e.md](references/e2e.md) - 端到端自主测试 walkthrough - [references/testing.md](references/testing.md) - 测试套件布局和约定 - [references/related-work.md](references/related-work.md) - 带注释的相关工作和引用审计 ## 快速链接 - [Issues](https://github.com/Cyrax321/CONTINUUM/issues) 提交错误与功能需求 - [Discussions](https://github.com/Cyrax321/CONTINUUM/discussions) 探讨设计与提案 - [发布说明](docs/release-notes.md) - [发布检查清单](docs/release-checklist.md)