Skip to content

ref(core): 分离独立 Python SDK 与应用装配 - #175

Draft
xiaoland wants to merge 3 commits into
mainfrom
feat/core-app-separation
Draft

xiaoland wants to merge 3 commits into
mainfrom
feat/core-app-separation

Conversation

@xiaoland

@xiaoland xiaoland commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

外部 Python 程序此前必须经过应用全局配置、默认数据库实例和调度器才能复用领域能力。本 PR 提取可独立安装的 inkcre_core,由调用方显式创建、绑定和关闭 Core;FastAPI 服务、环境读取、调度唤醒及安装/重启政策留在 App。

范围

  • 领域、协议、模型、持久化和通用执行进入独立 wheel;服务依赖移入 app extra,锁文件不升级既有依赖。
  • Core 实例隔离 Source、Peer 和 Job 状态;每个 UoW 拥有自己的 session,关闭只收束自身任务和自建 engine。App 请求、lifespan、定时回调和容器预启动显式绑定上下文。
  • 旧模型/领域导入保持同一对象的兼容转发;第一方扩展继续使用已发布 Host SDK 的兼容入口。历史 migration 文件不变,没有协议或 schema 迁移。
  • 新增真实 wheel 的仓库外消费检查、并发与生命周期测试,更新打包、服务依赖安装和内部文档。

发布项目:inkcre-core(含服务镜像);Towncrier fragment 已记录。CLI 与第一方扩展没有独立版本变更。

共享合同:InKCre/docs#51;跨仓跟踪:InKCre/docs#50。源码和 docs/_shared 引用分别提交,引用指向已推送的 Hub b33346225b669a6ac93fcac12a135178a46533c8。

基线与下一步

直接基于 origin/main(ee84d48),不依赖 maintainability PR #168。 仅保留本任务的分离改动;搬迁文件保留主线的 Job catalog、Source 路径身份和关闭行为,没有带入父候选的合同集中化、扩展修复、新测试或验证机制。

下一响应方:维护者。请审阅 Core 生命周期、旧导入兼容、服务装配与 wheel 的公开范围。保持 draft;合并前按最新 main 检查云端结果与最终共享文档引用。

当前基线验证

以下本地检查在重新基于 main 9031f7e 后执行,不沿用旧父候选的测试结论。随后同步 main ee84d48 并修复三处数据库测试 fixture;当前 head a749300 的云端证据另列于下:

  • 不含 integration/acceptance 的本地集合:104 passed、9 skipped、1 deselected。
  • Core 隔离/兼容/生命周期、Agent debug 和扩展启动局部集合:21 passed(与上组有重叠,不相加)。
  • Pyrefly:0 diagnostics;Ruff lint、573 文件格式、数据库边界、foundation、锁和 migration integrity 通过。
  • 清理旧构建缓存后重新构建真实 wheel;仓库外导入、构造/关闭及 App/FastAPI/Starlette/APScheduler 反向依赖检查通过,不连接数据库。
  • 提交 hooks(actionlint、格式/lint、类型、锁、migration lint/tests)、共享引用检查及差异空白检查通过。
  • 对照主线和旧父候选的 59 个路径,核对 15 个搬迁目标及相关调用;未残留父候选新增 API 或行为依赖。

本地未执行端到端验收。 云端 CI 和预览按仓库既有流程正常执行,结果以当前 head 的 Checks 为准。本地构建和局部测试不代替真实数据库跨 Peer、容器运行及完整应用旅程。

风险与回滚

主要风险是全局状态改为实例所有权后,遗漏绑定或关闭顺序会影响服务回调、Job 与旧扩展。局部测试覆盖嵌套/并发绑定、借用/自建 engine、任务收束和兼容类型身份。

回滚时整体撤销本 PR 的源码及共享引用提交,并使用此前服务产物;没有新增迁移需要逆向执行。不要只撤销兼容层或打包配置的一部分。

交付影响

本次只创建 draft,不发布包、合并或部署生产。服务安装需包含 app extra,基础 SDK 消费不需该 extra。既有 CI 和预览控制器按正常流程执行;预览交付须等待精确 head 的必需检查通过。

直接父 PR:无。直接子 PR:#178。跨仓合同和发布依赖由 InKCre/docs#50 跟踪。

后续统一可观测性

直接子 PR:https://github.com/InKCre/impl-py/pull/178(draft,基于本 PR 的 Core/App 边界)。先合并本 PR,再将子 PR 重排到最新 main;跨仓交付由 InKCre/docs#52 跟踪。

当前 head a749300 的云端 Repository and artifact checks 已通过,包括数据库场景、CLI 和 E2E;preview 部署尚在运行。此次主线同步保留 Twitter 新增功能与发布内容,未修改发布检查规则。

- Memos migration fixture 绑定独立 Core,不再替换已删除的全局 session factory
- Job 集成场景通过 start/shutdown 管理执行准入
- 本地仅静态检查与测试收集,数据库行为交给云端 CI

This branch was successfully deployed

1 active deployment
preview — a7493009 Deployed Nov 4, 2026 by xiaoland via impl-py preview #547
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Review / acceptance

Development

Successfully merging this pull request may close these issues.

1 participant