yuangs 2.10.0 → 2.12.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/README.md CHANGED
@@ -1,339 +1,238 @@
1
- # yuangs CLI
2
1
 
3
- 🎨 苑广山的个人命令行工具
4
- 一个 **集工具启动器 + AI 助手 + 命令增强器** 于一体的 CLI。
2
+ # 🚀 yuangs CLI
5
3
 
6
- > 设计理念:
4
+ **以人类意图为中心的 AI‑Augmented Shell**
5
+
6
+ 一个集 **AI 助手 · 智能 Shell 内核 · 插件化运行时** 于一体的现代终端工具。
7
+
8
+ > **核心理念**
7
9
  > **AI 提供思路,人类掌控执行。**
8
- > 快、顺手,但不过度“自动化”。
10
+ > yuangs 致力于在不破坏传统 Shell 心智模型的前提下,引入 AI 的逻辑能力。
11
+ > 它不是黑盒执行器,而是你的 **增强型命令行外脑**。
9
12
 
10
13
  ---
11
14
 
12
- ## 你可以用 yuangs 做什么?
15
+ ## 🏗️ 执行语义规范(Execution Semantics)
13
16
 
14
- - 🚀 一条命令快速打开常用 Web / PWA 应用
15
- - 🤖 在终端里直接使用 AI 问答、分析、总结
16
- - 🧠 让 AI **帮你写命令**,而不是直接替你乱跑命令
17
- - 🧩 把常用的复杂操作保存为快捷指令(Macros)
18
- - 🔗 用管道把真实命令输出交给 AI 解释
17
+ yuangs 通过一套**显式的符号语法**,清晰界定“副作用”的来源,
18
+ 确保每一条命令 **可理解、可确认、可审计**。
19
19
 
20
- yuangs 更像是一个**“增强型命令行外脑”**,而不是黑箱自动执行器。
20
+ | 语法 | 行为逻辑 | 决策来源 | 适用场景 |
21
+ |---|---|---|---|
22
+ | `ls -la` | 直接运行命令(fish-style) | 用户 | 传统 Shell 操作 |
23
+ | `@path[:line]` | 引用文件 / 行号上下文 | 用户 | 代码审计、报错分析 |
24
+ | `#dir` | 批量引入目录上下文 | 用户 | 项目结构理解 |
25
+ | `ai "msg"` | 纯自然语言对话 | AI | 方案讨论、知识查询 |
26
+ | `ai -e` | 生成**建议**命令 | AI → 用户 | 复杂命令辅助 |
27
+ | `:exec` | 绕过 AI 的原子执行 | 用户 | 确定性脚本 |
21
28
 
22
29
  ---
23
30
 
24
- ## 安装
31
+ ## 🌟 核心功能
25
32
 
26
- ```bash
27
- npm install -g yuangs
28
- ```
33
+ ### 1. 智能 Shell 内核(v2.10.0+)
29
34
 
30
- 安装完成后可直接使用:
35
+ 进入交互式 AI‑Augmented Shell:
31
36
 
32
37
  ```bash
33
- yuangs help
38
+ yuangs ai
34
39
  ```
35
40
 
36
- ---
41
+ 特性包括:
37
42
 
38
- ## 基本使用命令
43
+ - **模式自动路由**
44
+ 无需切换模式:
45
+ - 输入 `git status` → 直接执行
46
+ - 输入「解释这段代码」→ 进入对话
39
47
 
40
- ```bash
41
- yuangs shici # 打开古诗词 PWA
42
- yuangs dict # 打开英语词典
43
- yuangs pong # 打开 Pong 游戏
44
- yuangs ai "你的问题" # ✨ 向 AI 提问
45
- yuangs list # 列出所有应用/链接
46
- yuangs help # 显示帮助
47
- ```
48
+ - **👻 Ghost Text(幽灵建议)**
49
+ 根据历史记录与插件预测输入
50
+ 例如输入 `npm r`,灰色显示 `un dev`,按 `Tab` 采纳
51
+
52
+ - **⚡ 补全增强**
53
+ - **PATH 扫描**:自动补全 40+ 常用系统命令
54
+ - **精准行号**:支持 `@src/index.ts:10-50`
55
+ - **项目感知**:提升 `src/`、`packages/` 等目录权重
48
56
 
49
57
  ---
50
58
 
51
- ## AI 功能(核心能力)
59
+ ### 2. 精准上下文管理(ContextBuffer)
52
60
 
53
- ### 1️⃣ 直接提问(最安全、零副作用)
61
+ #### 管道模式(Pipe Mode)
54
62
 
55
63
  ```bash
56
- yuangs ai "李白是谁?"
64
+ cat error.log | yuangs "解释这个报错"
65
+ git diff | yuangs -w "Review 变更逻辑"
57
66
  ```
58
67
 
59
- - 仅进行问答
60
- - 不生成系统命令
61
- - 适合解释、学习、方案讨论
68
+ #### `-w` 智能读取
69
+
70
+ - 自动解析管道中的文件路径
71
+ - 只读取**被显式引用**的文件内容
72
+ - 不进行隐式文件系统扫描
62
73
 
63
74
  ---
64
75
 
65
- ### 2️⃣ 指定模型
76
+ ### 3. 插件系统(Plugins)
66
77
 
67
- 支持使用 `--model` / `-m`,也支持简写:
78
+ `.shell/plugins/` 下放置自定义脚本,
79
+ 扩展特定工具的补全与推理能力(如 `docker`、`kubectl`)。
68
80
 
69
- | 简写 | 实际模型 |
70
- |----|----|
71
- | `-p` | `gemini-pro-latest` |
72
- | `-f` | `gemini-flash-latest` |
73
- | `-l` | `gemini-flash-lite-latest` |
74
- | `-w` | 智能读取文件内容(管道模式) |
81
+ 示例:
75
82
 
76
- ```bash
77
- yuangs ai "用 Python 写个 Hello World" -p
78
- cat file.txt | yuangs -p "分析这个文件"
79
- ls | yuangs -w "分析目录下的文件"
83
+ ```ts
84
+ // .shell/plugins/docker.ts
85
+ module.exports = {
86
+ command: 'docker',
87
+ complete(args) {
88
+ return ['ps', 'run', 'build', 'exec'];
89
+ }
90
+ };
80
91
  ```
81
92
 
82
93
  ---
83
94
 
84
- ### 3️⃣ 交互模式(连续对话)
95
+ ## 📜 设计宣言(Design Philosophy / Manifesto)
85
96
 
86
- ```bash
87
- yuangs ai
88
- ```
97
+ ### 工程理性 vs. AI 狂热
89
98
 
90
- 在交互模式中你可以:
99
+ yuangs 并不是一个试图“替你完成任务”的工具。
100
+ 它诞生于一个更克制的问题:
91
101
 
92
- - 连续提问,不必重复输入命令
93
- - `/clear`:清空当前对话上下文
94
- - `/history`:查看本次会话历史
95
- - `exit` / `quit`:退出
96
- - `@`:显示当前目录文件列表并选择
97
- - `# 目录路径`:读取指定目录下所有文件内容
102
+ > **在 AI 能力爆炸的时代,命令行该如何进化,而不背叛工程理性?**
98
103
 
99
- 适合 **长思路推理、一步步讨论问题**。
104
+ ---
100
105
 
101
- #### 文件引用功能(v1.3.67+)
106
+ ### 为什么 yuangs 不是 Autonomous Agent?
102
107
 
103
- **使用 `@` 快速选择文件**:
108
+ Autonomous Agent 承诺:
109
+ 给 AI 一个目标,让它自行规划、执行、修正。
104
110
 
105
- ```bash
106
- 你:@
107
- 📁 当前目录文件列表:
108
- [ 1] 📁 src
109
- [ 2] 📄 package.json
110
- [ 3] 📄 README.md
111
- [ 4] 📁 test
112
- [ 5] 📄 tsconfig.json
113
-
114
- 请选择文件 (输入序号,或按 Enter 返回): 3
115
- ✓ 已选择: README.md
116
-
117
- 你:README.md 解释一下这个项目的功能
118
- ```
111
+ 但在真实工程环境中,这种模式存在根本缺陷:
119
112
 
120
- **使用 `#` 读取整个目录**:
113
+ > **执行权与责任归属是模糊的。**
121
114
 
122
- ```bash
123
- 你:# src/commands 分析这些命令的功能
124
- ✓ 已读取 3 个文件
125
-
126
- # AI 会看到 src/commands 下所有文件的内容并进行分析
127
- ```
115
+ 因此,在 yuangs 中,我们**明确拒绝**让 AI 拥有:
128
116
 
129
- 非常适合代码审查、项目分析等场景。
117
+ - 自动执行系统命令的权力
118
+ - 隐式修改文件或运行环境的权力
119
+ - 在未确认的情况下产生任何副作用的权力
130
120
 
131
121
  ---
132
122
 
133
- ### 4️⃣ 命令生成模式(`-e`)
123
+ ## 🔒 行为边界(Agent Boundaries)
134
124
 
135
- AI **帮你写 Linux / macOS 命令**,但由你决定是否执行。
125
+ yuangs 严格遵循以下边界,以确保长期工程可靠性:
136
126
 
137
- ```bash
138
- yuangs ai -e "查看当前目录下大于 100M 的文件"
139
- ```
127
+ - **非自治性(Human‑in‑the‑loop)**
128
+ AI 负责推理与建议,人类始终是最终决策者与执行者。
140
129
 
141
- 流程说明:
130
+ - **副作用隔离(Side‑effect Isolation)**
131
+ AI 不具备系统写权限。
132
+ 所有建议必须转化为**用户可见的 Action**并经确认后执行。
142
133
 
143
- 1. AI 生成命令
144
- `find . -type f -size +100M`
145
- 2. 自动复制到剪贴板
146
- 3. 预填到输入行
147
- 4. **你确认后才会执行**
134
+ - **显式上下文(Explicit Context)**
135
+ 除显式输入外,yuangs 不会在后台扫描文件系统。
148
136
 
149
- 👉 这是 **“命令辅助”**,不是黑箱自动执行。
137
+ - **可回溯性(Auditable Records)**
138
+ 所有 AI 建议、命令生成与执行结果均被记录,
139
+ 确保完整决策链条可追溯、可审计。
150
140
 
151
141
  ---
152
142
 
153
- ### 5️⃣ 管道模式(Pipe Mode)
143
+ ## 💡 使用场景示例
154
144
 
155
- 把真实命令输出交给 AI 分析、解释、总结:
145
+ ### 场景 A:智能调试
156
146
 
157
147
  ```bash
158
- cat error.log | yuangs ai "解释这个报错"
159
- ls -la | yuangs ai "帮我总结这些文件"
160
- ```
161
-
162
- **省略 'ai' 关键字**(v1.3.66+):
148
+ @!build.sh
149
+ # 系统返回报错…
163
150
 
164
- ```bash
165
- cat file.txt | yuangs "解释这个文件"
166
- git diff | yuangs "review这个代码变更"
151
+ 上面的错误是什么意思?
167
152
  ```
168
153
 
169
- **智能文件内容读取**(v1.3.66+):
170
-
171
- ```bash
172
- ls | yuangs -w "分析这个目录"
173
- ls *.ts | yuangs -w "解释这些文件的功能"
174
- ```
175
-
176
- 非常适合:
177
- - 看不懂的日志
178
- - 太长的输出
179
- - CI / build 报错分析
180
-
181
- ---
182
-
183
- ### ✅ 6️⃣ 流式输出 + Markdown 渲染
184
-
185
- - 默认流式输出(打字机效果)
186
- - 自动渲染 Markdown
187
- - 代码高亮 / 表格格式化
188
-
189
- 终端体验尽量对齐 ChatGPT 网页版。
154
+ AI 将结合 **build.sh 内容 + 实际输出** 进行分析。
190
155
 
191
156
  ---
192
157
 
193
- ## 快捷指令(Macros)
194
-
195
- 把常用但冗长的命令保存为一个名字。
196
-
197
- ### 创建快捷指令
158
+ ### 场景 B:命令生成
198
159
 
199
160
  ```bash
200
- yuangs save deploy
201
- # 输入:
202
- # npm run build && git add . && git commit -m "deploy" && git push
161
+ ai -e "查找当前目录下大于 100M 的文件"
203
162
  ```
204
163
 
205
- ### 执行快捷指令
206
-
207
- ```bash
208
- yuangs run deploy
209
- ```
210
-
211
- ### 查看所有指令
212
-
213
- ```bash
214
- yuangs macros
215
- ```
216
-
217
- ✅ 非常适合:
218
- - 发布流程
219
- - 项目初始化
220
- - 重复性高但不想记的命令
164
+ AI 生成建议命令(如 `find . -type f -size +100M`),
165
+ **存入剪贴板,等待你确认执行。**
221
166
 
222
167
  ---
223
168
 
224
- ## 配置管理
169
+ ### 场景 C:项目审计
225
170
 
226
171
  ```bash
227
- yuangs config defaultModel Assistant
228
- yuangs config accountType pro
172
+ #src/
173
+ 分析这些模块的功能
229
174
  ```
230
175
 
231
- 常用配置项:
232
-
233
- - `defaultModel`:默认 AI 模型
234
- - `aiProxyUrl`:自定义 AI 接口
235
- - `accountType`:`free` / `pro`
236
-
237
- ---
238
-
239
- ## 内置应用列表
240
-
241
- ```text
242
- shici → https://wealth.want.biz/shici/index.html
243
- dict → https://wealth.want.biz/pages/dict.html
244
- pong → https://wealth.want.biz/pages/pong.html
245
- ```
176
+ AI 在**显式授权**下读取目录内容并生成结构分析。
246
177
 
247
178
  ---
248
179
 
249
- ## 自定义应用(v1.3.24+)
250
-
251
- 无需改代码,只需配置文件。
252
-
253
- ### 示例 `.yuangs.json`
180
+ ## 📦 安装与配置
254
181
 
255
- ```json
256
- {
257
- "github": "https://github.com",
258
- "calendar": "https://calendar.google.com",
259
- "mail": "https://mail.google.com"
260
- }
182
+ ```bash
183
+ npm install -g yuangs
261
184
  ```
262
185
 
263
- 然后直接使用:
186
+ 常用配置:
264
187
 
265
188
  ```bash
266
- yuangs github
267
- yuangs calendar
268
- yuangs mail
189
+ yuangs config defaultModel Assistant
190
+ yuangs config accountType pro
269
191
  ```
270
192
 
271
- 支持 JSON / YAML,多级优先级(项目级 / 用户级)。
272
-
273
193
  ---
274
194
 
275
- ## 近期主要更新
276
-
277
- ### v1.3.67 (2026-01-17)
195
+ ## 🗓️ 近期更新(Changelog)
278
196
 
279
- - 新增 `@` 符号:快速选择当前目录文件
280
- - 新增 `#` 符号:读取指定目录下所有文件内容
281
- - ✅ 交互模式增强:支持文件和目录引用
197
+ - **v2.11.0** (2026‑01‑18)
198
+ 新增 40+ Shell 内置命令支持(cd, pwd, ls, git 等)
282
199
 
283
- ### v1.3.66 (2026-01-17)
200
+ - **v2.10.0** (202601‑18)
201
+ 引入 Shell 交互内核、Ghost Text 与插件系统
284
202
 
285
- - 管道模式省略 `ai` 关键字:`cat file | yuangs "question"`
286
- - 智能文件内容读取:新增 `-w` 参数自动读取文件内容
287
- - ✅ 完整的管道模式选项支持:`-p`, `-f`, `-l`, `-e`, `-w`
203
+ - **v1.3.67** (2026‑01‑17)
204
+ 新增 `@` 文件选择与 `#` 目录读取功能
288
205
 
289
- ### v1.3.38 (2026-01-16)
290
-
291
- - ✅ 快捷指令系统(save / run / macros)
292
- - ✅ 管道模式(Pipe)
293
- - ✅ AI 流式输出 + Markdown 渲染
294
- - ✅ `config` 命令
295
- - ✅ 命令生成模式增强(剪贴板 + 预填)
296
-
297
-
298
- ### v1.3.22 (2025-11-30)
299
- - **新增** AI 命令支持 `-p` `-f` `-l` 简写,快速选择gemini默认模型
300
-
301
- ### v1.3.6 (2025-11-29)
302
-
303
- - **新增** AI 命令交互模式:直接输入 `yuangs ai` 即可进入一问一答模式,无需每次输入问题,quit 或 exit 可退出。
304
- - **新增** AI 命令模型参数 `-m` 简写:支持 `-m <模型名称>` 代替 `--model <模型名称>`。
305
- - **新增** `help` 命令显示仓库地址:方便用户直接访问项目仓库。
306
- - **优化** AI 请求错误提示:在处理 AI 请求出错时,提供更清晰的错误信息。
307
-
308
- ### v1.1.x (之前版本,主要更新点)
309
-
310
- - **新增** `ai` 命令:集成 AI 问答功能 (`yuangs ai "你的问题"`)。
311
- - **新增** `help` 命令显示当前版本号:方便用户了解工具版本。
312
- - **优化** AI 请求加载动画:在请求过程中显示加载动画和已耗时秒数,并在请求结束后显示总耗时。
313
206
  ---
314
207
 
315
- ## 自动发布(CI/CD)
208
+ ## ⚖️ 维护者
316
209
 
317
- - push 到 `main`:
318
- - 自动 bump patch 版本
319
- - 自动打 tag
320
- - 自动 `npm publish --provenance`
210
+ **@yuanguangshan**
321
211
 
322
- 日常开发只需关注代码本身。
212
+ > **AI 提供思路,人类掌控执行。**
213
+ > 这不是妥协,而是对工程理性的尊重。
323
214
 
324
215
  ---
325
216
 
326
- ## 开发与构建
217
+ ## 📚 更多信息
327
218
 
328
- ```bash
329
- npm install
330
- npm run dev -- ai "你好"
331
- npm run build
219
+ - **设计原理**: [docs/implementation_principles.md](docs/implementation_principles.md)
220
+ - **场景示例**: [docs/scenarios.md](docs/scenarios.md)
221
+ - **执行语义**: [docs/semantics.md](docs/semantics.md)
222
+ - **非目标**: [docs/non-goals.md](docs/non-goals.md)
223
+ - **威胁模型**: [docs/threat_model.md](docs/threat_model.md)
224
+ - **实现差距分析**: [docs/implementation_gap.md](docs/implementation_gap.md)
225
+ - **变更日志**: [docs/CHANGELOG.md](docs/CHANGELOG.md)
226
+ - **Shell 补全**: [docs/tab_completion_guide.md](docs/tab_completion_guide.md)
227
+ - **上下文优化**: [docs/context_optimization_analysis.md](docs/context_optimization_analysis.md)
228
+ - **代理管道**: [docs/AGENT_PIPELINE.md](docs/AGENT_PIPELINE.md)
229
+ - **上下文管理**: [docs/context_management.md](docs/context_management.md)
332
230
  ```
333
231
 
334
232
  ---
335
233
 
336
- ## 维护者
234
+ ### 一句工程师之间的实话
337
235
 
236
+ 这份 README **已经不是“产品介绍”**了,
237
+ 它是一个 **Runtime 的宪法文本**。
338
238
 
339
- @yuanguangshan
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.AgentPipeline = void 0;
4
7
  const intent_1 = require("./intent");
@@ -11,6 +14,9 @@ const planExecutor_1 = require("./planExecutor");
11
14
  const record_1 = require("./record");
12
15
  const skills_1 = require("./skills");
13
16
  const crypto_1 = require("crypto");
17
+ const renderer_1 = require("../utils/renderer"); // Import renderer
18
+ const ora_1 = __importDefault(require("ora"));
19
+ const chalk_1 = __importDefault(require("chalk"));
14
20
  class AgentPipeline {
15
21
  async run(input, mode) {
16
22
  const id = (0, crypto_1.randomUUID)();
@@ -22,15 +28,26 @@ class AgentPipeline {
22
28
  const prompt = (0, prompt_1.buildPrompt)(intent, context, mode, input.rawInput);
23
29
  // 4. Model Selection
24
30
  const model = (0, selectModel_1.selectModel)(intent, input.options?.model);
31
+ // Setup Renderer if in Chat Mode
32
+ let renderer;
33
+ let spinner;
34
+ if (mode === 'chat') {
35
+ spinner = (0, ora_1.default)(chalk_1.default.cyan('Thinking...')).start();
36
+ renderer = new renderer_1.StreamMarkdownRenderer(chalk_1.default.bold.blue('🤖 AI: '), spinner);
37
+ }
25
38
  // 5. LLM Execution
26
39
  const result = await (0, llm_1.runLLM)({
27
40
  prompt,
28
41
  model,
29
42
  stream: mode === 'chat',
30
- onChunk: mode === 'chat'
31
- ? (s) => process.stdout.write(s)
43
+ onChunk: mode === 'chat' && renderer
44
+ ? (s) => renderer.onChunk(s)
32
45
  : undefined,
33
46
  });
47
+ // Finish rendering if chat mode
48
+ if (mode === 'chat' && renderer) {
49
+ renderer.finish();
50
+ }
34
51
  // 6. Result Interpretation -> Plan
35
52
  const isStreaming = mode === 'chat';
36
53
  const plan = (0, interpret_1.interpretResultToPlan)(result, intent, mode, isStreaming);
@@ -48,9 +65,11 @@ class AgentPipeline {
48
65
  type: 'execute',
49
66
  command: plan.tasks[0].payload.command,
50
67
  risk: plan.tasks[0].payload.risk
51
- } : { type: 'print', content: result.rawText }, // For backward compatibility with record.action
68
+ } : { type: 'print', content: result.rawText },
52
69
  });
53
70
  // 8. Plan Execution
71
+ // Note: For chat, execution usually is just "printing", which happened via stream.
72
+ // interpretResultToPlan handles ignoring tasks if streamed.
54
73
  const summary = await (0, planExecutor_1.executePlan)(plan, input.options);
55
74
  // 9. Post-execution: Learn Skill if successful
56
75
  (0, skills_1.learnSkillFromRecord)({
@@ -1 +1 @@
1
- {"version":3,"file":"AgentPipeline.js","sourceRoot":"","sources":["../../src/agent/AgentPipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentPipeline.js","sourceRoot":"","sources":["../../src/agent/AgentPipeline.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,43 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.updateSkillStatus = updateSkillStatus;
4
7
  exports.learnSkillFromRecord = learnSkillFromRecord;
5
8
  exports.getRelevantSkills = getRelevantSkills;
6
9
  exports.reapColdSkills = reapColdSkills;
7
10
  exports.getAllSkills = getAllSkills;
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const os_1 = __importDefault(require("os"));
14
+ const chalk_1 = __importDefault(require("chalk"));
15
+ const SKILLS_FILE = path_1.default.join(os_1.default.homedir(), '.yuangs_skills.json');
8
16
  let skillLibrary = [];
17
+ // === Persistence Logic ===
18
+ function loadSkills() {
19
+ if (fs_1.default.existsSync(SKILLS_FILE)) {
20
+ try {
21
+ const data = fs_1.default.readFileSync(SKILLS_FILE, 'utf-8');
22
+ skillLibrary = JSON.parse(data);
23
+ }
24
+ catch (e) {
25
+ console.error(chalk_1.default.yellow(`Failed to load skills from ${SKILLS_FILE}, starting empty.`));
26
+ skillLibrary = [];
27
+ }
28
+ }
29
+ }
30
+ function saveSkills() {
31
+ try {
32
+ fs_1.default.writeFileSync(SKILLS_FILE, JSON.stringify(skillLibrary, null, 2));
33
+ }
34
+ catch (e) {
35
+ console.error(chalk_1.default.red(`Failed to save skills to ${SKILLS_FILE}`));
36
+ }
37
+ }
38
+ // Initialize on load
39
+ loadSkills();
40
+ // === Existing Logic with Save Hooks ===
9
41
  /**
10
42
  * 计算技能分 (0 ~ 1)
11
43
  */
@@ -36,6 +68,7 @@ function updateSkillStatus(skillId, success) {
36
68
  // 失败惩罚: 惩罚力度大于奖励,防止系统“自嗨”
37
69
  skill.confidence = Math.max(0, skill.confidence - 0.1);
38
70
  }
71
+ saveSkills(); // Persist changes
39
72
  }
40
73
  /**
41
74
  * 自动学习新技能
@@ -66,6 +99,7 @@ function learnSkillFromRecord(record, success = true) {
66
99
  });
67
100
  // 每学习一次,尝试清理一次“冷”技能
68
101
  reapColdSkills();
102
+ saveSkills(); // Persist changes
69
103
  }
70
104
  /**
71
105
  * 筛选并排序技能 (用于注入 Prompt)
@@ -85,6 +119,7 @@ function getRelevantSkills(input, limit = 3) {
85
119
  */
86
120
  function reapColdSkills() {
87
121
  const now = Date.now();
122
+ const initialCount = skillLibrary.length;
88
123
  skillLibrary = skillLibrary.filter(skill => {
89
124
  const score = computeSkillScore(skill, now);
90
125
  const idleDays = (now - skill.lastUsed) / (1000 * 60 * 60 * 24);
@@ -103,6 +138,9 @@ function reapColdSkills() {
103
138
  skillLibrary.sort((a, b) => computeSkillScore(a, now) - computeSkillScore(b, now));
104
139
  skillLibrary.shift();
105
140
  }
141
+ if (skillLibrary.length !== initialCount) {
142
+ saveSkills(); // Persist if changes happened
143
+ }
106
144
  }
107
145
  function getAllSkills() {
108
146
  return [...skillLibrary];
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/agent/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/agent/skills.ts"],"names":[],"mappings":"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"}