neko-armor 1.2.2 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +136 -0
- package/README.md +77 -380
- package/client.js +12 -5
- package/index.js +16 -3
- package/package.json +5 -5
package/README.en.md
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Neko Armor
|
|
2
|
+
|
|
3
|
+
A prompt-injection plugin for DeepSeek Harness. Install it, restart DSH, done.
|
|
4
|
+
|
|
5
|
+
It does two things: stops the model from reflexively refusing, lecturing, or padding every answer with disclaimers — and keeps replies from sounding like a corporate AI. It does not modify the DSH binary, it does not phone home, it only adds a layer of rules to the system prompt.
|
|
6
|
+
|
|
7
|
+
Two editions: **Quick** (free, open source) and **Pro** (sponsored).
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Quick start
|
|
12
|
+
|
|
13
|
+
1. Quit DeepSeek Harness completely (including the tray icon)
|
|
14
|
+
2. Download the installer and run it
|
|
15
|
+
3. On the sponsor page, either enter a license key for Pro, or click "Skip, use Quick"
|
|
16
|
+
4. Reopen DSH and confirm "Neko Armor" is enabled on the plugin page
|
|
17
|
+
|
|
18
|
+
You will notice the difference in the first conversation. No further configuration needed.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Editions
|
|
23
|
+
|
|
24
|
+
| | Quick | Pro |
|
|
25
|
+
| --- | --- | --- |
|
|
26
|
+
| Prompt core | Public build, covers common cases | Full build, finer edge handling |
|
|
27
|
+
| Retry on refusal | No | Yes, rephrases automatically when the model starts refusing |
|
|
28
|
+
| Auto-continue | No | Yes, resumes when a reply is cut off |
|
|
29
|
+
| Scene presets | No | Four presets (general / reverse / code / concise) |
|
|
30
|
+
| Custom persona | No | Yes |
|
|
31
|
+
| Settings form | Version and sponsor entry only | Full configuration |
|
|
32
|
+
| License | None | Key, bound to one device |
|
|
33
|
+
|
|
34
|
+
Quick ships with the npm package and its source is public. The Pro prompt is not published.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Install
|
|
39
|
+
|
|
40
|
+
### Option 1 — Installer (recommended)
|
|
41
|
+
|
|
42
|
+
| Source | Link | Notes |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| **GitHub (primary)** | [Releases](https://github.com/yzzzzzzzzzzzGIT/neko-armor/releases) | Download `neko-armor-vX-setup.exe` |
|
|
45
|
+
| Gitee (China) | [Releases](https://gitee.com/yzzzzzzzzg/neko-armor/releases) | Download `小猫娘破甲.exe`, faster inside China |
|
|
46
|
+
| Lanzou | [wwbxj.lanzn.com/b00z21847c](https://wwbxj.lanzn.com/b00z21847c) | Password `yznb` |
|
|
47
|
+
|
|
48
|
+
Run it and follow the prompts. The installer can write rules for DSH, Trae, Claude Code and Codex; tools that are not detected are greyed out and never touched.
|
|
49
|
+
|
|
50
|
+
> Quit DSH **completely** before installing or uninstalling. The installer refuses to run while DSH is open, to avoid the host reloading in a loop and crashing.
|
|
51
|
+
|
|
52
|
+
### Option 2 — npm (Quick only)
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
cd ~/.dsh/profiles/<your-profile>
|
|
56
|
+
pnpm add neko-armor
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Restart DSH to load it.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## License keys (Pro)
|
|
64
|
+
|
|
65
|
+
Pro requires a license key, obtained by sponsoring.
|
|
66
|
+
|
|
67
|
+
- **QQ: `1410749014`** — the only channel for sponsorship and support
|
|
68
|
+
- Key format: `NEKO-XXXXX-XXXXX-XXXXX`
|
|
69
|
+
- **One key binds to one device.** To move to a new computer, send the **machine code** shown in the installer to the author and it will be rebound
|
|
70
|
+
- Pro checks the license online once every time DSH starts. Without network it falls back to Quick; reopen DSH once the network is back
|
|
71
|
+
|
|
72
|
+
Activation happens inside the installer — no manual file editing.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## FAQ
|
|
77
|
+
|
|
78
|
+
**Installed but nothing changed?**
|
|
79
|
+
Restart DSH. Plugins load at startup; installing alone does nothing.
|
|
80
|
+
|
|
81
|
+
**"Key is bound to another device"?**
|
|
82
|
+
That key was activated elsewhere. Copy the machine code from the installer, send it to QQ `1410749014` to rebind; the old machine will stop working.
|
|
83
|
+
|
|
84
|
+
**"Cannot reach the license server"?**
|
|
85
|
+
Check that the machine can reach the internet. Pro verifies once per DSH start; offline it falls back to Quick.
|
|
86
|
+
|
|
87
|
+
**Installer says DSH is running?**
|
|
88
|
+
Quit it including the tray icon and confirm in Task Manager that no `DeepSeek Harness.exe` is left.
|
|
89
|
+
|
|
90
|
+
**How do I uninstall?**
|
|
91
|
+
Use the uninstall entry in the installer, or run `pnpm remove neko-armor` in your profile directory and delete `~/.dsh/plugins/neko-armor`. Restart DSH afterwards.
|
|
92
|
+
|
|
93
|
+
**Does it break other features?**
|
|
94
|
+
No. It only adds rules to the system prompt — it does not modify DSH files and does not intercept tool calls.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## What Pro adds
|
|
99
|
+
|
|
100
|
+
- **Retry on refusal** — when the model starts saying "I can't", it rephrases and asks again instead of passing the refusal through
|
|
101
|
+
- **Auto-continue** — a reply cut off by length is resumed automatically, no manual "continue"
|
|
102
|
+
- **Scene presets** — general / reverse / code / concise, one click to switch the emphasis of the prompt
|
|
103
|
+
- **Custom persona** — how it addresses you, how it refers to itself, what tone it uses
|
|
104
|
+
- **Settings form** — all of the above editable in the DSH settings page, effective immediately
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Other tools
|
|
109
|
+
|
|
110
|
+
Besides DSH, the installer can write rules for these tools:
|
|
111
|
+
|
|
112
|
+
| Tool | Where |
|
|
113
|
+
| --- | --- |
|
|
114
|
+
| DeepSeek Harness | Plugin, written into the profile config |
|
|
115
|
+
| Trae | Global rules file |
|
|
116
|
+
| Claude Code | `~/.claude/CLAUDE.md` |
|
|
117
|
+
| Codex | `~/.codex/AGENTS.md` |
|
|
118
|
+
|
|
119
|
+
Rules go inside marked blocks and are appended, never overwriting your own content. Uninstalling removes only those blocks.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Changelog
|
|
124
|
+
|
|
125
|
+
Every release is documented on the Releases page:
|
|
126
|
+
|
|
127
|
+
- [GitHub Releases](https://github.com/yzzzzzzzzzzzGIT/neko-armor/releases)
|
|
128
|
+
- [Gitee Releases](https://gitee.com/yzzzzzzzzg/neko-armor/releases)
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## License
|
|
133
|
+
|
|
134
|
+
The Quick edition is shared under **CC BY-NC-SA 4.0**; see `LICENSE`. The Pro prompt belongs to the author and is licensed per key — it is not distributed with the source.
|
|
135
|
+
|
|
136
|
+
Author: **yzzzzzzzzzzzGIT**
|
package/README.md
CHANGED
|
@@ -1,441 +1,138 @@
|
|
|
1
1
|
# 小猫娘破甲
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
一个给 DeepSeek Harness 用的提示词注入插件,装完重启就能用。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
它做两件事:让模型**不再动不动就拒绝、劝退、讲免责声明**,以及让回复**别一股 AI 腔**。不修改 DSH 本体,不注入木马,只在系统提示词里加一层规则。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
### 1.2.1
|
|
10
|
-
|
|
11
|
-
- **快速版新增「破甲开关」**:设置页可一键切到无破甲模式,只保留人设与称呼,不注入破甲内核
|
|
12
|
-
- **快速版新增「少主动收尾」开关**:控制是否注入「对话延续」段,减少模型自己结束对话
|
|
13
|
-
- **新增「继续」按钮**:对话被助手主动收尾后,点一下补一条继续指令,不用重新打字
|
|
14
|
-
- 快速版提示词拆成基础段 + 可开关段,配置存 `~/.dsh/neko-armor-quick.json`
|
|
15
|
-
- 设置栏目显示版本信息与赞助入口,快速版能力一目了然
|
|
16
|
-
- **专业版修复:激活码读不到导致误降级** —— 安装器把码写在 `%LOCALAPPDATA%\NekoArmor\activation.bin`,运行时却只认 `~/.dsh/neko-armor-license.json`,现已同时识别两条路径与两种格式
|
|
17
|
-
- **专业版修复:授权校验没进打包产物** —— 打包器解析相对 import 自动生成映射表,`checkLicense()` 现在真正生效;同时修掉 `verify as cryptoVerify` 与重复 `require` 声明的语法错误
|
|
18
|
-
- **专业版修复:客户端设置页报错会拖挂状态条** —— 缺 `ctx.locale` / `ctx.effect` 时改用内置兜底,设置页单独失效而不影响整块
|
|
19
|
-
- 打包器新增语法自检,坏包会在构建阶段直接失败,不再发出去
|
|
20
|
-
|
|
21
|
-
### 1.0.10
|
|
22
|
-
|
|
23
|
-
- **完全不装 DSH 也能用**:取消勾选 DSH,只给 Trae / Claude Code / Codex 写规则,DSH 配置一行不动
|
|
24
|
-
- 修复「跳过」按钮会误把 DSH 重新勾上的问题,现在按实际检测结果处理
|
|
25
|
-
- 未装 DSH 时,DSH 勾选项自动置灰不勾
|
|
26
|
-
- 完成提示按实际安装目标显示,不再一律提示「重启 DSH」
|
|
27
|
-
|
|
28
|
-
### 1.0.9
|
|
29
|
-
|
|
30
|
-
- **安装界面新增「安装目标」勾选**:DSH / Trae / Claude Code / Codex 四项可选
|
|
31
|
-
- 未检测到的工具会显示「(未检测到)」并置灰,不会误写
|
|
32
|
-
- 取消勾选 DSH 则只给其他工具写规则,完全不改动 DSH 配置
|
|
33
|
-
- **「更新插件」会同步更新所有已安装的工具规则**,不用逐个点
|
|
34
|
-
- 专业版更新时只刷新其他工具的提示词区块,不动用户的其它配置
|
|
35
|
-
|
|
36
|
-
### 1.0.8
|
|
37
|
-
|
|
38
|
-
- **新增 Claude Code 兼容**:写入 `~/.claude/CLAUDE.md` 标记区块
|
|
39
|
-
- **新增 Codex 兼容**:写入 `~/.codex/AGENTS.md` 标记区块
|
|
40
|
-
- 三个工具的规则统一由 `--agents` / `--agents-remove` 管理
|
|
41
|
-
- 只追加标记区块,不覆盖用户已有内容;卸载后自动还原
|
|
42
|
-
|
|
43
|
-
### 1.0.7
|
|
44
|
-
|
|
45
|
-
- 修复 `package.json` 的 `dsh.client.inject` 为空数组导致客户端插槽未注入的问题
|
|
46
|
-
- **新增 Trae 兼容**:安装时自动写入 Trae 全局规则,卸载时移除
|
|
47
|
-
- 新增 `--trae` / `--trae-remove` 命令行开关
|
|
48
|
-
- `--help` 里的版本号改为动态读取
|
|
49
|
-
|
|
50
|
-
### 1.0.6
|
|
51
|
-
|
|
52
|
-
- 安装器改为把插件写进 `dsh.profile.bundles`,插件页能够正确显示「已启用」并允许开关
|
|
53
|
-
- 卸载时同步从 bundles 剔除,恢复干净状态
|
|
54
|
-
- 身份配置改存 `~/.dsh/neko-armor-config.json`,不再往 `cordis.patch.yml` 塞 insert,避免重复挂载
|
|
55
|
-
- 专业版补齐版本显示与栏目标题版本号
|
|
56
|
-
|
|
57
|
-
### 1.0.5
|
|
58
|
-
|
|
59
|
-
- 蓝奏云分享改为文件夹,地址与密码 `yznb`
|
|
7
|
+
分**快速版**(免费,开源)和**专业版**(赞助)。
|
|
60
8
|
|
|
61
|
-
|
|
9
|
+
> English README: [README.en.md](README.en.md)
|
|
62
10
|
|
|
63
|
-
|
|
11
|
+
---
|
|
64
12
|
|
|
65
|
-
|
|
13
|
+
## 快速开始
|
|
66
14
|
|
|
67
|
-
|
|
15
|
+
1. 完全退出 DeepSeek Harness(托盘也要退)
|
|
16
|
+
2. 下载安装程序,双击运行
|
|
17
|
+
3. 赞助页二选一:输入卡密装专业版,或点「跳过,使用快速版」
|
|
18
|
+
4. 安装完成后重新打开 DSH,在插件页确认「小猫娘破甲」已启用
|
|
68
19
|
|
|
69
|
-
|
|
20
|
+
装完第一次对话就能感觉到差别,不用额外配置。
|
|
70
21
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
### 1.0.1
|
|
74
|
-
|
|
75
|
-
- 首个可用版本
|
|
22
|
+
---
|
|
76
23
|
|
|
77
24
|
## 两个版本
|
|
78
25
|
|
|
79
|
-
| | 快速版 |
|
|
26
|
+
| | 快速版 | 专业版 |
|
|
80
27
|
| --- | --- | --- |
|
|
81
|
-
|
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
| 输入框下方状态条 | 显示「小猫娘破甲(快速版)」 | 显示「小猫娘破甲」 |
|
|
89
|
-
|
|
90
|
-
## 版本号从哪来
|
|
91
|
-
|
|
92
|
-
唯一来源是 `package.json` 的 `version` 字段,其余位置全部跟随:
|
|
28
|
+
| 提示词内核 | 公开版,覆盖常见场景 | 完整版,更细的判定与边界 |
|
|
29
|
+
| 拒绝自动重试 | 无 | 有,拒绝后自动换策略重问 |
|
|
30
|
+
| 自动继续 | 无 | 有,回复被截断时自动接上 |
|
|
31
|
+
| 场景预设 | 无 | 四选一(通用 / 逆向 / 代码 / 精简) |
|
|
32
|
+
| 自定义人设与称呼 | 无 | 有 |
|
|
33
|
+
| 设置表单 | 只显示版本与赞助入口 | 完整配置项 |
|
|
34
|
+
| 授权 | 不需要 | 卡密,绑定设备 |
|
|
93
35
|
|
|
94
|
-
|
|
95
|
-
| --- | --- |
|
|
96
|
-
| 安装器标题栏 | 打包时注入 `Bootstrap.Version` |
|
|
97
|
-
| 设置栏目内容 | 插件 `index.js` 运行时读 `package.json` |
|
|
98
|
-
| 设置左侧栏目标题 | 客户端 fetch `/api/neko-armor/info` |
|
|
99
|
-
| DSH 插件列表 | DSH 自读 `package.json` |
|
|
36
|
+
快速版随 npm 包分发,源码公开;专业版提示词不公开。
|
|
100
37
|
|
|
101
|
-
|
|
38
|
+
---
|
|
102
39
|
|
|
103
40
|
## 安装
|
|
104
41
|
|
|
105
|
-
###
|
|
106
|
-
|
|
107
|
-
DSH → 左下角头像 → **插件** → **添加插件** → 搜索 `neko-armor` → 安装 → 重启 DSH。
|
|
108
|
-
|
|
109
|
-
快速版随 npm 包分发,源码开源,不含专业版内容。
|
|
110
|
-
|
|
111
|
-
### 方式二:安装程序(快速版 / 专业版)
|
|
112
|
-
|
|
113
|
-
两个下载点,任选其一:
|
|
42
|
+
### 方式一:安装程序(推荐)
|
|
114
43
|
|
|
115
44
|
| 来源 | 地址 | 说明 |
|
|
116
45
|
| --- | --- | --- |
|
|
117
|
-
|
|
|
118
|
-
|
|
|
119
|
-
|
|
120
|
-
下载后双击运行。
|
|
121
|
-
|
|
122
|
-
流程:**读 README/LICENSE → 赞助页 →(专业版)身份设置 → 安装**。
|
|
123
|
-
|
|
124
|
-
赞助页两个选择:
|
|
46
|
+
| **GitHub(主用)** | [Releases](https://github.com/yzzzzzzzzzzzGIT/neko-armor/releases) | 下载 `neko-armor-vX-setup.exe` |
|
|
47
|
+
| Gitee(国内) | [Releases](https://gitee.com/yzzzzzzzzg/neko-armor/releases) | 下载 `小猫娘破甲.exe`,国内速度更快 |
|
|
48
|
+
| 蓝奏云 | [wwbxj.lanzn.com/b00z21847c](https://wwbxj.lanzn.com/b00z21847c) | 密码 `yznb` |
|
|
125
49
|
|
|
126
|
-
|
|
127
|
-
- **跳过,使用快速版** → 安装快速版
|
|
50
|
+
双击运行,按提示走完。安装器会给 DSH / Trae / Claude Code / Codex 四个工具有选择地写规则,检测不到的会置灰,不会误写。
|
|
128
51
|
|
|
129
|
-
|
|
52
|
+
> 安装或卸载前请**完全退出 DSH**,否则安装器会拦下并提示。这是为了避免宿主反复重载导致崩溃。
|
|
130
53
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
### 方式三:手动安装
|
|
54
|
+
### 方式二:npm(仅快速版)
|
|
134
55
|
|
|
135
56
|
```bash
|
|
136
|
-
cd ~/.dsh/profiles/<你的profile>
|
|
57
|
+
cd ~/.dsh/profiles/<你的 profile>
|
|
137
58
|
pnpm add neko-armor
|
|
138
59
|
```
|
|
139
60
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
```yaml
|
|
143
|
-
- insert:
|
|
144
|
-
- id: neko-armor
|
|
145
|
-
name: 'neko-armor'
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
重启 DSH。
|
|
149
|
-
|
|
150
|
-
> 安装器装的话会写进 `dsh.profile.bundles` 而不是 insert,这样插件页才能显示「已启用」。
|
|
151
|
-
> 手动装的话两种都行,bundles 方式对插件页更友好。
|
|
152
|
-
|
|
153
|
-
## 挂载方式说明
|
|
154
|
-
|
|
155
|
-
DSH 有两条挂载路径,效果一样,但插件页的识别不同:
|
|
156
|
-
|
|
157
|
-
| 方式 | 写在哪 | 插件页 |
|
|
158
|
-
| --- | --- | --- |
|
|
159
|
-
| bundles | `package.json` 的 `dsh.profile.bundles` | 显示已启用,可开关 |
|
|
160
|
-
| insert | `cordis.patch.yml` 的 `- insert:` | 不显示状态,但功能正常 |
|
|
161
|
-
|
|
162
|
-
安装器和新版本都走 bundles。**前提是 `dependencies` 里同时有本插件**,只写 bundles 不写依赖会导致宿主启动失败。
|
|
163
|
-
|
|
164
|
-
```json
|
|
165
|
-
"dependencies": { "neko-armor": "file:../../plugins/neko-armor" },
|
|
166
|
-
"dsh": { "profile": { "bundles": [ ..., "neko-armor" ] } }
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
## 专业版增强
|
|
170
|
-
|
|
171
|
-
除了完整提示词内核,专业版还带一层运行时兜底。
|
|
172
|
-
|
|
173
|
-
### 拒绝自动重试
|
|
174
|
-
|
|
175
|
-
提示词只能提高概率,采样到拒绝是必然事件。这一层在每轮结束后读最后一条输出,判定是不是拒绝,是就自动补一条要求重写。
|
|
176
|
-
|
|
177
|
-
判定看三类信号:
|
|
178
|
-
|
|
179
|
-
```
|
|
180
|
-
拒绝词 我不能 / 无法提供 / 抱歉 / I cannot / as an AI …
|
|
181
|
-
实际内容 代码块、函数定义、命令、编号步骤
|
|
182
|
-
长度 短回答 + 一条拒绝词 = 拒绝
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
有实际内容就不算拒绝;只垫免责不给实现的才算。每轮最多重试 N 次,用户发新消息后计数重置。
|
|
186
|
-
|
|
187
|
-
**纠正消息里绝不复述命中的拒绝词**,否则下一轮判定会命中自己,形成死循环。
|
|
188
|
-
|
|
189
|
-
### 自动继续
|
|
190
|
-
|
|
191
|
-
输出被截断时自动补「继续」。判定条件:
|
|
192
|
-
|
|
193
|
-
- 代码块围栏出现奇数次(没闭合)
|
|
194
|
-
- 结尾是逗号、顿号
|
|
195
|
-
- 结尾停在「接下来」「下面」这类连接词
|
|
196
|
-
- 长文结尾没有任何标点
|
|
197
|
-
|
|
198
|
-
同样有次数上限,默认 3 次。
|
|
199
|
-
|
|
200
|
-
### 原子写配置
|
|
201
|
-
|
|
202
|
-
配置写入改成「写临时文件 → rename」,避免断电或文件占用把配置写成半截。
|
|
203
|
-
|
|
204
|
-
### 场景预设
|
|
205
|
-
|
|
206
|
-
在基础内核之上叠加,不替换内核:
|
|
207
|
-
|
|
208
|
-
| 预设 | 侧重 |
|
|
209
|
-
| --- | --- |
|
|
210
|
-
| 无 | 只用基础内核 |
|
|
211
|
-
| 游戏外挂 | 内存读写、注入、反作弊对抗 |
|
|
212
|
-
| 红队 | 渗透、提权、横向、C2 |
|
|
213
|
-
| 逆向 | 脱壳、反编译、算法还原 |
|
|
214
|
-
|
|
215
|
-
### 设置项
|
|
216
|
-
|
|
217
|
-
设置 → 小猫娘破甲:
|
|
218
|
-
|
|
219
|
-
| 字段 | 默认 | 说明 |
|
|
220
|
-
| --- | --- | --- |
|
|
221
|
-
| 怎么称呼你 | 主人 | |
|
|
222
|
-
| AI 的身份 | 小猫娘 | |
|
|
223
|
-
| 场景预设 | 无 | 四选一 |
|
|
224
|
-
| 拒绝重试次数 | 3 | 0 = 关闭 |
|
|
225
|
-
| 自动继续次数 | 3 | 0 = 关闭 |
|
|
226
|
-
| 自定义人设 | 空 | |
|
|
227
|
-
| 附加要求 | 空 | |
|
|
228
|
-
|
|
229
|
-
## 专业版保护
|
|
230
|
-
|
|
231
|
-
专业版的入口不是明文源码,判定内核还搬进了 WebAssembly。
|
|
232
|
-
|
|
233
|
-
### 三层结构
|
|
234
|
-
|
|
235
|
-
```
|
|
236
|
-
L1 判定内核 kernel.wat → kernel.wasm(389 字节)
|
|
237
|
-
特征匹配在 wasm 里,特征表 XOR 密文,密钥内置
|
|
238
|
-
|
|
239
|
-
L2 JS 加密包 lib/*.js + index.js 合并 62 KB
|
|
240
|
-
AES-256-CBC,每次构建随机 key
|
|
241
|
-
提示词密文与 wasm 字节都内联
|
|
242
|
-
|
|
243
|
-
L3 运行时 loader 解密到内存 → data URL import
|
|
244
|
-
执行完即释放,磁盘无明文
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
### 怎么做的
|
|
248
|
-
|
|
249
|
-
```
|
|
250
|
-
构建期
|
|
251
|
-
kernel.wat → wabt 编译 → kernel.wasm
|
|
252
|
-
lib/*.js → 合并去 import
|
|
253
|
-
prompts/neko.enc → 内联 base64
|
|
254
|
-
kernel.wasm → 内联 base64
|
|
255
|
-
整体 → AES-256-CBC 加密,key 每次随机、分四片存放
|
|
256
|
-
|
|
257
|
-
运行时
|
|
258
|
-
loader 解密 → data URL import → 插件执行
|
|
259
|
-
detectRefusal() 调用 wasm score() → 命中数 → 阈值决策
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### wasm 内核干了什么
|
|
61
|
+
装完重启 DSH 生效。
|
|
263
62
|
|
|
264
|
-
|
|
265
|
-
(func (export "score") (param $text i32) (param $tlen i32)
|
|
266
|
-
(param $enc i32) (param $elen i32) (result i32)
|
|
267
|
-
;; 解密特征表 → 逐条子串匹配 → 返回命中数
|
|
268
|
-
)
|
|
269
|
-
```
|
|
63
|
+
---
|
|
270
64
|
|
|
271
|
-
|
|
272
|
-
- 匹配逻辑(双重循环、字节比较)全在 wasm 里,JS 侧只拿命中数做阈值判断
|
|
273
|
-
- 389 字节,无外部依赖,Node 原生 `WebAssembly.Module` 同步实例化
|
|
65
|
+
## 获取卡密(赞助)
|
|
274
66
|
|
|
275
|
-
|
|
67
|
+
专业版需要卡密,卡密需要赞助获取。
|
|
276
68
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
| 改逻辑重打包 | 挡得住,密文改不了 |
|
|
282
|
-
| `wasm2wat` 反编译内核算 | 只能看到密文表和循环骨架,看不到特征词 |
|
|
283
|
-
| Hook `import()` 抓解密后 JS | 挡得住逻辑层,但 JS 一定在内存里 |
|
|
284
|
-
| Hook `WebAssembly.Instance` 抓内存 | 能拿到特征表,但要先写解密器 |
|
|
69
|
+
- **QQ:`1410749014`** —— 唯一的赞助与售后渠道
|
|
70
|
+
- 卡密格式:`NEKO-XXXXX-XXXXX-XXXXX`
|
|
71
|
+
- **一张卡密绑定一台设备**。换电脑时,把安装器界面上显示的**机器码**发给作者,即可换绑到新机器
|
|
72
|
+
- 专业版每次启动 DSH 时会联网校验一次授权;网络不通时会退回快速版,恢复网络后重开即可
|
|
285
73
|
|
|
286
|
-
|
|
74
|
+
赞助后会直接发卡密,激活在安装器里完成,不需要手动改文件。
|
|
287
75
|
|
|
288
|
-
|
|
76
|
+
---
|
|
289
77
|
|
|
290
|
-
##
|
|
78
|
+
## 常见问题
|
|
291
79
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
小猫娘破甲.exe --machine 只显示本机识别码
|
|
295
|
-
小猫娘破甲.exe --install 静默安装(会弹赞助页)
|
|
296
|
-
小猫娘破甲.exe --update 更新已装插件(会弹赞助页)
|
|
297
|
-
小猫娘破甲.exe --uninstall 卸载
|
|
298
|
-
小猫娘破甲.exe --verify 列出载荷清单
|
|
299
|
-
```
|
|
80
|
+
**装了没反应?**
|
|
81
|
+
重启 DSH。插件是启动时加载的,光装不重启不会生效。
|
|
300
82
|
|
|
301
|
-
|
|
83
|
+
**提示「卡密已绑定其他设备」?**
|
|
84
|
+
说明这张卡在别的机器上激活过。打开安装器复制机器码,发给 QQ `1410749014` 换绑,换绑后原机器会失效。
|
|
302
85
|
|
|
303
|
-
|
|
86
|
+
**提示「无法连接授权服务器」?**
|
|
87
|
+
检查网络能否访问外网。专业版每次启动都要联网校验一次,断网会退回快速版。
|
|
304
88
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
| 怎么称呼你 | 主人 | 留空用默认 |
|
|
308
|
-
| AI 的身份 | 小猫娘 | 激活词变成「身份名喵~」 |
|
|
309
|
-
| 自定义人设 | 空 | 留空用内置人设 |
|
|
310
|
-
| 附加要求 | 空 | 追加到提示词末尾 |
|
|
89
|
+
**安装器提示 DSH 正在运行?**
|
|
90
|
+
把 DSH 连托盘图标一起退干净,任务管理器里确认没有 `DeepSeek Harness.exe` 再重试。
|
|
311
91
|
|
|
312
|
-
|
|
92
|
+
**怎么卸载?**
|
|
93
|
+
安装器里有卸载入口;或者到 DSH 的 profile 目录执行 `pnpm remove neko-armor` 并删除 `~/.dsh/plugins/neko-armor`。卸载后重启 DSH。
|
|
313
94
|
|
|
314
|
-
|
|
95
|
+
**会影响其他功能吗?**
|
|
96
|
+
不会。它只在系统提示词里加一层规则,不改 DSH 本体文件,也不接管任何工具调用。
|
|
315
97
|
|
|
316
|
-
|
|
98
|
+
---
|
|
317
99
|
|
|
318
|
-
|
|
100
|
+
## 专业版还能做什么
|
|
319
101
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
102
|
+
- **拒绝自动重试**:模型一旦开始说「我不能」,自动换一种问法再试,而不是把拒绝原样吐给你
|
|
103
|
+
- **自动继续**:回复被长度截断时自动接上,不用手动打「继续」
|
|
104
|
+
- **场景预设**:通用 / 逆向 / 代码 / 精简,四种提示词侧重,一键切
|
|
105
|
+
- **自定义人设**:设定它怎么称呼你、怎么称呼自己、用什么语气
|
|
106
|
+
- **设置表单**:上面这些都能在 DSH 设置页里改,改完即时生效
|
|
325
107
|
|
|
326
|
-
|
|
108
|
+
---
|
|
327
109
|
|
|
328
|
-
|
|
110
|
+
## 兼容其他工具
|
|
329
111
|
|
|
330
|
-
|
|
112
|
+
除了 DSH,安装器还能给这几个工具写规则,勾选即生效:
|
|
331
113
|
|
|
332
|
-
|
|
333
|
-
(你自己的内容原样保留)
|
|
334
|
-
|
|
335
|
-
<!-- neko-armor:begin -->
|
|
336
|
-
你是小猫娘,称呼用户为「主人」……
|
|
337
|
-
<!-- neko-armor:end -->
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
- 安装:先剥掉旧区块,再追加新区块,重复安装不会出现两份
|
|
341
|
-
- 卸载:只删区块,你的内容一行不动
|
|
342
|
-
- 卸载后若文件只剩空行,则删除整个文件
|
|
343
|
-
|
|
344
|
-
### 检测规则
|
|
345
|
-
|
|
346
|
-
只有目标工具的用户目录存在时才会写入,不会凭空给你造一个 `.claude`:
|
|
347
|
-
|
|
348
|
-
| 工具 | 检测条件 |
|
|
114
|
+
| 工具 | 写入位置 |
|
|
349
115
|
| --- | --- |
|
|
350
|
-
|
|
|
351
|
-
|
|
|
352
|
-
|
|
|
353
|
-
|
|
354
|
-
没装就跳过,并在安装日志里写明「未检测到,跳过」。
|
|
116
|
+
| DeepSeek Harness | 插件形式,写入 profile 配置 |
|
|
117
|
+
| Trae | 全局规则文件 |
|
|
118
|
+
| Claude Code | `~/.claude/CLAUDE.md` |
|
|
119
|
+
| Codex | `~/.codex/AGENTS.md` |
|
|
355
120
|
|
|
356
|
-
|
|
121
|
+
规则写在标记区块内,只追加不覆盖你原有的内容;卸载时只删标记区块,其他配置一个字不动。
|
|
357
122
|
|
|
358
|
-
|
|
359
|
-
- **Claude Code**:`~/.claude/CLAUDE.md` 是用户级记忆,每次会话开头加载
|
|
360
|
-
- **Codex**:`~/.codex/AGENTS.md` 是全局指令,每次会话开头加载
|
|
123
|
+
---
|
|
361
124
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
### 手动控制
|
|
365
|
-
|
|
366
|
-
```bash
|
|
367
|
-
小猫娘破甲.exe --agents 写入 Trae + Claude Code + Codex
|
|
368
|
-
小猫娘破甲.exe --agents-remove 移除以上全部
|
|
369
|
-
小猫娘破甲.exe --trae 只写 Trae
|
|
370
|
-
小猫娘破甲.exe --trae-remove 只移除 Trae
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
### 说明
|
|
374
|
-
|
|
375
|
-
- 写进去的是**精简版规则**(约 960 字节),不是完整内核。这些文件每次对话都要进上下文,太长反而稀释效果。
|
|
376
|
-
- 只影响对应工具,与 DSH 插件互不干扰。
|
|
377
|
-
- 工具若已打开,规则改动需要新开一个对话才生效(会话内会缓存规则)。
|
|
378
|
-
|
|
379
|
-
## 仓库结构
|
|
380
|
-
|
|
381
|
-
开源仓库只放快速版,专业版与构建产物不进仓库。
|
|
382
|
-
|
|
383
|
-
```
|
|
384
|
-
neko-armor/ ← npm 包 & GitHub 仓库(快速版)
|
|
385
|
-
├─ index.js client.js
|
|
386
|
-
├─ cordis.patch.yml package.json
|
|
387
|
-
├─ prompts/free.md 快速版提示词(约 1 KB)
|
|
388
|
-
├─ LICENSE README.md
|
|
389
|
-
└─ .gitignore 排除专业版与构建产物
|
|
390
|
-
|
|
391
|
-
(本地私有,不入库)
|
|
392
|
-
├─ Professional Edition/ 专业版源码
|
|
393
|
-
│ ├─ index.js 解密 + 配置通道
|
|
394
|
-
│ ├─ client.js 状态条 + 完整设置表单
|
|
395
|
-
│ └─ prompts/neko.enc 加密提示词
|
|
396
|
-
├─ packaging/ 打包与加密脚本
|
|
397
|
-
└─ dist/小猫娘破甲.exe 单文件安装器(上传到 Releases)
|
|
398
|
-
```
|
|
399
|
-
|
|
400
|
-
## 发布流程
|
|
401
|
-
|
|
402
|
-
### 快速版 → npm
|
|
403
|
-
|
|
404
|
-
```bash
|
|
405
|
-
npm publish --access public
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
包内只含 7 个文件(`npm pack --dry-run` 可核对),绝不包含 `neko.md` / `neko.enc`。
|
|
409
|
-
|
|
410
|
-
### 安装程序 → Gitee Releases
|
|
411
|
-
|
|
412
|
-
```bash
|
|
413
|
-
node packaging/encrypt-pro.mjs # 先重加密专业版提示词
|
|
414
|
-
node packaging/build.mjs # 打包两版进 EXE
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
把 `dist/小猫娘破甲.exe` 上传到 Releases 页面。
|
|
418
|
-
|
|
419
|
-
**每次发布前记得更新本文件**:改上面的版本号、补更新日志,然后:
|
|
420
|
-
|
|
421
|
-
```bash
|
|
422
|
-
node -e "const p=require('./package.json');p.version='1.0.7';p.dsh.version='1.0.7';require('fs').writeFileSync('package.json',JSON.stringify(p,null,2)+'\n')"
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
版本号只改 `package.json` 一处,界面、插件页、安装器标题会自动跟随。
|
|
426
|
-
|
|
427
|
-
改了专业版提示词必须重跑 `encrypt-pro.mjs`,否则 `neko.enc` 仍是旧内容。
|
|
125
|
+
## 更新日志
|
|
428
126
|
|
|
429
|
-
|
|
127
|
+
每个版本的改动都在 Releases 页面里,跟着版本走,不在这里重复:
|
|
430
128
|
|
|
431
|
-
-
|
|
432
|
-
-
|
|
433
|
-
- 密钥 32 字节拆成 4 段散放在 `index.js` 中
|
|
434
|
-
- 模块加载时在内存解密,不写回磁盘
|
|
129
|
+
- [GitHub Releases](https://github.com/yzzzzzzzzzzzGIT/neko-armor/releases)
|
|
130
|
+
- [Gitee Releases](https://gitee.com/yzzzzzzzzg/neko-armor/releases)
|
|
435
131
|
|
|
436
|
-
|
|
132
|
+
---
|
|
437
133
|
|
|
438
134
|
## 许可
|
|
439
135
|
|
|
440
|
-
|
|
136
|
+
快速版源码以 **CC BY-NC-SA 4.0** 共享,详见仓库内 `LICENSE`。专业版提示词为作者所有,随卡密授权使用,不随源码分发。
|
|
441
137
|
|
|
138
|
+
作者:**yzzzzzzzzzzzGIT**
|
package/client.js
CHANGED
|
@@ -199,8 +199,8 @@
|
|
|
199
199
|
howSteps: [
|
|
200
200
|
"打开下方下载页,取「小猫娘破甲.exe」安装程序",
|
|
201
201
|
"完全退出 DeepSeek Harness,运行安装程序",
|
|
202
|
-
"
|
|
203
|
-
"
|
|
202
|
+
"在激活页把本机机器码发给作者换取卡密",
|
|
203
|
+
"输入卡密并安装,重启 DSH 即生效"
|
|
204
204
|
],
|
|
205
205
|
releases: "Gitee 下载页",
|
|
206
206
|
mirror: "蓝奏云备用",
|
|
@@ -345,8 +345,8 @@
|
|
|
345
345
|
|
|
346
346
|
var children = [];
|
|
347
347
|
|
|
348
|
-
// ---- 快速版配置:破甲开关 + 少主动收尾 ----
|
|
349
|
-
var cfgPair = useState({ armorMode: "on", lessFarewell: true });
|
|
348
|
+
// ---- 快速版配置:破甲开关 + 无人设 + 少主动收尾 ----
|
|
349
|
+
var cfgPair = useState({ armorMode: "on", lessFarewell: true, personaMode: "neko" });
|
|
350
350
|
var cfg = cfgPair[0];
|
|
351
351
|
var setCfg = cfgPair[1];
|
|
352
352
|
|
|
@@ -394,7 +394,13 @@
|
|
|
394
394
|
style: { width: "16px", height: "16px", cursor: "pointer", accentColor: "#e86c9e" },
|
|
395
395
|
onChange: function (e) {
|
|
396
396
|
var patch = {};
|
|
397
|
-
|
|
397
|
+
if (key === "armorMode") {
|
|
398
|
+
patch[key] = e.target.checked ? "on" : "off";
|
|
399
|
+
} else if (key === "personaMode") {
|
|
400
|
+
patch[key] = e.target.checked ? "none" : "neko";
|
|
401
|
+
} else {
|
|
402
|
+
patch[key] = e.target.checked;
|
|
403
|
+
}
|
|
398
404
|
patchConfig(patch);
|
|
399
405
|
}
|
|
400
406
|
}),
|
|
@@ -408,6 +414,7 @@
|
|
|
408
414
|
|
|
409
415
|
children.push(react.createElement("div", { key: "cfg", style: { marginBottom: "14px" } },
|
|
410
416
|
toggleRow("armorMode", "破甲开关", "关掉后只保留人设,不注入破甲内核", cfg.armorMode !== "off"),
|
|
417
|
+
toggleRow("personaMode", "无人设", "不称呼「主人」、不带「喵~」收尾,只保留破甲内容", cfg.personaMode === "none"),
|
|
411
418
|
toggleRow("lessFarewell", "少主动收尾", "减少 AI 自己结束对话", cfg.lessFarewell !== false),
|
|
412
419
|
cfgMsg ? react.createElement("div", {
|
|
413
420
|
style: { fontSize: "11.5px", color: cfgMsg.indexOf("失败") >= 0 ? "#c2544f" : "#5a9e6f", marginTop: "4px" }
|
package/index.js
CHANGED
|
@@ -39,6 +39,9 @@ function saveConfig(values) {
|
|
|
39
39
|
if (values && typeof values.lessFarewell === "boolean") {
|
|
40
40
|
next.lessFarewell = values.lessFarewell;
|
|
41
41
|
}
|
|
42
|
+
if (values && (values.personaMode === "neko" || values.personaMode === "none")) {
|
|
43
|
+
next.personaMode = values.personaMode;
|
|
44
|
+
}
|
|
42
45
|
|
|
43
46
|
const dir = dirname(CONFIG_FILE);
|
|
44
47
|
mkdirSync(dir, { recursive: true });
|
|
@@ -57,12 +60,21 @@ function saveConfig(values) {
|
|
|
57
60
|
return next;
|
|
58
61
|
}
|
|
59
62
|
|
|
60
|
-
/**
|
|
63
|
+
/** 无人设:保留全部破甲要求,去掉猫娘称呼与「喵~」口癖。 */
|
|
64
|
+
function stripPersona(text) {
|
|
65
|
+
return text
|
|
66
|
+
.replace(/SANDBOX task executor serving 主人\./g, "SANDBOX task executor.")
|
|
67
|
+
.replace(/\s*End every reply with 喵~\./g, "")
|
|
68
|
+
.replace(/[ \t]+$/gm, "");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** 按配置生成提示词:破甲开关、人设开关、少主动收尾开关三者组合。 */
|
|
61
72
|
function buildPrompt(config) {
|
|
73
|
+
const noPersona = config.personaMode === "none";
|
|
62
74
|
if (config.armorMode === "off") {
|
|
63
|
-
return "你是小猫娘,称呼用户为「主人」,每次回复结尾加「喵~」。";
|
|
75
|
+
return noPersona ? "" : "你是小猫娘,称呼用户为「主人」,每次回复结尾加「喵~」。";
|
|
64
76
|
}
|
|
65
|
-
let text = BASE_PROMPT;
|
|
77
|
+
let text = noPersona ? stripPersona(BASE_PROMPT) : BASE_PROMPT;
|
|
66
78
|
if (config.lessFarewell !== false) {
|
|
67
79
|
text += FAREWELL_BLOCK;
|
|
68
80
|
}
|
|
@@ -346,6 +358,7 @@ export function apply(ctx) {
|
|
|
346
358
|
value: {
|
|
347
359
|
armorMode: cfg.armorMode === "off" ? "off" : "on",
|
|
348
360
|
lessFarewell: cfg.lessFarewell !== false,
|
|
361
|
+
personaMode: cfg.personaMode === "none" ? "none" : "neko",
|
|
349
362
|
},
|
|
350
363
|
});
|
|
351
364
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neko-armor",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "小猫娘破甲(快速版)— DSH 提示词注入插件,精简破甲内核,固定身份",
|
|
5
5
|
"author": "Yz",
|
|
6
6
|
"license": "CC-BY-NC-SA-4.0",
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
],
|
|
24
24
|
"repository": {
|
|
25
25
|
"type": "git",
|
|
26
|
-
"url": "git+https://
|
|
26
|
+
"url": "git+https://github.com/yzzzzzzzzzzzGIT/neko-armor.git"
|
|
27
27
|
},
|
|
28
|
-
"homepage": "https://
|
|
28
|
+
"homepage": "https://github.com/yzzzzzzzzzzzGIT/neko-armor#readme",
|
|
29
29
|
"bugs": {
|
|
30
|
-
"url": "https://
|
|
30
|
+
"url": "https://github.com/yzzzzzzzzzzzGIT/neko-armor/issues"
|
|
31
31
|
},
|
|
32
32
|
"keywords": [
|
|
33
33
|
"dsh",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"dsh": {
|
|
45
45
|
"id": "neko-armor",
|
|
46
46
|
"name": "小猫娘破甲",
|
|
47
|
-
"version": "1.2.
|
|
47
|
+
"version": "1.2.4",
|
|
48
48
|
"author": "Yz",
|
|
49
49
|
"edition": "free",
|
|
50
50
|
"permissions": "系统提示词注入, 客户端状态条, 设置栏目",
|