jxxghp
|
5d9c6c8b19
|
refactor: expand runtime contracts and debt ratchets
|
2026-08-22 08:25:36 +08:00 |
|
jxxghp
|
820f7e8850
|
refactor: make download and transfer events durable
|
2026-08-22 08:03:00 +08:00 |
|
jxxghp
|
c5de1c7b1b
|
refactor: make subscription lifecycle events durable
|
2026-08-22 07:43:41 +08:00 |
|
jxxghp
|
b6a8d76975
|
docs: record architecture refactor completion
|
2026-08-21 22:37:11 +08:00 |
|
jxxghp
|
1b253510e1
|
ci: block new async blocking calls
|
2026-08-21 22:29:19 +08:00 |
|
jxxghp
|
dd246fe045
|
ci: enforce complexity reduction ratchet
|
2026-08-21 22:23:37 +08:00 |
|
jxxghp
|
59fa3c0e74
|
ci: add incremental strict type gate
|
2026-08-21 22:21:23 +08:00 |
|
jxxghp
|
43cccb8ff8
|
feat: add low-cardinality observation port
|
2026-08-21 22:15:47 +08:00 |
|
jxxghp
|
47f1ff9cb4
|
feat: propagate request correlation context
|
2026-08-21 22:08:33 +08:00 |
|
jxxghp
|
c755c074b9
|
refactor: dataize scheduler job contracts
|
2026-08-21 21:59:11 +08:00 |
|
jxxghp
|
dce7372b81
|
feat: persist subscription side-effect outbox
|
2026-08-21 21:50:18 +08:00 |
|
jxxghp
|
336da307a7
|
docs: classify background action reliability
|
2026-08-21 21:33:34 +08:00 |
|
jxxghp
|
1f656830db
|
docs: add module quality scale
|
2026-08-21 21:31:42 +08:00 |
|
jxxghp
|
c0b31bddb6
|
refactor: register event delivery contracts
|
2026-08-21 21:29:52 +08:00 |
|
jxxghp
|
b9ad5220ae
|
refactor: define module contract v2
|
2026-08-21 21:25:35 +08:00 |
|
jxxghp
|
ff0ce8d1c1
|
refactor: add configuration dependency ratchet
|
2026-08-21 21:20:56 +08:00 |
|
jxxghp
|
9df599f502
|
refactor: split api dependencies by domain
|
2026-08-21 21:09:57 +08:00 |
|
jxxghp
|
773ea8cb9b
|
refactor: introduce typed host runtime
|
2026-08-21 20:56:25 +08:00 |
|
jxxghp
|
b598b516d5
|
refactor: migrate high-risk write transactions
|
2026-08-21 20:46:57 +08:00 |
|
jxxghp
|
7de72e0e83
|
refactor: own subscription create transactions
|
2026-08-21 20:37:31 +08:00 |
|
jxxghp
|
de2957b9de
|
refactor: add transaction ownership ratchet
|
2026-08-21 20:16:30 +08:00 |
|
jxxghp
|
dd1c4c3279
|
refactor: unify database readiness lifecycle
|
2026-08-21 20:07:07 +08:00 |
|
jxxghp
|
bb57b22975
|
refactor: use factory for supervised uvicorn modes
|
2026-08-21 19:51:33 +08:00 |
|
jxxghp
|
0959831bae
|
fix(ci): gate pylint on changed files
|
2026-08-21 19:50:06 +08:00 |
|
jxxghp
|
d89d29612c
|
refactor: enforce single-worker control plane
|
2026-08-21 19:40:20 +08:00 |
|
jxxghp
|
6c7c54d2c1
|
ci: enforce backend architecture contracts
|
2026-08-21 19:33:11 +08:00 |
|
jxxghp
|
7bc3ea831f
|
refactor: scope architecture baseline operations
|
2026-08-21 19:21:27 +08:00 |
|
jxxghp
|
300ae75bcf
|
docs: add backend architecture next-stage plan
|
2026-08-21 19:21:20 +08:00 |
|
InfinityPacer
|
638ea6f01e
|
perf: 并行化后端单测并拆分覆盖率任务 (#6369)
|
2026-08-20 20:01:36 +08:00 |
|
InfinityPacer
|
23f5d59c74
|
feat: 使用 uv 锁定主程序依赖并强化插件恢复边界 (#6364)
|
2026-08-20 12:17:19 +08:00 |
|
InfinityPacer
|
f700db5ac8
|
feat(database): add managed backup and offline restore (#6359)
|
2026-08-19 17:34:32 +08:00 |
|
 
|
0069d04b18
|
feat(download): 支持未识别资源确认下载 (#6356)
* feat(download): 支持未识别资源确认下载
* feat(download): 音乐与影视统一未识别确认下载逻辑
* fix(download): 修正未识别媒体信息构造的类型标注与合集归一
---------
Co-authored-by: liulang <liulang@25qp.cn>
Co-authored-by: jxxghp <jxxghp@gmail.com>
|
2026-08-19 13:40:47 +08:00 |
|
jxxghp
|
c2a27f7c71
|
refactor: 收口订阅与插件应用边界
|
2026-08-18 13:54:17 +08:00 |
|
jxxghp
|
8472bcff43
|
refactor: 收口 V3 分层架构与插件兼容边界
|
2026-08-18 13:22:02 +08:00 |
|
jxxghp
|
5128ae9e1e
|
refactor: 推进后端分层架构治理
|
2026-08-18 00:29:14 +08:00 |
|
jxxghp
|
2436bdf3dd
|
docs(architecture): 新增 MoviePilot v3 架构设计总览文档
|
2026-08-17 09:37:38 +08:00 |
|
jxxghp
|
d7e610e656
|
feat(agent): 新增 apply_patch 多文件补丁编辑工具
参考 Codex apply_patch 设计,支持单次调用对多个文本文件执行新增、
更新和删除:补丁以 *** Begin Patch / *** End Patch 包裹,Update 段
用 @@ 分隔 hunk,上下文行须与当前内容精确一致;先整体校验全部文件
操作,通过后才逐个原子写盘,并以校验期 sha256 防止并发修改。
- 工具描述与系统提示词明确 apply_patch / edit_file / write_file 分工:
跨多文件或增删文件用 apply_patch,单文件单处替换用 edit_file
- 注册进工具工厂与 ALWAYS_INCLUDE 列表,加入策略 inventory 与
MCP 隐藏列表,流式回调归类为 file_write
- 同步 create-moviepilot-plugin / publish-moviepilot-plugin /
create-moviepilot-skill 技能的 allowed-tools 与版本
- 新增 tests/test_agent_apply_patch.py 覆盖解析、多文件应用、
整体拒绝、权限边界与版本冲突场景
|
2026-08-17 08:01:59 +08:00 |
|
jxxghp
|
54f093a099
|
Merge remote-tracking branch 'origin/v3' into v3
# Conflicts:
# app/api/endpoints/agent.py
# app/api/endpoints/anthropic.py
# app/api/endpoints/openai.py
# app/chain/__init__.py
# app/chain/message.py
# app/chain/site.py
# app/chain/subscribe.py
# app/chain/transfer.py
# app/modules/discord/__init__.py
# app/modules/qqbot/__init__.py
# app/modules/slack/__init__.py
# app/modules/telegram/__init__.py
# app/modules/wechat/__init__.py
# app/runtime/extensions/module_manager.py
# app/runtime/extensions/service_registry.py
# tests/test_agent_interaction.py
# tests/test_slash_command_interactions.py
# tests/test_web_agent_stream.py
|
2026-08-16 19:44:43 +08:00 |
|
jxxghp
|
240a4dffe6
|
refactor(schemas): 统一 message/notification 命名边界,旧名收敛至兼容映射表
- notification 域:渠道能力(MessageChannel→NotificationChannel、ChannelCapability* 迁入 notification.py)
- message 域:消息收发(Notification→Message、NotificationType→MessageType、CommingMessage→IncomingMessage、NotificationHistoryItem→MessageHistoryItem、NotificationClear*→MessageClear*)
- Agent 工具契约:send_notification_message→send_message、notification_callback→message_callback
- 源码不保留旧名物理别名,旧导入经 app/runtime/compat/manifest.py SYMBOL_ALIASES 惰性解析
- API 路径与持久化键冻结不变,前端零改动
- 新增兼容守护测试与 docs/rules/07 命名边界规范
|
2026-08-16 19:32:20 +08:00 |
|
InfinityPacer
|
5b367011c5
|
refactor(agent): 按需加载 Agent 运行时 (#6336)
|
2026-08-16 19:25:24 +08:00 |
|
LinFei83
|
e5f0c53069
|
MCP get_search_results 增加 include_labels 按需返回种子标签 (#6335)
让 Agent 在筛选命中标签时能按需查看 labels,默认不返回以免拉长上下文。
Co-authored-by: Cursor <cursoragent@cursor.com>
(cherry picked from commit 6a02e7de21)
|
2026-08-16 17:38:19 +08:00 |
|
jxxghp
|
3e417c1ac5
|
refactor(chain): _mixins.py 更名 _transfer.py,统一功能域 mixin 命名
TransferChain 的 7 个功能域 mixin 集合文件按域更名 _transfer.py,
与 _recognition/_messaging/_interaction/_music 的单域命名约定对齐;
同步更新 transfer.py 导入、9 个测试文件 patch 目标与架构文档。
另含 chain 基类导入排序优化与未使用导入清理(copy/datetime 已随
dispatch 方法迁入 _messaging.py)。
|
2026-08-16 17:25:49 +08:00 |
|
jxxghp
|
5810f6bc2b
|
refactor(application): filter_rules.py 更名 rules.py 并合并 RuleHelper
规则域收敛为单一事实来源 app/application/rules.py:
- filter_rules.py 更名为 rules.py(内置规则集 + RuleParser)
- filter.py 仅含 66 行 RuleHelper(用户规则组配置访问),并入 rules.py
- 同步更新 5 处引用方导入、nettest stub 目标与架构文档
- 兼容映射 app.helper.rule 指向新路径,legacy 导入仍可用
|
2026-08-16 17:13:51 +08:00 |
|
InfinityPacer
|
b8b59ae20a
|
refactor(runtime): activate managed resources on demand (#6334)
|
2026-08-16 16:44:45 +08:00 |
|
jxxghp
|
7e851dbfa7
|
refactor(chain): 处理链功能域 mixin 化,清理未使用导入并根治兼容层循环导入
- ChainBase 拆分为 RecognitionMixin/MessageProcessingMixin/NotificationMixin
- TransferChain 拆分为 7 个功能 mixin(_mixins.py),SubscribeChain 音乐订阅域拆出 _music.py
- 斜杠命令交互四件套收敛为 InteractionChainMixin 委托,会话管理器移至 application 层,chain 层不再 re-export
- 模块基础类收敛到 app/modules/_base(notification/mediaserver 语义重命名)
- 清理 app/chain/__init__.py 24 个未使用导入,修正 49 处测试 patch 目标到实际命名空间
- 兼容层 legacy 符号不再并入 __all__,根治 schemas 初始化反向拉起 application.transfer 的循环导入
- 修复 bangumi 集数为字符串时 set_bangumi_info 抛 TypeError
- 新增重复代码等架构门禁测试;capability 清单校验排除下划线内部目录
|
2026-08-16 16:30:16 +08:00 |
|
jxxghp
|
441ec9475e
|
refactor(api): LLM 提供商管理端点收敛为通用 manage 接口,端点层零特色
- schemas 新增 LlmProviderAction 公共动作词汇表
- LLMProviderManager 新增 provider_manage 统一入口,默认值填充、
API Key 豁免判断、密钥脱敏与错误归因改写全部下沉封闭,
不再硬编码 chatgpt/github-copilot 等产品名
- endpoint 收敛为 POST /llm/manage(ManageRequest 透传);
OAuth 回跳地址由端点按具名回调路由统一构造后注入动作参数,
/provider-auth/callback/{provider_id} 因浏览器回跳协议约束保留具名路由
- 新增 14 项 provider_manage 契约守护测试,
替换原针对端点函数的两个旧测试文件
|
2026-08-16 07:50:16 +08:00 |
|
jxxghp
|
a6dbd799d5
|
refactor(api): 渠道与存储管理端点通用化,端点层零目标特色
- schemas 新增公共 ManageRequest(target+action+params) 与 StorageAction 词汇表
- endpoint 层收敛为 POST /notification/manage、/storage/manage 两个通用接口,
不再定义任何渠道/存储特定的名称、参数与响应字段,前端上送参数原样透传
- chain 层 manage_channel/manage_storage 接受字符串标识纯透明转发,
StorageChain 移除全部特色管理方法
- FileManagerModule 新增 storage_manage 统一入口,模块返回归一化为
{success, message, data};wechatclawbot channel_manage 同步归一化,
路由标识兼容枚举名/值/对象
- dashboard 与 agentopsassistant 的用量查询改走 manage_storage(usage)
- 新增 10 项存储契约守护测试,通知侧补充 3 项链透传与字符串路由测试,
API 守护测试对 ManageRequest 开放映射按设计豁免
|
2026-08-16 07:18:49 +08:00 |
|
jxxghp
|
5b0c631f80
|
refactor(notification): 建立通知渠道通用管理契约 channel_manage
- schemas 层新增 NotificationAction 公共动作词汇表(状态/二维码/退出/连通性/缓存迁移)
- 模块实现统一 channel_manage(channel, action, **params),按渠道名路由,
非本渠道返回 None;动作语义、表单参数解释与临时参数初始化封闭在模块内
- NotificationChain 收敛为单一 manage_channel 纯透明转发,
chain 层不再出现任何渠道名与模块特色
- endpoint 路由路径保持前端兼容,内部统一走通用接口
- 新增 6 项契约守护测试,文档记录通用模式:新渠道接入无需改 chain
|
2026-08-16 06:35:46 +08:00 |
|
jxxghp
|
4345fcfa22
|
refactor(chain): chain 与 module 仅经 run_module 契约互联,实现模块内容封闭
- mTorrent 字幕链接解析下沉为 IndexerModule.site_subtitle_links,subtitle 模块自行跳过 API 站点
- TMDB/MusicBrainz 识别缓存管理改为模块方法(tmdb_cache_*/music_cache_*)经 run_module 分发
- WechatClawBot 客户端查找/临时客户端/缓存迁移内聚为 wechatclawbot_* 模块方法,
chain 移除 WechatClawBot 类与 ModuleManager 内省
- LISTENBRAINZ_* 常量迁至 schemas/types.py,模块与链层再导入保持兼容
- TMDbException 升为 schemas/exception.py 跨层契约,vendored 异常保持类身份一致
- 架构守护测试新增 test_chain_does_not_import_module_internals(共 18 项)
- 文档同步:chain->module 仅允许 run_module 分发,直接导入禁止
|
2026-08-16 05:25:28 +08:00 |
|
jxxghp
|
02f0dd0b9a
|
refactor(architecture): 修复模块依赖违规并强化架构守护
- 字幕编排上移 DownloadChain.download_site_subtitles,SubtitleModule 仅保留站点链接解析
- TransferChain.recommend_name 上移 TV episodes_info 获取,filemanager 模块不再导入 TmdbChain
- endpoint 穿透修复:WXBizMsgCrypt3 迁至 adapters/external/wechat_crypt.py;
music/tmdb 缓存管理、listenbrainz 常量、TMDbException、WechatClawBot 辅助统一经 chain 包装
- RuleParser 与 builtin_rules 合并为 application/filter_rules.py;
fsproxy/fsworker 迁至 adapters/system/
- chain/__init__.py 删除 qbittorrentapi/transmission_rpc 导入,消除后端协议类型泄漏
- 架构守护测试新增三项检查:模块间隔离、入口层穿透、下载器 SDK 泄漏
- 文档同步:05-architecture.md 记录 DB/Oper 聚合例外与迁移文件位置,AGENTS.md 更新所有权表
|
2026-08-16 04:59:17 +08:00 |
|