-
vscode 版本: 1.121.0 (user setup)提交: f6cfa2ea2403534de03f069bdf160d06451ed282日期: 2026-05-19T11:51:53+02:00Electron: 39.8.8ElectronBuildId: 13870025Chromium: 142.0.7444.265Node.js: 22.22.1V8: 14.2.231.22-electron.0OS: Windows_NT x64 10.0.26200插件版本 26.4.2问题 访问不到当前项目文件
yd_282964119
发表于2026-05-25 16:27:42
2026-05-25 16:27:42
最后回复
CodeArts小助手-蚂蚁
2026-05-25 16:33:57
12 1 -
插件'CodeArts Agent' (版本'26.4.3’)与当前版本的IDE不兼容,因为它需要内部版本号253.*或更老的版本,但当前的内部版本号是IU-261.24374.151
yd_238485808
发表于2026-05-24 23:32:55
2026-05-24 23:32:55
最后回复
CodeArts小助手-蚂蚁
2026-05-25 16:57:31
22 1 -
现在写一直都是用claude code或者cursor 每个月账号问题和较高的价格有点伤,尝试用deepseekv4去接cc感觉效果不是特别的好,这个华为云码道,大家感觉能到什么水平,真实的使用感受怎么样?
yd_231387320
发表于2026-05-23 20:22:47
2026-05-23 20:22:47
最后回复
CodeArts小助手-蚂蚁
2026-05-25 15:22:47
66 2 -
无法使用agent。
-
人物画像:CodeArts 稳重内向老专家QODER(原通义灵码) 活泼外向得力助手TRAE 疯狗 这些天使用起来发现CodeArts比较谨慎,倾向于收集足够多信息之后再处理任务,在处理一些专业性较强的任务时可能结论更精准,更容易精确判断问题根因,缺点可能就是收集太多信息会比较慢。QODER在平均场景下感觉更好用一些,处理纯软件问题、小规模任务速度快,并能在用户做出正确判断或合理设计时给予肯定,提供一定的情绪价值。在处理一些比较深层或专业的问题时可能有些力不从心。TRAE纯纯疯狗,部分场景理解力和记忆力很差,并且没搞清楚问题就一顿乱改。 专业性CodeArts⭐⭐⭐⭐⭐QODER ⭐⭐⭐⭐TRAE ⭐⭐ 工作效率CodeArts⭐⭐⭐QODER ⭐⭐⭐⭐⭐TRAE ⭐ 情绪价值 CodeArts⭐⭐⭐⭐QODER ⭐⭐⭐⭐⭐TRAE ⭐⭐ 基于个人体验总结,比较片面,仅供参考
-
我在右侧一直加载 、出不来AI选项了,重新安装也是这样子
yd_244887717
发表于2026-05-21 16:46:38
2026-05-21 16:46:38
最后回复
CodeArts小助手-蚂蚁
2026-05-21 16:53:08
67 1 -
开发者朋友们!欢迎报名参加开发者训练营!在这里,您不仅能获得前沿的技术指导与实战经验,还能与行业大咖面对面交流。现在报名,只需简单几步开通码道,即可免费领取30元代金券!名额有限,先到先得,快来加入我们,开启您的AI编码之旅吧!操作步骤说明准备工作注册华为账号并开通华为云:cid:link_3步骤一:安装并登录华为云码道IDE1.点击链接下载华为云码道IDE:https://codearts.huaweicloud.com/?source=dmzntsq1&sourcead=gw2.登录华为账号(首次使用需开通套餐),登录成功后,返回华为云码道IDE,即可开启智能编码之旅。安装登录指导详情 步骤二:开发Web应用3. 在智能体模式下开发Web应用:在华为云码道中,您只需用自然语言描述需求或功能目标,便能立刻理解,生成结构清晰、工程级的完整代码。(如:帮我生成一个教师点名系统) 步骤三:提交领券信息【训练营专属开通礼券领取条件】:4.完成南京站活动报名且到场(在2026年5月18日-23日完成开通/登录使用码道):cid:link_45.填写问卷,领取30元限定云资源代金券(约5个工作日内完成发放):cid:link_2 代金券查询地址(请在有效期内使用):cid:link_1
-
AI 已经不再是云端的“空中楼阁”,而是深入到开发者日常代码、企业垂直业务以及万物互联的全场景之中。 本次 G-Star Gathering Day 南京站,由 AtomGit 与 华为云开发者发展与支持部 HCDG 联合发起,旨在打破学术与产业、大厂与开发者之间的信息壁垒。我们邀请了来自南京工业大学、华为云、文兜智写以及鸿蒙社区的资深专家,通过 4 场深度技术分享,带领大家从底层工具链到应用层实战,全方位拆解 AI 助力全场景应用的“通关秘籍”。📅 活动信息活动时间: 2026 年 5 月 23 日(星期六)14:00 - 17:30活动地点: 南京秦淮天安数码城02栋2楼会议室(秦淮区永丰大道36号)🌟 活动议程AtomCode 助力应用: 探讨如何助力高校及开发者打破技术壁垒。AIGC 垂直领域落地: 资深开发者叶道宏分享如何重构业务、释放个体价值。华为云 CodeArts 赋能: 揭秘智能辅助开发如何构建 AI 智能应用。鸿蒙全场景实战: 社区问答专家张辉鑫深度解析 ArkTS + ArkWeb 混合架构。
-
插件在最新的idea工具里面无法使用,啥时候更新idea最新版本可以使用图中最新版本2026版本编辑器都无法使用
yd_288688334
发表于2026-05-19 21:50:46
2026-05-19 21:50:46
最后回复
CodeArts小助手-蚂蚁
2026-05-20 09:06:16
71 1 -
想通过hooks做一个插件,使对话时读取工程文件后脱敏关键词,试了一下午,各种不生效
yd_238881991
发表于2026-05-19 19:59:24
2026-05-19 19:59:24
最后回复
CodeArts小助手-蚂蚁
2026-05-20 09:04:50
37 1 -
有没有技术交流群,大家研究一下怎么玩?
-
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
-
现在基本就是排队,排队还出错,完全无法用于生产环境,既然无法让我们用于实际项目,那你们还开着干啥,给新用户拿去玩玩就行了啊,把这些用过的老用户拉黑就省事多了
-
活动对象:陕西国际商贸学院全体师生活动时间: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、本活动最终解释权归活动主办方所有。
推荐直播
-
华为云码道全新升级,多会话并行与多智能体协作2026/05/08 周五 19:00-21:00
王一男-华为云码道产品专家;张嘉冉-华为云码道工程师;胡琦-华为云HCDE;程诗杰-华为云HCDG
华为云码道4月份版本全新升级,此次直播深度解读4月份产品特性,通过“特性解读+实操演示+实战案例+设计创新”的组合,全方位展现码道在多会话并行与多智能体协作方面的能力,赋能开发者提升效率
回顾中
热门标签