七、分工说明
我们的任务书以及项目文档里提供到的分工与我们最终落实的分工有差距,下面是实际执行时的分工。
目录
- 魂兮归乡
- 贝格拉夫
- dogdogw
- epiphany狂人
- w_x_yao
魂兮归乡
项目管理:
- 确定项目需求、绘制 UI 原型
- 技术选型、确定项目文件结构、总管项目的 Gitee Repository
- 分工、监督进度、审核并重构代码以确保项目质量和 UX 一致性
- 组织填写任务书、准备开题答辩 PPT、参加开题答辩、参加中期答辩、组织准备期末答辩、准备期末答辩的展示用数据、在期末答辩中负责整体程序展示
- 编写项目文档:
- 一、项目介绍
- 二、分工与进度
- A1、进度汇报(— 25/04/22)
- 三、项目开发规范
- A2、进度汇报(— 25/05/04)
- 四、组件/教程文档
- 五、项目松散规范
- A3、进度汇报(— 25/05/10)
- B1、进度汇报(— 25/05/31)
- 六、软件操作手册
- B2、进度汇报(— 25/06/16)
- 八、工作指令提示词汇总
- 九、官方人格提示词汇总
- “诤略参谋”官方人格深度可视化介绍
- 十、得失与展望
- 十一、代码说明文档(未发布到 CSDN,请见提交的材料)
- 十一、Gemini 2.5 Pro 对本项目的点评(编号未写错)
- B3、进度汇报(— 完)
- “基础设施建设”:
- 确定了 Vue Router 的路由层次结构
- 确定了设立各个 store、维护 store 中的状态、利用 store 中的状态渲染视图以实现多个共享数据组件的同步无缝局部刷新的方案
- 设计和配置了 Security 过滤器链、
CorsFilter
、JwtAuthFilter
,设计并开发了全局异常处理器、BizCode
、StdResponse
和前端(对http
对象的) axios 响应拦截器,实现了前端三件套 → Security 过滤器链 → MVC Controller → Service → (回程)数据库 → MVC Controller → (全局异常处理器) →StdResponse
→ axios 响应拦截器 → 全局弹窗系统 → store 中的更新状态逻辑的数据通讯主干道 - 配置了到
/avatars/**
(后端存储的人格头像文件)的静态资源映射 - 设计并开发了前后端任务系统,让长任务变成了非阻塞的后台任务,是各调用 LLM API 的复杂逻辑的基础
- 设计并开发了包括
FormWrapper
、Btn
、Txt
、TaskBtn
、Field
、Slider
和PaginatedList
在内的二十多个可复用 Vue 组件供其他队员使用,提高开发效率、质量与样式一致性 - 设计了结构化上下文方案,编写了一系列快速构造结构化上下文的方法
- 设置并实现了全局设置面板,编写了相关函数
LLM 相关:
- 设计并实现了语义审查与 Knowledge Cutoff 审查,避免用户提示词越狱
- 设计并实现了结构化上下文
- 设计了点击
TaskBtn
注册任务 → 提炼次要背景 → 构造结构化上下文 → 调用 DeepSeek R1 API → 格式检查与自动重请求 → 调用成功回调持久化 R1 生成结果并将对应任务状态置为成功(以及配置一键路由参数)、调用错误回调将对应任务状态设为失败 → 前端调用TaskBtn
的whenSucceed
钩子自动请求 R1 生成结果并据此更新 store 中状态以实现组件自动刷新的 LLM 任务执行策略 - 为
Plan
实体类添加了乐观锁,避免并发的 LLM 请求触发竞态条件 - 在合适的任务上选择快速、能力低但够用的智谱模型以提高处理速度
- 编写了“诤略参谋”、“计算机参谋”、“暴躁参谋”与“胡闹猴子(整蛊)”以及 20 ~ 64,共 49 个官方人格的提示词
UX 设计:
- 与 GPT-4o(Image-1)、Gemini 2.0 Flash Preview Image Generation 合作设计并绘制大批艺术素材,包括但不限于 LOGO、首页(“报上名来”)、404 页、各官方人格的头像等
- 设计并实现了全局弹窗系统,用
StdResponse
、BizCode
和 axios 响应拦截器构成了硬性限制,确保了用户的每一个请求都有醒目的响应信号 - 设计了
Txt
组件、路由守卫和txt
store 的联动机制,实现了当用户在尚未保存重要内容就试图路由到其他页面上时拦截此尝试并弹窗询问用户是否确认离开 - 通过设计并实现
FormWrapper
、Btn
和Txt
及其变种并要求大家集体使用这些组件,实现了全面的前端输入校验提示,也实现了在响应回传前被点击的按钮显示“处理中”、禁止用户再次点击按钮高频发送请求的效果 - 实现了 404 页,使用
Empty
等组件确保即使用户确实没有这一类数据,也显示“暂无数据”提示,而非让用户对着空白发呆;即使是一条结果也没查到,也要显示“未找到结果” - 确定了各
.scss
文件的关系,选取了白天和黑夜两套主题配色,确定了项目使用的字体、间距、字号和艺术风格 - 通过设计
plan
等多个 store,实现了组件渲染的无缝高效刷新 - 通过设计并实现
Deletor
组件、要求大家总是用其作为删除按钮,确保了每一个删除操作都先向用户确认删除 - 通过设计并实现前后端任务系统,成功把长耗时的 LLM 输出等任务转为了后台的、异步的、非阻塞的形式,通过限制对
Task
实体类对象的状态维护规则,成功确保在一切异步任务完成后弹出任务状态提醒、让用户能一键路由到任务结果浏览页 - 通过设计并实现
IconTip
组件,给重要的Icon
加入了光标悬浮其上时浮现的文本解释,让界面元素语义更清晰 - 利用
rem
、流式布局等策略实现了约四成对 PC 显示屏的响应式支持 - 实现了侧边栏的展开与收起
贝格拉夫
项目管理:
- 编写项目文档“项目实训实体类E-R图”
- 构思以怎样的流程录制视频进行演示可以又全面又清晰地展现项目
- 录制项目演示视频
- 剪辑项目演示视频(为实际处理实在太慢的步骤调整倍速以突出重点、为重点操作和元素添加标注、添加解释用字幕并对齐时间轴)
UX 设计:
- 设计了“与参谋一同改进计划”页的可视化方案
- 将参谋对计划正文提出的针对性建议分为“模糊不清”“存在风险”和“存在错误”三类,用蓝、橙、红三类颜色标注不同类型的建议以及它们针对的计划正文中的原句
- 在建议开头总是显示建议针对的计划原文部分
- 鼠标悬浮于建议或其原句上时渲染一条连接了二者的虚连接线并高亮二者
- 当建议及其原句有且仅有一个位于浏览器视口中时,点击位于浏览器视口中的一方会让另一方自动滑入浏览器视口
- 当用户采纳了至少一条建议时,页面右上角会显示“按采纳项修改计划”按钮
- 当用户利用参谋生成过基于正文和被采纳建议的新版正文时,页面右上角会显示“查看重写结果”按钮,点击后路由到参谋编写的重写结果展示页面
- 设计了“新旧版计划对比”页的可视化方案
- 两栏设计,左侧展示计划副本(
planContentCopy
),右侧展示重写后计划(planContentModified
),便于用户自行对比两个版本并作出取舍
- 两栏设计,左侧展示计划副本(
LLM 相关:
- 实现了“参谋代写计划”的前后端部分,当点击“参谋代写计划”按钮后使用项目目标、项目背景、记忆等作为输入组装出结构化上下文,再将结构化上下文交给 R1 API,最后在异步请求的成功回调中持久化 R1 的输出、更新对应任务的状态、调用前端的 whenSucceed 钩子向后端请求数据并据此实现自动局部刷新,生成的计划会被追加到项目详情下的列表中
- 实现了“为计划提供改进建议”的前后端部分
- 当点击“为计划提供改进建议”按钮后使用项目目标、项目背景、记忆等作为输入组装出结构化上下文,再将结构化上下文交给 R1 API(在提示词里要求 R1 以规定 JSON 字符串格式给出输出)、检查 R1 输出的结构合法性并在不合法时自动重请求、最后在异步请求的成功回调中持久化 R1 的输出、更新对应任务的状态、调用前端的
whenSucceed
钩子向后端请求数据并据此实现自动局部刷新,此外还维护planSuggestionVersion
,如果用户在生成了计划建议后又手动更新或覆写了计划正文,页面上会显示“过时”提醒 - 设计了“副本”机制——开始执行“为计划提供改进建议”时,先复制真正的原计划正文
planContent
、在正文副本planContentCopy
字段里存储其值,实现同时保存建议及其针对的原文(planContentCopy
),因此即使用户更新了计划正文,这些旧建议及其作用对象(旧计划正文——计划正文的副本)依旧存在,用户依旧可以选择性采纳这些旧建议、让参谋改写旧正文、用基于旧正文和旧建议改写出的正文覆盖最新计划正文。这也算是某种后悔药 - 为每条针对性建议实现了“复制内容”和“采纳”、“取消采纳”功能
- 当点击“为计划提供改进建议”按钮后使用项目目标、项目背景、记忆等作为输入组装出结构化上下文,再将结构化上下文交给 R1 API(在提示词里要求 R1 以规定 JSON 字符串格式给出输出)、检查 R1 输出的结构合法性并在不合法时自动重请求、最后在异步请求的成功回调中持久化 R1 的输出、更新对应任务的状态、调用前端的
- 实现了“按采纳建议重写计划”的前后端部分
- 当点击“按采纳建议重写计划”按钮后使用项目目标、项目背景、记忆、计划正文副本(
planContent
)等作为输入组装出结构化上下文,再将结构化上下文交给 R1 API 要求 R1 按照正文和被采纳的建议精准重写原文、检查 R1 输出的结构合法性并在不合法时自动重请求、最后在异步请求的成功回调中持久化 R1 的输出、更新对应任务的状态、调用前端的whenSucceed
钩子向后端请求数据并据此实现自动局部刷新 - 实现了“新旧计划对比”页,用户可以在“新旧计划对比”页同屏阅读两版计划、复制改后计划的正文、点击“选用此版计划”按钮用改后计划正文(
planContentModified
)覆盖计划正文(planContent
)。如果用户不满意,还可以点击“重写”按钮重复“按采纳建议重写计划”操作。覆盖操作会增加planVersion
,导致参谋过去的所有产出过时
- 当点击“按采纳建议重写计划”按钮后使用项目目标、项目背景、记忆、计划正文副本(
- 编写了“直截了当”、“理解万岁”、“极度务实”与“蝴蝶效应(整蛊)”四个官方人格的提示词
dogdogw
UX 设计:
- 设计了“项目详情”页与“次要背景(文件)”页的可视化方案
- “项目详情”页右侧左上角列出项目名称等简单信息、右上角列出(取消)置顶、项目设置、编辑项目和删除项目按钮,中上部列出管理项目背景、新建计划、参谋代写计划按钮与项目下计划搜索框,其余部分用分页列表展示项目下计划的概况
- 次要背景(文件)页展示常驻提示、文件上传区和已上传文件列表,已上传文件列表里展示每个文件的类型(Icon 强调)、文件名称、上传时间、体积(单位为字节)以及近似 token 数
- 用红底高亮超出了阈值的、进而可能在未来参谋工作时按策略被截断或概括的文件
- 设计并实现了拖拽上传的可视化方案
- 设计并实现了侧边栏中的计划概况展示方案
项目管理:
- 实现了项目管理的前后端部分(包括项目列表、项目详情、编辑弹窗、项目目标/核心背景/次要背景(文本)的编辑页、次要背景(文件)页),为次要背景(文件)页开发了
ContextFileManager
组件 - 确定了项目概况在多页列表中的显示特点
- 每个项目概况条目展示一个项目的概况,包括项目下的计划总数、项目名称、项目的最后修改时间、项目的概要以及项目的置顶状态(如果已置顶,显示“取消置顶”按钮——带有划线的工字钉;如果未置顶,显示“置顶”按钮——无划线的工字钉)
- 如果项目下有至少一个计划,可以点击左侧的文件夹图标或右侧浮现的“V”形图标展开此项目概况条目,查看其下的计划概况条目。再次点击会收起此条目。一页列表中同一时刻至多展开一个项目概况条目,新的条目被展开则旧的展开条目自动收起
- 用户可以点击删除按钮删除项目,会级联删除项目下的一切文件、计划和计划下的一切参谋分析内容
- 用户可以点击(带有划线的)工字钉按钮以(取消)置顶项目
- 点击项目概况条目会跳转到对应项目的详情页
- 点击项目概况条目下的计划概况条目会跳转到对应计划的详情页
- 项目概况条目排序规则:
- 置顶的项目排在未置顶的项目前
- 同为置顶的两个项目,置顶时间晚的排在置顶时间早的项目前
- 同为非置顶的两个项目,最后更改时间晚的排在最后更改时间早的前
- 项目概况条目下的计划概况条目同理
- 每个项目概况条目展示一个项目的概况,包括项目下的计划总数、项目名称、项目的最后修改时间、项目的概要以及项目的置顶状态(如果已置顶,显示“取消置顶”按钮——带有划线的工字钉;如果未置顶,显示“置顶”按钮——无划线的工字钉)
- 实现了置顶与取消置顶项目,这会影响项目在列表中的排列次序
- 实现了用户手动新建项目功能,其中的项目目标与项目核心背景输入框带有重要信息未保存提醒、支持用户上传图片利用 OCR 追加文本信息
- 在侧边栏显示至多三条按上述规则排在项目概况数组最前面的项目概况
- 实现了侧边栏中的项目概况展示
- 实现了在侧边栏以及项目列表页的搜索框中利用项目名模糊查询项目
- 实现了修改项目名称和项目概要功能
- 实现了(级联)删除项目功能
- 实现了项目设置所用的前后端函数(界面本身基本复用自全局设置)、实现了启用/禁用项目设置功能。在项目设置下可以设置项目内创造力等级、项目内严格等级、项目内人格及项目内上下文策略
- 实现了编辑项目目标、项目核心背景、项目次要背景功能,这些输入框均带有重要信息未保存提醒、均支持 OCR 输入
- 设计并实现了两种上下文策略(概括策略与截断策略)下的项目次要背景处理机制,编写的重点函数是
LLMService
中的getDistilledFileContextForProject
异步函数、distillText
异步函数、recursiveDistill
异步函数、getMonoForDistillOnce
异步函数以及truncateText
和getWithinLimitHalf
函数- 截断策略:当次要背景总长超过阈值时丢弃长度超出阈值的尾部部分
- 概括策略:当次要背景总长超过阈值时利用智谱小模型进行若干轮切片——并发概括——拼接,直到拼接结果回归阈值范围
- 设计并实现了次要背景(文件)管理
- 允许用户查看上传文件列表
- 允许用户通过点击上传区域或拖拽文件的方式上传指定格式的、最大 20MB 的最多五份文件,用户试图绕过限制时弹出提醒
- 在后端利用阿里云文档大模型实现对这些被上传的文件进行文本提取,编写了简单的轮询逻辑
- 编写了“DS-R1”、“模仿者”、“象形魔导”与“虚空圣人(整蛊)”四个官方人格的提示词
epiphany狂人
项目管理:编写了“七、分工说明”项目文档——就是本文档
UX 设计:
- 设计了“计划可视化”页的可视化方案
- 竖直排列一系列计划建模图,右下角显示参谋为此图起的名字、复制代码按钮以及保存为
.png
按钮 - 如果参谋生成的 Mermaid 代码有误,在本该显示图片的区域显示提示信息,不再提供保存为
.png
按钮
- 竖直排列一系列计划建模图,右下角显示参谋为此图起的名字、复制代码按钮以及保存为
- 设计了“计划详情”页的可视化方案
- “计划详情”页右侧左上角列出计划名称等简单信息、右上角列出复制计划正文、(取消)置顶、计划设置、编辑计划和删除计划按钮,中上部展示计划正文,底部展示“参谋乐意效劳”部分,包括“为计划提供改进建议”、“评估计划成本与风险”和“为计划绘图”三个小块的样式
- 设计了“记忆”页的可视化方案
计划管理:
- 实现了计划管理的前后端部分
- 允许用户手动添加新计划
- 允许用户修改计划名与计划正文,修改计划正文会导致
planVersion
更新,导致参谋之前的所有工作成果被记为过时 - 允许用户复制计划正文
- 实现了置顶与取消置顶计划,这会影响计划在列表中的排列次序
- 实现了计划设置所用的前后端函数(界面本身基本复用自全局设置)、实现了启用/禁用计划设置功能。在计划设置下可以设置计划内创造力等级、计划内严格等级、计划内人格及项目内上下文策略
- 实现了(级联)删除计划功能
- 实现了在项目详情页下的搜索框中利用计划名模糊查询计划
记忆管理:
- 设计并实现了“记忆”页,以列表形式展示已添加的记忆
- 实现了添加记忆、编辑记忆、删除记忆、删除全部记忆、禁用记忆和启用记忆
- 限制用户至多添加八条记忆
设置:
- 设计并开发了设置严格等级功能
- 设计并开发了设置创造力等级功能
- 实现了侧边栏中的提示用小图标随着设置新档位而实时更新的逻辑
- 利用后端实体类字段和函数实现了参谋工作时三级设置的覆盖策略(作用域全局 > 项目 > 计划,优先级计划 > 项目 > 全局)
LLM 相关:
- 编写了五档严格等级(春煦化雨、得过且过、权衡有度、绝境穷诘、赶尽杀绝)的提示词
- 编写了五档创造力等级(循规蹈矩、稳健精进、趋势捕手、重熔再生、无垠畅想)的提示词
- 实现了“为计划绘图”的前后端部分
- 当点击“为计划绘图”按钮后使用项目目标、项目背景、记忆等作为输入组装出结构化上下文,再将结构化上下文交给 R1 API(在提示词里要求 R1 规定格式输出若干段 Mermaid 代码段以及为对应图表起的标题)、检查 R1 输出的结构合法性并在不合法时自动重请求、最后在异步请求的成功回调中持久化 R1 的输出、更新对应任务的状态、调用前端的
whenSucceed
钩子向后端请求数据并据此实现自动局部刷新,此外还维护planMermaidCodeVersion
,如果用户在生成了建模图后又手动更新或覆写了计划正文,页面上会显示“过时”提醒 - 用户可以浏览利用官方 Mermaid 库渲染出的建模图、复制指定 Mermaid 图的代码、将其下载为
.png
图片 - 为渲染 Mermaid 图像开发了
MermaidGraph
组件
- 当点击“为计划绘图”按钮后使用项目目标、项目背景、记忆等作为输入组装出结构化上下文,再将结构化上下文交给 R1 API(在提示词里要求 R1 规定格式输出若干段 Mermaid 代码段以及为对应图表起的标题)、检查 R1 输出的结构合法性并在不合法时自动重请求、最后在异步请求的成功回调中持久化 R1 的输出、更新对应任务的状态、调用前端的
- 编写了“吟诗作赋(整蛊)”、“万物皆可夸”、“黑话户(整蛊)”与“丧事喜办(整蛊)”四个官方人格的提示词
w_x_yao
UX 设计:
- 设计了“统计信息”页面利用 ECharts 的可视化方案
用户系统:
- 编写了欢迎页(“报上名来”)的逻辑部分代码
- 实现了注册(使用邮箱验证码)、登录、自动登录、忘记密码(使用邮箱验证码)、退出登录、修改密码(使用邮箱验证码)功能
- 设计了邮箱验证码邮件的排版
- 利用了 JWT 完成身份校验,每次登录时签发新的 JWT,退出登录、忘记密码或修改密码会使 JWT 立即失效,自动登录开启后 JWT 的有效期持续四天
- 实现了个性化设置(启用“自动登录”、启用“音效”、启用“默认收起侧边栏”、启用“终为白日”、启用“终为黑夜”、启用“跟随时间”、启用“跟随系统”)的切换,编写了前后端相关函数
信息展示:
- 完成了作者信息页面
- 完成了资源引用信息页面
- 完成了可视化统计信息页面的前后端部分
- 编写了后端计算和返回统计数据的方法
- 前端利用 ECharts 库绘制统计图
- 统计量包括总项目数、总计划数、单项目平均计划数、任务失败率、一周内各类任务在每天的累积耗时以及总耗时(堆积图叠加折线图)、各类任务的总耗时占比(扇形图)
人格管理:
- 为了完成人格管理,补全了
AvatarGroup
和Avatar
组件 - 实现了用于人格管理的“人格仓库”页面的前后端代码
- 允许查看正在选用的人格、查看官方人格与用户自创人格构成的人格头像列表,官方人格右侧显示闪电图标,自创人格右侧显示编辑和修改按钮
- 允许用户添加人格
- 允许用户输入人格名称模糊查询人格
- 允许用户修改自创人格,支持设置头像,如果用户不手动指定图片文件则使用默认头像
- 允许用户删除自创人格
- 允许用户从人格列表中选用人格
- 当删除了一个人格后,将三级设置中使用了该人格的设置都 fallback 到默认人格
LLM 相关:
- 实现了“评估计划成本与风险”的前后端部分
- 当点击“评估计划成本与风险”按钮后使用项目目标、项目背景、记忆等作为输入组装出结构化上下文,再将结构化上下文交给 R1 API、检查 R1 输出的结构合法性并在不合法时自动重请求、最后在异步请求的成功回调中持久化 R1 的输出、更新对应任务的状态、调用前端的
whenSucceed
钩子向后端请求数据并据此实现自动局部刷新,此外还维护planAnalyzeVersion
,如果用户在生成了分析报告后又手动更新或覆写了计划正文,页面上会显示“过时”提醒
- 当点击“评估计划成本与风险”按钮后使用项目目标、项目背景、记忆等作为输入组装出结构化上下文,再将结构化上下文交给 R1 API、检查 R1 输出的结构合法性并在不合法时自动重请求、最后在异步请求的成功回调中持久化 R1 的输出、更新对应任务的状态、调用前端的
- 编写了“冷嘲热讽”、“幽默风趣”与“阴谋论(整蛊)”三个官方人格的提示词