Repository navigation
Add 蹬王之王 (expiry-guardian) · 只读版:本地到期账本与用卡决策(不碰宿主任何私有数据) - #47
Open
Hylouis233 wants to merge 2 commits into
Open
Hylouis233 wants to merge 2 commits into
Hylouis233 wants to merge 2 commits into
Conversation
Author
这是「只读版」,与 #39 是二选一
两者的决策逻辑一字未改(三方 Rust / Mini App / Python 仍 19/19 逐字一致), ⇒ 管理员 review 的原话是「很欢迎你提的方案:把只读、能直接交付的部分……单独开一个 PR。 请先决定走哪条路;如果走只读版,#39 可以直接关掉。 |
社区插件版本的蹬王之王:**看你自己维护的本地账本,算出「该用卡还是该留积分」**。 ## 为什么不碰宿主的三类私有数据 上游社区插件有三条硬红线(2026-10-20 管理员 review 明确列出): | 红线 | v1.x(已移除) | v2.0 | | --- | --- | --- | | 不能读 MiniMax Code 的登录凭据 | 读 lease socket / .cap 取 token 调账号接口 | 不读。数据源是本地账本 | | 不能读写宿主内部数据库 | UPDATE/DELETE/INSERT 目标与队列、读回合记录 | 不碰。只读插件自己的目录 | | 不能读别的插件的数据目录 | 读 minimax-bot 的 state.json 拿 bot 与会话 id 去发消息 | 不读。Bot 看门狗整体移除 | ⇒ **不扣卡、不暂停目标、不叫醒 bot**:只把结论算准、说清楚,动作由人做。 ## 亮点 - **决策逻辑一字未改**:Rust / Mini App / Python 三方同构, verify-parity.mjs 仍 **19/19 三方逐字一致**(动作 + 理由文本)。 变的只是「数据从哪来」。 - **本地账本**:~/.config/mcode-reset-card/ledger.json,面板底部可直接编辑并保存。 - **诚实失败**:账本读不到 ⇒ 明确报「本轮没有任何结论」; **读不到 ≠ 没有** ⇒ 数据不完整时永远不给「用卡」这种花钱的建议。 - **红线守卫**(19 项):把上面三条红线变成**可执行的门禁** —— 谁把旧代码加回来,CI 立刻红。v1.x 那些代码在仓库里躺了好几个版本才被发现。 ## 校验 上游 npm run validate 对本插件 **OK**(0 错 0 警)、repository: OK、npm test 69/69。 本插件:Rust 25/25、Python 20/20、MiniApp 79/79、三方一致性 19/19。 ## 文档 - plugins/hylouis233/expiry-guardian/README.md —— 英文 - plugins/hylouis233/expiry-guardian/docs/README.zh-CN.md —— 中文 - plugins/hylouis233/expiry-guardian/docs/BOT_DIAGNOSIS.md —— 排查手册
v2.0 已经不调任何账号接口、不再取 lease token,但文件头还在描述旧的 两套 API 与鉴权方式 ⇒ 会被误读成「这个插件还在调接口」。 改成如实描述本地账本这一唯一数据源,并写明为什么不再自己调接口。
Hylouis233
force-pushed
the
feat/expiry-guardian-readonly
branch
from
October 20, 2026 12:49
383a063 to
9a9cb7f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
这是什么
社区插件版本的蹬王之王(Expiry Guardian):看你自己维护的本地账本,
算出「该用卡还是该留积分」,并把理由说清楚。
Mini App 看板 + Rust 后台守护进程(
launchd常驻,只读)。为什么不碰宿主的三类私有数据
上游社区插件有三条硬红线(2026-10-20 管理员 review 明确列出)。这一版按红线裁剪:
.cap取 access token,再拿它调账号接口sqlite3直接UPDATE/DELETE/INSERT目标与执行队列,还读回合记录minimax-bot的state.json拿 bot 与会话 id,再往那些会话发消息⇒ 代价是明确的:v2.0 不再自动扣卡、不再自动暂停目标、不再自动叫醒 bot。
它只负责把结论算准、说清楚,动作由你自己做。
⇒ 好处也很明确:这是一份能进社区仓库的代码 ——
不碰宿主任何私有数据,行为全部可预测。
本地账本
路径:
~/.config/mcode-reset-card/ledger.json(面板底部可直接编辑并保存){ "schemaVersion": 1, "updatedAtMs": 1792480000000, "quota": { "fiveHour": { "usedPercent": 3, "totalPercent": 100, "unlimited": false, "resetTimeMs": 1792497600000 }, "weekly": { "usedPercent": 0, "totalPercent": 100, "unlimited": true, "resetTimeMs": 1792944000000 } }, "cards": [ { "cardId": "card_1", "label": "Card A", "sourceType": "code", "outBizNo": "biz_1", "expireTimeMs": 1795000000000 } ], "credits": [ { "label": "Granted", "source": "code", "granted": 400, "used": 0, "balance": 400, "expireTimeMs": 1795017600000 } ] }outBizNo与sourceType两个都要有;已过期的也不算balance > 0且未过期credits字段 ≠ 没有积分 ⇒ 判成「数据不完整」⇒ 结论停在「暂不处理」,绝不会因为「读不到」就反过来建议你烧掉一张真卡
决策逻辑:先过期先用
三方一致性(决策逻辑一字未改)
Rust / Mini App / Python 三份同构实现,
daemon/verify-parity.mjs让三方读同一份用例,逐字比对「动作 + 理由文本」:
裁剪只改了「数据从哪来」,决策引擎的输入结构与之前从账号接口拿到时完全一致。
红线守卫(19 项)
tests/server-lint.test.mjs把上面三条红线变成可执行的门禁:.cap/ token 落盘runtime-state.sqlite/ 宿主表的UPDATE·DELETE·INSERTplugin-data/liveboards/ 别的插件的state.json⇒ 谁不小心把旧代码加回来,CI 立刻红。
(v1.x 那些代码在仓库里躺了好几个版本才被发现 —— 人工审计靠不住。)
后台守护进程(只读)
daemon-status.jsonlocal MCP 端点
watchdog_statuswatchdog_decide校验
npm run validaterepository: OKnpm test文档
plugins/hylouis233/expiry-guardian/README.md—— 英文plugins/hylouis233/expiry-guardian/docs/README.zh-CN.md—— 中文plugins/hylouis233/expiry-guardian/docs/BOT_DIAGNOSIS.md—— 排查手册Need help on this PR? Tag
@codesmith-botwith what you need.