Skip to content

Commit 7092f7d

Browse files
committed
Version 1.0.3 is expected to be released.
1 parent f77c50f commit 7092f7d

7 files changed

Lines changed: 108 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
- 提供了在线访问Agent的功能.
66
- 优化了上下文压缩.
7-
- 在工作目录下创建、使用临时技能进行临时性自我进化
7+
- 在工作目录下创建、使用临时技能进行临时性自我进化.
8+
89

910
## en
1011

assets/default_skills/toolshell/SKILL.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,41 @@
7575

7676
创建技能后,告知用户该技能已就绪、将在新对话或下一轮上下文构建时自动加载。
7777

78+
## /skill-cti 工作流 (创建·测试·安装到全局)
79+
80+
当用户消息以 `/skill-cti` 开头时(后面跟着对所需技能的描述),按以下三步闭环执行,目标是产出一个**全局可复用**的技能:
81+
82+
### 1. 创建 (Create)
83+
84+
在工作目录下选一个临时目录搭建技能骨架(推荐 `.toolshell/skills/<技能名>/`,便于即时调试):
85+
- `SKILL.md`(必需):清晰写明技能用途、触发条件、使用指南
86+
- `tools.json`(可选):若技能需要自定义工具,按 OpenAI function 格式声明
87+
88+
`toolshell_write` 写入这些文件。
89+
90+
### 2. 测试 (Test)
91+
92+
安装到全局**之前**必须自测,确认技能可用:
93+
- 校验 `SKILL.md` 内容完整、`tools.json`(若有)为合法 JSON
94+
- 若技能含可执行逻辑,用 `toolshell_run_python` / `toolshell_run_js` / `toolshell_exec` 跑一个最小用例验证
95+
- 自测失败则修正后重测,**不要**带着已知问题安装
96+
97+
### 3. 安装到全局 (Install)
98+
99+
自测通过后,调用 `toolshell_install_skill`,把临时技能目录提升为**全局技能**
100+
101+
```
102+
toolshell_install_skill(source_dir="<技能目录绝对路径>", name="<技能名>")
103+
```
104+
105+
- 全局技能落在应用的 `Skills/` 目录,**不是** `.toolshell/skills/`
106+
- 安装后该技能出现在技能页,可在任意工作目录启用复用
107+
- 安装成功后告知用户技能名、用途,并提示可在技能页管理
108+
109+
注意区分两类技能去向:
110+
- **临时调试 / 仅本目录用** → 放 `.toolshell/skills/`(项目级,跟随工作目录)
111+
- **沉淀为可复用能力** → 用 `toolshell_install_skill` 装到全局 `Skills/`
112+
78113
## 记忆系统
79114

80115
### 存储位置

assets/default_skills/toolshell/tools.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,21 @@
126126
}
127127
}
128128
},
129+
{
130+
"type": "function",
131+
"function": {
132+
"name": "toolshell_install_skill",
133+
"description": "把一个已做好的技能目录安装到【全局技能库】,使其出现在技能页、可在任意工作目录复用。等价于 App 的「导入技能」功能。典型用于 /skill-cti 流程最后一步:你已在工作目录里写好并自测了技能 (该目录需直接包含 SKILL.md,可选 tools.json),调用本工具将其提升为全局技能。注意:全局技能落在 Skills 目录,不是 .toolshell/skills。",
134+
"parameters": {
135+
"type": "object",
136+
"properties": {
137+
"source_dir": {"type": "string", "description": "技能源目录的绝对路径,必须直接包含 SKILL.md"},
138+
"name": {"type": "string", "description": "可选:全局技能名(默认取源目录名)。已存在同名全局技能时覆盖"}
139+
},
140+
"required": ["source_dir"]
141+
}
142+
}
143+
},
129144
{
130145
"type": "function",
131146
"function": {

linux/flutter/generated_plugin_registrant.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include "generated_plugin_registrant.h"
88

9+
#include <file_selector_linux/file_selector_plugin.h>
910
#include <local_notifier/local_notifier_plugin.h>
1011
#include <screen_retriever_linux/screen_retriever_linux_plugin.h>
1112
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
@@ -14,6 +15,9 @@
1415
#include <window_manager/window_manager_plugin.h>
1516

1617
void fl_register_plugins(FlPluginRegistry* registry) {
18+
g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
19+
fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
20+
file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
1721
g_autoptr(FlPluginRegistrar) local_notifier_registrar =
1822
fl_plugin_registry_get_registrar_for_plugin(registry, "LocalNotifierPlugin");
1923
local_notifier_plugin_register_with_registrar(local_notifier_registrar);

linux/flutter/generated_plugins.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#
44

55
list(APPEND FLUTTER_PLUGIN_LIST
6+
file_selector_linux
67
local_notifier
78
screen_retriever_linux
89
sqlite3_flutter_libs

pubspec.lock

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,46 @@ packages:
176176
url: "https://pub.dev"
177177
source: hosted
178178
version: "8.3.7"
179+
file_selector:
180+
dependency: "direct main"
181+
description:
182+
name: file_selector
183+
sha256: bd15e43e9268db636b53eeaca9f56324d1622af30e5c34d6e267649758c84d9a
184+
url: "https://pub.dev"
185+
source: hosted
186+
version: "1.1.0"
187+
file_selector_android:
188+
dependency: transitive
189+
description:
190+
name: file_selector_android
191+
sha256: "6a26687fa65cbc28a5345c7ae6f227e89f0b47740978a4c475b1a625da7a331b"
192+
url: "https://pub.dev"
193+
source: hosted
194+
version: "0.5.2+8"
195+
file_selector_ios:
196+
dependency: transitive
197+
description:
198+
name: file_selector_ios
199+
sha256: e2ecf2885c121691ce13b60db3508f53c01f869fb6e8dc5c1cfa771e4c46aeca
200+
url: "https://pub.dev"
201+
source: hosted
202+
version: "0.5.3+5"
203+
file_selector_linux:
204+
dependency: transitive
205+
description:
206+
name: file_selector_linux
207+
sha256: "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0"
208+
url: "https://pub.dev"
209+
source: hosted
210+
version: "0.9.4"
211+
file_selector_macos:
212+
dependency: transitive
213+
description:
214+
name: file_selector_macos
215+
sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a"
216+
url: "https://pub.dev"
217+
source: hosted
218+
version: "0.9.5"
179219
file_selector_platform_interface:
180220
dependency: transitive
181221
description:
@@ -184,6 +224,14 @@ packages:
184224
url: "https://pub.dev"
185225
source: hosted
186226
version: "2.7.0"
227+
file_selector_web:
228+
dependency: transitive
229+
description:
230+
name: file_selector_web
231+
sha256: "73181fbc5257776d8ecaa6a94ab3c8e920ad143b9132a6d984a9271dfc6928d3"
232+
url: "https://pub.dev"
233+
source: hosted
234+
version: "0.9.5"
187235
file_selector_windows:
188236
dependency: transitive
189237
description:

pubspec.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ dependencies:
4545
path_provider: ^2.1.5
4646
archive: ^4.0.2
4747
file_picker: ^8.1.6
48+
# 目录选择改用 file_selector:Windows 上走现代 IFileDialog COM 接口,
49+
# 绕开 file_picker 依赖的旧 comdlg32.dll(在部分 Win10 环境会 0xc0000005 崩溃)。
50+
file_selector: ^1.0.3
4851
path: ^1.9.1
4952
url_launcher: ^6.3.2
5053
open_filex: ^4.7.0

0 commit comments

Comments
 (0)