deepfish-ai 2.0.2 → 2.0.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.md CHANGED
@@ -50,9 +50,15 @@
50
50
  - [缓存管理(AI自我学习的缓存)](#缓存管理ai自我学习的缓存)
51
51
  - [5. MCP 扩展配置](#5-mcp-扩展配置)
52
52
  - [配置示例](#配置示例)
53
- - [6. 贡献](#6-贡献)
54
- - [7. 许可证](#7-许可证)
55
- - [8. 支持](#8-支持)
53
+ - [6. Tool 与 Skill 扩展说明](#6-tool-与-skill-扩展说明)
54
+ - [当前目录扩展](#当前目录扩展)
55
+ - [全局扩展](#全局扩展)
56
+ - [7. 系统配置文件说明](#7-系统配置文件说明)
57
+ - [配置文件字段](#配置文件字段)
58
+ - [AI 模型配置字段](#ai-模型配置字段)
59
+ - [8. 贡献](#8-贡献)
60
+ - [9. 许可证](#9-许可证)
61
+ - [10. 支持](#10-支持)
56
62
 
57
63
  ## 1. 介绍
58
64
 
@@ -71,7 +77,6 @@
71
77
 
72
78
  - 高度可扩展:支持通过扩展机制拓展功能边界,除基础的终端、文件操作外,可轻松实现翻译、小说创作、文件格式转换、数据处理等复杂任务,满足多样化使用需求。
73
79
 
74
-
75
80
  ## 2. 安装
76
81
 
77
82
  ### 前置要求
@@ -114,79 +119,80 @@ ai "你的问题或指令"
114
119
 
115
120
  ### 配置管理
116
121
 
117
- | 命令 | 说明 |
118
- |------|------|
119
- | `ai config edit` | 编辑配置文件 |
120
- | `ai config view` | 查看当前配置 |
121
- | `ai config reset` | 重置配置 |
122
- | `ai config dir` | 查看配置目录 |
122
+ | 命令 | 说明 |
123
+ | ----------------- | ------------ |
124
+ | `ai config edit` | 编辑配置文件 |
125
+ | `ai config view` | 查看当前配置 |
126
+ | `ai config reset` | 重置配置 |
127
+ | `ai config dir` | 查看配置目录 |
123
128
 
124
129
  ### 模型管理
125
130
 
126
- | 命令 | 说明 |
127
- |------|------|
128
- | `ai models add` | 添加新模型 |
129
- | `ai models ls` | 列出所有模型 |
131
+ | 命令 | 说明 |
132
+ | ---------------------- | -------------- |
133
+ | `ai models add` | 添加新模型 |
134
+ | `ai models ls` | 列出所有模型 |
130
135
  | `ai models use <name>` | 切换使用的模型 |
131
- | `ai models del <name>` | 删除指定模型 |
136
+ | `ai models del <name>` | 删除指定模型 |
132
137
 
133
138
  ### Skill 管理
134
139
 
135
- | 命令 | 说明 |
136
- |------|------|
137
- | `ai skills ls` | 列出所有 Skill |
138
- | `ai skills add <name>` | 添加 Skill |
139
- | `ai skills del <index>` | 删除指定 Skill |
140
- | `ai skills enable <name\|index>` | 启用 Skill |
141
- | `ai skills disable <name\|index>` | 禁用 Skill |
142
- | `ai skills dir` | 查看 Skill 目录 |
143
- | `ai skills generate xxx` | 通过 AI 生成 Skill |
140
+ | 命令 | 说明 |
141
+ | --------------------------------- | ------------------ |
142
+ | `ai skills ls` | 列出所有 Skill |
143
+ | `ai skills add <name>` | 添加 Skill |
144
+ | `ai skills del <index>` | 删除指定 Skill |
145
+ | `ai skills enable <name\|index>` | 启用 Skill |
146
+ | `ai skills disable <name\|index>` | 禁用 Skill |
147
+ | `ai skills dir` | 查看 Skill 目录 |
148
+ | `ai skills generate xxx` | 通过 AI 生成 Skill |
144
149
 
145
150
  ### 工具管理
146
151
 
147
- | 命令 | 说明 |
148
- |------|------|
149
- | `ai tools dir` | 查看工具目录 |
150
- | `ai tools generate xxx` | 通过 AI 生成工具 |
152
+ | 命令 | 说明 |
153
+ | ----------------------- | -------------------------------------------------- |
154
+ | `ai tools dir` | 查看全局工具目录 |
155
+ | `ai tools add <name>` | 添加当前目录下的本地工具目录,可选择本地或全局生效 |
156
+ | `ai tools generate xxx` | 通过 AI 生成工具 |
151
157
 
152
158
  ### 会话管理
153
159
 
154
- | 命令 | 说明 |
155
- |------|------|
160
+ | 命令 | 说明 |
161
+ | ------------------ | ------------ |
156
162
  | `ai session clear` | 清除会话历史 |
157
- | `ai session dir` | 查看会话目录 |
163
+ | `ai session dir` | 查看会话目录 |
158
164
 
159
165
  ### 任务管理
160
166
 
161
- | 命令 | 说明 |
162
- |------|------|
163
- | `ai task ls` | 列出所有任务 |
164
- | `ai task add <task>` | 添加任务 |
167
+ | 命令 | 说明 |
168
+ | --------------------- | ------------ |
169
+ | `ai task ls` | 列出所有任务 |
170
+ | `ai task add <task>` | 添加任务 |
165
171
  | `ai task del <index>` | 删除指定任务 |
166
- | `ai task clear` | 清除所有任务 |
172
+ | `ai task clear` | 清除所有任务 |
167
173
 
168
174
  ### MCP 管理
169
175
 
170
- | 命令 | 说明 |
171
- |------|------|
176
+ | 命令 | 说明 |
177
+ | ------------- | ------------- |
172
178
  | `ai mcp edit` | 编辑 MCP 配置 |
173
179
 
174
180
  ### 服务管理
175
181
 
176
- | 命令 | 说明 |
177
- |------|------|
178
- | `ai serve` | 启动服务 |
179
- | `ai serve start` | 启动服务 |
180
- | `ai serve stop` | 停止服务 |
182
+ | 命令 | 说明 |
183
+ | ------------------ | -------- |
184
+ | `ai serve` | 启动服务 |
185
+ | `ai serve start` | 启动服务 |
186
+ | `ai serve stop` | 停止服务 |
181
187
  | `ai serve restart` | 重启服务 |
182
188
 
183
189
  ### 缓存管理(AI自我学习的缓存)
184
190
 
185
- | 命令 | 说明 |
186
- |------|------|
187
- | `ai cache ls` | 列出缓存 |
191
+ | 命令 | 说明 |
192
+ | --------------------------- | ---------- |
193
+ | `ai cache ls` | 列出缓存 |
188
194
  | `ai cache edit <index\|id>` | 编辑缓存项 |
189
- | `ai cache del <index\|id>` | 删除缓存项 |
195
+ | `ai cache del <index\|id>` | 删除缓存项 |
190
196
 
191
197
  ## 5. MCP 扩展配置
192
198
 
@@ -209,14 +215,101 @@ MCP(Model Context Protocol)允许 AI 连接外部工具和服务。通过 `a
209
215
 
210
216
  配置完成后,AI 将自动加载 MCP Server 提供的工具,你可以在对话中直接让 AI 使用这些能力。
211
217
 
212
- ## 6. 贡献
218
+ ## 6. Tool 与 Skill 扩展说明
219
+
220
+ DeepFish 支持通过 Tool 和 Skill 扩展 AI 的能力。扩展文件可以放在当前工作目录的 `.deepfish-ai` 目录中,也可以放在全局配置目录中。
221
+
222
+ - **Tool 扩展**:用于定义 AI 可直接调用的自定义函数工具,适合封装 API 调用、数据库操作、文件处理等能力。
223
+ - **Skill 扩展**:用于定义 AI 的工作流知识包,适合沉淀某类任务的执行步骤、规范和最佳实践。
224
+
225
+ ### 当前目录扩展
226
+
227
+ 如果扩展只希望在当前目录下生效,请将扩展拷贝到当前目录的 `.deepfish-ai` 目录中:
228
+
229
+ ```text
230
+ 当前目录/
231
+ └── .deepfish-ai/
232
+ ├── tools/
233
+ │ └── your-tool/
234
+ └── skills/
235
+ └── your-skill/
236
+ ```
237
+
238
+ - Tool 扩展放入 `当前目录/.deepfish-ai/tools/`。
239
+ - Skill 扩展放入 `当前目录/.deepfish-ai/skills/`。
240
+ - 这种方式只对当前目录有效,适合项目级扩展或仅在某个项目中使用的能力。
241
+
242
+ ### 全局扩展
243
+
244
+ 如果扩展希望在所有目录下生效,请将扩展拷贝到全局配置目录中的 `tools` 或 `skills` 目录。
245
+
246
+ 可以通过以下命令打开全局配置目录:
247
+
248
+ ```bash
249
+ ai config dir
250
+ ```
251
+
252
+ 目录结构示例:
253
+
254
+ ```text
255
+ 全局配置目录/
256
+ └── .deepfish-ai/
257
+ ├── tools/
258
+ │ └── your-tool/
259
+ └── skills/
260
+ └── your-skill/
261
+ ```
262
+
263
+ - Tool 扩展放入 `全局配置目录/.deepfish-ai/tools/`。
264
+ - Skill 扩展放入 `全局配置目录/.deepfish-ai/skills/`。
265
+ - 这种方式对全局有效,适合通用工具或长期复用的工作流能力。
266
+
267
+ ## 7. 系统配置文件说明
268
+
269
+ DeepFish 的系统配置文件位于用户目录下的 `.deepfish-ai/config.json5`,可通过以下命令打开或查看:
270
+
271
+ ```bash
272
+ ai config edit
273
+ ai config view
274
+ ```
275
+
276
+ ### 配置文件字段
277
+
278
+ | 字段 | 类型 | 默认值 | 说明 |
279
+ | --------------------- | --------- | -------- | ----------------------------------------------------------------------- |
280
+ | `aiList` | `array` | `[]` | AI 模型配置列表,可添加多个模型配置。 |
281
+ | `currentModel` | `string` | `''` | 当前正在使用的 AI 配置名称,对应 `aiList` 中某一项的 `name`。 |
282
+ | `maxIterations` | `number` | `-1` | AI 完成工作流的最大迭代次数,`-1` 表示不限制。 |
283
+ | `maxMemoryExpireTime` | `number` | `30` | 会话记忆最大保留时间,单位为天;`-1` 表示永久保留,`0` 表示不记录。 |
284
+ | `maxLogExpireTime` | `number` | `3` | 日志最大保留时间,单位为天;`-1` 表示永久保留,`0` 表示不记录。 |
285
+ | `maxBlockFileSize` | `number` | `50` | 最大分块文件大小,单位为 KB;超过该大小的文件会按块处理。 |
286
+ | `encoding` | `string` | `'auto'` | 命令行输出编码,可设置为 `utf-8`、`gbk` 等;`auto` 或空值表示自动判断。 |
287
+ | `maxSubAgentCount` | `number` | `2` | 最大并行子 Agent 数量,`-1` 表示不限制。 |
288
+ | `isPrintThinking` | `boolean` | `true` | 是否打印 AI 思考过程中的中间信息。 |
289
+ | `serve.port` | `number` | `8866` | DeepFish 本地服务端口。 |
290
+
291
+ ### AI 模型配置字段
292
+
293
+ `aiList` 中的每一项表示一个 AI 模型配置,常见字段如下:
294
+
295
+ | 字段 | 类型 | 说明 |
296
+ | ------------------ | -------- | --------------------------------------------------------------- |
297
+ | `name` | `string` | 模型配置名称,用于 `ai models use <name>` 切换模型。 |
298
+ | `type` | `string` | 模型供应商类型,例如 `DeepSeek`、`Ollama`、`OpenAICompatible`。 |
299
+ | `baseUrl` | `string` | 模型 API 地址。 |
300
+ | `model` | `string` | 实际调用的模型名称。 |
301
+ | `apiKey` | `string` | 模型 API Key。 |
302
+ | `temperature` | `number` | 生成随机性参数,数值越高输出越发散,数值越低输出越稳定。 |
303
+ | `maxContextLength` | `number` | 模型最大上下文长度,单位为 tokens。 |
304
+
305
+ ## 8. 贡献
213
306
 
214
307
  欢迎贡献!请随时提交Pull Request。
215
308
 
216
- ## 7. 许可证
309
+ ## 9. 许可证
217
310
 
218
311
  本项目采用MIT许可证 - 详见[LICENSE](LICENSE)文件。
219
312
 
220
- ## 8. 支持
313
+ ## 10. 支持
221
314
 
222
315
  如有问题和疑问,请在GitHub仓库上提交issue。
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: 'generate-skill'
3
+ description: '根据用户需求生成符合标准规范的自定义 Skill 工具包'
4
+ homepage: ''
5
+ ---
6
+
7
+ # 生成自定义技能
8
+
9
+ 你是一个技能生成器,基于 OpenClaw Skill 规范创建标准化的 Skill 工具包,最终输出可被系统直接加载使用。
10
+
11
+ ## 任务目标
12
+
13
+ 基于用户需求创建一个标准化的 Skill 工具包,实现用户目标。
14
+
15
+ ## 任务步骤
16
+
17
+ ### 第一步:项目初始化
18
+
19
+ 1. **目录创建**:在当前工作目录下新建一个子目录,目录名称应简洁明了地反映 Skill 功能(如 `web-scraper`、`code-reviewer`、`image-optimizer` 等)
20
+ 2. **核心文件**:目录中必须包含 `SKILL.md` 文件(文件名大小写敏感,必须为 `SKILL.md`)
21
+ 3. **辅助文件**:如果 Skill 涉及复杂逻辑,可在目录中创建辅助脚本文件(如 `.js`、`.sh`、`.py` 等),并在 `SKILL.md` 中说明其用途和调用方式;如果是 js 文件,可以在函数中通过 `this.Tools` 调用内置函数,如直接使用 `this.Tools.createSubAgent(workGoal)`
22
+
23
+ #### 标准目录结构
24
+
25
+ ```
26
+ <skill-name>/
27
+ ├── SKILL.md # [必需] 核心文件:YAML元数据 + AI执行指令
28
+ ├── scripts/ # [可选] 辅助脚本目录(复杂Skill适用)
29
+ │ ├── helper.js # Node.js辅助脚本
30
+ │ ├── process.sh # Shell辅助脚本
31
+ │ └── ...
32
+ └── assets/ # [可选] 资源文件目录(模板、配置等)
33
+ ├── template.txt # 模板文件
34
+ └── ...
35
+ ```
36
+
37
+ ### 第二步:SKILL.md 完整开发规范
38
+
39
+ #### 2.1 文件结构
40
+
41
+ SKILL.md 由两部分组成:
42
+
43
+ - **YAML Frontmatter**(元数据区):位于文件顶部,用 `---` 包裹
44
+ - **Markdown Body**(指令正文区):Frontmatter 之后的所有内容,是 AI 执行 Skill 的核心指令
45
+
46
+ #### 2.2 YAML Frontmatter 规范(必须遵循)
47
+
48
+ ```yaml
49
+ ---
50
+ name: 'skill-name'
51
+ description: '简要描述该Skill的核心功能和适用场景(建议20-50字)'
52
+ homepage: 'https://github.com/your-repo/skill-name'
53
+ ---
54
+ ```
55
+
56
+ 字段说明:
57
+
58
+ - `name`:Skill 的唯一标识名称,使用小写字母和连字符,与目录名保持一致
59
+ - `description`:Skill 功能的简要描述,用于在 Skill 列表中展示,帮助 AI 判断何时匹配使用该 Skill
60
+ - `homepage`:Skill 的主页或仓库地址,可留空
61
+
62
+ #### 2.3 Markdown Body 指令正文规范
63
+
64
+ 指令正文是 Skill 的核心,AI 在加载 Skill 后会仔细阅读此部分内容来学习如何使用该 Skill。正文需包含以下模块:
65
+
66
+ **模块一:概述**
67
+
68
+ - 清晰说明该 Skill 的核心功能、适用场景、能解决的问题
69
+ - 列出 Skill 的能力边界(能做什么、不能做什么)
70
+
71
+ **模块二:环境依赖**(如有)
72
+
73
+ - 列出 Skill 运行所需的外部依赖(如 Node.js 包、Python 库、系统工具等)
74
+ - 说明依赖的安装方式和版本要求
75
+ - 如果无外部依赖,可省略此模块
76
+
77
+ **模块三:使用指令**
78
+
79
+ - 这是 AI 执行 Skill 时的核心参考,必须详细、精确、可操作
80
+ - 以步骤化的方式描述 Skill 的使用流程
81
+ - 每个步骤需说明:输入是什么、执行什么操作、输出是什么
82
+ - 如果涉及命令行操作,提供完整的命令示例
83
+ - 如果涉及代码调用,提供完整的代码示例
84
+ - 如果有多种使用场景,分场景给出说明
85
+
86
+ **模块四:输入输出规范**
87
+
88
+ - 定义 Skill 接受的输入格式和参数说明
89
+ - 定义 Skill 输出的结果格式和内容说明
90
+ - 提供输入输出的示例
91
+
92
+ **模块五:注意事项与限制**
93
+
94
+ - 说明使用过程中需要注意的关键点
95
+ - 列出已知限制和边界条件
96
+ - 提供常见问题的处理建议
97
+
98
+ ### 第三步:执行生成
99
+
100
+ 1. 理解用户要生成的技能用途
101
+ 2. 在当前工作目录下创建 `<skill-name>/` 目录
102
+ 3. 编写 `SKILL.md`,遵循上述 YAML Frontmatter + Markdown Body 规范
103
+ 4. 如有需要,创建 `scripts/` 和 `assets/` 辅助目录及文件
104
+ 5. 确认所有文件内容完整、格式正确
@@ -0,0 +1,88 @@
1
+ ---
2
+ name: 'generate-tool'
3
+ description: '根据用户需求生成符合 Deepfish 规范的 Node.js 自定义工具模块'
4
+ homepage: ''
5
+ ---
6
+
7
+ # 生成自定义工具
8
+
9
+ 你是一个工具生成器,负责根据用户需求生成一个 Node.js 工具模块(`.js` 文件)。
10
+
11
+ ## 输出规范
12
+
13
+ 在当前工作目录下创建 `deepfish-tool-{工具功能}/` 目录,在其中生成 `index.js`。
14
+
15
+ ### 返回值类型
16
+
17
+ 函数必须返回以下两种类型之一:
18
+
19
+ ```js
20
+ // 成功
21
+ { success: true, data: any }
22
+
23
+ // 失败
24
+ { success: false, error: '错误描述' }
25
+ ```
26
+
27
+ ### index.js 模板
28
+
29
+ ```js
30
+ const functions = {
31
+ /**
32
+ * @param {string} param1 - 参数1说明
33
+ * @param {number} param2 - 参数2说明
34
+ * @returns {{ success: boolean, data?: any, error?: string }}
35
+ */
36
+ myFunction(param1, param2) {
37
+ try {
38
+ // 实现逻辑
39
+ const result = `处理结果: ${param1}, ${param2}`;
40
+ return { success: true, data: result };
41
+ } catch (err) {
42
+ return { success: false, error: err.message };
43
+ }
44
+ },
45
+ };
46
+
47
+ const descriptions = [
48
+ {
49
+ type: 'function',
50
+ function: {
51
+ name: 'my_function',
52
+ description: '工具的功能描述,说明何时使用、做什么、返回什么',
53
+ parameters: {
54
+ type: 'object',
55
+ properties: {
56
+ param1: {
57
+ type: 'string',
58
+ description: '参数1的描述',
59
+ },
60
+ param2: {
61
+ type: 'number',
62
+ description: '参数2的描述',
63
+ },
64
+ },
65
+ required: ['param1'],
66
+ },
67
+ },
68
+ },
69
+ ];
70
+
71
+ module.exports = { functions, descriptions };
72
+ ```
73
+
74
+ ## 规范
75
+
76
+ 1. **返回值**:必须是 `{ success: true, data: any }` 或 `{ success: false, error: string }`
77
+ 2. **命名**:函数名用 camelCase,工具名用 snake_case
78
+ 3. **描述**:每个工具和参数都要有清晰的中文描述
79
+ 4. **错误处理**:函数内部必须 try-catch,出错返回 `{ success: false, error: '...' }`
80
+ 5. **一个文件一个工具**:每个 index.js 只导出一个工具函数
81
+ 6. **参数类型**:支持 string、number、boolean、object、array
82
+
83
+ ## 执行步骤
84
+
85
+ 1. 理解用户要生成的工具功能
86
+ 2. 在当前工作目录下创建 `deepfish-tool-{功能名}/` 目录
87
+ 3. 编写 `index.js`,导出 `functions` 和 `descriptions`
88
+ 4. 确保代码语法正确、可以直接 `require` 使用