@liustack/modlens 2.7.11 → 3.0.0
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/CHANGELOG.md +186 -0
- package/README.md +137 -146
- package/README.zh-CN.md +142 -151
- package/SECURITY.md +17 -0
- package/dist/main.js +798 -401
- package/docs/commit.md +76 -0
- package/docs/harness-setup.md +43 -0
- package/docs/research-gemini-claude-skills.md +48 -0
- package/docs/security.md +31 -0
- package/docs/testing.md +29 -0
- package/docs/troubleshooting.md +132 -0
- package/package.json +13 -4
- package/skills/modlens/references/configure.md +2 -0
package/README.zh-CN.md
CHANGED
|
@@ -1,223 +1,214 @@
|
|
|
1
|
-
<
|
|
2
|
-
<img src="https://raw.githubusercontent.com/liustack/modlens/main/assets/banner.jpg" width="100%" alt="ModLens
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
</
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/liustack/modlens/main/assets/banner.jpg" width="100%" alt="ModLens" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">ModLens</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center"><b>给纯文本模型装上视力,而且你直接粘贴就行。</b></p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="./README.md">English</a> ·
|
|
11
|
+
<a href="docs/troubleshooting.md">故障排查</a> ·
|
|
12
|
+
<a href="skills/modlens/references/configure.md">配置</a> ·
|
|
13
|
+
<a href="skills/modlens/references/output-schema.md">输出契约</a> ·
|
|
14
|
+
<a href="docs/security.md">安全</a> ·
|
|
15
|
+
<a href="https://github.com/liustack/modsearch">ModSearch(联网)</a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="https://www.npmjs.com/package/@liustack/modlens"><img src="https://img.shields.io/npm/v/@liustack/modlens?style=flat-square&label=npm&color=cb3837" alt="npm"></a>
|
|
20
|
+
<a href="https://github.com/liustack/modlens/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/liustack/modlens/ci.yml?branch=main&style=flat-square&label=ci" alt="CI"></a>
|
|
21
|
+
<a href="https://nodejs.org"><img src="https://img.shields.io/node/v/@liustack/modlens?style=flat-square" alt="Node.js"></a>
|
|
22
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License"></a>
|
|
23
|
+
</p>
|
|
11
24
|
|
|
12
|
-
|
|
25
|
+
```bash
|
|
26
|
+
npx -y skills add liustack/modlens # 装 skill
|
|
27
|
+
npx @liustack/modlens -i screenshot.png # 或者直接当 CLI 用
|
|
28
|
+
```
|
|
13
29
|
|
|
14
|
-
ModLens
|
|
30
|
+
DeepSeek-V4-Flash 这类模型便宜、快、能打,唯独看不见图。你甩过去一张报错截图,它一片漆黑。ModLens 把图交给真正的视觉引擎,带回你的模型能引用的证据:图里的字一句不落地转录,版面切好,读不准的地方明说。而且**你直接粘贴就行**:别的方案都要你先存成文件再报路径,ModLens 直接从会话存储里把粘贴的图捞回来。
|
|
15
31
|
|
|
16
|
-
|
|
32
|
+
## 亮点
|
|
17
33
|
|
|
18
|
-
|
|
34
|
+
- **粘贴就能用。** 粘贴的图从来不会落成文件,所以别的识图外挂都接不住。ModLens 换了条路,从 harness 的本地会话存储里捞。
|
|
35
|
+
- **给的是证据,不是印象。** 全文转录、版面按阅读顺序切块、实体和关系单列。模型引用的是具体内容,不是大概感觉。
|
|
36
|
+
- **读不准就说读不准。** 拿不准的地方进 `uncertainty`。像素坐标和置信度分数这两样视觉模型最爱编的字段,v2 直接删了。
|
|
37
|
+
- **模型不用换。** 你选 DeepSeek 图的是价格和推理,不是视力,这个选择不用动。
|
|
38
|
+
- **零 key 起步。** 默认引擎 Antigravity CLI 不要 key;领个免费 Gemini key,识图缩到 5 到 10 秒。
|
|
39
|
+
- **一次装好,处处能用。** Claude Code、Codex、Pi、OpenCode 都在真机上验证过。
|
|
19
40
|
|
|
20
|
-
##
|
|
41
|
+
## 安装
|
|
21
42
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
```text
|
|
25
|
-
安装这个 skill https://github.com/liustack/modlens
|
|
43
|
+
```bash
|
|
44
|
+
npx -y skills add liustack/modlens
|
|
26
45
|
```
|
|
27
46
|
|
|
28
|
-
|
|
47
|
+
或者跟你的 agent 说一句「安装这个 skill https://github.com/liustack/modlens」。
|
|
29
48
|
|
|
30
|
-
|
|
49
|
+
再给它一个视觉引擎。推荐 **[AI Studio](https://aistudio.google.com) 的免费 Gemini key**(三分钟,不要信用卡,识图 5 到 10 秒):
|
|
31
50
|
|
|
32
51
|
```bash
|
|
33
52
|
modlens config set gemini-api.apiKey <key>
|
|
34
53
|
modlens config set provider gemini-api
|
|
35
54
|
```
|
|
36
55
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
**三、直接用。** 粘一张图,或者甩个图片路径,随便问。skill 自己会触发。
|
|
40
|
-
|
|
41
|
-
环境要求就一行:Node 18+(OpenCode 的粘贴恢复需要 22.5+),macOS 或 Linux。
|
|
42
|
-
|
|
43
|
-
## 粘贴这件事,为什么只有它接得住
|
|
44
|
-
|
|
45
|
-
粘贴从头到尾是客户端办的事。图一进对话框就被转码发走,识图类 MCP server 连插手的机会都没有,所以它们的文档只能教你:先存文件,再报路径。
|
|
46
|
-
|
|
47
|
-
ModLens 走的是另一条路。图片字节在发给模型之前,早被 harness 原样写进了本地会话存储。skill 直接去那儿把它捞回来落成文件,喂给视觉引擎。你什么都不用做,模型拿到的是完整图片,而不是一句「麻烦告诉我路径」。
|
|
56
|
+
不想注册就用 **Antigravity CLI**,零 key,代价是慢(15 到 40 秒)且免费额度紧:
|
|
48
57
|
|
|
49
|
-
|
|
58
|
+
```bash
|
|
59
|
+
curl -fsSL https://antigravity.google/cli/install.sh | bash && agy # 浏览器登录后退出
|
|
60
|
+
```
|
|
50
61
|
|
|
51
|
-
|
|
52
|
-
| :-- | :-- | :-- | :-- |
|
|
53
|
-
| 你选的模型 | 得换掉 | 不用换 | 不用换 |
|
|
54
|
-
| 粘贴进对话的图 | 模型支持就能看 | 接不住,得先存文件报路径 | 直接接住 |
|
|
55
|
-
| 拿到手的是什么 | 模型自己的理解 | 通常一段描述 | 全文转录、版面区块、实体关系、视觉线索 |
|
|
56
|
-
| 读不准的地方 | 可能编 | 可能编 | 进 `uncertainty`,明说读不准 |
|
|
57
|
-
| 花费 | 多模态模型的价格 | 多数按 API 计费 | agy 免费额度,或免费 Gemini key |
|
|
58
|
-
| 上手 | 改配置换模型 | 装 server、改配置 | 一个 CLI 或一个 skill |
|
|
62
|
+
需要 Node 22.13+,macOS 或 Linux。
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
## 用法
|
|
61
65
|
|
|
62
|
-
|
|
66
|
+
装完 skill 就不用记命令:粘一张图或甩个图片路径,问什么都行,skill 自己触发。手动用:
|
|
63
67
|
|
|
64
68
|
```bash
|
|
65
|
-
|
|
69
|
+
modlens -i screenshot.png # 本地图片
|
|
70
|
+
modlens -i https://example.com/chart.png # 远程图片
|
|
71
|
+
modlens -i chart.png --prompt "重点看数据轴" # 指定关注点
|
|
72
|
+
modlens recover-paste # 把刚粘贴的图捞成文件
|
|
66
73
|
```
|
|
67
74
|
|
|
68
|
-
|
|
75
|
+
输出是结构固定的 JSON:
|
|
69
76
|
|
|
70
77
|
```json
|
|
71
78
|
{
|
|
72
|
-
"image": "/
|
|
73
|
-
"provider": "
|
|
79
|
+
"image": "/path/to/screenshot.png",
|
|
80
|
+
"provider": "gemini-api",
|
|
74
81
|
"result": {
|
|
75
|
-
"summary": "
|
|
76
|
-
"ocr": {
|
|
77
|
-
|
|
78
|
-
"lines": [
|
|
79
|
-
{ "language": "en", "text": "/shaping" },
|
|
80
|
-
{ "language": "en", "text": "BEFORE YOU BUILD" }
|
|
81
|
-
]
|
|
82
|
-
},
|
|
83
|
-
"layout": {
|
|
84
|
-
"regions": [
|
|
85
|
-
{
|
|
86
|
-
"reading_order": 1,
|
|
87
|
-
"text": "/shaping BEFORE YOU BUILD",
|
|
88
|
-
"type": "other"
|
|
89
|
-
}
|
|
90
|
-
]
|
|
91
|
-
},
|
|
82
|
+
"summary": "四个节点的工作流图,箭头带标注。",
|
|
83
|
+
"ocr": { "full_text": "/shaping\nBEFORE YOU BUILD\n...", "lines": [] },
|
|
84
|
+
"layout": { "regions": [{ "reading_order": 1, "type": "title", "text": "/shaping" }] },
|
|
92
85
|
"uncertainty": []
|
|
93
86
|
},
|
|
94
|
-
"meta": {
|
|
87
|
+
"meta": {
|
|
88
|
+
"generatedAt": "2026-08-06T12:00:00.000Z",
|
|
89
|
+
"model": "gemini-3.6-flash",
|
|
90
|
+
"conversationId": null,
|
|
91
|
+
"durationSeconds": 6.4,
|
|
92
|
+
"usage": { "promptTokenCount": 1234, "candidatesTokenCount": 567 }
|
|
93
|
+
}
|
|
95
94
|
}
|
|
96
95
|
```
|
|
97
96
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-

|
|
101
|
-
|
|
102
|
-
批量也不在话下:一次丢三张插画进去,模型自己说「三张图我都用 modlens 视觉桥接逐张读取」,21 秒后逐张交卷,连画面的设计意图都点出来了。
|
|
103
|
-
|
|
104
|
-

|
|
105
|
-
|
|
106
|
-
压力测试:一张 128 个模型的智能对成本散点图。ModLens 读出双轴、对数刻度,把高亮的 DeepSeek V4 Flash 精准拎出来(成本约 $0.028、智能指数 50),还讲明白了性价比斩杀线。密集图表是识图模型最容易露怯的地方,这一关它扛住了。
|
|
107
|
-
|
|
108
|
-

|
|
109
|
-
|
|
110
|
-
## CLI 参数
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
modlens -i <图片路径或 URL> [选项]
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
| 参数 | 含义 | 默认值 |
|
|
117
|
-
| :------------------------ | :-------------------------------- | :--------------------- |
|
|
118
|
-
| `-i, --input <path\|url>` | 要解析的图片(必填) | |
|
|
119
|
-
| `-o, --output <path>` | 同时把 JSON 写入文件 | |
|
|
120
|
-
| `-m, --model <name>` | provider 模型 | `gemini-3.6-flash-low` |
|
|
121
|
-
| `-p, --provider <name>` | 视觉 provider | `antigravity-cli` |
|
|
122
|
-
| `--prompt <text>` | 额外关注点,比如 `"重点提取表格"` | |
|
|
123
|
-
| `--timeout <ms>` | provider 超时 | `180000` |
|
|
124
|
-
| `--provider-bin <path>` | provider 可执行文件 | `agy` |
|
|
125
|
-
| `--workdir <path>` | provider 运行目录 | |
|
|
97
|
+
`meta` 记录这份结果是怎么来的:生成时间(`generatedAt`)、用的 `model`、provider 给的 `conversationId`(没有就是 null)、实际耗时 `durationSeconds`、以及 provider 报告的原始 `usage`(结构随 provider 而定,没有就是 null)。
|
|
126
98
|
|
|
127
|
-
|
|
99
|
+
## 实测
|
|
128
100
|
|
|
129
|
-
|
|
101
|
+
以下全是原样实录,驱动的都是纯文本的 DeepSeek-V4-Flash。
|
|
130
102
|
|
|
131
|
-
|
|
132
|
-
modlens recover-paste # 捞最新一张,路径以 JSON 打印
|
|
133
|
-
modlens recover-paste --count 3 # 捞最近三张
|
|
134
|
-
modlens recover-paste --session <id> # 精确会话(skill 会传 ${CLAUDE_SESSION_ID})
|
|
135
|
-
modlens recover-paste --harness pi # 强制按某家宿主的格式解析
|
|
136
|
-
# --transcript <path> 优先级最高,--cwd <dir> 指定项目目录
|
|
137
|
-
```
|
|
103
|
+
Codex 桌面 App 里丢一张推文截图。配文、互动数据(2.9K 回复、270K 点赞、5M 浏览),连图片的 alt 文字都没放过。分辨率不够的地方它老实说读不清,不硬编。
|
|
138
104
|
|
|
139
|
-
|
|
105
|
+

|
|
140
106
|
|
|
141
|
-
|
|
107
|
+
一次粘三张图。模型自己排队逐张读,连设计意图都点出来了。
|
|
142
108
|
|
|
143
|
-
|
|
109
|
+

|
|
144
110
|
|
|
145
|
-
|
|
146
|
-
| :-- | :-- | :-- | :-- |
|
|
147
|
-
| `antigravity-cli`(默认) | `agy` 登录过 | 15-40 秒 | 免费额度,完整 agent 循环,额度紧(见下文) |
|
|
148
|
-
| `gemini-api`(推荐) | 免费 AI Studio key | 5-10 秒 | 最快的免费路线,服务端强制 schema |
|
|
149
|
-
| `openai` | baseUrl + apiKey + model | 看端点 | 任何 OpenAI 兼容的多模态端点(qwen-vl、GLM 等) |
|
|
150
|
-
| `anthropic` | `ANTHROPIC_API_KEY` | 几秒 | 默认 Claude Haiku,强制工具调用保 schema |
|
|
151
|
-
| `claude-cli` | Claude Code 已登录 | 20-45 秒 | 零 key,吃你的 Claude 订阅额度,只放行 Read 工具 |
|
|
111
|
+
压力测试:128 个模型的散点图。它认出了图表类型、双轴定义、对数刻度,还把高亮的那个点从点堆里精准拎出来(成本约 $0.028,智能指数 50)。密集图表是识图模型最容易露怯的地方。
|
|
152
112
|
|
|
153
|
-
|
|
113
|
+

|
|
154
114
|
|
|
155
|
-
|
|
115
|
+
粘贴链路的端到端实录:接了 DeepSeek 的 Claude Code,两张图直接粘进对话。界面里只剩占位符,skill 从会话存储把两张图都捞回来读了,连 PPT 封面的配色色值都读出来了。
|
|
156
116
|
|
|
157
|
-
|
|
158
|
-
modlens config init # 生成配置骨架
|
|
159
|
-
modlens config set gemini-api.apiKey <key> # 落盘即 0600 权限
|
|
160
|
-
modlens config show # key 打码显示
|
|
161
|
-
modlens config set provider gemini-api # 换默认 provider
|
|
162
|
-
```
|
|
117
|
+

|
|
163
118
|
|
|
164
|
-
|
|
119
|
+
## 它是怎么干活的
|
|
165
120
|
|
|
166
|
-
|
|
121
|
+

|
|
167
122
|
|
|
168
|
-
|
|
123
|
+
没有魔法,四步:
|
|
169
124
|
|
|
170
|
-
|
|
125
|
+
1. 图片出现时 skill 触发:一个路径、一个 URL,或者纯文本模型粘贴后剩下的那个占位符。
|
|
126
|
+
2. skill 跑 `modlens` 命令,把图交给视觉引擎。五个引擎可选,默认是免费的 Antigravity CLI。
|
|
127
|
+
3. 引擎的识读结果被强制装进固定的 JSON 结构:转录、版面、语义、不确定项。不合规的输出直接拒收,绝不凑合。
|
|
128
|
+
4. 模型引用证据,回答问题。
|
|
171
129
|
|
|
172
|
-
|
|
130
|
+
粘贴这一手是别家都没有的。粘贴从头到尾在客户端内部完成:图一落进对话框就被编码发走,外部工具根本没机会碰到,所以别的方案只能教你存文件报路径。但字节发走之前,harness 已经把它原样写进了本地会话记录,`recover-paste` 就是去那里捞:Claude Code 和 Pi 存 JSONL,OpenCode 存 SQLite,Codex 的粘贴本来就落成临时文件所以不需要捞。细节见[宿主接入](docs/harness-setup.md)。
|
|
173
131
|
|
|
174
|
-
|
|
175
|
-
|
|
132
|
+
| | 换个多模态模型 | 其他识图外挂(MCP server 这类) | ModLens |
|
|
133
|
+
| :-- | :-- | :-- | :-- |
|
|
134
|
+
| 你选的模型 | 得换掉 | 不用换 | 不用换 |
|
|
135
|
+
| 粘贴进对话的图 | 模型支持才看得见 | 接不住 | 捞回来直接读 |
|
|
136
|
+
| 拿到手的是什么 | 模型自己的理解 | 通常一段描述 | 全文转录、版面区块、实体关系 |
|
|
137
|
+
| 读不准的地方 | 可能编 | 可能编 | 进 `uncertainty` |
|
|
138
|
+
| 花费 | 多模态模型的价格 | 多数按 API 计费 | agy 免费额度或免费 Gemini key |
|
|
176
139
|
|
|
177
|
-
|
|
140
|
+
短板一并摆这儿:agy 免费额度是周配额,重度用会撞墙(换免费 Gemini key 绕开)。会话存储格式是各家 harness 的内部实现,没有兼容承诺,哪天捞不动了,拖文件永远是保底。
|
|
178
141
|
|
|
179
|
-
|
|
142
|
+
## CLI 参数
|
|
180
143
|
|
|
181
|
-
|
|
144
|
+
`modlens analyze`(默认命令):
|
|
182
145
|
|
|
183
|
-
|
|
146
|
+
| 参数 | 含义 | 默认值 |
|
|
147
|
+
| :-- | :-- | :-- |
|
|
148
|
+
| `-i, --input <path\|url>` | 要解析的图片(必填) | |
|
|
149
|
+
| `-p, --provider <name>` | 视觉 provider | `antigravity-cli` |
|
|
150
|
+
| `-m, --model <name>` | provider 模型 | 按 provider(见下) |
|
|
151
|
+
| `-o, --output <path>` | 同时把 JSON 写入文件 | |
|
|
152
|
+
| `--prompt <text>` | 额外关注点 | |
|
|
153
|
+
| `--timeout <ms>` | provider 超时 | `180000` |
|
|
154
|
+
| `--provider-bin <path>` | provider 可执行文件路径 | `agy` / `claude` |
|
|
155
|
+
| `--workdir <path>` | provider 的工作目录 | 图片所在目录 |
|
|
184
156
|
|
|
185
|
-
|
|
157
|
+
`-m` 的默认模型取决于 provider:
|
|
186
158
|
|
|
187
|
-
|
|
159
|
+
| Provider | 默认模型 |
|
|
160
|
+
| :-- | :-- |
|
|
161
|
+
| `antigravity-cli`(默认) | `gemini-3.6-flash-low` |
|
|
162
|
+
| `gemini-api` | `gemini-3.6-flash` |
|
|
163
|
+
| `anthropic` | `claude-haiku-4-5-20251001` |
|
|
164
|
+
| `claude-cli` | `haiku` |
|
|
165
|
+
| `openai` | 无默认,必须指定 `-m` |
|
|
188
166
|
|
|
189
|
-
|
|
167
|
+
`modlens recover-paste`:
|
|
190
168
|
|
|
191
|
-
|
|
169
|
+
| 参数 | 含义 | 默认值 |
|
|
170
|
+
| :-- | :-- | :-- |
|
|
171
|
+
| `--count <n>` | 恢复最近几张粘贴的图 | `1` |
|
|
172
|
+
| `--out-dir <path>` | 恢复的图写到哪个目录 | 每次运行新建的私有目录 `<tmpdir>/modlens-paste-*` |
|
|
173
|
+
| `--session <id>` | 精确锁定的 session id | 自动检测 |
|
|
174
|
+
| `--transcript <path>` | 显式指定 `.jsonl` 或 `.db`(优先于 `--session`) | |
|
|
175
|
+
| `--harness <name>` | 强制存储范围:`claude-code`、`pi`、`opencode`、`none` | 自动检测 |
|
|
176
|
+
| `--cwd <path>` | 图片是在哪个项目目录粘贴的 | 当前目录 |
|
|
192
177
|
|
|
193
|
-
|
|
178
|
+
五个 provider 可选:`antigravity-cli`(默认,零 key)、`gemini-api`(最快的免费路线)、`openai`(任何 OpenAI 兼容多模态端点)、`anthropic`、`claude-cli`(吃你的 Claude 订阅)。另有两个子命令:`modlens config <init|set|show>` 管配置,`modlens doctor` 体检本机(Node 版本、各 provider 就绪状态、最终会选哪个 provider 及原因、检测到的 harness),不消耗额度、不发网络请求,加 `--json` 输出机器可读报告。
|
|
194
179
|
|
|
195
|
-
|
|
196
|
-
- **证据强过像素。** 文本模型最擅长在结构化文本上推理,不是盯着原始像素。ModLens 递过去的是转录好的文字、切好的版面、拆好的语义,不是一坨 base64。
|
|
197
|
-
- **引擎会死,桥不会死。** v1 跑在 Gemini CLI 免费档上,2026 年 6 月被 Google 一刀切停掉。v2 换到继任者 Antigravity CLI,还是同一个 provider 接口,下次再换引擎,改一个文件就行,不用重写。
|
|
180
|
+
## 文档
|
|
198
181
|
|
|
199
|
-
|
|
182
|
+
| 文档 | 什么时候看 |
|
|
183
|
+
| :-- | :-- |
|
|
184
|
+
| [故障排查](docs/troubleshooting.md) | 命令报错,想知道成因和解法 |
|
|
185
|
+
| [配置手册](skills/modlens/references/configure.md) | 配 key、换 provider、排查配置 |
|
|
186
|
+
| [输出契约](skills/modlens/references/output-schema.md) | 要解析 JSON 或写下游工具 |
|
|
187
|
+
| [宿主接入](docs/harness-setup.md) | 在 Codex、Claude Code、Pi、OpenCode 里配置 |
|
|
188
|
+
| [安全说明](docs/security.md) | 恢复文件的权限、图片内容作为不可信输入 |
|
|
189
|
+
| [更新日志](CHANGELOG.md) | 想知道某个版本改了什么 |
|
|
190
|
+
| [AGENTS.md](AGENTS.md) | 要改这个项目的代码 |
|
|
200
191
|
|
|
201
|
-
##
|
|
192
|
+
## 参与方式
|
|
202
193
|
|
|
203
|
-
|
|
194
|
+
本仓不收 PR。工具小,一双手维护,每一行代码都要作者自己背,这个闭环收紧了它才可靠。真正帮得上忙的两条路:
|
|
204
195
|
|
|
205
|
-
**
|
|
196
|
+
- **[提 issue](https://github.com/liustack/modlens/issues)。** bug、想法、看不懂的报错、读着别扭的文档都算。issue 一定会被读,也真的会影响接下来做什么。
|
|
197
|
+
- **Fork。** MIT 协议下你的副本完全归你:改名、魔改、发布都随意。
|
|
206
198
|
|
|
207
|
-
|
|
208
|
-
npx -y skills add liustack/liustack -g
|
|
209
|
-
```
|
|
199
|
+
## 关注公众号
|
|
210
200
|
|
|
211
|
-
|
|
201
|
+
AI 工具、实践与想法,第一时间推送。微信扫码,或搜一搜「liustack」关注:
|
|
212
202
|
|
|
213
|
-
|
|
203
|
+
<p align="center">
|
|
204
|
+
<img src="https://raw.githubusercontent.com/liustack/modlens/main/assets/wechat-qrcode.png" width="420" alt="微信公众号 liustack" />
|
|
205
|
+
</p>
|
|
214
206
|
|
|
215
|
-
|
|
216
|
-
- 视觉输出是证据,引擎读不准的地方会进 `uncertainty`,而不是被编出来凑数。v2 把像素坐标和置信度分数都删了,因为模型会瞎编这两样。
|
|
207
|
+
⭐ 好用的话给 [ModLens](https://github.com/liustack/modlens) 点个 star,这是下一个开发者找到它的方式。
|
|
217
208
|
|
|
218
209
|
## 免责声明
|
|
219
210
|
|
|
220
|
-
|
|
211
|
+
本项目依下方 MIT 协议按现状提供。作者不对任何特定用途(含商业使用)提供保证或背书。上游引擎(Antigravity CLI,Gemini、OpenAI、Anthropic 的 API,以及任何 OpenAI 兼容端点)的使用受各自条款和额度约束,由使用者自行负责。
|
|
221
212
|
|
|
222
213
|
## License
|
|
223
214
|
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Reporting a vulnerability
|
|
4
|
+
|
|
5
|
+
Please report security issues privately, not in a public issue.
|
|
6
|
+
|
|
7
|
+
Use [GitHub Security Advisories](https://github.com/liustack/modlens/security/advisories/new) to open a private report. That keeps the details between you and the maintainers until a fix is out.
|
|
8
|
+
|
|
9
|
+
Include the exact command, the full output, and the modlens and Node versions, the same detail a bug report needs. We will acknowledge the report, work on a fix, and credit you unless you prefer otherwise.
|
|
10
|
+
|
|
11
|
+
## Supported versions
|
|
12
|
+
|
|
13
|
+
This is a fast-moving CLI. Fixes land on the latest published version on npm (`@liustack/modlens`), so upgrade to the newest release before reporting.
|
|
14
|
+
|
|
15
|
+
## What to keep in mind
|
|
16
|
+
|
|
17
|
+
modlens runs vision engines over images on your machine and can recover pasted image bytes from local session storage. The security model, what it runs, how recovered images are protected, and why image content is untrusted input, is documented in [docs/security.md](docs/security.md). Read it before reporting behavior that may be working as intended.
|