From 33f70e0564a08c03107c524c3e1bc1f66351e62b Mon Sep 17 00:00:00 2001 From: abearxiong Date: Wed, 18 Jun 2025 15:30:31 +0800 Subject: [PATCH] update --- src/data/blogs/code-logger/0001-shadcn.md | 4 +- .../blogs/logger-life/25-06-05-viz-think.md | 46 +++++++++++++++++++ .../logger-life/25-06-05-z01-直觉编程.md | 9 ++++ .../blogs/logger-life/25-06-05-z02-task.md | 41 +++++++++++++++++ .../logger-life/25-06-06-minio-listen.md | 27 +++++++++++ .../logger-life/25-06-07-listen-operate.md | 34 ++++++++++++++ src/data/blogs/logger-life/25-06-07-服务.md | 1 + .../blogs/logger-life/25-06-07-记录列表.md | 7 +++ .../25-06-08-关于ai生成项目的方案.md | 27 +++++++++++ .../25-06-08-目录命名-kevisual命名.md | 11 +++++ .../blogs/logger-life/25-06-09-弱智能代码.md | 20 ++++++++ src/query/query-login/query-login.ts | 20 ++++++++ 12 files changed, 246 insertions(+), 1 deletion(-) create mode 100644 src/data/blogs/logger-life/25-06-05-viz-think.md create mode 100644 src/data/blogs/logger-life/25-06-05-z01-直觉编程.md create mode 100644 src/data/blogs/logger-life/25-06-05-z02-task.md create mode 100644 src/data/blogs/logger-life/25-06-06-minio-listen.md create mode 100644 src/data/blogs/logger-life/25-06-07-listen-operate.md create mode 100644 src/data/blogs/logger-life/25-06-07-服务.md create mode 100644 src/data/blogs/logger-life/25-06-07-记录列表.md create mode 100644 src/data/blogs/logger-life/25-06-08-关于ai生成项目的方案.md create mode 100644 src/data/blogs/logger-life/25-06-08-目录命名-kevisual命名.md create mode 100644 src/data/blogs/logger-life/25-06-09-弱智能代码.md diff --git a/src/data/blogs/code-logger/0001-shadcn.md b/src/data/blogs/code-logger/0001-shadcn.md index b3f3074..6f8686c 100644 --- a/src/data/blogs/code-logger/0001-shadcn.md +++ b/src/data/blogs/code-logger/0001-shadcn.md @@ -1,5 +1,7 @@ 在 shadcn/ui 中,`Neutral`、`Gray`、`Zinc`、`Stone` 和 `Slate` 都是预设的灰色调色板(neutral color palettes),但它们的色调倾向和适用场景略有不同。以下是它们的区别和特点: + +```md --- ### 1. **`Neutral`** @@ -47,5 +49,5 @@ ### 对比图(从冷到暖): `Slate` → `Gray` → `Neutral` → `Zinc` → `Stone` - +``` 如果需要更直观的对比,可以在 [shadcn/ui 官网](https://ui.shadcn.com/docs) 或 [Tailwind 调色板](https://tailwindcss.com/docs/customizing-colors) 查看色值示例。 \ No newline at end of file diff --git a/src/data/blogs/logger-life/25-06-05-viz-think.md b/src/data/blogs/logger-life/25-06-05-viz-think.md new file mode 100644 index 0000000..89f4388 --- /dev/null +++ b/src/data/blogs/logger-life/25-06-05-viz-think.md @@ -0,0 +1,46 @@ +# viz 的思考 + +对于任何用户都能够展示的各自自己的页面。 + +用户只需要配置要的窗口的内容,和初始化的位置信息。 + +**超级副屏** + +> 实时统计 + +使用点: +1. 实时获取语音的信息展示,生成的文本内容 +2. 任务管理ToDo +3. ai对话生成结果记录,比较重要的agent的消息。多端的糅合,如果手机端的对话,可以实时同步到电脑端 +4. 听歌,页面,操作。 + +## 定义最基本的框架数据类型 + +**显示内容相关的数据** + +类型:页面类型 html的cssobject,或者原本的threejs渲染的内容。 + +### html的相关信息信息 +宽度,大小,位置 +隐藏或显示 +刷新 + +### 原本的threejs渲染类型 + +## think + +我第一步关注点在于,页面的内容的显示 + +-- iframe 内嵌(类似于内置浏览器) +-- render by router 路由渲染 +-- 代码 执行代码 +-- 控制面板,跟随用户的面板 + + +## 多终端交互同步 + +所有的内容,语音,知识库调度,任务调度,都需要汇集在viz中心,可以观看。 + + + + diff --git a/src/data/blogs/logger-life/25-06-05-z01-直觉编程.md b/src/data/blogs/logger-life/25-06-05-z01-直觉编程.md new file mode 100644 index 0000000..3caaca3 --- /dev/null +++ b/src/data/blogs/logger-life/25-06-05-z01-直觉编程.md @@ -0,0 +1,9 @@ +# 直觉 + +智能编程,自然语言转为代码。首要的条件是理解函数的执行过程,运行顺序。 + +执行的过程,程序是按顺序运行的,也就如果直觉下,知晓对应的线性关系,代码能够被更智能和更有效的生成。 + +## 顺序 + +代码的执行,在编程语言当中,是有关键字来确定要做什么。自然语言去生成,就需要通过描述和定义去定义形成的方案,同时借用已有的示例的内容去实现代码,去适配已有的代码库和风格。 \ No newline at end of file diff --git a/src/data/blogs/logger-life/25-06-05-z02-task.md b/src/data/blogs/logger-life/25-06-05-z02-task.md new file mode 100644 index 0000000..4547e39 --- /dev/null +++ b/src/data/blogs/logger-life/25-06-05-z02-task.md @@ -0,0 +1,41 @@ +# 任务 + +## minio 的事件的监听 + +### 初始化 + +删除所有的 db 的数据,列出 minio 的所有文件,同步内容到 db 数据库 + +### 监听任务 + +minio 的事件,更新,删除,修改文件,触发同步事件。 + +## 关于实现 client 服务 + +gitea 的 token,实时获取 我的 可共享的内容。 + +`https://kevisual.xiongxiao.me/root/me/` + +## 关于 assistant 的 storage 的模块的数据的存储 + +```sh +npm i @kevisual/storage +``` +1. 类名为 AssistantStorage + +2. opts 对象类型 可选configPath 为字符串 +可选 app 为字符串 + +3. 结构体 定义configPath,如果不存在,则为process.cwd(); app不存在为 名称 app +dir为 path.join(configPath, app); + +4. getData(name='data.json'), 先检测 dir,不存在则创建。 + +然后获取data.json的内容,如果不存在,则创建文件, 切返回{} + +5. setData(name='data.json', data, opts) , 获取 getData,并merge数据,opts有参数 overwrite,的时候不merge,直接覆盖。 + + +configPath 默认为 `path.join(process.cwd(), 'storage', '__user_app__')` + + diff --git a/src/data/blogs/logger-life/25-06-06-minio-listen.md b/src/data/blogs/logger-life/25-06-06-minio-listen.md new file mode 100644 index 0000000..bb21fe6 --- /dev/null +++ b/src/data/blogs/logger-life/25-06-06-minio-listen.md @@ -0,0 +1,27 @@ +# minio 文件监听 + +昨天提及,minio 的内容的监听,为什么要有这个文件的监听,是因为,minio 不支持高级搜索,过滤的搜索内容。只能基于 prefix 和 maxKey 和 ContinuationToken 去拆页面获取。不够灵活,所以需要把目录的信息同步到数据库 postgres 当中。 + +为了同步数据到数据库当中,要实现文件创建和删除的监听。 + +为了避免同一个文件多次修改,任务的处理一般要延迟运行,创建了一个文件,debounce 延迟 2 分钟录入到数据库,检测和刷新。因为数据可能一直在修改。 + +其中也有一个原因是因为,本地数据 kevisual.json 的数据同步到服务器当中,会出现一个问题,要知道那些内容未更新,更新了的文件才上传,没有更新的文件就不需要再次上传了。 + +## 如何实现 + +minio 的 listen 的服务的内容是依据,事件监听,监听其中的 createObject 和 removeObeject 俩个事件。 + +触发动作后,把需要操作的事情 push 到 router 当中,router 当中,把请求 push 打哦 bullmq 当中,bullmq 进行队列执行 + +**第一次运行** + +监测是否是第一次运行 + +如果是第一次运行,同步所有的 minio 当中的数据到数据库当中 + +## 定时器 + +需要有一个定时的任务,任务的主要的功能模块是,检测数据库一个月以前的数据,如果其中在 minio 中的数据不一致了,那么进行同步数据库的内容,更新 check,因为数据是同步来自 minio,所以具有不确定性,把不确定性的东西实现变得更加的稳定。 + +这里介绍一下不稳定的地方:minio 是一个数组,数据是一个数组,这两个中的数据要一致的话,需要 a 的列表和 b 的列表都遍历一次才能知道,如果出了 minio 中文件不存在,而数据库存在,就有问题。 diff --git a/src/data/blogs/logger-life/25-06-07-listen-operate.md b/src/data/blogs/logger-life/25-06-07-listen-operate.md new file mode 100644 index 0000000..df43ba0 --- /dev/null +++ b/src/data/blogs/logger-life/25-06-07-listen-operate.md @@ -0,0 +1,34 @@ +# 监听实时的声音 + +实时对话,然后进行实现一些辅助功能。 + +## 大概的可能的功能模块 + +小小是智能助手的名称。 + +### 单句话 + +如果以小小开头的一段话,那吗是开启记录的事件内容,同时把生成的那一条数据记录下来。说的下一句话,不做记录。 + +### 多句话 + +如果是小小,记录事件,这是开启记录的事件的语音指令,其他的任何行为都是记录事件,时刻保持监听。 + +暂停和继续的指令 + +退出指令:并在触发退出的音频是 退出,停止,关闭等语音指令进行关闭。 + +### 自定义的指令模块 + +其他的额外的可能附加的指令。 + +## 因为功能的局限性 + +具体只需要实现的功能,单句话。把内容传递到服务器的 logger-list 的数据当中。 + +logger-list 可以操作一些额外的事件。 + + +## 获取ai的storage的today的数据 + +每次推送一端文字? \ No newline at end of file diff --git a/src/data/blogs/logger-life/25-06-07-服务.md b/src/data/blogs/logger-life/25-06-07-服务.md new file mode 100644 index 0000000..519a903 --- /dev/null +++ b/src/data/blogs/logger-life/25-06-07-服务.md @@ -0,0 +1 @@ +你要多想想自己,服务亮点是什么,有没有特殊的优势,考虑的够不够周全。 \ No newline at end of file diff --git a/src/data/blogs/logger-life/25-06-07-记录列表.md b/src/data/blogs/logger-life/25-06-07-记录列表.md new file mode 100644 index 0000000..89261b0 --- /dev/null +++ b/src/data/blogs/logger-life/25-06-07-记录列表.md @@ -0,0 +1,7 @@ +## 需要一个库 + +获取 ai 下的资源的 json 的数据的内容。然后保存。 + +## 通过api + +使用html的页面的代码,直接实现,获取页面的内容。 \ No newline at end of file diff --git a/src/data/blogs/logger-life/25-06-08-关于ai生成项目的方案.md b/src/data/blogs/logger-life/25-06-08-关于ai生成项目的方案.md new file mode 100644 index 0000000..6ddeb18 --- /dev/null +++ b/src/data/blogs/logger-life/25-06-08-关于ai生成项目的方案.md @@ -0,0 +1,27 @@ +# ai-editor 创建项目 + +在打开文件夹的时候,显示一个操作弹窗。 + +创建一个前或者后端项目,直接生成保存代码内容。根据提示词生成。 + +例外的思考需要后端的。创建 kevisual.json,如果是 node 端的程序,可以下载到本地的助手的开发环境下,自己手动运行。 + +纯前端的页面的内容,部署方式,前端的开发预览。 + + +## ai + +要做什么,等于是插件式的功能 + +AI,属于应用插件。 + + +## 构思一个开发的一个流程过程 + +web上开发,同时进行部署。(预览使用开源的项目) + +web上开发,就是页面打开这个文件夹,然后触发 `deploy` 的 `ai` 动作. + + + + diff --git a/src/data/blogs/logger-life/25-06-08-目录命名-kevisual命名.md b/src/data/blogs/logger-life/25-06-08-目录命名-kevisual命名.md new file mode 100644 index 0000000..a4af1d8 --- /dev/null +++ b/src/data/blogs/logger-life/25-06-08-目录命名-kevisual命名.md @@ -0,0 +1,11 @@ +# kevisual 命名 + +两级命名,在寻常的开发过程,路由的使用的时候我推荐 route 使用两级命名,但是我在开发 editor 编辑器的过程中,实际发现,在日常的时候也有效果。 + +在系统的文件夹管理当中,当一个目录的文件夹过多,是比较难去找到自己想要找到的目录,除非是通过搜索目录。人能够很简单的找到,量不多的时候,有记忆,我大概位置,那么对整个文件的掌控性是非常强的。能够通过直觉知道这个目录在哪里。 + +一般情况下,一个目录中最多 100 个子的目录,每一个子目录也是。所有的目录的包函的内容,就能够包函 10000 个。每一个目录等于是一个标签,在查询方面,更加的迅速。 + +## 延伸能做的一个 + +可以开发一个图的结构的文件夹模式。然后创建文件和创建文件夹,然后对内容进行操作更加的便捷。 diff --git a/src/data/blogs/logger-life/25-06-09-弱智能代码.md b/src/data/blogs/logger-life/25-06-09-弱智能代码.md new file mode 100644 index 0000000..871214f --- /dev/null +++ b/src/data/blogs/logger-life/25-06-09-弱智能代码.md @@ -0,0 +1,20 @@ +# 代码 + +当前的 ai 因为是弱智能的,所以要生成的代码都需要先人为的固定生成的模式,才能继续去生成。 + +## 关联 + +如何把 ai 关联到开发的项目当中。 + +## 在浏览器当中 + +通过 import-map,直接实现在页面能够直接跑代码, + +比如设定提示词,直接能够在页面中使用。 + +```ts +const propmts = { + role: 'assistant', + content: '你是一个前端开发', +}; +``` diff --git a/src/query/query-login/query-login.ts b/src/query/query-login/query-login.ts index 3c76c47..ca3b762 100644 --- a/src/query/query-login/query-login.ts +++ b/src/query/query-login/query-login.ts @@ -163,6 +163,10 @@ export class QueryLogin extends BaseQuery { return this.post( { key: 'refreshToken', data }, { + noStop: true, + beforeRequest: async (config) => { + return config; + }, afterResponse: async (response, ctx) => { setBaseResponse(response); return response as any; @@ -239,6 +243,7 @@ export class QueryLogin extends BaseQuery { ) { const that = this; const refetch = opts?.refetch ?? false; + if (response?.code === 401) { if (that.query.stop === true) { return { code: 500, success: false, message: 'refresh token loading...' }; @@ -266,6 +271,7 @@ export class QueryLogin extends BaseQuery { return that.post( { key: 'me' }, { + noStop: true, beforeRequest: async (config) => { if (config.headers) { config.headers['Authorization'] = `Bearer ${_token}`; @@ -397,6 +403,20 @@ export class QueryLogin extends BaseQuery { }, ); } + async getLoginUser() { + const that = this; + const userInfo = await that.checkLocalUser(); + const token = await that.getToken(); + if (userInfo) { + return userInfo; + } else if (token) { + const userinfo = await that.getLoginUserByToken(token); + if (userinfo) { + return userinfo; + } + } + return null; + } async getLoginUserByToken(token: string): Promise { const me = await this.getMe(token, false); if (me.code === 200) {