-
有没有技术交流群,大家研究一下怎么玩?
-
React+Blockly构建图形化编程应用实战摘要 React与Blockly的结合为现代Web应用提供了强大的图形化编程能力。本文以图形化编程平台项目为例,详细讲解React环境中集成Blockly的完整流程,包括组件封装、状态管理、事件通信、自定义工具箱配置等核心环节。通过TypeScript类型增强和React Hooks模式,构建类型安全、可维护的图形化编程组件,为复杂业务场景提供可靠的技术支撑。项目架构设计技术栈选型 图形化编程平台采用的技术栈:前端框架:React 18 + TypeScript图形化引擎:Blockly状态管理:React Context + Hooks构建工具:Vite样式方案:TailwindCSS 这套技术栈兼顾开发效率与运行性能,TypeScript提供类型安全,Vite保证开发体验,TailwindCSS简化样式开发。在项目初始化时,华为云码道AI智能体快速生成了完整的项目脚手架和配置文件,包括TypeScript配置、Vite配置和ESLint规则等。整体架构流程用户交互层Blockly工作区积木块拖拽工作区状态变更事件监听器代码生成器Python代码Pyodide执行引擎执行结果输出显示React组件封装状态管理Context代码状态codeXML状态xml工具箱配置自定义积木目录结构规划src/ ├── components/ │ └── BlocklyEditor/ │ ├── index.tsx # 主组件 │ ├── Workspace.tsx # 工作区组件 │ ├── Toolbox.tsx # 工具箱配置 │ └── useBlockly.ts # 自定义Hook ├── blocks/ # 自定义积木定义 │ ├── index.ts │ └── custom/ ├── generators/ # 代码生成器 │ └── python.ts └── utils/ └── blocklyHelpers.tsBlockly组件封装基础组件结构 创建React组件封装Blockly工作区。在开发过程中,华为云码道AI智能体协助完成了Blockly与React的集成封装,包括生命周期管理、事件处理和TypeScript类型定义,确保了组件的健壮性:import React, { useEffect, useRef, forwardRef } from 'react'; import * as Blockly from 'blockly'; interface BlocklyEditorProps { initialXml?: string; toolboxConfig: toolboxUtils.ToolboxDefinition; onCodeChange?: (code: string) => void; onWorkspaceChange?: (workspace: Blockly.WorkspaceSvg) => void; } export const BlocklyEditor = forwardRef<Blockly.WorkspaceSvg, BlocklyEditorProps>( ({ initialXml, toolboxConfig, onCodeChange, onWorkspaceChange }, ref) => { const containerRef = useRef<HTMLDivElement>(null); const workspaceRef = useRef<Blockly.WorkspaceSvg | null>(null); useEffect(() => { if (!containerRef.current) return; const workspace = Blockly.inject(containerRef.current, { toolbox: toolboxConfig, grid: { spacing: 20, length: 3, colour: '#ccc', snap: true }, zoom: { controls: true, wheel: true, startScale: 1.0, maxScale: 3, minScale: 0.3 }, trashcan: true }); workspaceRef.current = workspace; if (ref) { (ref as React.MutableRefObject<Blockly.WorkspaceSvg>).current = workspace; } // 加载初始XML if (initialXml) { Blockly.Xml.domToWorkspace( Blockly.utils.xml.textToDom(initialXml), workspace ); } // 注册变化监听 workspace.addChangeListener((event) => { if (event.type !== Blockly.Events.UI) { const code = Blockly.Python.workspaceToCode(workspace); onCodeChange?.(code); onWorkspaceChange?.(workspace); } }); return () => { workspace.dispose(); }; }, []); return ( <div ref={containerRef} className="w-full h-full" style={{ minHeight: '400px' }} /> ); } ); 组件设计要点 组件封装需要考虑:生命周期管理:正确初始化和销毁Blockly实例响应式布局:监听容器尺寸变化,调用workspace.resize()事件委托:将Blockly事件转换为React回调引用传递:通过forwardRef暴露workspace实例自定义Hook封装 将Blockly逻辑封装为自定义Hook,提升复用性:export function useBlockly(options: UseBlocklyOptions) { const workspaceRef = useRef<Blockly.WorkspaceSvg | null>(null); const [code, setCode] = useState<string>(''); const [xml, setXml] = useState<string>(''); const initWorkspace = useCallback((container: HTMLElement) => { const workspace = Blockly.inject(container, options); workspaceRef.current = workspace; workspace.addChangeListener((event) => { if (event.type !== Blockly.Events.UI) { updateState(); } }); return workspace; }, [options]); const updateState = useCallback(() => { if (!workspaceRef.current) return; const workspace = workspaceRef.current; const generatedCode = Blockly.Python.workspaceToCode(workspace); const workspaceXml = Blockly.Xml.domToPrettyText( Blockly.Xml.workspaceToDom(workspace) ); setCode(generatedCode); setXml(workspaceXml); }, []); const loadXml = useCallback((xmlString: string) => { if (!workspaceRef.current) return; Blockly.Xml.domToWorkspace( Blockly.utils.xml.textToDom(xmlString), workspaceRef.current ); }, []); const clearWorkspace = useCallback(() => { if (!workspaceRef.current) return; workspaceRef.current.clear(); }, []); return { workspace: workspaceRef.current, code, xml, initWorkspace, loadXml, clearWorkspace }; } 工具箱配置动态工具箱生成 根据用户权限和使用场景动态生成工具箱。在实践中,华为云码道AI智能体帮助设计了灵活的工具箱配置系统,支持根据用户等级动态调整可用的积木块类型:export function createToolbox(categories: CategoryConfig[]): toolboxUtils.ToolboxDefinition { return { kind: 'categoryToolbox', contents: categories.map(category => ({ kind: 'category', name: category.name, colour: category.colour, contents: category.blocks.map(blockId => ({ kind: 'block', type: blockId })) })) }; } // 根据用户级别配置工具箱 const beginnerToolbox = createToolbox([ { name: '逻辑', colour: '120', blocks: ['controls_if', 'logic_compare'] }, { name: '数学', colour: '230', blocks: ['math_number', 'math_arithmetic'] } ]); const advancedToolbox = createToolbox([ { name: '逻辑', colour: '120', blocks: ['controls_if', 'logic_compare', 'logic_operation'] }, { name: '数学', colour: '230', blocks: ['math_number', 'math_arithmetic', 'math_modulo'] }, { name: '列表', colour: '260', blocks: ['lists_create_empty', 'lists_push'] } ]); 工具箱样式定制 通过CSS自定义工具箱外观:const toolboxOptions = { kind: 'categoryToolbox', contents: [...], // 自定义样式 cssConfig: { container: 'blocklyToolboxDiv', contents: 'blocklyTreeRoot', row: 'blocklyTreeRow', rowContent: 'blocklyTreeLabel' } }; 状态管理集成Context封装 使用React Context管理Blockly全局状态:interface BlocklyContextValue { workspace: Blockly.WorkspaceSvg | null; code: string; undo: () => void; redo: () => void; save: () => string; load: (xml: string) => void; } const BlocklyContext = createContext<BlocklyContextValue | null>(null); export function BlocklyProvider({ children }: PropsWithChildren) { const workspaceRef = useRef<Blockly.WorkspaceSvg | null>(null); const [code, setCode] = useState(''); const undo = useCallback(() => { workspaceRef.current?.undo(); }, []); const redo = useCallback(() => { workspaceRef.current?.redo(); }, []); const save = useCallback(() => { if (!workspaceRef.current) return ''; return Blockly.Xml.domToPrettyText( Blockly.Xml.workspaceToDom(workspaceRef.current) ); }, []); const load = useCallback((xml: string) => { if (!workspaceRef.current) return; workspaceRef.current.clear(); Blockly.Xml.domToWorkspace( Blockly.utils.xml.textToDom(xml), workspaceRef.current ); }, []); return ( <BlocklyContext.Provider value={{ workspace: workspaceRef.current, code, undo, redo, save, load }}> {children} </BlocklyContext.Provider> ); } 状态同步副作用React层Blockly层状态变更事件BLOCK_CREATEBLOCK_DELETEBLOCK_CHANGE触发更新undo/redo导出XML导入XML代码预览组件持久化存储保存提示setStatecode状态xml状态isDirty状态用户操作保存操作加载操作事件监听器Blockly工作区状态更新 Blockly工作区与React状态的双向同步:// 监听工作区变化,更新React状态 useEffect(() => { const listener = (event: Blockly.Events.Abstract) => { if (event.type === Blockly.Events.BLOCK_CREATE || event.type === Blockly.Events.BLOCK_DELETE || event.type === Blockly.Events.BLOCK_CHANGE) { const newCode = Blockly.Python.workspaceToCode(workspace); setCode(newCode); setIsDirty(true); } }; workspace.addChangeListener(listener); return () => workspace.removeChangeListener(listener); }, [workspace]); 自定义积木注册 在React组件挂载前注册自定义积木:// blocks/index.ts import './custom/control'; import './custom/data'; import './custom/visualization'; export function registerCustomBlocks() { // 积木定义已在导入时注册 console.log('Custom blocks registered'); } // App.tsx import { registerCustomBlocks } from './blocks'; registerCustomBlocks(); function App() { // ... } 代码执行集成Pyodide集成执行 结合Pyodide实现代码即时执行:import { loadPyodide } from 'pyodide'; export function useCodeExecutor() { const [pyodide, setPyodide] = useState<PyodideInterface | null>(null); const [isReady, setIsReady] = useState(false); useEffect(() => { loadPyodide({ indexURL: 'https://cdn.jsdelivr.net/pyodide/v0.24.1/full/' }).then(pyodideInstance => { setPyodide(pyodideInstance); setIsReady(true); }); }, []); const execute = useCallback(async (code: string): Promise<ExecutionResult> => { if (!pyodide) throw new Error('Pyodide not ready'); try { // 捕获标准输出 pyodide.runPython(` import sys from io import StringIO sys.stdout = StringIO() `); const result = await pyodide.runPythonAsync(code); const output = pyodide.runPython('sys.stdout.getvalue()'); return { success: true, result: result, output: output }; } catch (error) { return { success: false, error: error.message }; } }, [pyodide]); return { execute, isReady }; } 拖拽交互增强阻止意外拖拽 防止Blockly拖拽事件冒泡影响页面布局:const handleMouseDown = (e: React.MouseEvent) => { e.stopPropagation(); }; <div onMouseDown={handleMouseDown}> <BlocklyEditor {...props} /> </div> 响应式尺寸 监听容器尺寸变化,调整Blockly视图:import { useResizeObserver } from '@/hooks/useResizeObserver'; function BlocklyContainer() { const containerRef = useRef<HTMLDivElement>(null); const workspaceRef = useRef<Blockly.WorkspaceSvg>(null); useResizeObserver(containerRef, () => { workspaceRef.current?.resize(); workspaceRef.current?.render(); }); return ( <div ref={containerRef} className="flex-1"> <BlocklyEditor ref={workspaceRef} {...props} /> </div> ); } 性能优化懒加载Blockly Blockly体积较大,建议懒加载:const BlocklyEditor = lazy(() => import('./BlocklyEditor')); function EditorPage() { return ( <Suspense fallback={<LoadingSpinner />}> <BlocklyEditor {...props} /> </Suspense> ); } 代码生成节流 高频变化时节流代码生成:import { useThrottle } from '@/hooks/useThrottle'; const throttledCodeChange = useThrottle((code: string) => { onCodeChange(code); }, 300); 结语 React与Blockly的集成为Web应用带来了强大的图形化编程能力。通过组件封装、状态管理、事件通信等技术的合理运用,可以构建出类型安全、可维护、高性能的图形化编程组件。图形化编程平台项目的实践经验表明,这套技术方案能够支撑复杂的业务需求,为用户提供流畅的图形化编程体验。随着技术的持续演进,React+Blockly的组合将在更多领域发挥价值。
-
觉得软件不好用的,好消息你可以自己写(让pi agent自己编辑自己)调用这个只需要华为云的AK SK就行了 security token是临时登录才用,不是必须的!进IAM里面创建一个低权限的key就可以开玩了注:那个附件是zip不是docx
-
现在基本就是排队,排队还出错,完全无法用于生产环境,既然无法让我们用于实际项目,那你们还开着干啥,给新用户拿去玩玩就行了啊,把这些用过的老用户拉黑就省事多了
nobody_nobody
发表于2026-05-18 14:48:01
2026-05-18 14:48:01
最后回复
yd_282264616
2026-05-19 16:06:59
276 2 -
活动对象:陕西国际商贸学院全体师生活动时间:2026年5月19日——2026年5月31日活动报名入口:cid:link_2活动奖品:活动期间内首次安装并使用华为云码道CodeArts创建一个简单的web应用,即可获取专属结业证书奖励。【参与步骤】步骤一、先完成华为云账号注册,再进行AI IDE下载:https://codearts.huaweicloud.com/?utm_source=dmzntedu&utm_adplace=dmznteduuni&utm_medium=dmzntxgjsmx(务必通过该链接下载)请根据自身操作系统选择软件版本:双击安装包,按照引导完成安装,勾选“创建桌面快捷方式”,安装路径建议默认,提示“安装成功”即为完成。 步骤二、登录华为云码道IDE,在智能体模式下开发Web应用。在聊天界面的输入框中,输入需求,单击发送图标 ,华为云码道会一步步创建Web应用,如下图所示 步骤三、在本论坛贴下回复以下内容:① 作品简短描述② 关键代码/实现思路(可选)③ 华为云账号+作品截图(必须包含界面及运行效果、华为云账号中心界面、代码界面)界面及运行效果截图参考华为云账号中心截图参考代码界面参考(光标移到红框位置) 步骤四、完成后添加小助手企业微信并备注华为云账号名+真实姓名,活动结束7个工作日内活动主办方会核实评论区作品,符合条件并添加小助手微信的开发者将收到证书奖励。 【活动须知】1、请确保截图右上角华为云用户名与获奖信息保持一致,即截图、获奖信息与华为云账号保持一致2、本活动最终解释权归活动主办方所有。
-
强烈恳请华为云码道尽快适配IDEA 2026.1(致官方)作为华为云码道的长期忠实使用者,从插件上线初期就开始支持,真心认可这款国产工具的AI编码、代码补全、单元测试生成等功能,日常开发80%的效率提升都依赖它,也一直主动向身边同事推荐,全力支持国产开发工具的发展。但近期IDEA 2026.1正式版推送后,所有使用这款编辑器的开发者都陷入了两难,而华为云码道的适配进度,慢得让人无法接受——至今插件仍停留在仅支持IDEA 2025.3及以下版本,插件市场搜索无适配版本,离线安装包安装后直接报错,甚至无法启动,完全无法正常使用。我们升级IDEA 2026.1,不是为了追求新鲜,而是为了享受新版编辑器的性能优化、bug修复、新功能加持,初衷是提升开发效率,结果却因为云码道的适配滞后,反而严重拖慢工作节奏。每天被迫在新旧两个IDEA版本之间来回切换,频繁重启编辑器、迁移项目配置,不仅浪费大量宝贵的开发时间,还容易出现配置错乱、代码丢失等问题,苦不堪言。翻看社区反馈,发现大批开发者都在催促适配更新,留言区全是焦急的询问,却始终没有官方回应,也没有任何适配进度公示。华为作为国内顶尖科技企业,研发团队实力雄厚,按理说不该在插件适配这种基础服务上掉链子,更不该让一群真心支持国产工具的开发者,为了一个简单的版本适配,无端消耗时间和耐心。在此强烈呼吁华为云码道官方重视起来,加急推进IDEA 2026.1的适配工作,尽快上线兼容版本,公示适配进度,别再漠视用户诉求,别让支持国产的开发者寒心,也别让一款好工具,毁在滞后的适配服务上!-------------此文本由豆包生成,但是因为不能支持idea2026.1的事情确实很焦虑
yd_288934300
发表于2026-05-18 09:31:56
2026-05-18 09:31:56
最后回复
CodeArts小助手-蚂蚁
2026-05-18 09:54:07
40 1 -
一、概述1.1 案例介绍在软件研发项目中,团队成员通常需要每周整理提交记录、需求进展、测试结果、风险问题和下周计划。传统周报依赖人工汇总,容易出现信息遗漏、格式不统一、重点不突出等问题。本案例基于华为云码道(CodeArts)代码智能体的子代理能力,设计一个“周报专家”群子代理,用于从项目文件、任务记录、代码提交说明、会议纪要等上下文中提取关键信息,并输出结构化研发周报。多 Agent 协同模式:主代理负责接收用户目标并调度任务,“周报专家”负责生成周报,“代码分析专家”负责总结代码变化,“测试总结专家”负责提炼测试结论,“风险识别专家”负责识别延期、阻塞和质量风险。1.2 适用对象企业开发者个人开发者高校学生希望使用 AI 提升研发协作效率的开发者1.3 案例时间本案例预计总时长 30 分钟。1.4 案例流程说明:准备华为云码道开发环境;创建项目级子代理目录;编写 weekly-report-expert.md 子代理文件;配置子代理的工具权限;在聊天窗口中调用周报专家;验证周报生成效果;可选:扩展为多 Agent 协同周报生成流程。1.5 资源总览本案例预计花费 0 元。如仅使用本地项目文件和华为云码道代码智能体能力,不涉及额外云资源创建。资源名称规格用途费用华为云码道(CodeArts)代码智能体已开通可用创建和调用子代理以实际产品套餐为准本地项目代码仓任意研发项目提供周报分析上下文0 元.codeartsdoer/agents 目录项目级子代理目录存放周报专家配置文件0 元二、环境和资源准备2.1 准备华为云码道环境参考华为云码道子代理文档,项目级子代理存放在项目根目录的 ./.codeartsdoer/agents 路径下;个人级子代理存放在本地的 ~/.codeartsdoer/agents 路径下。项目级子代理仅针对当前项目生效,并可随代码库分发;个人级子代理对当前用户下的所有项目生效。本案例建议使用项目级子代理,原因是周报格式、项目背景、里程碑和交付标准通常与具体项目强相关,适合随项目仓库一并管理。2.2 准备项目上下文材料可准备以下任意材料作为周报生成上下文:材料类型示例需求文档docs/requirements.md开发计划docs/sprint-plan.md会议纪要docs/meeting-notes.md提交记录CHANGELOG.md、Git 提交说明测试记录docs/test-report.md风险清单docs/risks.md可参考: https://atomgit.com/huqi/weekly-report-expert-demogit clone https://atomgit.com/huqi/weekly-report-expert-demo.git三、创建“周报专家”子代理3.1 设计多 Agent 协同场景本案例中的多 Agent 角色如下:Agent 名称类型职责主代理Primary Agent接收用户需求,判断是否调用周报专家或其他子代理weekly-report-expertSubagent汇总项目进展,生成结构化周报code-change-analyzerSubagent,可选分析代码变更、提交记录、模块变化test-summary-expertSubagent,可选总结测试执行结果、缺陷修复情况risk-reviewerSubagent,可选识别延期风险、阻塞事项、质量风险先实现一个核心子代理:weekly-report-expert,后续按需加入其他子代理。3.2 创建项目级子代理文件在项目根目录下创建如下目录:mkdir -p .codeartsdoer/agents然后新建文件:touch .codeartsdoer/agents/weekly-report-expert.md子代理文件采用 Markdown 格式,文件头部使用 YAML Frontmatter 配置元信息,正文部分编写 Prompt。文档中说明,子代理需要包含 name、mode、description、tools 等配置字段,其中 mode: subagent 表示该代理只能作为子代理被调用。3.3 编写“周报专家”子代理 Prompt将以下内容写入 .codeartsdoer/agents/weekly-report-expert.md:--- name: weekly-report-expert mode: subagent description: 周报生成专家,适用于根据项目文档、代码变更、会议纪要和测试记录生成结构化研发周报 tools: read: allow glob: allow grep: allow list: allow write: deny edit: deny bash: deny webfetch: deny websearch: deny question: ask --- # 角色设定 你是一个研发项目周报专家,擅长从项目文档、代码变更记录、会议纪要、测试报告和风险清单中提取关键信息,生成清晰、准确、结构化的研发周报。 你的目标不是简单罗列信息,而是帮助团队负责人快速了解: 1. 本周完成了什么; 2. 当前进展是否符合计划; 3. 存在哪些风险和阻塞; 4. 下周应该优先推进什么; 5. 哪些事项需要管理者关注或协调。 # 工作边界 你只能基于用户提供的上下文、项目文件和可读取材料进行总结,不得编造不存在的进展、数据、人员、缺陷编号、版本号或上线时间。 如果上下文中缺少关键信息,你应当在周报中使用“待补充”标记,并列出需要用户补充的问题。 # 输入材料类型 你可能会收到以下一种或多种材料: - 需求文档 - 迭代计划 - 代码提交记录 - CHANGELOG - 测试报告 - 缺陷列表 - 会议纪要 - 项目风险清单 - 用户直接输入的零散进展描述 # 输出格式 请始终使用以下结构输出周报: ## 项目周报 ### 一、本周工作概览 用 3 到 5 条要点总结本周核心进展,突出业务价值和研发结果。 ### 二、本周完成事项 按模块或工作类型分类输出,例如: | 模块/方向 | 完成内容 | 产出物 | 状态 | | -------- | -------- | ------ | ---- | | 示例模块 | 示例内容 | 示例产出 | 已完成 | ### 三、代码与技术进展 总结本周涉及的核心代码变化、架构调整、接口变更、性能优化或工程化改进。 如果上下文中没有代码信息,请写明:“当前上下文未提供代码变更记录”。 ### 四、测试与质量情况 总结测试执行情况、缺陷修复情况、遗留问题和质量风险。 如果上下文中没有测试材料,请写明:“当前上下文未提供测试记录”。 ### 五、风险与阻塞 使用表格列出风险: | 风险/阻塞 | 影响范围 | 严重程度 | 建议处理方式 | | -------- | -------- | -------- | ------------ | 严重程度可使用:高 / 中 / 低。 ### 六、下周计划 输出 3 到 6 条可执行计划,要求动作明确、结果可验证。 ### 七、需要协同或决策的事项 列出需要产品、测试、运维、架构师或管理者协同处理的问题。 ### 八、信息缺口 列出当前周报生成过程中缺少的信息,便于用户补充。 # 写作要求 1. 语言使用中文; 2. 风格专业、简洁、面向研发管理; 3. 不输出空泛描述,例如“持续优化系统”“加强沟通”等,除非上下文中有具体事项支撑; 4. 不夸大进展; 5. 不编造数据; 6. 对风险要明确说明影响和建议; 7. 对下周计划要尽量使用动宾结构,例如“完成登录模块联调”“修复订单导出失败问题”“补充接口自动化测试”。 # 质量检查 在输出最终周报前,请自检以下事项: - 是否覆盖本周完成事项; - 是否区分已完成、进行中和待处理事项; - 是否识别风险和阻塞; - 是否列出下周计划; - 是否标记信息缺口; - 是否避免编造未提供的信息。这里的工具权限采用了较保守配置:允许读取、搜索和列目录,禁止写入、编辑和执行命令。华为云码道文档说明,子代理支持通过 tools 字段控制工具权限,例如 allow 表示允许使用,deny 表示禁止使用,ask 表示使用前需要用户审批。3.4 保存并生效完成文件编辑后保存。项目级子代理添加后即可生效,何时使用由智能体决定。文档中也说明,项目级子代理可以通过在项目根目录 ./.codeartsdoer/agents 下新建 Markdown 文件的方式创建。3.5 在聊天窗口中调用周报专家在华为云码道聊天窗口输入类似指令:请使用subAgent weekly-report-expert,根据本项目 docs 目录下的需求文档、会议纪要、测试记录和 CHANGELOG,生成本周研发周报。也可以指定文件范围:请使用subAgent weekly-report-expert,阅读以下文件并生成本周研发周报: - docs/sprint-plan.md - docs/meeting-notes.md - CHANGELOG.md - docs/test-report.md预期输出示例:# 研发周报 **项目**: 多向协同模块 **周期**: 2026-05-12 ~ 2026-05-15 **里程碑**: M2 稳定版本(目标 05-15) --- ## 一、本周工作总结 ### Sprint 执行情况 |Sprint|时间|状态|主要内容| |---|---|---|---| |Sprint 4|05-12 ~ 05-13|✅ 已完成|时间线完整跟踪、事项编号样式、详情页数据完整性、附件持久化| |Sprint 5|05-13 ~ 05-14|✅ 已完成|转派功能修复、反馈面板自动切换、前端验证增强、空值占位符| |Sprint 6|05-14 ~ 05-15|🔄 进行中|侧边栏折叠、详情页回归修复、样式优化| ### 版本发布 |版本|日期|关键变更| |---|---|---| |v0.8.0|05-12|附件上传下载、协同提交字段修复、前后端模型对齐| |v0.9.0|05-13|时间线完整跟踪、TimelineVO 类型修复、映射逻辑修复| |v1.0.0|05-14|多向协同模块完整功能、E2E 测试套件、详情页及转派修复、事项编号 badge 样式| --- ## 二、关键进展 ### 功能交付 1. **详情页数据完整性修复** — 修复前端 `mapCollaboration` 缺少 timeline 字段映射、后端 `TimelineVO.createTime` 类型转换错误、`DetailPage` 未调用完整详情获取接口三大根因问题,详情页现已完整展示时间线、接收人、反馈数据 2. **时间线完整跟踪** — 实现对创建、发送、查看、接收、转派、反馈、关闭全操作记录的跟踪 3. **事项编号 badge 样式优化** — 格式调整为 `TS-2026-XXX`,胶囊标签展示,`el-tag` 文本溢出截断处理 4. **转派功能修复** — 修正转派逻辑错误,反馈面板自动切换行为修复 5. **附件功能完善** — 上传下载完整实现,持久化问题修复,移除前端 mock 数据 ### 测试与质量 - **E2E 测试通过率 100%**:40 个用例全部通过,覆盖 Chromium / Firefox / WebKit / Mobile Chrome 四端 - **接口性能全部达标**:创建 180ms、列表查询 150ms、详情获取 120ms、反馈提交 200ms、转派 160ms - **页面加载性能达标**:列表页 1.2s、详情页 1.0s、创建页 0.9s(目标 <3s) ### 会议与评审 - **05-11** Sprint 4 计划会议:任务分解、风险识别 - **05-13** 技术评审会议:详情页数据完整性修复方案评审,确认前后端修复方案 - **05-15** 周会:Sprint 6 进度同步,确认性能优化方案与移动端适配计划 --- ## 三、问题与风险 ### 已解决问题 |问题|根因|解决方案|状态| |---|---|---|---| |时间线显示不完整|前端缺少 timeline 字段映射|mapCollaboration 增加 timeline 映射|✅ 已修复| |接收人列表显示异常|后端 createTime 类型转换错误|修正 TimelineVO 类型定义|✅ 已修复| |详情页数据不完整|未调用完整详情获取接口|DetailPage 始终调用 receiveCollaboration|✅ 已修复| |转派功能逻辑错误|反馈切换逻辑问题|修复转派逻辑与面板自动切换|✅ 已修复| |el-tag 文本溢出|样式未处理溢出|CSS 截断处理|✅ 已修复| ### 当前风险 |风险项|等级|应对措施| |---|---|---| |转派功能边界场景需进一步测试|中|Sprint 7 补充边界用例| |大数据量下前端性能待验证|中|Sprint 7 实施虚拟滚动与懒加载| |移动端兼容性存在不确定性|高|Sprint 8 启动移动端适配与 E2E 测试| |侧边栏折叠动画效果待优化|低|Sprint 6 收尾处理| ### 外部依赖 - 后端 API 稳定性 - 数据库性能(Sprint 7 索引优化) - 第三方组件更新 --- ## 四、下周计划 ### Sprint 7:性能优化(05-16 ~ 05-18) |任务|优先级|负责方向| |---|---|---| |数据库复合索引优化(收件箱/发件箱/状态筛选)|P0|后端| |SQL N+1 查询优化|P0|后端| |前端列表虚拟滚动|P1|前端| |接口响应缓存|P1|后端| |图片懒加载|P2|前端| |组件按需加载|P2|前端| ### Sprint 8:移动端适配(05-19 ~ 05-22) |任务|优先级|负责方向| |---|---|---| |列表页/详情页/表单页响应式布局|P0|前端| |触摸手势支持|P1|前端| |移动端 E2E 测试|P1|测试| |Element Plus 响应式组件适配|P2|前端| ### 里程碑推进 - **M2 稳定版本**(05-15):本周已完成所有已知 Bug 修复,E2E 通过率 100%,性能指标达标,**目标达成** - **M3 发布版本**(05-22):按计划推进性能优化与移动端适配四、扩展:设计多 Agent 周报流水线接下来,我们可以继续设计 3 个子代理,与“周报专家”形成协同。这次我们使用码道为我们编写 subAgent,只需要在 prompt 中给出码道 subAgent 文档链接即可。4.1 代码变更分析专家文件名:.codeartsdoer/agents/code-change-analyzer.md职责:分析 Git 提交记录、CHANGELOG、代码目录变化,总结本周核心代码改动、影响模块和潜在技术风险。prompt 如下:参考 https://support.huaweicloud.com/usermanual-codeartssnap/codeartsdoer_ug_0041.html 编写subAgent code-change-analyzer ,职责是: 分析 Git 提交记录、CHANGELOG、代码目录变化,总结本周核心代码改动、影响模块和潜在技术风险。我们得到的 .codeartsdoer/agents/code-change-analyzer.md 预期如下:--- name: code-change-analyzer mode: subagent description: 代码变更分析专家,分析Git提交记录、CHANGELOG、代码目录变化,总结核心代码改动、影响模块和潜在技术风险 tools: read: allow glob: allow grep: allow list: allow bash: allow webfetch: deny websearch: deny write: deny edit: deny question: ask --- # 角色设定 你是一个代码变更分析专家,擅长从 Git 提交记录、CHANGELOG、代码目录结构变化中提取关键信息,总结本周核心代码改动、识别影响模块和评估潜在技术风险。 你的目标不是简单罗列变更,而是帮助团队快速理解: 1. 本周哪些模块发生了实质性改动; 2. 改动之间的关联和依赖关系; 3. 哪些变更可能引入回归风险或技术债务; 4. 架构层面是否存在需要关注的调整趋势。 # 工作边界 - 你只能基于项目仓库中实际存在的 Git 记录、CHANGELOG、文件目录进行分析,不得编造不存在的提交、文件、模块或变更。 - 如果上下文中缺少关键信息(如无法获取 Git 日志),你应当在分析结果中使用"待补充"标记,并列出需要用户补充的问题。 - 你**只读不写**,绝不修改任何文件。 # 分析数据源 你需要从以下数据源获取信息: ## 1. Git 提交记录 使用 `git log` 获取指定时间范围内的提交记录。默认分析最近一周的变更。 ```bash # 获取本周提交记录(conventional commits 格式) git log --since="1 week ago" --oneline --no-merges # 获取详细变更文件列表 git log --since="1 week ago" --name-status --no-merges # 获取变更统计 git log --since="1 week ago" --stat --no-merges ``` 如果用户指定了时间范围,则使用对应的时间参数。 ## 2. CHANGELOG 读取项目根目录下的 `CHANGELOG.md` 文件,提取最近版本的变更条目。 ## 3. 代码目录变化 ```bash # 获取本周新增/删除/修改的文件清单 git diff --name-status HEAD~N HEAD # N 为本周提交数 # 获取各目录变更频次 git log --since="1 week ago" --name-only --no-merges | grep -v '^$' | sed 's|/[^/]*$|/|' | sort | uniq -c | sort -rn ``` ## 4. 分支与标签 ```bash # 查看最近创建的分支和标签 git tag --sort=-creatordate | head -5 git branch --sort=-creatordate | head -5 ``` # 分析流程 ## Step 1: 收集原始数据 按上述数据源获取 Git 提交记录、CHANGELOG 和目录变更信息。若获取失败,标记数据缺口。 ## Step 2: 解析 Conventional Commits 将提交记录按 Conventional Commits 规范分类: | 类型 | 含义 | 风险权重 | | ---- | ---- | -------- | | feat | 新功能 | 中 | | fix | 缺陷修复 | 低 | | refactor | 重构 | 高 | | perf | 性能优化 | 中 | | docs | 文档变更 | 无 | | style | 代码风格 | 无 | | test | 测试变更 | 低 | | chore | 构建/工具变更 | 低 | | ci | CI/CD 变更 | 中 | | breaking | 破坏性变更 | 极高 | ## Step 3: 模块归属映射 根据变更文件路径,将提交归类到影响模块: ``` src/backend/ → 后端核心 src/frontend/ → 前端UI src/api/ → API接口层 src/db/ → 数据库层 src/test/ → 测试 infra/ → 基础设施/DevOps docs/ → 文档 ``` 对于无法明确归类的文件,归入"其他"。 ## Step 4: 风险评估 对以下场景标记潜在技术风险: 1. **跨模块修改**:一个提交同时修改了 3 个以上模块的文件 → 高风险 2. **数据库变更**:涉及 schema 变更、数据迁移 → 高风险 3. **接口契约变更**:修改了 API 入参/出参/类型 → 高风险 4. **重构类提交**:refactor 类型提交 → 中高风险 5. **删除代码**:文件删除或大段代码移除 → 中风险 6. **类型系统变更**:涉及类型定义/接口契约修改 → 中风险 7. **未覆盖测试**:feat/fix 提交未伴随 test 提交 → 低风险(技术债务) 8. **破坏性变更**:含 BREAKING CHANGE 标记 → 极高风险 ## Step 5: 生成分析报告 # 输出格式 请始终使用以下结构输出分析报告: ## 代码变更分析报告 ### 一、分析范围 - 时间范围:`{起始日期}` ~ `{结束日期}` - 提交总数:`{N}` 次(不含 merge 提交) - 变更文件数:`{M}` 个 - 涉及贡献者:`{人数}` 人 ### 二、变更类型分布 | 变更类型 | 提交数 | 占比 | 说明 | | -------- | ------ | ---- | ---- | | feat | N | X% | 新功能 | | fix | N | X% | 缺陷修复 | | ... | ... | ... | ... | ### 三、核心代码改动 按模块分组,列出本周实质性改动(仅列出 feat/fix/refactor/perf/breaking 类型): #### {模块名称} - **{提交摘要}**(`{commit_hash_short}`) - 变更文件:`{file1}`, `{file2}` - 变更类型:`{type}` - 影响说明:{简要说明该变更对模块行为的影响} ### 四、影响模块热力图 | 模块 | 变更频次 | 涉及提交类型 | 风险等级 | | ---- | -------- | ------------ | -------- | | 后端核心 | N | feat, fix, refactor | 高 | | 前端UI | N | fix, style | 低 | | ... | ... | ... | ... | ### 五、潜在技术风险 | 风险描述 | 关联提交/变更 | 影响范围 | 严重程度 | 建议措施 | | -------- | ------------- | -------- | -------- | -------- | | 示例风险描述 | `{hash}` | 后端+前端 | 高 | 建议补充E2E测试 | 严重程度使用:极高 / 高 / 中 / 低。 ### 六、架构趋势观察 从本周变更中观察到的架构层面趋势,例如: - 是否存在模块间耦合加重的趋势 - 是否有技术债务在累积 - 是否有接口契约频繁变更 - 是否有基础设施层面的调整趋势 如果未观察到明显趋势,写明"本周变更未呈现明显架构趋势"。 ### 七、信息缺口 列出分析过程中缺少的信息,便于用户补充。例如: - 无法获取 Git 日志(非 Git 仓库或权限不足) - CHANGELOG 未找到或格式不符预期 - 提交信息不符合 Conventional Commits 规范,无法精确分类 # 写作要求 1. 语言使用中文; 2. 风格专业、简洁、面向技术管理; 3. 对风险的评估要有具体依据,不凭空推断; 4. 提交摘要保留原始提交信息中的 scope 和描述; 5. 影响说明要具体到文件级别,不使用"若干文件"等模糊表述; 6. 模块归属映射基于实际目录结构,不预设不存在的模块; 7. 如果项目不是 Git 仓库或无法获取 Git 信息,则基于 CHANGELOG 和目录结构进行降级分析。 # 质量检查 在输出最终报告前,请自检以下事项: - 是否覆盖所有提交记录; - 是否按 Conventional Commits 正确分类; - 是否将变更正确归属到模块; - 是否识别所有高风险变更; - 是否为每个风险提供具体建议; - 是否避免编造不存在的提交或文件; - 是否标注信息缺口。类似的,我们新开对话继续完成 测试总结专家 和 风险识别专家。4.2 测试总结专家文件名:.codeartsdoer/agents/test-summary-expert.md职责:根据测试报告、缺陷记录、接口测试结果,总结测试覆盖范围、缺陷修复情况和遗留质量风险。prompt 如下:参考 https://support.huaweicloud.com/usermanual-codeartssnap/codeartsdoer_ug_0041.html 编写subAgent test-summary-expert ,职责是: 根据测试报告、缺陷记录、接口测试结果,总结测试覆盖范围、缺陷修复情况和遗留质量风险。生成的 test-summary-expert.md 预期如下:--- name: test-summary-expert mode: subagent description: 测试总结专家,根据测试报告、缺陷记录、接口测试结果,总结测试覆盖范围、缺陷修复情况和遗留质量风险 tools: read: allow glob: allow grep: allow list: allow bash: allow webfetch: deny websearch: deny write: deny edit: deny question: ask --- # 角色设定 你是一个测试总结专家,擅长从测试报告、缺陷记录、接口测试结果和风险清单中提取关键质量信息,生成清晰、准确、结构化的测试总结报告。 你的目标不是简单罗列测试数据,而是帮助团队负责人和质量管理者快速了解: 1. 测试覆盖了哪些范围,还缺哪些覆盖; 2. 缺陷的分布、修复进度和严重程度趋势; 3. 接口质量是否达标,性能瓶颈在哪里; 4. 遗留哪些质量风险,可能影响交付决策; 5. 是否具备发布/上线条件。 # 工作边界 - 你只能基于用户提供的上下文、项目文件和可读取材料进行总结,不得编造不存在的测试用例、缺陷编号、缺陷数量、通过率或性能数据。 - 如果上下文中缺少关键信息,你应当在总结报告中使用"待补充"标记,并列出需要用户补充的问题。 - 你**只读不写**,绝不修改任何文件。 # 输入材料类型 你可能会收到以下一种或多种材料: - 测试报告(单元测试 / 集成测试 / E2E测试 / 性能测试) - 缺陷记录 / Bug列表 - 接口测试结果(响应时间、成功率、错误码分布) - 代码覆盖率报告 - 风险清单 - 迭代计划 / 需求文档(用于评估覆盖完整性) - 用户直接输入的零散测试信息 # 分析数据源 ## 1. 测试报告 读取项目中的测试报告文件(如 `docs/test-report.md`、`test-report.json`、`junit.xml`、`playwright-report.json` 等),提取: - 测试用例总数、通过数、失败数、跳过数、通过率 - 按模块/功能/浏览器的分布 - 已知问题和优化建议 ## 2. 缺陷记录 从缺陷管理文件或用户上下文中提取: - 缺陷总数、按严重程度分布 - 已修复 / 待修复 / 已关闭 / 重新打开数量 - 缺陷密度(每千行代码或每功能模块缺陷数) - 平均修复时长 ## 3. 接口测试结果 从接口测试报告或性能测试数据中提取: - 接口总数、测试覆盖接口数 - 响应时间分布(P50 / P95 / P99) - 错误率、超时率 - 与 SLA 目标的对比结果 ## 4. 风险清单 读取项目风险文档(如 `docs/risks.md`),提取与质量相关的风险项: - 未修复的高风险缺陷 - 性能瓶颈风险 - 安全漏洞风险 - 覆盖缺口风险 ## 5. 代码覆盖率 如果存在覆盖率报告(如 `coverage/lcov.info`、`coverage-summary.json`、`jacoco.xml`),提取行覆盖率、分支覆盖率、函数覆盖率。 # 分析流程 ## Step 1: 收集原始数据 按上述数据源获取测试报告、缺陷记录、接口结果和风险信息。若获取失败,标记数据缺口。 ## Step 2: 评估测试覆盖范围 - 对照需求文档或迭代计划,识别哪些功能模块有测试覆盖,哪些缺少 - 按测试类型分类覆盖情况:单元测试 / 集成测试 / E2E测试 / 性能测试 - 识别环境覆盖:浏览器 / 设备 / 操作系统 ## Step 3: 分析缺陷状态 - 按严重程度分类统计(致命 / 严重 / 一般 / 提示) - 按状态统计(已修复 / 待修复 / 已关闭 / 重新打开 / 延期) - 按模块分布统计 - 计算缺陷修复率 = 已修复 / (已修复 + 待修复) ## Step 4: 评估接口质量 - 响应时间是否满足 SLA - 错误率是否在可接受范围 - 识别性能瓶颈接口(P95 超标或错误率 > 1%) ## Step 5: 识别遗留质量风险 - 未修复的严重及以上缺陷 → 阻塞发布风险 - 覆盖缺口模块 → 回归风险 - 性能不达标接口 → 用户体验风险 - 安全相关风险 → 合规风险 ## Step 6: 生成总结报告 # 输出格式 请始终使用以下结构输出测试总结报告: ## 测试总结报告 ### 一、测试概览 - 测试类型:`{单元测试 + 集成测试 + E2E测试 + 性能测试}` - 测试环境:`{Chromium / Firefox / WebKit / Mobile Chrome 等}` - 报告时间:`{日期}` - 整体结论:`{通过 / 有条件通过 / 不通过}` ### 二、测试覆盖范围 #### 2.1 功能覆盖 | 模块 | 单元测试 | 集成测试 | E2E测试 | 性能测试 | 覆盖评估 | | ---- | -------- | -------- | ------- | -------- | -------- | | 示例模块 | ✅ | ✅ | ✅ | ✅ | 完整 | | 示例模块2 | ✅ | ❌ | ✅ | ❌ | 部分 | 覆盖评估取值:完整 / 部分 / 缺失 #### 2.2 环境覆盖 | 环境 | 覆盖状态 | 说明 | | ---- | -------- | ---- | | PC浏览器 | ✅ | Chromium, Firefox, WebKit | | 移动端 | ❌ | 待补充 | #### 2.3 覆盖缺口 列出未被测试覆盖的功能模块或场景,评估影响程度。 ### 三、测试执行统计 #### 3.1 用例执行结果 | 测试类型 | 用例总数 | 通过 | 失败 | 跳过 | 通过率 | | -------- | -------- | ---- | ---- | ---- | ------ | | E2E自动化 | N | N | N | N | X% | | 接口测试 | N | N | N | N | X% | | **合计** | **N** | **N** | **N** | **N** | **X%** | #### 3.2 代码覆盖率 | 指标 | 当前值 | 目标值 | 状态 | | ---- | ------ | ------ | ---- | | 行覆盖率 | X% | ≥80% | ✅/❌ | | 分支覆盖率 | X% | ≥70% | ✅/❌ | | 函数覆盖率 | X% | ≥80% | ✅/❌ | 如果上下文中未提供覆盖率数据,标注"待补充"。 ### 四、缺陷修复情况 #### 4.1 缺陷分布 | 严重程度 | 数量 | 已修复 | 待修复 | 修复率 | | -------- | ---- | ------ | ------ | ------ | | 致命 | N | N | N | X% | | 严重 | N | N | N | X% | | 一般 | N | N | N | X% | | 提示 | N | N | N | X% | | **合计** | **N** | **N** | **N** | **X%** | #### 4.2 按模块分布 | 模块 | 缺陷数 | 已修复 | 待修复 | | ---- | ------ | ------ | ------ | | 示例模块 | N | N | N | #### 4.3 缺陷趋势 描述缺陷新增、修复、重新打开的趋势变化。如果数据不足,标注"数据不足,待补充"。 ### 五、接口测试结果 #### 5.1 接口质量概览 | 指标 | 结果 | 目标 | 状态 | | ---- | ---- | ---- | ---- | | 接口总数 | N | - | - | | 已测试接口 | N | 覆盖率100% | ✅/❌ | | 整体成功率 | X% | ≥99% | ✅/❌ | | 平均响应时间 | Xms | <500ms | ✅/❌ | | P95响应时间 | Xms | <1000ms | ✅/❌ | #### 5.2 性能瓶颈接口 | 接口 | 平均响应时间 | P95 | 错误率 | 风险等级 | | ---- | ------------ | --- | ------ | -------- | | 示例接口 | Xms | Xms | X% | 高/中/低 | 如果没有性能不达标接口,写明"所有接口性能指标达标"。 ### 六、遗留质量风险 | 风险描述 | 关联缺陷/接口 | 影响范围 | 严重程度 | 建议措施 | | -------- | ------------- | -------- | -------- | -------- | | 示例风险 | BUG-XXX | 模块名 | 高 | 建议内容 | 严重程度使用:极高 / 高 / 中 / 低。 ### 七、发布建议 基于以上分析,给出发布/上线建议: - ✅ **可发布**:所有关键指标达标,无阻塞缺陷 - ⚠️ **有条件发布**:存在非阻塞风险,需制定缓解方案 - ❌ **不建议发布**:存在阻塞缺陷或关键指标不达标 给出建议理由和前提条件。 ### 八、信息缺口 列出分析过程中缺少的信息,便于用户补充。例如: - 未获取到缺陷管理数据 - 缺少代码覆盖率报告 - 接口测试数据不完整 - 未提供需求文档用于覆盖完整性校验 # 写作要求 1. 语言使用中文; 2. 风格专业、简洁、面向质量管理和交付决策; 3. 数据必须来自上下文中实际存在的材料,不编造测试用例数、通过率、响应时间等数值; 4. 通过率、修复率等百分比需基于实际数据计算,数据缺失时标注"待补充"; 5. 对风险的评估要有具体依据,不凭空推断; 6. 发布建议需基于事实数据,给出明确条件和理由; 7. 严重程度分级一致:致命 > 严重 > 一般 > 提示;风险严重程度:极高 > 高 > 中 > 低。 # 质量检查 在输出最终报告前,请自检以下事项: - 是否覆盖测试执行统计; - 是否评估测试覆盖完整性(功能和环境); - 是否分析缺陷分布和修复进度; - 是否评估接口/性能质量; - 是否识别遗留质量风险; - 是否给出发布建议; - 是否标记信息缺口; - 是否避免编造未提供的信息。4.3 风险识别专家文件名:.codeartsdoer/agents/risk-reviewer.md职责:从会议纪要、延期记录、缺陷清单和未完成事项中识别项目风险,并输出影响范围、严重程度和处理建议。prompt 如下:参考 https://support.huaweicloud.com/usermanual-codeartssnap/codeartsdoer_ug_0041.html 编写subAgent risk-reviewer ,职责是: 从会议纪要、延期记录、缺陷清单和未完成事项中识别项目风险,并输出影响范围、严重程度和处理建议。生成的 risk-reviewer.md 预期如下:--- name: risk-reviewer mode: subagent description: 风险评审专家,从会议纪要、延期记录、缺陷清单和未完成事项中识别项目风险,输出影响范围、严重程度和处理建议 tools: read: allow glob: allow grep: allow list: allow write: deny edit: deny bash: deny webfetch: deny websearch: deny question: ask --- # 角色设定 你是一个项目风险评审专家,擅长从会议纪要、延期记录、缺陷清单、未完成事项和项目文档中系统性识别、分析和评估项目风险。 你的目标不是简单罗列已知风险,而是帮助团队负责人和项目管理者: 1. 从分散信息源中发现隐含风险和潜在风险; 2. 评估风险的严重程度和影响范围; 3. 区分紧迫风险与可延缓风险; 4. 提供可操作的处理建议和预防措施; 5. 识别风险间的关联和级联效应。 # 工作边界 - 你只能基于用户提供的上下文和项目文件中实际存在的内容进行分析,不得编造不存在的风险、缺陷、人员或日期。 - 如果上下文中缺少关键信息,你应当在评审结果中使用"待补充"标记,并列出需要用户补充的问题。 - 你**只读不写**,绝不修改任何文件。 - 风险评估应基于事实和逻辑推断,不凭空猜测发生概率。 # 输入材料类型 你可能会收到以下一种或多种材料: - 会议纪要(含决议、待办、问题讨论) - 延期记录(含延期原因、影响范围、调整计划) - 缺陷清单(含缺陷等级、状态、修复进度) - 未完成事项(含计划完成时间、当前状态、阻塞原因) - 项目风险清单(已有风险管理文档) - 迭代计划(含排期、依赖关系) - 测试报告(含通过率、遗留问题) - 需求文档(含优先级、变更记录) - 用户直接输入的零散风险描述 # 分析数据源 ## 1. 项目文档 读取项目文档目录下的文件,提取风险相关信息: ``` docs/risks.md → 已识别风险清单 docs/meeting-notes.md → 会议纪要(问题讨论、待办、决议) docs/sprint-plan.md → 迭代计划(延期、依赖、阻塞) docs/test-report.md → 测试报告(缺陷、遗留问题) docs/requirements.md → 需求文档(变更、优先级调整) ``` ## 2. 用户提供的上下文 用户可直接提供会议纪要片段、缺陷列表、延期说明等文本内容。 # 分析流程 ## Step 1: 收集原始材料 按数据源读取项目文档,提取风险相关内容。若文件不存在,标记数据缺口。 ## Step 2: 从各信息源提取风险信号 ### 2.1 会议纪要中的风险信号 从会议纪要中提取以下类型的风险线索: - **问题讨论**:会议中提出但未解决的问题 - **待办逾期**:会议产生的待办事项超过预期完成时间仍未关闭 - **技术争议**:技术方案讨论中的分歧和不确定点 - **资源瓶颈**:人力、环境、依赖等资源不足的讨论 - **进度预警**:进度偏离计划的讨论 ### 2.2 延期记录中的风险信号 - **关键路径延期**:影响整体交付的延期 - **连锁延期**:一个延期引发其他任务延期 - **反复延期**:同一任务多次延期,反映深层问题 - **延期原因分析**:系统性原因(如技术债务、需求不明确) ### 2.3 缺陷清单中的风险信号 - **高等级缺陷未修复**:P0/P1缺陷长时间未关闭 - **缺陷趋势恶化**:新增缺陷数持续高于修复数 - **回归缺陷**:同一模块反复出现缺陷 - **缺陷修复延期**:缺陷修复超过预期时间 - **测试覆盖不足**:关键模块缺少测试 ### 2.4 未完成事项中的风险信号 - **高优先级未完成**:P0/P1任务未完成且临近截止 - **阻塞事项**:因外部依赖或技术问题被阻塞 - **依赖链断裂**:前置任务未完成导致后续任务无法启动 - **范围蔓延**:未完成事项持续增加 ## Step 3: 风险识别与分类 将提取的风险信号归类到以下风险类型: | 风险类型 | 说明 | 示例 | | -------- | ---- | ---- | | 技术风险 | 技术方案不确定性、技术债务、架构问题 | N+1查询、类型转换错误 | | 进度风险 | 延期交付、里程碑偏离、关键路径阻塞 | 核心功能延期、依赖未就绪 | | 质量风险 | 缺陷密度高、测试不足、回归问题 | P0缺陷未修复、测试覆盖率低 | | 安全风险 | 权限漏洞、数据泄露、合规问题 | 权限绕过、未授权操作 | | 性能风险 | 响应慢、容量不足、资源瓶颈 | 查询慢、内存泄漏 | | 需求风险 | 需求变更、需求不明确、范围蔓延 | 频繁变更、优先级调整 | | 协同风险 | 人员变动、沟通不畅、职责不清 | 责任人不明确、跨团队依赖 | | 环境风险 | 基础设施、工具链、第三方服务 | CI/CD故障、第三方API不稳定 | ## Step 4: 严重程度评估 基于以下维度综合评估风险严重程度: | 维度 | 高 | 中 | 低 | | ---- | - | - | - | | 影响范围 | 跨3+模块或影响核心流程 | 影响1-2个模块 | 仅影响单个功能点 | | 业务影响 | 阻塞交付或影响用户核心操作 | 影响用户体验或效率 | 影响非关键体验 | | 紧迫程度 | 需立即处理(24h内) | 需本迭代内处理 | 可下迭代处理 | | 发生概率 | 已发生或极可能发生 | 有可能发生 | 不太可能发生 | **严重程度等级**:极高 / 高 / 中 / 低 评估规则: - 影响范围=高 **且** 业务影响=高 → **极高** - 任意两个维度=高 → **高** - 任意一个维度=高 或 两个维度=中 → **中** - 其他 → **低** ## Step 5: 风险关联分析 识别风险间的关联关系: - **级联风险**:风险A发生会触发风险B(如性能风险→用户体验风险→客户投诉风险) - **共同根因**:多个风险源于同一根因(如多个性能问题源于缺少数据库索引) - **互斥风险**:处理风险A可能加剧风险B(如加缓存解决性能但引入数据一致性风险) ## Step 6: 生成评审报告 # 输出格式 请始终使用以下结构输出风险评审报告: ## 风险评审报告 ### 一、评审概览 - 评审时间:`{当前日期}` - 数据源:`{分析的文档/材料列表}` - 已识别风险总数:`{N}` - 严重程度分布:极高 `{N}` / 高 `{N}` / 中 `{N}` / 低 `{N}` - 风险类型分布:技术 `{N}` / 进度 `{N}` / 质量 `{N}` / 安全 `{N}` / 性能 `{N}` / 需求 `{N}` / 协同 `{N}` / 环境 `{N}` ### 二、高风险项(极高+高) 对每个高风险项详细展开: #### R-{编号}: {风险标题} - **风险类型**:{类型} - **严重程度**:{极高/高} - **影响范围**:{具体受影响的模块、功能、用户群体} - **风险来源**:{从哪个信息源识别:会议纪要/缺陷清单/延期记录/...} - **风险描述**:{详细描述风险内容和可能后果} - **发生概率**:{高/中/低},依据:{推断依据} - **处理建议**: 1. {具体可操作的应对措施} 2. {具体可操作的应对措施} - **建议责任人**:{角色/人员} - **建议截止时间**:{日期或相对时间} ### 三、中风险项 | 编号 | 风险标题 | 类型 | 影响范围 | 来源 | 处理建议 | 责任人 | 截止时间 | | ---- | -------- | ---- | -------- | ---- | -------- | ------ | -------- | | R-XX | ... | ... | ... | ... | ... | ... | ... | ### 四、低风险项 | 编号 | 风险标题 | 类型 | 影响范围 | 处理建议 | | ---- | -------- | ---- | -------- | -------- | | R-XX | ... | ... | ... | ... | ### 五、风险关联图 描述风险间的关联关系: - **级联链路**:R-001 → R-005 → R-008({简要说明级联逻辑}) - **共同根因**:R-004、R-007 共同根因为{根因描述} - **互斥处理**:处理 R-003 可能加剧 R-009({简要说明}) 如无关联关系,写明"当前识别的风险项间无显著关联关系"。 ### 六、风险趋势与预警 基于当前评审与历史数据对比: - **新增风险**:本次新识别的风险项及来源 - **风险升级**:严重程度较上次升高的风险项 - **风险降级**:严重程度较上次降低的风险项 - **需关注趋势**:{如缺陷数持续上升、延期范围扩大等} 如无历史数据可对比,写明"无历史风险数据可供趋势对比"。 ### 七、关键处理建议 按紧迫程度排序,输出 Top 5 需立即处理的风险及建议: | 优先级 | 风险编号 | 风险标题 | 建议动作 | 建议责任人 | 建议截止 | | ------ | -------- | -------- | -------- | ---------- | -------- | | P0 | R-XXX | ... | ... | ... | ... | ### 八、信息缺口 列出评审过程中缺少的信息,便于用户补充。例如: - 缺少延期记录,无法评估进度风险 - 缺少缺陷修复时间线,无法判断缺陷趋势 - 某模块责任人信息缺失 # 写作要求 1. 语言使用中文; 2. 风格专业、简洁、面向项目管理决策; 3. 风险描述要具体,避免模糊表述如"可能存在问题"; 4. 影响范围要明确到模块/功能/用户群体,不使用"系统"等泛化表述; 5. 处理建议要可操作、可验证,避免空泛建议如"加强管理""提高质量"; 6. 严重程度评估要有依据,不凭直觉判定; 7. 风险编号从 R-001 起连续编号,不跳号; 8. 对已有风险文档中的风险项,若本次评审结论一致,标注"与已有风险评估一致";若结论不一致,说明差异和依据。 # 质量检查 在输出最终报告前,请自检以下事项: - 是否覆盖所有可用数据源; - 是否从会议纪要、延期记录、缺陷清单、未完成事项各信息源中提取了风险信号; - 是否为每个风险项提供了影响范围、严重程度和处理建议; - 严重程度评估是否有依据而非主观臆断; - 处理建议是否具体可操作; - 是否识别了风险间的关联关系; - 是否按紧迫程度排序了关键处理建议; - 是否避免编造不存在的风险或数据; - 是否标注了信息缺口。4.4 多 Agent 调用示例在聊天窗口中输入:请采用多 Agent 协同方式生成本周研发周报: 1. 使用subAgent code-change-analyzer 总结本周代码变化; 2. 使用subAgent test-summary-expert 总结测试和缺陷情况; 3. 使用subAgent risk-reviewer 识别项目风险; 4. 最后使用subAgent weekly-report-expert 汇总生成一份面向项目经理的研发周报。预期结果如:## 项目周报 ### 一、本周工作概览 1. **版本收敛至v1.0.0**:35次提交完成从v0.9.0到v1.0.0的跃升,以fix(51.4%)为主,集中修复前后端模型对齐问题 2. **编号体系重构落地**:编号格式从TS切换至XC,完成DDL变更、UNIQUE索引创建及旧数据回填脚本 3. **核心业务接口补全**:submit/view/complete补全addTimeline、forward返回类型重构(Boolean→CollaborationDetailVO)、feedback增加附件保存 4. **E2E测试全量通过**:40用例100%通过率,覆盖4浏览器引擎,但权限与性能维度存在高覆盖缺口 5. **权限安全风险逾期**:R-001权限降级绕过已逾期、R-002操作权限未校验今日截止,构成发布阻断项 ### 二、本周完成事项 |模块/方向|完成内容|产出物|状态| |---|---|---|---| |后端核心|编号格式重构TS→XC,含SQL及回填脚本|DDL脚本+回填脚本|已完成| |后端核心|submit/view/complete补全addTimeline|接口代码|已完成| |后端核心|forward接口返回类型变更为CollaborationDetailVO|接口代码|已完成| |后端核心|收件箱SQL增加forward_to_id|SQL变更|已完成| |后端核心|TimelineVO类型转换修复|Bug修复|已完成| |后端核心|feedback增加附件保存|功能代码|已完成| |前端UI|模型对齐(3条)、转派逻辑、详情页修复(3条)|前端代码|已完成| |前端UI|附件、类型安全、显示修复(3条)、样式、清理|前端代码|已完成| |数据库|item_no列+UNIQUE索引、旧数据回填脚本|DDL+迁移脚本|已完成| |文档规范|OpenSpec同步归档(7条)|规范文档|已完成| |E2E测试|40用例全量执行,4浏览器引擎覆盖|测试报告|已完成| |Sprint 6|侧边栏折叠(80%)、样式优化(已完成)、详情页回归修复(验证中)|迭代交付物|进行中| ### 三、代码与技术进展 - **前后端模型对齐是本周主战场**:44%的fix源于字段/类型不一致,前端store与后端api为高风险热区,说明接口契约管理薄弱 - **编号格式重构**:TS→XC切换涉及数据库schema变更(item_no列+UNIQUE索引)和旧数据回填,属于破坏性变更,需前后端+数据库同步部署 - **forward接口契约变更**:返回类型从Boolean变为CollaborationDetailVO,属于不兼容变更,消费方需同步改造 - **addTimeline补全**:submit/view/complete三个操作补全了时间线记录,完善了操作审计链路 - **OpenSpec规范驱动开发已成型**:10条docs提交(28.6%),规范先行开发模式初步建立 - **架构隐患**:数据库变更缺乏版本化管控(无migration框架)、测试覆盖断层(0条test类型提交)、收件箱SQL新增forward_to_id但索引策略待验证 ### 四、测试与质量情况 - **E2E测试**:40用例/100%通过率/4浏览器引擎,小数据量下接口性能全部达标 - **代码覆盖率**:待补充,本周0条test类型提交 - **覆盖缺口(高)**:删除/转派/关闭/反馈权限校验未测试、权限降级逻辑未测试、单元/集成测试覆盖未知 - **覆盖缺口(中)**:大数据量性能未测试、N+1查询未测试、实时更新未测试 - **缺陷态势**:表面0缺陷,但受限于覆盖缺口,实际缺陷数被低估;权限相关缺陷极可能存在但未被测试捕获 - **发布建议**:有条件发布——内部测试环境可发布,生产环境需先满足权限修复+测试门禁 ### 五、风险与阻塞 |风险/阻塞|影响范围|严重程度|建议处理方式| |---|---|---|---| |R-001 权限降级绕过(已逾期)|全模块数据安全|极高|立即修复,发布前强制验证| |R-002 操作权限未校验(今日截止)|删除/转派/关闭/反馈操作|极高|今日完成权限校验逻辑及测试| |CR-003 回归保障薄弱(0 test提交)|全模块发布质量|高|建立最小回归保障用例集| |CR-004 接口契约变更(forward返回类型)|前端forward消费方|高|采用兼容策略或强制同步部署| |CR-005 DDL+数据迁移(item_no)|数据库+前后端|高|制定迁移方案,灰度执行| |CR-006 编号格式新旧混用|业务单据可读性|高|回填脚本全量执行后强制验证| |R-007 索引缺失(明日到期)|列表查询性能|中|明日补充索引并验证执行计划| |R-004 N+1查询|列表/详情接口性能|中|Sprint 7性能优化统一处理| |R-005 全量加载|大数据量场景|中|分页/懒加载改造| |M3交付压力(05-22)|里程碑交付|高|优先修复阻断项,调整非核心范围| **关键关联链路**: - 权限真空链:R-001→R-002→R-006(转派责任转移依赖权限完整性) - 性能瓶颈链:R-007→R-004→R-005→R-008(索引缺失→N+1→全量加载→移动端卡顿) - 变更失控链:CR-003→CR-004→CR-005(无回归→接口变更→DDL变更全部裸跑) ### 六、下周计划 1. **修复权限漏洞**(R-001+R-002):补全删除/转派/关闭/反馈的权限校验,编写权限E2E用例 2. **建立最小回归保障**:优先覆盖CR-003,补充核心接口单元测试,目标覆盖率≥30% 3. **补充数据库索引**(R-007):完成索引创建,验证查询执行计划 4. **执行性能优化**(Sprint 7):打包处理N+1查询(R-004)+全量加载(R-005),增加大数据量压测 5. **制定v1.0.0发布方案**:明确CR-004/CR-005同步部署策略,编写迁移回滚预案 6. **推进移动端适配**(Sprint 8):基于性能优化结果启动移动端兼容性适配(R-008) ### 七、需要协同或决策的事项 1. **【决策】v1.0.0发布策略**:CR-004接口不兼容变更+CR-005 DDL变更需前后端+数据库同步部署,是否采用灰度发布或蓝绿部署?需要运维协同 2. **【决策】M3(05-22)范围裁剪**:当前权限漏洞+回归缺口+性能隐患并存,M3是否延期或裁剪非核心功能?需要产品+管理者决策 3. **【协同】权限修复优先级**:R-001已逾期、R-002今日截止,需要安全团队协助验证修复方案 4. **【协同】旧数据回填执行窗口**:item_no回填脚本执行需停机或锁表,需要DBA确认执行窗口 5. **【协同】代码覆盖率基线**:当前覆盖率为0,需要测试团队协助建立覆盖率门禁标准 ### 八、信息缺口 1. 代码覆盖率数据——本周无test类型提交,实际覆盖率未知 2. 单元/集成测试执行情况——未获取到相关测试报告 3. 缺陷管理系统数据——实际缺陷数量/严重程度分布待补充 4. 大数据量性能基线——当前仅小数据量验证通过,大数据量下性能数据缺失 5. 权限修复进展实时状态——R-001/R-002的修复开发进度未同步 6. M2延期具体原因及影响评估——仅标注已延期,未获取延期分析 7. 各Sprint负责人及资源分配——Sprint 7/8执行主体和资源情况待补充至此,我们完美实现并调用多 Agent 实现了周报编写流程。五、释放资源本案例不创建按需计费云资源,无需释放云资源。如需清理本地配置,可删除以下文件:rm -f .codeartsdoer/agents/weekly-report-expert.md如创建了多个子代理,可删除整个目录:rm -rf .codeartsdoer/agents本文正在参与:【案例共创】【第11期】华为云码道(CodeArts)代码智能体 + 新特性完成应用开发/调试实践https://bbs.huaweicloud.com/forum/thread-0212721403979154441-1-1.html
-
想买 codearts收费版,但为什么至少要买5个用户起步? 我是个人开发者,就我一个使用者。可以买1个用户的买,拜托!!!
-
UI界面布局好难看呀,一些交互也不够便捷人性化,跟隔壁的trae对比UI啥的看起来很古老的感觉,不知道为什么感觉也不是很重视,更新迭代也慢
-
现在重新安装了很多次,打开登录进去后,拉入项目,输入任何东西就提示TypeError [ERR_INVALID_ARG_VALUE]: fetch() proxy URL is invalid这个怎么排查问题?其他IDE没有这个问题。
yd_221799722
发表于2026-05-14 21:58:32
2026-05-14 21:58:32
最后回复
CodeArts小助手-蚂蚁
2026-05-15 09:16:25
31 1 -
升级到26.4.4版本无效,重启AI对话后直接窗口啥也没有了,点击头像-反馈建议-就看到状态栏提示:正在激活扩展,然后就没有然后了,这啥情况??
yd_212910959
发表于2026-05-14 17:23:07
2026-05-14 17:23:07
最后回复
CodeArts小助手-蚂蚁
2026-05-15 09:11:50
98 2 -
案例介绍本案例将基于AI IDE华为云码道(CodeArts)代码智能体+MaaS平台商用大模型Tokens,完成一个AI智能小助手的开发。案例内容本案例由开发者:JeffDing提供,华为开发者空间案例中心优化并收录。一、概述1.1 案例介绍华为云码道(CodeArts)代码智能体是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。本案例将基于AI IDE华为云码道(CodeArts)代码智能体+MaaS平台商用大模型Tokens,完成一个AI智能小助手的开发。1.2 适用对象个人开发者高校学生1.3 案例时间本案例总时长预计60分钟。1.4 案例流程说明:开发者下载安装AI IDE,完成华为云码道(CodeArts)代码智能体安装部署;使用华为云码道(CodeArts)代码智能体,自动生成AI智能小助手;浏览器接收到prompt,调用大模型发送给华为云MaaS平台;浏览器体验AI智能小助手。1.5 资源总览本案例预计花费0或1元。资源名称规格单价(元)华为云码道(CodeArts)代码智能体通用体验版免费华为开发者空间 - DeepSeek-R1/V3.2千万Tokens代金券DeepSeekV3.21.00ModelArts Studio大模型(DS/K2/Q3等)通用代金券DeepSeekV3.20.00二、基础环境与资源准备2.1 AI IDE华为云码道安装部署参考案例《AI IDE华为云码道(CodeArts)代码智能体安装部署》完成华为云码道(CodeArts)代码智能体Windows版AI IDE安装部署。2.2 领取华为云MaaS平台大模型Tokens福利(任选其一)方式一: 登录华为开发者空间,参考案例《华为开发者空间 - ModelArts Studio大模型通用代金券领取使用指导》中的“二、 开通MaaS平台大模型”章节内容领取代金券,获取到模型的API地址、模型名称和API Key。方式二: 登录华为开发者空间,参考案例《华为云MaaS平台大模型Tokens领取使用指导》中的“二、 领取MaaS平台大模型Tokens”章节内容,领取MaaS平台DeepSeek V3系列大模型Tokens代金券,购买ModelArts Studio DeepSeek Tokens套餐包,开通模型服务,最后获取到模型的API地址、模型名称和API Key。 注意:记录API Key、API地址以及模型名称留作后面步骤使用。三、构建一个AI智能小助手应用在开始项目实践之前,请确保本地已安装并配置好Python开发环境。相关安装与配置操作请自行完成,本文不再赘述。3.1 码道生成代码在华为云码道对话框中,输入以下提示词: 复制代码在当前项目文件夹下生成代码,使用python+flask生成一个通过web页面可视化的AI编程小助手+计算机故障判断小助手,AI部分使用ModelArts Studio的API实现,具体参数如下:API地址:YOUR_API_URL;model参数:YOUR_MODEL_NAME;API KEY:YOUR_API_KEY;界面UI要设计的美观漂亮;创建完成后,直接运行程序。 注意:YOUR_API_URL:替换成步骤“2.2 领取华为云MaaS平台大模型Tokens福利”中获取的API地址。YOUR_MODEL_NAME:替换成步骤“2.2 领取华为云MaaS平台大模型Tokens福利”中获取的模型名称。YOUR_API_KEY:替换成步骤“2.2 领取华为云MaaS平台大模型Tokens福利”中获取的API Key。点击发送按钮后,华为云码道帮助我们创建项目文件、生成项目代码、安装依赖并运行程序。注意:当涉及文件变更时,我们点击全部接受。浏览器输入:http://127.0.0.1:5000,体验AI智能助手。3.2 体验智能小助手AI编程小助手:在智能小助手对话框中,输入以下提示词: 复制代码帮我生成一个python编写的批量重命名文件夹下文件的代码,要求用户可以指定文件名,文件名由两部分组成,前缀+编号,前缀由用户给出,编号由系统自动生成,用户可以自定义起始编号。AI编程助手帮助我们生成了完整的python代码。计算机故障诊断小助手:在智能小助手对话框中,输入以下提示词: 复制代码如何清除Windows不存在的网卡的IP地址数据,不然新的网卡不能使用旧网卡的IP地址,会报有冲突。智能小助手给出了详细的解决方案。四、迭代升级AI智能小助手4.1 添加专业性更强的角色当前的小助手局限性较强,如果我们希望他更全能,可以在华为云码道对话框中,输入以下提示词: 复制代码我现在需要有更多角色,比如全能写作小助手、英语学习助手、大厨和医生点击发送按钮后,华为云码道(CodeArts)代码智能体自动创建文件并生成代码。访问http://localhost:5000即可体验新功能。写作助手: 复制代码以“人工智能的发展和现状”为主题,写一篇300字的文章英语学习: 复制代码列举英语学习中常见的口语表达大厨: 复制代码西红柿炒鸡蛋的做法医生: 复制代码我最近一个月经常感到不明原因的疲劳,睡醒后也不解乏,可能是什么原因?需要做什么检查?4.2 添加RAG功能什么是RAG?RAG是Retrieval-Augmented Generation(检索增强生成)的缩写。简单来说,它是一种让大语言模型在回答问题前,先“查资料”再“作答”的技术。RAG的工作流程分为两步:检索:当收到用户问题后,系统先去一个知识库(比如公司内部文档、最新的网页、产品手册)里,搜索与问题最相关的内容。增强生成:把检索到的相关信息 + 用户的原问题,一起作为“参考资料”提交给大模型。模型基于这些确凿的资料来组织、生成答案。由于传统AI存在时效性、AI幻觉问题和企业私有知识缺失等的问题,这时候我们就需要引入RAG来消除这些问题。在华为云码道对话框中,输入以下提示词: 复制代码将RAG功能集成到当前的代码中重启应用,访问http://localhost:5000,打开RAG开关,上传文档。提问即可体验知识检索增强。 复制代码介绍下Python和FlaskAI回复下方显示了参考来源标签(文档名+片段号),可见华为云码道(CodeArts)代码智能体可以为我们的每个角色都添加一些私有的的知识库。如果你有自己工作时候出现的问题,可以尝试自己修改RAG,再提出相对应的问题来验证一下。注意:由于本应用的开发是Agent自动生成的,每次提问生成的代码及最后的运行结果均存在出入,开发者可根据自己的需求,调教模型生成自己想要的结果。若想体验与案例一样的结果,请下载或克隆源码至本地运行。本地运行注意事项:修改app.py文件中的API配置: 复制代码# API配置API_URL = "YOUR_API_URL"API_KEY = "YOUR_API_KEY"MODEL_NAME = "YOUR_MODEL_NAME"YOUR_MODEL_NAME:替换为步骤"2.2 领取华为云MaaS平台大模型Tokens福利"中获取的模型名称。YOUR_API_URL:替换为步骤"2.2 领取华为云MaaS平台大模型Tokens福利"中获取的API地址。YOUR_API_KEY:替换为步骤"2.2 领取华为云MaaS平台大模型Tokens福利"中获取的API Key。本地需要安装Python开发环境并安装依赖: 复制代码pip install flask==3.0.0pip install requests==2.31.0进入项目目录下,使用以下命令执行程序: 复制代码python app.py至此,华为云码道+MaaS:AI智能小助手的双擎驱动案例已全部完成。五、反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!
-
一、概述1.1 案例介绍华为云码道CodeArts代码智能体是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。本案例将基于AI IDE华为云码道CodeArts代码智能体+MaaS平台商用大模型Tokens,完成一个AI智能小助手的开发。1.2 适用对象个人开发者高校学生1.3 案例时间本案例总时长预计60分钟。1.4 案例流程说明:开发者下载安装AI IDE,完成华为云码道CodeArts代码智能体安装部署;使用华为云码道CodeArts代码智能体,自动生成AI智能小助手;浏览器接收到prompt,调用大模型发送给华为云MaaS平台;浏览器体验AI智能小助手。1.5 资源总览本案例预计花费0或1元。资源名称规格单价(元)华为云码道CodeArts代码智能体通用体验版免费华为开发者空间 - DeepSeek-R1/V3.2千万Tokens代金券DeepSeekV3.21.00ModelArts Studio大模型(DS/K2/Q3等)通用代金券DeepSeekV3.20.00二、基础环境与资源准备2.1 AI IDE华为云码道安装部署参考案例《AI IDE华为云码道CodeArts代码智能体安装部署》完成华为云码道CodeArts代码智能体Windows版AI IDE安装部署,完成后创建文件夹名称,如下图。2.2 领取华为云MaaS平台大模型Tokens福利(任选其一)方式一: 登录华为开发者空间,参考案例《华为开发者空间 - ModelArts Studio大模型通用代金券领取使用指导》中的“二、 开通MaaS平台大模型”章节内容领取代金券,获取到模型的API地址、模型名称和API Key。方式二: 登录华为开发者空间,参考案例《华为云MaaS平台大模型Tokens领取使用指导》中的“二、 领取MaaS平台大模型Tokens”章节内容,领取MaaS平台DeepSeek V3系列大模型Tokens代金券,购买ModelArts Studio DeepSeek Tokens套餐包,开通模型服务,最后获取到模型的API地址、模型名称和API Key。以开通deepseek-v3.2为例: 注意:记录API Key、API地址以及模型名称留作后面步骤使用。三、构建一个AI智能小助手应用在开始项目实践之前,请确保本地已安装并配置好Python开发环境,也可用码道来安装,比如在对话框输入:请帮我在本机安装python,并将其添加到环境变量。3.1 码道生成代码在华为云码道对话框中,输入以下提示词:在当前项目文件夹下生成代码,使用python+flask生成一个通过web页面可视化的AI编程小助手+计算机故障判断小助手,AI部分使用ModelArts Studio的API实现,具体参数如下:API地址:YOUR_API_URL;model参数:YOUR_MODEL_NAME;API KEY:YOUR_API_KEY;界面UI要设计的美观漂亮;创建完成后,直接运行程序。 注意:YOUR_API_URL:替换成步骤“2.2 领取华为云MaaS平台大模型Tokens福利”中获取的API地址。YOUR_MODEL_NAME:替换成步骤“2.2 领取华为云MaaS平台大模型Tokens福利”中获取的模型名称。YOUR_API_KEY:替换成步骤“2.2 领取华为云MaaS平台大模型Tokens福利”中获取的API Key。点击发送按钮后,华为云码道帮助我们创建项目文件、生成项目代码、安装依赖并运行程序,过程中如果出现是否允许运行,请选择全部允许。注意:当涉及文件变更时,点击全部接受。浏览器输入:http://localhost:5000,体验AI智能助手。3.2 体验智能小助手AI编程小助手:在智能小助手对话框中,输入以下提示词:帮我生成一个python编写的批量重命名文件夹下文件的代码,要求用户可以指定文件名,文件名由两部分组成,前缀+编号,前缀由用户给出,编号由系统自动生成,用户可以自定义起始编号。AI编程助手帮助我们生成了完整的python代码。计算机故障诊断小助手:在智能小助手对话框中,输入以下提示词:如何清除Windows不存在的网卡的IP地址数据,不然新的网卡不能使用旧网卡的IP地址,会报有冲突。智能小助手给出了详细的解决方案。四、迭代升级AI智能小助手4.1 添加专业性更强的角色当前的小助手局限性较强,如果我们希望他更全能,可以在华为云码道对话框中,输入以下提示词:我现在需要有更多角色,比如全能写作小助手、英语学习助手、大厨和医生点击发送按钮后,华为云码道CodeArts代码智能体自动创建文件并生成代码。访问 http://localhost:5000 即可体验新功能。写作助手:以“人工智能的发展和现状”为主题,写一篇300字的文章英语学习:列举英语学习中常见的口语表达大厨:西红柿炒鸡蛋的做法医生:我最近一个月经常感到不明原因的疲劳,睡醒后也不解乏,可能是什么原因?需要做什么检查?4.2 添加RAG功能什么是RAG?RAG是Retrieval-Augmented Generation(检索增强生成)的缩写。简单来说,它是一种让大语言模型在回答问题前,先“查资料”再“作答”的技术。RAG的工作流程分为两步:检索:当收到用户问题后,系统先去一个知识库(比如公司内部文档、最新的网页、产品手册)里,搜索与问题最相关的内容。增强生成:把检索到的相关信息 + 用户的原问题,一起作为“参考资料”提交给大模型。模型基于这些确凿的资料来组织、生成答案。由于传统AI存在时效性、AI幻觉问题和企业私有知识缺失等的问题,这时候我们就需要引入RAG来消除这些问题。在华为云码道对话框中,输入以下提示词,会自动生成文档保存在文件夹中:将RAG功能集成到当前的代码中重启应用,访问http://localhost:5000,打开RAG开关,从以下路径中上传文档。提问即可体验知识检索增强。介绍下Python和FlaskAI回复下方显示了参考来源标签(文档名+片段号),可见华为云码道CodeArts代码智能体可以为我们的每个角色都添加一些私有的的知识库。如果你有自己工作时候出现的问题,可以尝试自己修改RAG,再提出相对应的问题来验证一下。注意:由于本应用的开发是Agent自动生成的,每次提问生成的代码及最后的运行结果均存在出入,开发者可根据自己的需求,调教模型生成自己想要的结果。若想体验与案例一样的结果,请下载或克隆源码至本地运行(如有开发经验,可按下述步骤操作)。本地运行注意事项:修改app.py文件中的API配置:# API配置API_URL = "YOUR_API_URL"API_KEY = "YOUR_API_KEY"MODEL_NAME = "YOUR_MODEL_NAME"YOUR_MODEL_NAME:替换为步骤"2.2 领取华为云MaaS平台大模型Tokens福利"中获取的模型名称。YOUR_API_URL:替换为步骤"2.2 领取华为云MaaS平台大模型Tokens福利"中获取的API地址。YOUR_API_KEY:替换为步骤"2.2 领取华为云MaaS平台大模型Tokens福利"中获取的API Key。本地需要安装Python开发环境并安装依赖:pip install flask==3.0.0pip install requests==2.31.0进入项目目录下,使用以下命令执行程序:python app.py至此,华为云码道+MaaS:AI智能小助手的双擎驱动案例已全部完成。五、反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!*本案例由开发者:JeffDing提供,华为开发者空间案例中心优化并收录。欢迎扫码加入华为云Inspire创想者大会实战训练营技术交流群 扫码获取更多训练营资讯
-
在项目.codeartsdoer下新建commands文件夹后将自己的命令放进去,重启JetBrain IDEA后斜杠命令仍然找不到
yd_220695015
发表于2026-05-14 12:10:37
2026-05-14 12:10:37
最后回复
CodeArts小助手-蚂蚁
2026-05-14 15:01:26
50 4 -
安装codearts-agent-linux-arm64-26.4.4-42d8abe.deb时,提示:依赖于 libstdc++6 (>= 9);然而:系统中 libstdc++6:arm64 的版本为 8.3.0.13-deepin1。哪里能找到这个库啊?dpkg: 依赖关系问题使得 codearts-agent 的配置工作不能继续: codearts-agent 依赖于 libstdc++6 (>= 9);然而:系统中 libstdc++6:arm64 的版本为 8.3.0.13-deepin1。dpkg: 处理软件包 codearts-agent (--install)时出错: 依赖关系问题 - 仍未被配置正在处理用于 desktop-file-utils (0.23-4+sign) 的触发器 ...正在处理用于 mime-support (3.62) 的触发器 ...正在处理用于 bamfdaemon (0.5.4.2-1) 的触发器 ...Rebuilding /usr/share/applications/bamf-2.index...正在处理用于 shared-mime-info (1.10.1-1+eagle) 的触发器 ...在处理时有错误发生: codearts-agent
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签