[[[下面这个是可以直接发给学生用的 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)
[[[下面这个是可以直接发给学生用的 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)