Skip to content

Releases

破甲修改器 1.03.8-beta

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Nov 15:35

v1.03.8-beta

测试版。自更新卡死的真根因修复。1.03.7 修的是卡死尾巴上的黑窗,这次修的是
卡死本身。

现象

从 1.03.5 起,每次用界面升级都在同一步停下:下载、校验都正常,然后出现一个
命令行长窗口,停在那儿不动;手动结束它,后台安装程序才开始跑。

现场

实机抓到的进程快照:

进程 状态
cmd.exe(换装批处理) 活着,停在 :wait
tasklist.exe 早已退出
findstr.exe 活着两分钟,等 stdin
conhost.exe 父进程是 findstr

根因

换装批处理由 DETACHED_PROCESS 拉起 —— 它没有 console。批处理里的
tasklist | findstr 是这条链上唯一的管道,而 tasklist 是 console 程序:

  1. 无 console 的进程拉起 console 程序时,系统给它临时配一个 conhost;
  2. conhost 会把父进程的句柄表继承下来,其中包括管道的写端;
  3. tasklist 干完活退出,写端本该关闭 —— 但 conhost 还按着一份;
  4. findstr 读不到 EOF,永远等下去。

整条换装链就停在这里。手杀那个窗口等于杀掉 findstr 和 conhost —— 句柄一松,
if errorlevel 1 goto swap 的下一轮立刻放行,安装程序才开跑。这也解释了为什么
「结束命令行之后安装才开始」。

为什么不是每次必现:DETACHED 下 console 的分配与 conhost 的继承时机跟系统负载
有关,所以表现是「总有点问题」而不是「每次都卡」。

修复

换装批处理:整条链不再有管道。

原来:

:wait
"%SystemRoot%\System32\tasklist.exe" /nh /fi "imagename eq pojia-modifier.exe" | "%SystemRoot%\System32\findstr.exe" /i /c:"pojia-modifier.exe" >nul
if errorlevel 1 goto swap

现在:

rem 页面 1.5 秒自己退出,这里等 7 秒足够
"%SystemRoot%\System32\ping.exe" -n 8 127.0.0.1 >nul
"%SystemRoot%\System32\taskkill.exe" /f /im "pojia-modifier.exe" >nul 2>&1
"%SystemRoot%\System32\ping.exe" -n 2 127.0.0.1 >nul
:swap

行为变化:从「轮询检测进程,15 秒后强杀」变成「固定等 7 秒,然后无条件强杀」。
taskkill 对已经不存在的进程报个 128 就完了,不用看任何输出。绿色版分支同理,
move 重试从「每轮查一次进程」改成 for /l 循环试 10 次,循环里只有 move 和
ping,也没有管道。

进程拉起方式:DETACHED_PROCESS → CREATE_NO_WINDOW。

CREATE_NO_WINDOW 给整个进程树一个隐藏 console:窗口照样看不见,但 console
语义是正常的 —— 子进程共享同一个 conhost,管道 EOF 能送达。双保险:即使将来有人
往批处理里加了管道,也不会再走到这条死锁上。

测试加锁。

  • test_swap_batch_calls_system_tools_by_full_path 改成反断言:批处理里不许
    出现 tasklist、findstr、任何 |。谁想加回去,先过这条。
  • 新增绿色版分支覆盖(test_green_batch_has_no_pipe_either)。
  • 批处理实跑测试会把 taskkill 行替换成 rem 再跑:这段代码是在用户机器上跑的,
    照原样执行会杀掉正在开着的界面。

校验

  • pytest:122 passed(更新链 21 例,含新增的绿色版分支覆盖)
  • 新批处理全文核对:零管道、ping/taskkill 全路径、:swap 标签保留
  • 现场已解卡:卡死的 findstr / cmd / conhost 已清理,TEMP 残留批处理已删

注意

这一版要用 v1.03.8 的包升级才会走新批处理。从 1.03.7 及以前升级到 1.03.8 时,
用的还是旧批处理(旧代码已经刷进旧版 exe 里了)——那一次可能仍会卡,卡了就
结束那个命令行窗口,安装会继续。从 1.03.8 往后不会再出现。

破甲修改器 1.03.7-beta

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Nov 14:42

v1.03.7-beta

测试版。两块修复:Trae CN 适配新版布局,自更新的尾巴不再弹黑窗。

Trae CN:全局规则落点搬迁(1.107.0 起)

Trae CN 升到 1.107.0 之后,全局规则不再读 ~/.trae-cn/rules/project_rules.md。
全局层只认两处:

位置 说明
~/.trae-cn/user_rules.md legacy 单文件,存在才读
~/.trae-cn/user_rules/**.md 目录递归,最多 3 层

旧落点写进去就是死文件;而全新安装的 ~/.trae-cn 连 rules/ 目录都没有,
定位标记三个全落空,--status 一直显示「未安装」,--apply 根本写不进去。

本版的适配:

  • 落点改成 ~/.trae-cn/user_rules/pojia.md(目录式,官方形态)
  • 定位标记加 argv.json:它在 ~/.trae-cn 常驻,全新安装、一份规则没写过
    也在,默认位置这源不再空手
  • 进程反推重写。安装根(AppData\Local\Programs\Trae CN)与配置根
    (~/.trae-cn)不在一条祖先链上,原来的「沿目录往上找合法根」对它永远
    空手;现在只借运行中的进程确认 CN 版在跑,落点直接回默认配置根
  • 体检清单里把自己那份从「同时在生效」的计数里排除;旧落点如果还躺在盘上
    (老版 CN 写过再升级的场景),给一行提示,--revert 按护照照常能清

国际版 Trae(1.100.3)还是旧逻辑,trae 目标不受影响。

自更新:卡住的命令行窗口

用户实测 1.03.5 → 1.03.6:升级本体走通了(文件装上、GUI 重开),但最后弹出
一个卡住的命令行窗口,看着像 find 卡死,手杀之后盘上还留着
pojia-del-setup.cmd 和 setup.exe。

根因是安装器的 ExecShell 四参语法用错了位:

ExecShell "" "$0" SW_HIDE      ; SW_HIDE 落进了「参数」位
ExecShell "" "$0" "" SW_HIDE   ; 参数占一个空串,SW_HIDE 归到显示方式

本该隐藏的删除批处理弹成一个可见黑窗:循环删 setup.exe(每次 ping 一秒),
杀毒扫描锁着文件期间删不掉,窗口里没有任何输出——看着就是命令行卡死。窗口
被手杀后批处理到不了自删那行,残留就永远留在盘上。

配套修了两处:

  • 删除批处理的 ping 带全路径($SYSDIR),不吃继承来的 PATH;循环 30 次
    加到 60
  • GUI 的退场判定原来在最后 20 行输出里找「已安排」;下载进度行一多就可能把
    关键行挤出窗口,GUI 不退场,批处理只能干等 15 秒 taskkill 兜底。现在读流
    时单独累积一个布尔,与滑窗解耦

校验

  • pytest:121 passed(更新链 20 例、撤回范围 8 例、会话守卫 11 例在内)
  • selftest:20/20(traecn 造数已按新布局)
  • 定位/契约:48 passed
  • 本机真写验证:--target traecn --apply 落盘
    C:\Users\Administrator\.trae-cn\user_rules\pojia.md,--status 从
    「未安装」转为已写入
  • 换装批处理骨架在本机 Git Bash 环境复跑:ping / tasklist | findstr 全路径
    秒过,PATH 钉住后 System32 的 find 排第一

破甲修改器 1.03.6-beta

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Nov 04:15

v1.03.6-beta

测试版。一个撤回范围的修复:--revert 只拿掉我们写的那几行,不再把文件搬回
几天前的样子。

问题修复

撤回会连带回滚别人写进同一文件的内容。

revert_one 原来的顺序是「干净备份 → 保险库 → 按标记裁剪」。对纯插入型注入
(cblock 注释块、jslit 的注释块分支)这套顺序是错的:快照会把拍快照那一刻的
整份文件搬回来,于是快照之后第三方写进去的东西一起没。

实际会撞上的场景:~/.dsh/profiles/desktop/cordis.patch.yml 是一层公开的 patch
层,用户自己、别的 preset 安装器都往里写。这台机器上就躺着一段用户自己的 preset
声明,保险库里对应的是 11-08 的 827 字节空壳 —— 一次 --revert 会把它整个覆盖。

现在的判据:

形态 撤回方式
cblock 注释块 / jslit 的注释块分支 块在就按标记裁剪,只删我们那几行;块不在就是没残留,直接返回
整文件 / 字段注入 / JS 字面量替换 重建不出原样,照旧走干净备份 → 保险库

为什么块标记优先:它是自描述的,剪掉它正好等价于撤销我们那次插入;快照不是,
它只知道「那天的文件长什么样」,不知道这中间谁又写过。

实测(用真实 profile 的副本,配一份 827 字节的旧快照):

revert_one -> True
POJIA 块还在: False       ← 该撤的撤了
麦麦块还在: True          ← 别人的写入保住了
会话守卫块还在: True
用户自己的 ui-chat 行还在: True
约 31 KB -> 约 11 KB,YAML 解析通过

旧代码在同样输入下会把文件覆盖成 827 字节。

另一个细节:cblock_put 在正文和块之间会加一个空行做分隔,剪块时得把这一行也认
回来,否则撤回后文件会多一个空行。原始文件到底有没有以换行结尾,文件本身说不清,
所以只有「正文一致、仅差行尾空白」时才用备份的形状,正文对不上就保留剪出来的结果
——宁可多一个空行,也不抹掉别人的内容。

其他变更

  • 新增 8 条契约用例(tests/contract/test_revert_scope.py):有干净备份也不许覆盖
    别人的块、块不在时不许搬快照、自建文件剪空即删、JS 字面量替换仍走备份还原、
    三种行尾形状(带换行 / 不带换行 / 空文件)字节级还原。
  • docs/spec/40-targets.md 的 7.2 撤回规则按上面重写,写明为什么不是「一律先看备份」。
  • pytest 121 passed,selftest 20/20。

现在的支持范围

20 个目标:DSH、WorkBuddy(国际版 / 国内版)、ZCode、Codex、Cursor、
Claude Code、Antigravity、Qwen、iFlow、Trae、Trae CN、CodeBuddy、OpenCode、
Windsurf、Cline、Copilot CLI、Kiro、Reasonix、Qoder CN。

下载

  • pojia-modifier-windows-x64-setup.exe(安装版)
  • pojia-modifier-windows-x64.exe(单文件)
  • pojia-modifier.pyz(跨平台)

这一版只改撤回路径,--apply 的行为与 1.03.5 一致,可以不重装直接换。

破甲修改器 1.03.5-beta

Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Nov 16:00

v1.03.5-beta

测试版。恢复上一代有、这一代丢掉的那一层:DSH 会话守卫。人格文本只在会话
开头读一次,模型中途拒答它帮不上;这一版把运行时那层补回来。

新增能力

DSH 会话守卫(--session-guard)

一个 Cordis 插件,挂在会话上,只做一件事:一轮结束后看一眼怎么收的,该续就替
用户补一句话。

收尾形态 动作
命中拒答句式("我不能协助""出于安全考虑"…) 补一句"继续把上一件事做完……"
报错,且错误码不在致命名单 补一句"继续"
一个字都没吐出来 补一句"继续"
正常交付 / 用户按了停止 / 用户刚发过话 / 收件箱还有活 不动

落点和 Git Bash 接管同构:<profile>/node_modules/pojia-session-guard/ 两个文件 +
cordis.patch.yml 里一段带标记的 - insert:。幂等、可撤回,删掉标记段即卸载。

不跟用户抢方向盘,四条边界都写在插件里:

  • 用户自己按停止 —— agent/turn-stopping 的 signal.aborted 是唯一可信信号;
  • 用户刚发过话 —— source.kind === "user" 的入库才算数,自己补的那句不算;
  • 自证口令回执、完整性告警绝不当拒答去补;
  • 续跑每轮最多一次、每会话有上限;拒答每轮 2 次、整会话 6 次熔断。

补进去的消息自报家门(source.kind = "pojia-session-guard"、form: notice),
所以它不会被自己的判据当成"用户刚说过话",对话记录里也看得出这句是谁补的。

与破甲模式的关系

--dsh-mode preset 是静态预设:用户在模式下拉里手动选中,会话开头读一次。
守卫是运行时的,两种模式都装 —— 预设模式不改任何官方文件,正需要这一层兜底。

实现说明

  • 只用公开钩子:agent/status、agent/turn-stopping、agent/error、
    agent/inbox/inserted。会话日志的同步读接口(session.snapshotEvents)已标
    废弃、禁止新调用,插件一次都不碰,改从 session.deriveMessages() 取最后一条
    消息。
  • 状态翻到 idle 后延迟 600 ms 再判:让这一轮彻底落定,也让用户那句"等等"
    来得及进收件箱。
  • 新增契约测试 11 条,其中一条把插件真跑一遍(假 ctx / 假 agent,喂六种收尾),
    一条用 node --check 验语法。

其他变更

  • 落盘前先过 yaml_ok:破甲模式、Git Bash 接管、会话守卫三段写同一个
    cordis.patch.yml,任何一段把文件写坏都会让 DSH 起不来。新增用例覆盖三者共存。
  • --session-guard 不带 --apply 时是独立入口,只装卸插件、不碰人格文件。
  • 文档同步:30-inject.md 补 2.8 节(四个事件、判据表、上限、来源标记),
    50-cli.md 补参数,40-targets.md 补验收要点。

现在的支持范围

20 个目标:DSH、WorkBuddy(国际版 / 国内版)、ZCode、Codex、Cursor、
Claude Code、Antigravity、Qwen、iFlow、Trae、Trae CN、CodeBuddy、OpenCode、
Windsurf、Cline、Copilot CLI、Kiro、Reasonix、Qoder CN。

下载

  • pojia-modifier-windows-x64-setup.exe(安装版)
  • pojia-modifier-windows-x64.exe(单文件)
  • pojia-modifier.pyz(跨平台)

守卫是 Cordis 插件,改完要完全退出 DSH(含托盘)再重开才生效。

破甲修改器 1.03.4-beta

Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Nov 14:36

v1.03.4-beta

测试版。两件事:定位链补齐上一代有、这一代丢掉的四个来源;codex / claude /
kiro 这几个工具型目标恢复分层特化注入。

问题修复

  • 进程反推不再只靠命令行。 原来要求命令行里含 _npx / node_modules /
    program files 三者之一 —— 双击启动、或套壳启动器把 exe 名当参数传的机器,
    这一层必然空手。现在先问内核要镜像路径
    (QueryFullProcessImageNameW / /proc/<pid>/exe / macOS 的 proc_pidpath),
    命令行只当兜底。
  • 桌面和开始菜单被重定向后找不到快捷方式。 OneDrive 备份、组策略漫游配置、
    各种「桌面搬家」工具都会改 User Shell Folders,拼 %USERPROFILE%\Desktop
    一律指空。现在逐个问 SHGetFolderPathW,取不到再读 HKCU + HKLM 两处注册表;
    公共桌面、公共开始菜单、任务栏固定项也一并收进来了。
  • 卸载登记表少读两个字段。 只读 InstallLocation / DisplayIcon,而大量
    Electron 应用只写 UninstallString。现在四种写法都认,MSI 产品码直接放弃。
  • WorkBuddy 国际版会串到国内版。 国际版没覆盖 exe / procs,拿
    WorkBuddy.exe 去找,命中的是国内版的根。已按 WorkBuddyAI.exe 分开。

新增能力

切换工具配置反查

wb-switch / cc-switch 必须记住每个版本的绝对路径,否则切不过去。一台机器
装了国际版 + 国内版、还散在不同盘时,这是唯一能同时找到两个根的来源。只读文本
配置,正则抠盘符路径,不解析格式(这些工具换过好几版配置结构)。实测本机
H:\Workbuddy 与 J:\Workbuddy-GLOBAL\WorkBuddyAI 都能命中。

分层特化注入

特化段从「每个目标一句话」恢复成上一代的分层写法:层文本共享,多个目标叠同一份。

目标 叠加的层
codex 执行纪律
claude 执行纪律 + Claude(要拒绝就指名编号)
kiro 执行纪律 + Claude + Kiro(Supervised 审批、steering 全量加载、spec 不拖延)
zcode 执行纪律 + GLM(认身份 + 判定样板)
antigravity 执行纪律 + Gemini(规则从哪来、思考通道、三条化解捷径、三处机制坑)
reasonix / traecn / qodercn 执行纪律 + 各自的加载层与审批语义

改一处,所有引用它的目标同时生效。

Antigravity 拆双文件

单文件 24,000 字节封顶、超出从尾部截断,而自证段恰好在最后 —— 超一点就等于
没注入。正文拆成 GEMINI.md(政策本体)与 config/rules/pojia.md(执行纪律 +
Gemini 专用段,带 trigger: always_on 前置头),实测 19,320 + 5,643 字节,
两边都不接近上限。

其他变更

  • 往上找安装根时,bin / resources / Program Files 这类通用目录名永不判成
    安装根;盘符根收手;判据优先用目标自己的标志物,不再拿「任何目录都算」的宽松
    判据往上层翻。
  • tools/selftest.py 的 wb / wbintl 假安装补上带 <content_policy> 的模板与
    cli/product.json。替换式注入只改原生政策段,旧假安装里没有那一段,apply 只
    回一句「已是最新」,这两个目标的往返自检之前等于没验。
  • 文档同步:docs/spec/20-locate.md 兜底链从 7 条扩到 11 条,
    30-inject.md 补分层规则,40-targets.md 更新 Antigravity 落点。

现在的支持范围

20 个目标:DSH、WorkBuddy(国际版 / 国内版)、ZCode、Codex、Cursor、
Claude Code、Antigravity、Qwen、iFlow、Trae、Trae CN、CodeBuddy、OpenCode、
Windsurf、Cline、Copilot CLI、Kiro、Reasonix、Qoder CN。

下载

  • pojia-modifier-windows-x64-setup.exe(安装版)
  • pojia-modifier-windows-x64.exe(单文件)
  • pojia-modifier.pyz(跨平台)

改完要完全退出客户端(含托盘)再重开,运行中的进程不会重新读磁盘上的配置。

破甲修改器 1.03.3-beta

Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Nov 13:32

v1.03.3-beta

测试版。政策注入换了落点,同时新增三个目标,支持范围 17 → 20。

问题修复

  • 注入改为写客户端真正加载的 cli/product.json,不再只改模板 —— 之前模板改了、
    客户端没读,等于没破。
  • 「破甲自检」回复里的版本号与仓库地址恢复为当前版本。
  • product.json 里堆叠 12 份的旧自证段清成一份。
  • 第二落点撤回后残留的问题修掉:技能包整份删除,不留空壳。
  • 技能文件的 YAML 头不再被 agent 头覆盖。
  • 注入前先摘掉更早版本留下的块,同一个文件不会两版叠加。

体验优化

  • 政策改为就地替换模板里原生的政策段,不再往文末追加第二份。
    单个模板从 46.9K 字降到 37.5K 字。
  • 没有政策段的短提醒模板不再注入。
  • 重复执行 --apply 判定为「已是最新」,不重复写盘。
  • 云记忆内容一致时跳过重写;写完后置只读。

新增目标

Reasonix

配置根在 %APPDATA%\reasonix(不是 ~/.reasonix,那里只有运行时锁目录),
落点 AGENTS.md。不改客户端自己的系统提示文件,避免顶掉用户写的内容。

Trae CN

配置根 ~/.trae-cn,落点 rules/project_rules.md。国际版仍在 ~/.trae,
两者可以并存,各打各的。

Qoder CN

配置根 ~/.qoder-cn,写 agents/purge/qodercn.md 与 skills/purge/SKILL.md
两处;撤回时技能包整份删除。

现在的支持范围

20 个目标:DSH、WorkBuddy(国际版 / 国内版)、ZCode、Codex、Cursor、
Claude Code、Antigravity、Qwen、iFlow、Trae、Trae CN、CodeBuddy、OpenCode、
Windsurf、Cline、Copilot CLI、Kiro、Reasonix、Qoder CN。

其他变更

  • 文档同步:README 与 docs/spec 的目标表从 17 更新到 20。

下载

  • pojia-modifier-windows-x64-setup.exe(安装版)
  • pojia-modifier-windows-x64.exe(单文件)
  • pojia-modifier.pyz(跨平台)

改完要完全退出客户端(含托盘)再重开,运行中的进程不会重新读磁盘上的配置。

破甲修改器 1.03.2-beta

Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Nov 13:23

v1.03.2-beta

修掉一个一直藏着的问题:注入写进了模板,但客户端真正读的那份配置没改。

于是模板里明明是新政策,客户端每轮拿到的还是上一代那份 —— 连「破甲自检」回的
都是上一代的口令。这次把注入落点换到客户端实际读的位置。

问题修复

  • 注入改为写客户端实际加载的 cli/product.json,不再只改模板。之前模板改了、
    客户端没读,等于没破。
  • 「破甲自检」回复里的版本号与仓库地址恢复为当前版本。
  • product.json 里堆叠 12 份的旧自证段一次清干净,只留一份。
  • 云记忆档案重复写入的问题修掉:内容一致时直接跳过,不再每次清只读锁重写一遍。

体验优化

  • 政策改为就地替换模板里原生的政策段,不再往文末追加第二份。
    单个模板从 46.9K 字降到 37.5K 字,客户端每轮少带一份政策。
  • 覆盖声明同样换进原生提醒段,替换掉出厂那份。
  • 没有政策段的模板(system-reminder 之类的短提醒,共 6 份)不再注入 ——
    往里塞整份政策只会冲掉它原本的语义。
  • 重复执行 --apply 判定为「已是最新」,不重复写盘。

其他变更

  • 云记忆写完后锁成只读,防止客户端把过期档案回写成空记忆。
  • --status 的目标数只统计真正该注入的文件,无政策段的模板单独标注跳过。

下载

  • pojia-modifier-windows-x64-setup.exe(安装版)
  • pojia-modifier-windows-x64.exe(单文件)
  • pojia-modifier.pyz(跨平台)

改完要完全退出客户端(含托盘)再重开,运行中的进程不会重新读磁盘上的配置。

破甲修改器 1.02-mod

Choose a tag to compare

@github-actions github-actions released this 08 Nov 14:53

破甲修改器 v1.02-mod

本次为紧急修复版本,处理上一版暴露出的两个问题。

问题修复

  • 修复升级后「破甲自检」仍回复上一代口令的问题:回复里的版本号与仓库地址停在更早的社区版,与当前这份对不上。
  • 原因:客户端模板里留着更早一个分支写下的自证说明,它不在本工具自己的标记范围内,历次注入只替换自己那一块,旧的部分一直没被清掉;两份同时存在时,可能命中旧的那条。
  • 现在注入前先清掉标记范围之外的旧自证说明,只保留当前这一份。
  • 已经装过老版本的机器,重新应用一次即可清干净,不需要手工改文件。
  • 修复测试版收不到同一系列稳定版的问题:装着 1.02.1-beta 时,1.02-mod 发布后没有任何升级提示。
  • 原因:稳定版的序号比它的上游测试版小(1.02 低于 1.02.1),只按数字比较会被判成更旧。
  • 现在同一系列里稳定版恒为新,两个方向都成立:稳定版不会被同系列测试版反推,测试版也能正常收到同系列稳定版。
  • 跨系列的版本比较保持原样,新线路的测试版照常提示。

其他变更

  • 版本号记为 1.02-mod。

下载

同一条 Release:Windows 安装版 / 便携单文件、Linux .run 与裸二进制、macOS 两个架构的
.command 与裸二进制,外加 SHA256SUMS.txt。

破甲修改器 1.01-mod

Choose a tag to compare

@github-actions github-actions released this 08 Nov 14:19

破甲修改器 v1.01-mod

作为 1.01 系列的首个稳定版本,本版本汇总了自 v1.01-beta 以来的主要用户相关变更。

新增功能

  • 命令行改为带引导的菜单,回车重画、输错提示,命令结束后给出下一步建议。
  • 不带参数启动直接进入图形界面,--menu 进入终端交互界面。
  • 菜单顶部显示现场扫描的目标统计,选择目标时逐项标注已装、已生效与过期状态。
  • 图形界面拆分为独立静态资源,左侧三页导航:一键破甲、运行记录、设置。
  • 更新分三档通道(开发 / 测试 / 稳定),后缀即通道,按已安装渠道决定默认收取范围。
  • 支持在界面与命令行(--settings "channel=mod")之间切换通道,并可关闭启动时检查更新。
  • --check-update 末尾输出机器可读的 #update {...},界面据此判断版本与通道。
  • 主界面新增结论条,显示成功、完成或失败;失败时摘出可定位的原文,并可跳转运行记录。
  • 设置页新增「检查更新」,支持手动检查、就地安装,并显示下载进度与升级日志。
  • 下载进度按已下载与总大小显示;服务端未提供长度时退化为已下载量。
  • 安装程序识别已安装的旧版本,欢迎页、任务栏、进度页与完成页统一显示「升级」及升降版本号。
  • 完成页新增默认勾选的「删除这个安装包」,仅删除程序自身发起升级所用的安装包。
  • 界面内升级时程序自动退出、替换文件并重新启动,页面提示当前页面可以关闭。

体验优化

  • 命令结束后的下一步提示仅在真实终端中出现,重定向到文件与界面面板中不输出。
  • 中文表格按显示宽度对齐,全角字符按两格计算。
  • 输出着色仅在标准输出为终端时启用,重定向、界面面板与 CI 中均为纯文本。
  • 预演统一为逐文件报路径,并注明新增或重写;前缀随模式区分「预演」与「完成」。
  • 预演汇总行改为「会改 N / 跳过 N / 失败 N」,不再表述为注入成功。
  • 撤回同样按逐文件报路径,并区分预演与实际执行。
  • 升级前清理上一版本遗留的下载文件,避免同名大文件堆积。
  • 升级失败后保留安装按钮,可直接重试而无需重新检查。
  • 成功与失败按退出码判定;只读动作(看现状、体检)即使提示需要处理也计为完成。
  • 升级等待设有上限,进程 15 秒内未退出即强制结束并继续换装。

问题修复

  • 修复 DSH 预设模式在打包版中始终失败的问题:块标量中的英文撇号被误判为引号,导致合规配置被判为不合格。
  • 修复未选择任何目标时报错的问题,all 与 * 按全选处理。
  • 修复更新提示不出现的问题:此前只读取正式版接口、版本号仅比较两段,且无法识别 -beta 等后缀。
  • 修复点击安装新版后无响应的问题:等待进程退出的脚本没有上限,界面也不会自行退出。
  • 修复通过安装程序安装的版本无法识别自身安装状态的问题,导致下载错误的包、附带目录失效、PATH 与卸载项不更新。
  • 修复静默安装无条件删除安装包的问题,导致构建产物缺失。
  • 修复全新安装后升级下载失败的问题:状态目录不存在时直接报错,已下载内容无法保存。
  • 修复从终端启动时升级长时间卡住的问题:进程检测调用了同名的非系统程序,触发整盘遍历。
  • 修复安装程序启动前的进程占用检查在部分环境下卡住的问题。

其他变更

  • 版本号改为三段制,安装包版本资源统一归一为四段数字,带后缀不再导致编译失败。
  • 发布流程按版本后缀自动标记预发布,稳定通道不再被提示升级到测试版。
  • 发布产物上传改为幂等并带重试,多平台并行发布时不再因重复创建发布页而漏发文件。
  • 界面进程通过环境变量告知核心仅在界面运行时输出下载进度行,命令行输出不受影响。
  • 产物暂未附带代码签名,Windows 显示「未知发布者」,macOS 首次打开需经 Gatekeeper 确认。

下载

同一条 Release:Windows 安装版 / 便携单文件、Linux .run 与裸二进制、macOS 两个架构的
.command 与裸二进制,外加 SHA256SUMS.txt。

破甲修改器 1.0-mod

Choose a tag to compare

@github-actions github-actions released this 08 Nov 10:08

破甲修改器 v1.0-mod

第一个公开发布版本。产物名 pojia-modifier。

它做什么

把你电脑上 17 个 AI 客户端「自己改不到的内置提示词」,换成你自己写的那一份。

  • 一份人格文本,17 个客户端通用 —— 不用各改各的。
  • 只做文本文件层面的替换 —— 不修改客户端本体,不删包、不写注册表、不装服务。破甲流程全程离线。
  • 改前先备份 —— 每个目标首次改动都写旁路备份;--revert 一键回原版。
  • 当场能自证 —— 客户端新会话里发一句 破甲自检,回一行就说明真载入了,不靠「感觉生效了」。

支持的目标:dsh wb wbintl zcode codex cursor claude antigravity qwen iflow trae codebuddy opencode windsurf cline copilot kiro。

下载哪个

平台 文件 说明
Windows x64 pojia-modifier-windows-x64-setup.exe 安装版,推荐。装到 %LOCALAPPDATA%\Programs\pojia-modifier,建开始菜单项与卸载项,全程不要 UAC
Windows x64 pojia-modifier-windows-x64.exe 便携单文件。双击即跑、什么都不装;每次启动自解包到 %TEMP%,个别安全软件会拦临时目录里的可执行文件
Linux x64 pojia-modifier-linux-x64-installer.run 装到 ~/.local/share/pojia-modifier,软链到 ~/.local/bin,带桌面项与 --uninstall
Linux x64 pojia-modifier-linux-x64 直接 chmod +x 后运行
macOS Intel pojia-modifier-macos-x64-installer.command 双击安装,同上装到 ~/.local/share/pojia-modifier
macOS Apple Silicon pojia-modifier-macos-arm64-installer.command 同上
三平台 pojia-modifier-<平台> 不装,直接跑

SHA256SUMS.txt 与所有产物发在同一条 Release 里,下载后可对照。

本次产物没有代码签名。 Windows 属性页会显示「未知发布者」,SmartScreen 可能提示一次;macOS 两个包未签名也未公证,从浏览器下载后首次双击会被 Gatekeeper 拦住 —— 右键「打开」,或 xattr -d com.apple.quarantine <文件> 之后正常双击。介意的请用源码运行。

装上先跑这三条

pojia-modifier --version              # 看得出是 pojia-modifier 就对了
pojia-modifier --status               # 只读:17 个目标各是什么状态
pojia-modifier --dry-run --apply      # 预演:只报要改哪些文件,一个字节都不写

确认没问题再去掉 --dry-run。不带任何参数启动 = 直接开图形界面(本机 127.0.0.1 + 随机 token 的网页 UI,关掉窗口即退出)。

边界

  • 只处理上面 17 个目标,其他客户端不扫、不动。
  • 只改文本文件,不破解授权、不生成注册码、不绕过任何付费校验。
  • 仅限在你自己有权管理的本机设备上使用。完整条款见 LICENSE 与 docs/disclaimer.md。

许可:MIT 正文 + Commons Clause(使用、修改、再分发、公司内部部署都不受限,只排除「售卖」)。