惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Cisco Blogs
Cyberwarzone
Cyberwarzone
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
SecWiki News
SecWiki News
Martin Fowler
Martin Fowler
T
Tor Project blog
N
Netflix TechBlog - Medium
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
V
Visual Studio Blog
GbyAI
GbyAI
PCI Perspectives
PCI Perspectives
D
DataBreaches.Net
Jina AI
Jina AI
H
Heimdal Security Blog
云风的 BLOG
云风的 BLOG
P
Privacy International News Feed
A
About on SuperTechFans
J
Java Code Geeks
美团技术团队
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News | PayPal Newsroom
有赞技术团队
有赞技术团队
MyScale Blog
MyScale Blog
博客园 - 司徒正美
C
Check Point Blog
T
Threat Research - Cisco Blogs
Attack and Defense Labs
Attack and Defense Labs
宝玉的分享
宝玉的分享
AI
AI
Simon Willison's Weblog
Simon Willison's Weblog
C
Cyber Attacks, Cyber Crime and Cyber Security
I
Intezer
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
The Last Watchdog
The Last Watchdog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Vercel News
Vercel News
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
Cisco Talos Blog
Cisco Talos Blog
W
WeLiveSecurity
Hacker News: Ask HN
Hacker News: Ask HN
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
D
Docker
博客园 - Franky
Security Archives - TechRepublic
Security Archives - TechRepublic

for_the_zero的个人博客

WebTooys第4弹更新 —— AI知识图谱Oheya、连接选择器Selinkt、长图拼接、LessChat、生成终末地配方AI提示词 - for_the_zero的个人博客 ZapStartTab - 只是专注于打开网页的简陋新标签页 - for_the_zero的个人博客 将我的个人网站模板大改了一下 - for_the_zero的个人博客 小想法2——如何让AI拥有生命? - for_the_zero的个人博客 vAIbe - 用Vibe Coing做一个AI? - for_the_zero的个人博客 个人网站更新! - for_the_zero的个人博客 WebTooys第3.5弹更新 —— GPT/RSVP阅读器、抠图工具、QQ空间导出记录查看器、摄像头画面AI生成颜文字 - for_the_zero的个人博客 科技杂谈1:从系统到AI,从软件到互联网 - for_the_zero的个人博客 记录一下我的小想法 - for_the_zero的个人博客 教程:怎么在U盘上装一个便携版的MC? - for_the_zero的个人博客 整理一下域名 - for_the_zero的个人博客 WebTooys Quicktools 第三弹:AI记事本输入法、剪贴板图片保存、AI驱动的虚拟文章平台FakeNET…… - for_the_zero的个人博客 如何注册一个免费的.is-a.dev域名? - for_the_zero的个人博客 新的个人网站上线! - for_the_zero的个人博客 MapPinner: 在地图上留下自己旅行时走过之处的标记 - for_the_zero的个人博客 asak - 一个适应速率限制的大模型api调用工具 - for_the_zero的个人博客 又是英语演讲 - for_the_zero的个人博客 往我自己做的简约表格加了一点AI - for_the_zero的个人博客 Free-LLM-Collection - 一个分享关于免费的大模型API的地方 - for_the_zero的个人博客 Quicktools第2.1弹 - 文本展示工具、UP主动态查看工具 - for_the_zero的个人博客 Quicktools第二弹 - 按键转写、音频转颜色、简约风表格工具 - for_the_zero的个人博客 分享一下我最近为英语演讲写的演讲搞(整活) - for_the_zero的个人博客 CapsTools - 一个利用大写锁定键触发的工具箱 - for_the_zero的个人博客 第一批Quicktools小工具来啦 - for_the_zero的个人博客 相机算法对比:vivo vs Google - for_the_zero的个人博客 国产大模型对比! - for_the_zero的个人博客 一个提取手机apk的玩意 - for_the_zero的个人博客 发现bug,连甩两层锅 - for_the_zero的个人博客 一个手机硬件状态监控的玩意 - for_the_zero的个人博客 AlanBecker视频列表:关注视频更新动态! - for_the_zero的个人博客 一段时间前做了一个DNA打结的东西 - for_the_zero的个人博客 做了个叫PinCopy的玩意 - for_the_zero的个人博客 记一下自己写tttpro - for_the_zero的个人博客 在scratch实现简单纯画笔排版 - for_the_zero的个人博客 如何在scratch简单实现拼音输入法 - for_the_zero的个人博客 Blog Post - for_the_zero的个人博客 一种迷宫的介绍 - for_the_zero的个人博客 DearPyGui笔记 - for_the_zero的个人博客
自制软件LMCanvas —— 让界面与模型交互 - for_the_zero的个人博客
for_the_zero · 2025-07-01 · via for_the_zero的个人博客

这是一个新的尝试

一个呢,我从原本大模型软件的代码预览功能扩展了一下,使其不局限于单次生成与执行,而是反复生成执行,让用户和生成的界面交互,界面把没有做好的部分交给ai,ai搞后端

这源自于我的一个想法:以后的系统直接和ai交互,界面全部是ai生成的,后端操作全部是是ai处理的,但这至少一段时间内不会实现,因为算例和模型能力原因

另一个呢,这是我第二次碰electron,第一次碰react和vite

……

哦忘了贴链接GitHub - for-the-zero/LMCanvas: UI generated by LLM, Interact with LLM

另外就是有视频介绍

开发经历

路径

这个项目一样也是求助过ai很多遍的,有些问题我不会

首先就有路径的问题,electron请求路径肯定不能直接写对吧,它告诉我用__dirname

但是呢,我这里用了esm的方式,所以没有__dirname这种东西

然后ai就整出来了const __dirname = path.dirname(url.fileURLToPath(import.meta.url);这种操作

打包前没问题,打包后就有问题了

后来我一看实际访问的路径:... /node_modules/electron/ ...

彳亍

解决方案:打包后的用app.getAppPath()

依赖冲突

vite给我的react版本是19+的,而fluent Ui React Components由于兼容性原因,19官方说用不了(强制的话其实也能运行)

遂手动修改package.json降级react

获取深色模式

nativeTheme可是个神奇的api

electron原本是给cjs设计的,使用esm的时候偶尔出问题,这就是其中之一

这玩意只给了cjs用!

害得我在preload里面引入

然后就是这个组件库自己有提供深色模式的,在FluentProvider里面

神奇的是,它提供的主题有且仅有webLightThemeteamsLightThemeteamsDarkTheme

?我缺的webDarkTheme谁来补

(我都用了Teams的主题)

折叠卡片

原本我想的是让代码块和模型思考内容用折叠卡片折起来的

组件库里面有一个折叠的组件,但是没到正式版

拿来用了,结果巨抽象,修不好一气之下删掉了

(同时还有个flex布局问题,硬是滚动不起来,后来再套了一层解决了)

bug如图:

无标题-2024-10-06-1748.excalidraw.png

文件处理

用的是electron的dialog,发现渲染进程不能直接用

觉得没什么,放preload不就行了

还是不行

于是就在preload里面写ipc,这样子才能工作

api请求和ipc

这一部分基本上把react萌新该踩的坑给踩了

一个呢state不会马上刷新,给set_xxx传个函数就老实了😈

另一个呢不要在组件的函数体直接定义,因为每次刷新都会定义一遍(好像是),搞得我在测试的时候连续重复请求把电脑卡爆了

应该在useEffect中定义才对,但是呢,由于StrictMode,这玩意会执行两次,在组件函数外面加一个变量测一下有没有注册过监听器就行了

Markdown渲染

一开始呢,我直接让它能渲染文本中的html,想着也没啥,结果ai生成了一个html标签,炸了

那我还想要保留think标签(无论是用think标签还是用chunk.delta.reasoning(OpenRouter等)还是用chunk.delta.reasoning_content(SiliconFlow等)我都转换成了think标签)的渲染

搞不定,最后ai给了把内容分块的方案,在处理markdown之前处理这个标签

还有就是代码块的显示问题,分不清单行和块状的代码块

按语言来肯定不行,单行肯定没有语言,多行可以没有语言,最后靠行数是否为1区分,虽然这么做也会有些bug,但是至少看起来应该没什么问题了吧

我要使用下拉选择框的组件,在这个组件库里面我一眼就看到了Select

拿来用了,发现选项竟然是浏览器原生的,好割裂

害得我发了issue,后来才知道,还有一个组件叫做Dropdown

行,我改

运行

发现<option>要换成组建的<Option>

运行

发现它用的不是onChange,终于看了一下文档,但是没细看,改成了onOpenChange

运行

还是不行,再看一眼,原来是onOptionSelect

运行

还是不行啊?啊?啊?

打印一下看看?

答:把data.value改成data.nextOption.value即可

构建

首先,nsis的icon必须是.ico而不能是.png

我这里转换出来的图标似乎有点问题,但是我懒得搞,没修

差不多就这些了

其实你可以发现,这个和上一篇文章的内容有点关联

是的,上一个项目其实就是为了给这个做铺垫