Skip to content

系统架构设计文档 #514

@phantom5099

Description

@phantom5099

[[[下面这个是可以直接发给学生用的 Markdown 模板 + 示例点评,已经帮你整理成教学版结构(可复制直接用):

🧩 软件系统构架文档(教学模板)

⚠️ 重要原则:
构架文档 ≠ 代码说明
构架文档 = 解释“系统为什么这样设计”

一、系统定位(Why)

1.1 系统是做什么的?

用一句话说清楚系统的目标

👉 示例:
• 一个终端 AI Coding Agent,允许用户通过自然语言操作代码

1.2 解决什么问题?

👉 至少写 2 点:
• 用户不会写复杂命令或代码
• 编程操作流程复杂且重复
• LLM 本身无法直接操作文件系统

1.3 核心挑战

👉 至少写 2 点:
• LLM 输出不稳定
• 工具执行具有副作用(可能破坏系统)
• 上下文长度有限
• 多轮任务需要状态管理

二、核心机制(Core Engine)

⚠️ 这是整个系统最重要的一部分

2.1 系统是“单次执行”还是“循环系统”?

👉 示例:
• 本系统是一个循环系统(Agent Loop)

2.2 核心循环是什么?

👉 示例:

用户输入 → 推理(LLM)→ 调用工具 → 获取结果 → 再推理 → 输出结果

👉 或画成流程:

flowchart LR
A[用户输入] --> B[LLM推理]
B --> C[工具调用]
C --> D[结果返回]
D --> B
B --> E[最终输出]

三、核心角色(Core Abstractions)

⚠️ 不要写类名,要写“角色”

3.1 系统中的关键角色

角色 职责
Context 管理上下文(历史、规则、状态)
Provider 提供 LLM 能力
Runtime 控制整个执行流程
Tool 执行具体操作(文件、命令等)
Security 控制权限与边界
UI/TUI 展示结果与交互

3.2 角色关系(简图)

flowchart LR
User --> Runtime
Runtime --> Context
Runtime --> Provider
Runtime --> Tool
Tool --> Runtime
Runtime --> UI

四、数据流(Data Flow)

⚠️ 一定要写,否则系统是“静态的”

4.1 数据如何流动?

用户输入
→ Context 组装上下文
→ Provider 推理
→ Tool 执行
→ 结果回写 Context
→ 输出给用户

4.2 关键问题
• 数据从哪里来?
• 是否被裁剪/压缩?
• 是否回流?

五、行动机制(Action Model)

5.1 系统如何“做事”?

👉 示例:
• LLM 决定是否调用工具
• Runtime 解析 Tool Call
• Tool 执行操作
• 返回结果给 LLM

5.2 是否支持多步行动?
• 是否循环执行?
• 是否有最大步数限制?

六、约束与边界(Constraints)

⚠️ 没有这一节 = 不是架构

6.1 系统限制
• 最大循环次数(防死循环)
• Tool 执行超时
• 输出长度限制

6.2 安全机制
• 权限控制
• 工作区隔离
• 危险操作拦截

6.3 失败处理
• Tool 执行失败怎么办?
• LLM 输出错误怎么办?

七、可扩展性(Evolution)

7.1 哪些地方允许扩展?
• Provider(支持不同模型)
• Tool(新增能力)
• Context(增加记忆)

7.2 如何扩展?

👉 示例:
• 使用 Registry 注册新 Provider
• Tool 使用接口 + Schema 定义
• Context Builder 插件化

八、(可选)系统总结

👉 用一句话总结:

本系统的核心是一个基于 ReAct 循环的 Agent,通过 Runtime 驱动 LLM 与 Tool 协作完成任务,并通过 Context 管理状态,通过 Security 控制边界。

🧠 附:如何评价一个构架文档(评分标准)

维度 问题 是否达标
Why 是否解释为什么做这个系统 ✅/❌
Engine 是否说明核心机制 ✅/❌
Abstraction 是否定义关键角色 ✅/❌
Flow 是否描述数据流 ✅/❌
Constraints 是否说明限制和安全 ✅/❌

👉 评分建议:
• 5/5:优秀(真正的架构文档)
• 3/5:及格(偏实现说明)
• ≤2:不合格(只是代码描述)

📌 教师点评示例(以 NeoCode 为例)

👉 优点:
• 核心机制(ReAct Loop)非常清晰 ✅
• 模块划分合理(Runtime / Tool / Provider)✅
• 有安全与限制设计 ✅

👉 不足:
• “为什么这样设计”解释不足 ❌
• 数据流没有显式表达 ❌
• Context 设计可能未来膨胀 ❌

👉 总评:

这是一个优秀的工程设计文档,但可以进一步提升为“架构文档”。

✅ 最后一条(一定要强调给学生)

架构文档的目标不是描述代码,而是让别人理解:
这个系统“为什么必须这样设计,而不是别的方式”。

如果你下一步想更狠一点,我可以帮你做一个:

👉 “学生常见错误架构文档 vs 优秀架构文档”的对比版(非常有教学杀伤力)](https://mp.weixin.qq.com/s/xSbMNb_5VxiRA2FUcFIQWw)](https://mp.weixin.qq.com/s/xSbMNb_5VxiRA2FUcFIQWw)](https://mp.weixin.qq.com/s/xSbMNb_5VxiRA2FUcFIQWw)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions