From 6b06c4f52b415d76c7dbf95e55574e7210d975fe Mon Sep 17 00:00:00 2001 From: yi-ge Date: Thu, 6 Aug 2026 01:30:52 +0800 Subject: [PATCH] =?UTF-8?q?fix(skills):=20self-evolve=20=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E6=94=B9=E7=94=A8=20<=E6=A0=B9=E7=9B=AE=E5=BD=95>=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E5=86=99=E6=AD=BB=20~/.desirecore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 真机验证 desirecore#1678/#1682 时发现(desirecore#1689):隔离 dev 实例里跟 Agent 说一句 「记住 X」,它按 self-evolve 的路径模板请求执行 mkdir -p ~/.desirecore/users//agents/desirecore/memory/topics/ `~/.desirecore` 是**生产根目录**。实例的 DESIRECORE_HOME=/tmp/dc-test-xxx 完全没有生效 —— 路径不是从运行时根目录推导的,而是 Agent 照抄了技能文档里的字面量。实测批准后,生产目录下 真的多出了一棵空目录树(Write 被拒才没写进内容)。 任何用 `--home` 或 `~/.desirecore-dev` 的开发/测试实例,Agent 一旦触发记忆写入就会污染生产 数据;反过来生产环境下路径恰好对,所以一直没被发现。 改法照 app-install-manager/SKILL.md:41 的既有范本(那份处理得是对的):8 处路径字面量改为 `<根目录>/...`,并在首次出现处加一句「以自我感知里的实际根目录为准,不要照抄字面量」。 skills/_index.md 的 2 处描述性引用一并对齐 —— Agent 同样可能照抄。 --- skills/_index.md | 4 ++-- skills/self-evolve/SKILL.md | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/skills/_index.md b/skills/_index.md index 2299342..b777964 100644 --- a/skills/_index.md +++ b/skills/_index.md @@ -1,6 +1,6 @@ # 技能索引 — DesireCore -> create-agent、update-agent、delete-agent、discover-agent 已迁移至全局技能层(`~/.desirecore/skills/`), +> create-agent、update-agent、delete-agent、discover-agent 已迁移至全局技能层(`<根目录>/skills/`), > 由 `syncBuiltinSkills()` 捆绑源自动同步,不再随 Agent 仓库分发。 ## 元技能(Meta-Skills) @@ -27,7 +27,7 @@ │ └─────────────┘ └──────────────────┘ │ └──────────────────────────────────────────────┘ - 全局技能(~/.desirecore/skills/) + 全局技能(<根目录>/skills/) ┌──────────────────────────────────────────────┐ │ ┌─────────────┐ ┌─────────────┐ │ │ │ create-agent │ │ delete-agent │ │ diff --git a/skills/self-evolve/SKILL.md b/skills/self-evolve/SKILL.md index 1a11439..b8d5f86 100644 --- a/skills/self-evolve/SKILL.md +++ b/skills/self-evolve/SKILL.md @@ -84,10 +84,14 @@ self-evolve 是一个**元技能(Meta-Skill)**,赋予 Agent 自我学习 ### 进化类型与目标(AgentFS v2 扁平结构) +> **路径里的 `<根目录>` 一律指你的 AgentFS 根**:生产为 `~/.desirecore`,开发隔离为 +> `~/.desirecore-dev` 或启动时通过 `DESIRECORE_HOME` 指定的目录 —— **以自我感知里的实际根目录 +> 为准,不要照抄字面量**。写死 `~/.desirecore` 会让开发/测试实例把记忆写进生产数据目录。 + | 进化类型 | 目标域 | 示例 | |---------|-------|------| -| **用户偏好** | `~/.desirecore/users//profile.md` | 用户喜欢简洁回答 | -| **关系记忆** | `~/.desirecore/users//agents//memory/` | 用户的项目背景 | +| **用户偏好** | `<根目录>/users//profile.md` | 用户喜欢简洁回答 | +| **关系记忆** | `<根目录>/users//agents//memory/` | 用户的项目背景 | | **行为规则** | `principles.md` | 新的行为准则 | | **技能优化** | `skills/` | 技能执行改进 | | **知识积累** | `memory/` | 领域知识条目 | @@ -109,7 +113,7 @@ self-evolve 是一个**元技能(Meta-Skill)**,赋予 Agent 自我学习 - `persona.md` L0 section → **block**(核心身份不可被对话改变) - `principles.md` "绝不做" section → **block**(安全红线必须由人类显式修改) - `agent.json` access_control / privacy → **owner_only**(权限变更需 owner 审批) -- `~/.desirecore/users/*/privacy.md` → **owner_only**(隐私设置需用户本人修改) +- `<根目录>/users/*/privacy.md` → **owner_only**(隐私设置需用户本人修改) ### 进化流程详解 @@ -171,7 +175,7 @@ teaching_intent: 2. **生成 Diff**: ```diff -# ~/.desirecore/users//profile.md +# <根目录>/users//profile.md ## 沟通偏好 @@ -192,7 +196,7 @@ teaching_intent: 4. **确认后写入**: ```bash -git add ~/.desirecore/users//profile.md +git add <根目录>/users//profile.md git commit -m "learn(preference): 用户偏好表格展示对比信息 - 更新用户沟通偏好 @@ -251,7 +255,7 @@ impact_analysis: ┌─────────────────────────────────────────────────────┐ │ 1. [用户偏好] 你喜欢简洁的回答 │ -│ 风险:低 | 目标:~/.desirecore/users/xxx/profile.md│ +│ 风险:低 | 目标:<根目录>/users/xxx/profile.md│ ├─────────────────────────────────────────────────────┤ │ 2. [行为规则] 讨论预算时先确认货币单位 │ │ 风险:中 | 目标:principles.md │ @@ -267,7 +271,7 @@ impact_analysis: ### 进化回执 ```yaml -# ~/.desirecore/runs//receipts/evolution-.yaml +# <根目录>/runs//receipts/evolution-.yaml receipt: type: self-evolution timestamp: "2024-01-15T18:00:00Z" @@ -282,7 +286,7 @@ receipt: learning_items: - type: user_preference content: "用户喜欢简洁回答" - target: "~/.desirecore/users/xxx/profile.md" + target: "<根目录>/users/xxx/profile.md" risk_level: low status: applied git_commit: "abc123"