从一个进程,看到多个所有权
本文按 2026-09-08 本地集成修订 f575cc02ad9ccec0a84d7bcc1523c41b7b8f9455 解析,同时识别执行方案相关未提交改动为开发中。本次未重跑上游测试、真实认证或部署。版本仍显示 0.1.0.dev0,不能据此误认为内容停在最早的启动基线。1
Stock Profiler 是模块化单体。HTTP、CLI、scheduler、worker 与 migration 加载同一 Python 包;不同进程入口不因此变成独立业务服务。bootstrap 组合 adapter,决策模块通过自己拥有的 framework 和 ledger ports 工作,不直接依赖 SQLAlchemy 或适配层。2
HTTP / CLI / worker / scheduler
|
bootstrap
|
decision-case module
/ \
framework port ledger port
| |
M-Agent adapter persistence adapter
| |
Run SQLite application SQLite
图中的箭头是职责依赖,不是实际网络调用。CLI 直接进入宿主模块,不绕 HTTP 做一圈。
模块端口为什么比共享数据库对象更合适
决策模块负责何时运行、何时验证、何时记录结果。只有持久化 adapter 解释 opaque transaction handle,避免业务代码为了一个事务边界同时了解 SQL、Run Store 和报告表。2
这会增加接口定义和适配代码,但应用规则能够在不启动 HTTP 的情况下检查,也不会因更换传输方式出现第二套业务事实源。它不是为了提前拆微服务,而是限制模块必须了解多少外部细节。
配置在启动时冻结,缺失不是默认授权
Settings 使用冻结模型,加载入口检查进程角色、SQLite 路径及生产来源身份。应用库必须是支持的直接文件 URL,不能与 M-Agent 解析后指向同一路径;生产认证还要求相容 origin、RP-ID 与所需 secret 文件。敏感值不作为普通环境内容返回。3
synthetic app.sqlite + synthetic runs.sqlite
-> ownership check may pass
same resolved file for both stores
-> configuration rejected
这是合成条件示意,不是生产配置。通过路径检查仍不证明迁移、认证、后台进程或业务资格成立。尤其账户读取许可在宿主启动时冻结,不能从浏览器请求或模型输出中临时扩大。
两个 Store 没有一笔共同事务
应用状态由 SQLAlchemy 与 Alembic 维护;M-Agent 使用独立 SQLiteRunStore。初始化检查应用迁移后才接入 Run Store。两者没有共享表,也没有跨数据库事务。24
这意味着框架 Checkpoint 已写入、应用事件尚未提交的中间现场是真实存在的。应用回滚不应被描述成“整个执行没有发生”。当前宿主会先保留业务映射,再允许框架推进,并按已有 Run、事件和报告接续。详见冻结案例全文。
0.5.1 的恢复能力怎样进入宿主
当前绑定官方 M-Agent 0.5.1 wheel 与 digest。新案例使用该身份;受支持的历史 0.5.0 Run 可在保留精确原快照、定义与输入的条件下读取或恢复,未知版本或缺少原 Run 不可用“新建替代”掩盖。25
这里不能复用早期页面“宿主未调用 resume_run”的结论:当前 adapter 已接入恢复。与此同时,恢复不是修复任意损坏历史、混用不同版本 writer 或替应用重新授权业务。
数据库升级还需要停写、一致备份与进程协调。本文不运行这些操作,也不把源码兼容测试当作用户运行库已经完成迁移。
四种诊断各自证明什么
| 入口 | 观察面 | 不证明 |
|---|---|---|
| livez | API 进程可响应 | 应用数据已迁移 |
| readyz | 存储初始化、迁移与 API 心跳 | 全部后台进程正常 |
| doctor | 必需进程心跳 | 某次决策已获得资格 |
| version / capabilities | 运行身份与合成能力边界 | 投资有效性或订单授权 |
匹配上游环境的公开只读诊断入口如下;本次未执行。1
uv run stock-profiler version
uv run stock-profiler doctor
把这些出口拆开会增加检查项,却避免一个绿色探针承载软件没有证明的业务结论。
能力清单必须和实际组合一致
当前合成宿主只组合确定性模型与冻结 Context Provider,Tool allowlist 为空;没有 Session companion、真实模型、券商客户端、订单凭据、外部通知 Provider 或订单 adapter。已经存在通知阶段记录,不等于接通了外部消息服务。6
这使工程测试可以检验权限、恢复和报告,但不能把模型本领或真实账户动作顺带算为已交付。读者最终看到的是可审计的受控流程,而不是一个未经验证的自动投资应用。
来源与范围
本篇说明当前公开工程边界,不发布私有个人政策或完整未来规范。目标用户效果见迭代记录,范围与账户权限见只读交付全文。网站验证不计为上游业务验收。