free-code-dotnet/docs/服务子系统设计/服务子系统设计.md
应文浩wenhao.ying@xiaobao100.com e25ac591a7 init easy-code
2026-04-06 07:24:24 +08:00

94 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 服务子系统设计 — 总览
> **所属项目**: free-code .NET 10 重写
> **文档类型**: 模块索引
> **对应源码**: `../../src/services/oauth/`, `../../src/utils/memory/`, `../../src/voice/`
> **配套文档**: [总体概述](../总体概述与技术选型/总体概述与技术选型.md) | [核心模块设计](../核心模块设计/核心模块设计.md) | [基础设施设计](../基础设施设计/基础设施设计.md)
---
## 概述
服务子系统层封装了 free-code 运行时所需的各类横切关注点,包括身份认证、会话记忆、语音输入、通知推送、速率限制跟踪和同伴系统。这一层不直接参与 LLM 查询主路径,而是为核心模块和 UI 层提供基础能力。
原始 TypeScript 实现中,这些服务分散于 `../../src/services/oauth/``../../src/utils/memory/``../../src/voice/``../../src/buddy/` 等多个目录。.NET 10 重写将其整理为三个职责清晰的文档,每个服务通过接口向上层暴露,内部实现完全封装。
---
## 架构概览
```
服务子系统
├── IAuthService 认证与 OAuthAnthropic + Codex
│ └── ISecureTokenStorage Keychain / 跨平台安全存储
├── ISessionMemoryService 会话记忆提取(阈值触发)
│ └── IAutoDreamService 后台记忆合并24h / 会话数触发)
│ └── ITeamMemorySyncService 团队记忆 Git 同步
└── 其他服务
├── IRemoteSessionManager 远程会话管理
├── IVoiceService 语音输入push-to-talk
├── INotificationService 终端通知iTerm2 / Kitty / Ghostty
├── IRateLimitService API 速率限制跟踪
└── ICompanionService 同伴系统(确定性 ASCII 宠物)
```
---
## 子模块列表
### [认证与 OAuth](服务子系统设计-认证与OAuth.md)
覆盖 `IAuthService` 接口、`AuthService` 实现Anthropic 和 Codex OAuth 流程),以及 `ISecureTokenStorage` 与 macOS Keychain 的集成。
- 原始源码: `../../src/services/oauth/`
- 核心类型: `IAuthService``AuthService``ISecureTokenStorage``KeychainTokenStorage`
---
### [会话记忆与上下文](服务子系统设计-会话记忆与上下文.md)
覆盖 `ISessionMemoryService` 的阈值触发提取机制、`IAutoDreamService` 的后台记忆合并循环,以及 `ITeamMemorySyncService` 的 Git 推拉与秘密扫描流程。
- 原始源码: `../../src/utils/memory/`
- 核心类型: `ISessionMemoryService``SessionMemoryService``IAutoDreamService``AutoDreamService``ITeamMemorySyncService``TeamMemorySyncService`
---
### [其他服务子系统](服务子系统设计-其他服务子系统.md)
覆盖远程会话、语音输入、终端通知、API 速率限制跟踪和同伴Buddy系统的完整接口与实现设计。
- 原始源码: `../../src/voice/``../../src/buddy/`、notification 系统、rate limit 头解析
- 核心类型: `IRemoteSessionManager``IVoiceService``INotificationService``IRateLimitService``ICompanionService`
---
## 关键设计决策
**接口驱动的安全存储**
原始 TypeScript 代码直接调用 Keychain 命令行工具,与平台深度耦合。.NET 重写通过 `ISecureTokenStorage` 接口隔离平台细节macOS 使用 `KeychainTokenStorage`,其他平台可替换为 DPAPI 或 Secret Service 实现,不影响上层逻辑。
**记忆提取采用轻量模型**
`SessionMemoryService``AutoDreamService` 均使用 `claude-haiku-4-5` 执行提取和合并,而非主会话使用的 Opus/Sonnet 模型。这样既控制了成本,又不阻塞主查询路径(记忆操作在后台异步完成)。
**团队记忆的秘密扫描门控**
`TeamMemorySyncService.PushAsync` 在提交到 Git 之前强制扫描变更内容,任何检测到 API key 或密码模式的内容都会中止推送并抛出异常,防止意外泄露敏感信息。
**同伴生成的确定性保证**
`CompanionService` 使用 `HashString(userId + "friend-2026-401")` 作为种子,通过 Mulberry32 PRNG 生成同伴属性。相同的 userId 永远产生相同的同伴,确保用户在不同设备或重装后看到同一只宠物。
---
## 参考资料
- [原始代码映射 — 服务子系统](reference/原始代码映射-服务子系统.md)
- [核心模块设计 — 查询引擎](../核心模块设计/核心模块设计-查询引擎-QueryEngine.md)
- [基础设施设计 — 后台任务管理](../基础设施设计/基础设施设计-后台任务管理.md)