126 lines
4.2 KiB
Markdown
126 lines
4.2 KiB
Markdown
# 架构总览
|
||
|
||
## 定位
|
||
|
||
`llm-to-agent` 是纯个人使用、本地优先的开发助手与电脑管家。它以一个常驻 Runtime 作为唯一运行宿主,并通过 CLI、Web、Desktop 三个客户端共享数据和执行状态。
|
||
|
||
系统采用四层结构:
|
||
|
||
```text
|
||
Launcher / Supervisor
|
||
↓
|
||
Runtime Host
|
||
↓
|
||
Application Runtime
|
||
↓
|
||
Microkernel + Extensions
|
||
```
|
||
|
||
这四层表达职责和依赖方向,不要求第一版拆成四个独立进程。
|
||
|
||
## Launcher / Supervisor
|
||
|
||
Supervisor 位于 Agent 运行版本之外,只负责启动、版本切换、健康检查和失败回退。它不理解 Space、Conversation、Tool 或 Agent 推理。
|
||
|
||
Supervisor 在 P3 的 System Evolution 发布闭环中实现,P1/P2 开发阶段可以先由普通启动脚本承担进程拉起。
|
||
|
||
## Runtime Host
|
||
|
||
Runtime Host 是 Node.js 进程的组合入口,负责:
|
||
|
||
- 创建并启动 Application Runtime 与 Microkernel;
|
||
- 装配当前启用的扩展;
|
||
- 开启本地客户端连接;
|
||
- 处理进程信号、单实例和退出;
|
||
- 将配置与基础设施交给内部模块。
|
||
|
||
Host 不包含 Project、Conversation、Agent 工作流等业务规则。
|
||
|
||
## Application Runtime
|
||
|
||
Application Runtime 负责这个产品不可缺少的应用能力:
|
||
|
||
- Project / Task Space;
|
||
- Conversation 与持久化 Run Record;
|
||
- 本地数据 Repository 和唯一写入;
|
||
- 客户端 Command、Query 与 Event Stream;
|
||
- 当前 Space/Conversation 上下文;
|
||
- Profile 选择和基础并发策略。
|
||
|
||
它不包含 DeepSeek 请求、Shell、Git、浏览器驱动、提示词或具体 Agent 协作策略。
|
||
|
||
## Microkernel
|
||
|
||
Microkernel 负责一次 Agent 执行的通用机制:
|
||
|
||
- 创建内存中的 Run Context;
|
||
- 调用 Agent Behavior;
|
||
- 注册并调用 Tool;
|
||
- 执行 Hook Pipeline;
|
||
- 发出流式输出和运行事件;
|
||
- 传播取消信号并隔离执行错误。
|
||
|
||
Microkernel 不认识 Project、Task 或具体存储,也不依赖任何具体扩展。
|
||
|
||
## Extensions
|
||
|
||
扩展只放真正可替换、可按需增加的能力:
|
||
|
||
- **Adapter**:DeepSeek、未来模型提供商、浏览器或检索驱动;
|
||
- **Tool**:文件、Shell、Git、浏览器、桌面控制;
|
||
- **Hook**:围绕 Tool/Run 生命周期观察、限制或响应;
|
||
- **Behavior**:DefaultAgent、CodingAgent、Planner、Reviewer。
|
||
|
||
Space、Conversation 和持久化 Run Record 是 Application Runtime 的产品领域,不作为可卸载插件。
|
||
|
||
## Profile
|
||
|
||
Profile 是 Application Runtime 管理的声明式能力组合,不是独立运行层:
|
||
|
||
```text
|
||
Profile
|
||
├── 默认 Behavior
|
||
├── 可用 Tools
|
||
├── 启用 Hooks
|
||
├── 模型设置
|
||
└── 上下文/记忆策略
|
||
```
|
||
|
||
Project 和 Task 是 Space 类型;System Evolution 是应用于 Project 的特殊 Profile。
|
||
|
||
## 依赖规则
|
||
|
||
```text
|
||
Supervisor → Runtime Host
|
||
Runtime Host → Application Runtime / Microkernel / Extensions
|
||
Application Runtime → Microkernel 公共接口
|
||
Extensions → Microkernel 扩展接口
|
||
Microkernel ✕ Application Runtime / 具体 Extensions
|
||
Clients → Runtime Interface
|
||
```
|
||
|
||
目录隔离只是表现,以上依赖方向才是边界是否真实成立的判断依据。
|
||
|
||
## 客户端接口
|
||
|
||
CLI、Web、Desktop 逻辑上只使用三类交互:
|
||
|
||
- **Command**:创建 Space、发送消息、取消 Run 等状态变更;
|
||
- **Query**:读取 Space、Conversation、Run 和日志;
|
||
- **Event Stream**:接收模型增量、Tool 过程和 Run 状态。
|
||
|
||
具体采用 HTTP/SSE、Unix Socket 或其他本地协议在实现时确定,不提前冻结字段。
|
||
|
||
## Event 与 Hook
|
||
|
||
- **Run Event** 是发生过的事实,用于日志和客户端实时展示。
|
||
- **Hook** 是事件前后实际执行的扩展代码。
|
||
|
||
两者不能混为同一个事件总线:记录了一个事件,不代表必须触发可修改流程的 Hook。
|
||
|
||
## 演化原则
|
||
|
||
任何一层都允许由 Agent 修改,包括 Application Runtime 和 Microkernel。Agent 在 System Evolution Project 的隔离 worktree 中修改源码、运行测试并展示 Diff;Git 写操作由用户确认,Supervisor 负责切换构建版本和失败回退。
|
||
|
||
自进化依赖的是源码可修改、候选版本隔离、测试、发布和回退,不要求把所有产品能力插件化。
|