File tree Expand file tree Collapse file tree
assets/default_skills/toolshell Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44
55- 提供了在线访问Agent的功能.
66- 优化了上下文压缩.
7- - 在工作目录下创建、使用临时技能进行临时性自我进化
7+ - 在工作目录下创建、使用临时技能进行临时性自我进化.
8+
89
910## en
1011
Original file line number Diff line number Diff line change 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### 存储位置
Original file line number Diff line number Diff line change 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" : {
Original file line number Diff line number Diff line change 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>
1415#include < window_manager/window_manager_plugin.h>
1516
1617void 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);
Original file line number Diff line number Diff line change 33#
44
55list (APPEND FLUTTER_PLUGIN_LIST
6+ file_selector_linux
67 local_notifier
78 screen_retriever_linux
89 sqlite3_flutter_libs
Original file line number Diff line number Diff 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:
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments