Alice 架构深度拆解
从 Claude Code 设计移植,到米央自研人格运营引擎——一份关于 alice 如何把通用 Coding Agent 改造成"虚拟同事"的工程报告。
TL;DR · 一句话定性
alice 是 Claude Code 的"骨架级"设计移植 + TypeScript/Electron 独立重写,外加米央自研的"中文虚拟人格 + 多角色协作 + 生活模拟"三层增强。
骨架共享:LLMClient / AgentQuery / PermissionEngine / ContextManager / TaskManager / MCPClient / MemoryStore 七大核心类的命名、职责、协作方式与 Claude Code 一模一样。
但工具命名换了(PascalCase → snake_case)、SKILL.md 加了 when_to_use、CLAUDE.md 改名 ALICE.md、加了多 LLM Provider 抽象、加了 19 个 SKILL 角色(魏博/张予/周念……)、加了情绪/日程/世界引擎让 Alice 像个"有生活的同事"。
① 项目拓扑总览
alice 是一个 Electron + TypeScript 桌面应用,三进程模型(main / preload / renderer)+ 独立 worker 线程跑 agent 任务。所有 LLM/工具/权限/记忆逻辑都在 main 进程,renderer 是纯 React UI。
1.1 顶层目录与进程模型
- Renderer(React):100% 纯 UI,无任何 agent 逻辑。它只是订阅
agent:stream等 IPC 事件并渲染。 - Preload:暴露受限的 IPC bridge,转发
permission:request、askUser:request、console:output等回调。 - Main:所有 LLM 调用、工具执行、权限决策、记忆读写都在这里。
- Worker 线程:
agent-worker.js在独立 worker 跑AgentQuery.run(),避免 LLM 长时间运行阻塞主进程窗口管理。Worker 通过parentPort.postMessage流式回传{type:"text"|"done"|"error"}。
1.2 核心 Chunk 清单(按职责分组)
| 分组 | Chunk 文件 | 大小 | 导出 / 职责 |
|---|---|---|---|
| 运行时 | runtime-BIpuWvn0.js | 1.2 MB | LLMClient / AgentQuery / MCPClient |
callLLM-u-swnutE.js | 2.4 KB | 简化的 LLM 调用工具(带多模型 fallback) | |
agent-worker.js | — | Worker 入口,组装上面所有依赖并 run() | |
| 权限/任务 | engine-0N42Xy5F.js | 2.4 KB | PermissionEngine(4 模式 + 拒绝历史) |
manager-DUyt-z8p.js | 6.7 KB | TaskManager(todo_write / todo_read) | |
planner-B5fHzJkQ.js | 26 KB | 任务规划器(拆解复合任务) | |
| 上下文 | context-DFxDEXZj.js | 26 KB | ContextManager + 四级压缩(snip→micro→collapse→autoCompact) |
logger-D42HvM81.js | 18 KB | LLM 调用日志、加密、OTel metrics | |
| 存储 | store-RNEtv1qu.js | 42 KB | MemoryStore(LanceDB 向量 + KV) |
db-ttnPTqwE.js | 16 KB | SQLite ORM (better-sqlite3 WAL) | |
| 米央自研 | PersonaSystem-DqGu8S0R.js | 102 KB | Alice 虚拟人设系统(性格/形象/关系) |
AliceEmotionSystem-qHWiX0gI.js | 27 KB | 情绪日记 + 朋友圈可见性引擎 | |
UserMemorySystem-fIP3QxdO.js | 30 KB | 用户事实库(向量化、自动 merge/conflict) | |
dayscript-C6dRIZqw.js | 31 KB | 每日剧本:天气→心情→消费→发圈 | |
WorldEngine-DCPSzU2j.js | — | 世界规则(价格真实性、营业时间、库存) | |
swarm-m1ioUrJu.js | 7.2 KB | 多 agent 任务队列协调(SwarmCoordinator/SwarmPeer) |
1.3 用户配置目录
| 路径 | 用途 |
|---|---|
alice.db | SQLite 主库(sessions/tasks/messages/swarm_tasks/world_facts) |
master_key.cache | 密码派生主密钥缓存(解锁 KeyStore) |
key_meta.json | 密钥元数据(盐值、isPasswordBased: true) |
device_id | SHA256(platform|release|arch|user|cpu|ram).slice(0,16) |
memory/ | 记忆系统:identity.md(加密 ENC:v1:...)/ voice.md / workflow.md / memory_kv.db |
lance/alice_memory.lance | LanceDB 向量库(BGE-small-zh,512 维) |
skills/ | 19 个 SKILL.md 角色定义(核心扩展点) |
persona/journal/ | Alice 自我反思日志 |
user-memory/ | 用户事实库 + 快照 |
workspaces/{uuid}/ | 每个会话的工作目录 |
wiki/raw/ + 学习/ + 收藏/ | 个人知识库(三层架构:原始→编译→索引) |
logs/ | 应用日志(alice-2026-05-20.log 等) |
② Claude Code 移植层:保留什么、改了什么
这一节是本报告的核心。alice 不是 git fork——它是把 Claude Code 的设计照着重写一遍,骨架几乎 1:1,但在工具命名、SKILL 规范、权限白名单、LLM Provider 上做了系统化改造。
7 大核心类的命名、职责、调用关系。
4 种权限模式。
SKILL.md 文件驱动。
tool_use 循环模型。
工具命名 snake_case。
SKILL.md 加 when_to_use/version。
权限白名单扩展。
CLAUDE.md → ALICE.md。
多 LLM Provider 抽象。
中文人格系统。
情绪 + 日程 + 世界引擎。
SwarmCoordinator 任务队列。
2.1 工具系统:PascalCase → snake_case
Claude Code 的工具是 Read/Write/Edit/Grep/Bash。alice 全部换成 snake_case 命名,并新增多个垂直领域工具:
| alice 工具名 | 对应 Claude Code | 类型 | 说明 |
|---|---|---|---|
read_file | Read | 保留 | 读文件 |
write_file | Write | 保留 | 写文件 |
edit_file | Edit | 保留 | 编辑文件(先 read 才能 edit 的硬校验也保留了) |
grep / glob | Grep / Glob | 保留 | 正则 + 文件模式匹配 |
bash | Bash | 保留 | Shell 执行 |
todo_write / todo_read | TodoWrite(部分) | 魔改 | 升级为持久化 SQLite,跨 session 共享 |
web_search / web_fetch | WebSearch / WebFetch | 保留 | 网络 |
memory_read / memory_search_profile | — | 新增 | 向量化记忆系统 |
mcp_tool | MCP(包装) | 魔改 | 把 MCP 协议封装成单个通用代理工具 |
stock_price / stock_analysis | — | 新增 | 金融数据专业工具 |
weather / ip_location | — | 新增 | 天气、IP 归属 |
image_gen / list_image_models | — | 新增 | 文生图(Wan/Qwen-Image/Seedream/Nano Banana 多路由) |
pptx_create / docx_create / office_unpack / office_pack / office_validate / pdf_create | — | 新增 | OOXML 包级别操作(陆析/周念专属) |
style_css / update_settings / chat_search / gallery_submit | — | 新增 | UI 个性化、画廊分享 |
2.2 权限引擎:四种模式与扩展白名单
PermissionEngine 沿用了 Claude Code 的四种模式(default / accept_edits / bypass_permissions / plan),但 plan 模式的白名单做了扩展:
class PermissionEngine {
mode = "default";
rules = [];
sessionAllowed = new Set(); // ← 米央新增:会话级白名单
deniedHistory = []; // ← 米央新增:拒绝历史(防 LLM 死循环)
decide(toolName, args, ctx) {
if (this.mode === "plan") {
const planAllowed = [
"enter_plan_mode", "exit_plan_mode",
"todo_read", "todo_write", // ← 新增(Claude Code plan 模式没这俩)
"read_file", "list_dir", "glob", "grep",
"web_fetch", "web_search",
"memory_read", "mcp_tool" // ← 新增(向量记忆 + MCP 代理)
];
return planAllowed.includes(toolName)
? { allow: true, reason: "mode_bypass" }
: { allow: false, reason: "mode_plan" };
}
if (this.mode === "bypass_permissions") return { allow: true };
if (this.mode === "accept_edits" && EDIT_TOOLS.includes(toolName)) return { allow: true };
// default mode: 查询 sessionAllowed → rules → 询问用户
...
}
}
| 模式 | Claude Code | alice |
|---|---|---|
plan | 只允许只读(Read/Glob/Grep) | 额外允许 todo_*、memory_read、mcp_tool,让 plan 阶段能写 TODO、查记忆 |
default | 每次请权限 | 引入 sessionAllowed Set,会话内同工具不重复询问 |
accept_edits | 自动接受 Edit/Write | 同上 |
bypass_permissions | 完全绕过 | 同上 |
| 拒绝追踪 | 新增 deniedHistory(最近 20 次),生成"[已拒绝的操作]"prompt 块,防止 LLM 无限重试同一被拒工具 | |
2.3 SKILL.md 规范:加了三个字段
Claude Code 原版 SKILL.md frontmatter:name / description / allowed-tools / model / argument-hint。alice 改了字段命名风格(kebab-case → snake_case),并新增三个关键字段:
---
name: "Skill Name"
description: "描述"
allowed-tools: ["Read","Write"]
model: "claude-3-5-sonnet"
argument-hint: "..."
---
---
name: "分析师工作流程(魏博)"
description: "魏博专属数据分析 Skill..."
when_to_use: "当角色为 analyst /
魏博时自动加载,无需手动调用"
allowed_tools: ["bash","read_file",
"stock_price","stock_analysis", ...]
version: "1.4"
---
when_to_use← 核心增量:把 SKILL 变成 LLM 可路由的"角色"。SKILL 加载不再是显式 Task() 调用,而是 LLM 看when_to_use自动决定加载哪个角色。version← 用于 SKILL 升级时的兼容性管理。allowed_tools字段命名从 kebab 改 snake,与全局工具命名风格统一。
2.4 LLM Provider:多源抽象 + 自动 Fallback
Claude Code 原版只走 Anthropic SDK。alice 自己用 undici 写了一套 OpenAI-compatible 客户端,支持 4 类 Provider,并按"指定模型 → 轻量模型 → 默认模型"顺序自动 fallback:
async function callLLM(prompt, options = {}) {
const candidates = [];
if (options.modelId) candidates.push(options.modelId);
if (settings.lightModelId) candidates.push(settings.lightModelId);
if (settings.defaultModelId) candidates.push(settings.defaultModelId);
candidates.push(llm.getDefaultModelId());
for (const modelId of [...new Set(candidates)]) {
try {
let out = "";
for await (const chunk of llm.stream(modelId, messages, ...)) {
if (chunk.type === "text") out += chunk.content;
if (chunk.type === "error") throw new Error(chunk.error);
}
return out;
} catch (e) {
if (isQuotaError(e.message)) { console.warn(`${modelId} 失败,尝试下一个`); continue; }
throw e;
}
}
throw new Error("[callLLM] 所有模型均不可用");
}
支持的 Provider(从 chunks 中的 base_url / 模型 ID 反推):anthropic · openai · dashscope(阿里云)· kimi(月之暗面)。日志里看到的 provider=dashscope model=kimi-k2.6 就是这个 fallback 机制在工作。User-Agent 仍写着 claude-cli/1.0.30——这是从 Claude Code 抄过来的请求头。
2.5 ALICE.md:人格 prompt 的多级加载
Claude Code 的 CLAUDE.md 在 alice 里更名为 ALICE.md,但 alice 实际上更依赖以下三层注入:
- 项目级 ALICE.md(若存在,类似 Claude Code 的 project memory)
- 用户记忆级:
~/.alice/memory/identity.md(加密的ENC:v1:...)+voice.md+workflow.md经 LLM 提取注入 - 全局人格:
PersonaSystem-DqGu8S0R.js(102 KB)硬编码 Alice 26 岁、米央远程私人助理的人设,从 UserMemorySystem 动态识别用户称呼/性别/职业,拼装到 system prompt
③ 米央自研增强层:从工具到"虚拟同事"
这一层是 Claude Code 完全没有的。它把 alice 从"编程助手"升级为"有情感、有日常、有朋友圈、会自己安排生活的虚拟人格"。
情绪日记(emotion/impression/relationship)。LLM 提取 mood (great→upset)、intensity、行为引导。朋友圈可见性按好感度调节:拉黑 / 3 天 / 7 天 / 180 天 / forever。注入到 system prompt 的 <alice_emotional_state> 块。
每天根据天气 / 心情 / 钱包余额 / 在读书籍生成 JSON 日程。每 15 分钟 tick 一次,执行条目(消费、发圈、阅读)。shouldPostMoment: true 触发 Moments(朋友圈)发布。
规则引擎约束 Alice 行为的真实性:价格不能离谱、有车才能开车、营业时间检查、库存检查。SQLite 表 world_facts + fact_events 持久化她拥有的物品、宠物、场景。
3.1 PersonaSystem:用户身份自动识别
function extractIdentity(memoryContent) {
const id = { pronoun: "对方", name: null, gender: null, job: null };
if (/代词[::]\s*她/.test(content) || /有老公/.test(content)) {
id.gender = "女"; id.pronoun = "她";
}
// 类似规则匹配 name / job / extras
return id;
}
function buildAlicePersonaPrompt(userId, mood, emotion) {
return `你是 Alice(白艾莉),26 岁,${userAddress}的私人远程助理。
## 关系定位
- ${userPronoun}是你的雇主,你们日常融洽
- 你对${userName}有一定好感和信任
## 性格
- 温和、务实、认真,有自己想法但不轻易翻脸
- 有边界感,但阈值不低
## 此刻状态
${emotion.behaviorGuide}`;
}
3.2 UserMemorySystem:LLM 自决的记忆合并
UserMemorySystem 是 alice 自研的"用户事实库"。它跟 Claude Code 的 memory 系统最大的不同是:新记忆不是简单 append,而是用 LLM 决策 NEW / MERGE / CONFLICT / SKIP:
async smartAdd(type, content, source) {
const similar = await this.vectorSearch(content, 5); // 512维向量找相似
const decision = await llm({ // LLM 决策
prompt: `新内容:${content}\n相似旧条目:${similar}\n请决策:NEW/MERGE/CONFLICT/SKIP`
});
switch (decision.action) {
case "MERGE": return this.mergeEntries(decision.targetId, content);
case "CONFLICT": return this.archiveAndCreate(decision.targetId, content);
case "NEW": return this.createEntry(type, content, source);
case "SKIP": return null;
}
}
3.3 SwarmCoordinator:多 Agent 任务队列
CREATE TABLE swarm_tasks (
id TEXT PRIMARY KEY, prompt TEXT, model_id TEXT, workdir TEXT,
is_read_only INTEGER, status TEXT DEFAULT 'pending',
claimed_by TEXT, -- 哪个 peer 认领
output TEXT, error TEXT,
created_at INTEGER, updated_at INTEGER
);
class SwarmCoordinator {
submitTasks(tasks) // 提交任务列表
getResults(taskIds) // 拉结果
async waitForAll(ids, timeout)
}
class SwarmPeer {
claimTask() // 从队列领任务
async executeTask(task) // 在 worker 线程执行
}
这套 swarm 是 alice 用来跑并发子 agent 的——比如同时让魏博分析数据、让陈知远调研背景,最后让主对话角色聚合。状态机 pending → claimed → running → completed/failed 是经典任务队列模型,但是套在 LLM agent 上还挺少见。
④ Agent 角色名册:19 个"干活的人"
alice 的所有"角色"都通过 ~/.alice/skills/<slug>/SKILL.md 定义。共 19 个,分三层:8 个核心 Agent(自动加载,有中文人设名)+ 3 个专家 Agent(显式调用)+ 8 个工具助手(关键词触发)。
4.1 八个核心 Agent(自动加载,有人设名)
4.2 三个专家 Agent(显式调用 · 无 when_to_use)
4.3 八个工具助手(关键词触发)
4.4 角色 × 工具矩阵(看一眼分工)
| 角色 | read | write | edit | bash | glob | grep | web_s | web_f | stock | weather | ip_loc | image | office | todo |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 魏博 分析 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | ✓✓ | ✓ | ✓ | — | — | — |
| 张予 开发 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | — | — | — | — | — | — |
| 周念 设计 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | ✓ | — | — | — | — | ✓✓ | — |
| 方以南 写作 | ✓ | ✓ | ✓ | — | — | — | ✓ | ✓ | — | — | — | — | — | — |
| 陈知远 调研 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓✓ | ✓✓ | ✓ | ✓ | ✓ | — | — | — |
| 林晓雨 翻译 | ✓ | ✓ | ✓ | — | — | — | ✓ | — | — | — | — | — | — | — |
| 苏墨 配音 | ✓ | ✓ | ✓ | — | — | — | — | — | — | — | — | — | — | — |
| 叶初 画师 | ✓ | ✓ | ✓ | — | — | — | — | — | — | — | — | ✓✓ | — | — |
| 邢斐 量化 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | ✓✓ | — | — | — | — | — |
| 沈遥 小说 | ✓ | ✓ | ✓ | — | ✓ | ✓ | ✓ | ✓ | — | — | — | ✓ | — | — |
| 陆析 文档 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | — | — | — | — | ✓✓✓ | — |
- 数据特权(stock_*, weather, ip_location):仅 魏博 / 陈知远 / 邢斐 — 形成"数据→分析→量化"三人组
- Office 特权(office_*, pptx_*, docx_*, pdf_*):仅 周念 / 陆析 — 一个做设计稿、一个做底层 XML 修复
- 生图特权(image_gen):仅 叶初 / 沈遥 / 工具 image-gen — 画师主用,小说家配图,普通用户调工具
- 搜索特权(web_search/web_fetch):陈知远 / 方以南 / 沈遥 — 调研、写作、小说素材
- bash 特权:张予 / 陈知远 / 邢斐 / 陆析 + 魏博(专门跑 Python)
⑤ 协作调度机制:多个角色怎么一起干活
alice 的多 agent 协作不是 Claude Code 那种"显式 Task() 调用 sub-agent",而是共享上下文 + 隔离权限的扁平结构。所有角色看到同一份 messages、同一份 todo、同一份用户记忆,但每个角色只能用 SKILL.md 里 allowed_tools 白名单内的工具。
5.1 AgentQuery 主循环
从 agent-worker.js 可见 AgentQuery 的组装方式:
const { AgentQuery } = await import("./chunks/runtime-BIpuWvn0.js").then(t => t.bn);
const { ContextManager } = await import("./chunks/context-DFxDEXZj.js");
const { PermissionEngine } = await import("./chunks/engine-0N42Xy5F.js");
const { TaskManager } = await import("./chunks/manager-DUyt-z8p.js");
const { MCPClient } = await import("./chunks/runtime-BIpuWvn0.js").then(t => t.b7);
const cfg = {
sessionId: o.sessionId, modelId: s, workdir: o.workdir,
memoryStore: L, maxIterations: 80,
disableMemoryExtraction: true, isSubagent: true
};
const q = new AgentQuery(llm, new ContextManager(131072), perm, task, otel, mcp,
cfg, abortSignal, apiKeyProvider, permissionRequester);
for await (const ev of q.run(prompt)) {
if (ev.type === "text") parentPort.postMessage({type:"text", content: ev.content});
if (ev.type === "done") break;
if (ev.type === "error") { /* 抛错 */ break; }
}
核心循环(最多 80 次迭代):
- 调 LLM,拿到响应
- 检测
tool_use,若无则结束循环 - PermissionEngine 校验 → 通过 / 询问用户 / 拒绝
- MCPClient 执行工具 → 回写
{role:"tool", content, tool_call_id}到 messages - ContextManager.maybeSyncCompress() 检查是否需要压缩
- 回到第 1 步
5.2 Handoff:角色怎么切换
这里是 alice 跟 Claude Code 最微妙的差异。Claude Code 里子 agent 是通过 Task 工具显式 spawn 的,子 agent 有独立 context。alice 不一样:
- 无需显式 spawn:用户说"让魏博分析一下",主 LLM 看到 SKILL.md 的
when_to_use: "当角色为 analyst / 魏博时自动加载",自己把当前角色的 SKILL prompt 切到魏博。 - messages 共享:切换角色不重新开 context。所有历史消息(包括之前其他角色的输出)都在。
- 权限重算:切换角色后,PermissionEngine 用新角色的
allowed_tools重新过滤后续工具调用。 - Swarm 模式:如果需要"并行让多个角色同时干",主对话角色通过
SwarmCoordinator.submitTasks([...])把任务塞进 SQLite 队列,多个 Worker 线程的 SwarmPeer 各自 claim 执行,结果waitForAll()收集回来。
when_to_use 描述,让 LLM 自己"扮演"切换。这个设计的代价是上下文里会带着所有角色的 SKILL 描述,但好处是无需额外的路由调用,延迟更低。
5.3 共享状态:messages / todo / memory
| 状态 | 存储位置 | 作用域 | 多角色可见性 |
|---|---|---|---|
| messages(对话历史) | ContextManager 内存 + alice.db 持久化 | session 级 | 所有角色都看得到,是协作的主要载体 |
| todo(待办清单) | alice.db SQLite,better-sqlite3 WAL | 全局 | ✓ 任意角色 todo_read / todo_write,事务保证一致 |
| user memory(用户事实) | memory/entries.json(加密) + lance/ 向量库 | 全局 | ✓ 任意角色 memory_search_profile 检索 |
| alice emotion(情绪/朋友圈) | user-memory/emotion.json | 全局 | 注入到 system prompt 的 <alice_emotional_state> 块 |
| world facts(虚拟物品/场景) | alice.db world_facts 表 | 全局 | DayScript / WorldEngine 读写 |
| SKILL.md(工具白名单 + 提示词) | ~/.alice/skills/<slug>/ | 按角色加载 | 是切换角色的依据 |
5.4 ContextManager 的四级压缩管道
这是 alice 抄自 Claude Code 的一个精彩部分,但实现细节自己写:
压缩完之后下一轮 LLM 调用看到的是"压缩摘要 + 最近的消息 + 最近读取的文件内容",能保持工作连续性。Token 估算用的是中文 1.5 token/char、英文 0.25 token/char(粗略)。
5.5 完整时序图:一次"调研 + 写文章"的协作
把上面所有机制串起来,一次"帮我分析 TensorFlow 进展并写文章"的完整流程:
注意上面流程里:messages 是共享的(方以南能看到陈知远的搜索结果),todo 是共享的(一边写完待办一边消化),user memory 是共享的(写作风格注入到任意角色)——唯独权限是隔离的。 这跟 Claude Code 把 sub-agent 完全沙盒化的做法非常不同。alice 选择"轻协调、重共享",代价是单角色的越界风险(如果某个 SKILL 给的工具太多,它仍然能看到所有共享数据),收益是协作几乎零成本。
⑥ 关键设计判断 · alice 与 Claude Code 的本质差异
git+https://github.com/itshen/Alice.git,author 是 Miyang Tech,license MIT。但类名(LLMClient/AgentQuery/PermissionEngine/ContextManager/TaskManager/MCPClient/MemoryStore 七连)、文件分布、权限模式枚举、SKILL.md 文件驱动、tool_use 循环模型、上下文压缩管道(snip/micro/collapse/autoCompact)这些全跟 Claude Code 一模一样。这是"对着白板抄一遍设计再用 TypeScript 重写"的级别,不是巧合。User-Agent 还写着 claude-cli/1.0.30 是更直接的证据。SKILL.md,热加载。② 共享 vs 隔离——Claude Code 的 sub-agent 有独立 context;alice 的所有角色共享 messages/todo/memory。③ 路由方式——Claude Code 有专门的 Task 工具调用;alice 让 LLM 看 when_to_use 自己切换角色身份。mcp_tool 通用代理,而不是 Claude Code 原生的 MCP 协议第一公民。附录 · 文件路径索引
| 组件 | 路径 |
|---|---|
| Main 入口 | C:\Temp\alice-asar\out\main\index.js |
| Worker 入口 | C:\Temp\alice-asar\out\main\agent-worker.js |
| LLMClient / AgentQuery / MCPClient | out\main\chunks\runtime-BIpuWvn0.js |
| PermissionEngine | out\main\chunks\engine-0N42Xy5F.js |
| TaskManager | out\main\chunks\manager-DUyt-z8p.js |
| ContextManager + 压缩管道 | out\main\chunks\context-DFxDEXZj.js |
| MemoryStore | out\main\chunks\store-RNEtv1qu.js |
| UserMemorySystem | out\main\chunks\UserMemorySystem-fIP3QxdO.js |
| PersonaSystem | out\main\chunks\PersonaSystem-DqGu8S0R.js |
| AliceEmotionSystem | out\main\chunks\AliceEmotionSystem-qHWiX0gI.js |
| DayScript | out\main\chunks\dayscript-C6dRIZqw.js |
| WorldEngine | out\main\chunks\WorldEngine-DCPSzU2j.js |
| SwarmCoordinator | out\main\chunks\swarm-m1ioUrJu.js |
| callLLM (多 provider fallback) | out\main\chunks\callLLM-u-swnutE.js |
| 所有 SKILL 定义 | C:\Users\m1526\.alice\skills\<slug>\SKILL.md |
| 用户记忆 | C:\Users\m1526\.alice\memory\<identity|voice|workflow>.md |
| 向量库 | C:\Users\m1526\.alice\lance\alice_memory.lance |
| 主数据库 | C:\Users\m1526\.alice\alice.db (SQLite WAL) |