generated from template/astro-template
	update
This commit is contained in:
		@@ -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) 查看色值示例。
 | 
			
		||||
							
								
								
									
										46
									
								
								src/data/blogs/logger-life/25-06-05-viz-think.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/data/blogs/logger-life/25-06-05-viz-think.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
# viz 的思考
 | 
			
		||||
 | 
			
		||||
对于任何用户都能够展示的各自自己的页面。
 | 
			
		||||
 | 
			
		||||
用户只需要配置要的窗口的内容,和初始化的位置信息。
 | 
			
		||||
 | 
			
		||||
**超级副屏**
 | 
			
		||||
 | 
			
		||||
> 实时统计
 | 
			
		||||
 | 
			
		||||
使用点:
 | 
			
		||||
1. 实时获取语音的信息展示,生成的文本内容
 | 
			
		||||
2. 任务管理ToDo
 | 
			
		||||
3. ai对话生成结果记录,比较重要的agent的消息。多端的糅合,如果手机端的对话,可以实时同步到电脑端
 | 
			
		||||
4. 听歌,页面,操作。
 | 
			
		||||
 | 
			
		||||
## 定义最基本的框架数据类型
 | 
			
		||||
 | 
			
		||||
**显示内容相关的数据**
 | 
			
		||||
 | 
			
		||||
类型:页面类型 html的cssobject,或者原本的threejs渲染的内容。
 | 
			
		||||
 | 
			
		||||
### html的相关信息信息
 | 
			
		||||
宽度,大小,位置
 | 
			
		||||
隐藏或显示
 | 
			
		||||
刷新
 | 
			
		||||
 | 
			
		||||
### 原本的threejs渲染类型
 | 
			
		||||
 | 
			
		||||
## think
 | 
			
		||||
 | 
			
		||||
我第一步关注点在于,页面的内容的显示
 | 
			
		||||
 | 
			
		||||
-- iframe 内嵌(类似于内置浏览器)
 | 
			
		||||
-- render by router 路由渲染
 | 
			
		||||
-- 代码 执行代码
 | 
			
		||||
-- 控制面板,跟随用户的面板
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 多终端交互同步
 | 
			
		||||
 | 
			
		||||
所有的内容,语音,知识库调度,任务调度,都需要汇集在viz中心,可以观看。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								src/data/blogs/logger-life/25-06-05-z01-直觉编程.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/data/blogs/logger-life/25-06-05-z01-直觉编程.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
# 直觉
 | 
			
		||||
 | 
			
		||||
智能编程,自然语言转为代码。首要的条件是理解函数的执行过程,运行顺序。
 | 
			
		||||
 | 
			
		||||
执行的过程,程序是按顺序运行的,也就如果直觉下,知晓对应的线性关系,代码能够被更智能和更有效的生成。
 | 
			
		||||
 | 
			
		||||
## 顺序
 | 
			
		||||
 | 
			
		||||
代码的执行,在编程语言当中,是有关键字来确定要做什么。自然语言去生成,就需要通过描述和定义去定义形成的方案,同时借用已有的示例的内容去实现代码,去适配已有的代码库和风格。
 | 
			
		||||
							
								
								
									
										41
									
								
								src/data/blogs/logger-life/25-06-05-z02-task.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/data/blogs/logger-life/25-06-05-z02-task.md
									
									
									
									
									
										Normal file
									
								
							@@ -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__')`
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										27
									
								
								src/data/blogs/logger-life/25-06-06-minio-listen.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/data/blogs/logger-life/25-06-06-minio-listen.md
									
									
									
									
									
										Normal file
									
								
							@@ -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 中文件不存在,而数据库存在,就有问题。
 | 
			
		||||
							
								
								
									
										34
									
								
								src/data/blogs/logger-life/25-06-07-listen-operate.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/data/blogs/logger-life/25-06-07-listen-operate.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
# 监听实时的声音
 | 
			
		||||
 | 
			
		||||
实时对话,然后进行实现一些辅助功能。
 | 
			
		||||
 | 
			
		||||
## 大概的可能的功能模块
 | 
			
		||||
 | 
			
		||||
小小是智能助手的名称。
 | 
			
		||||
 | 
			
		||||
### 单句话
 | 
			
		||||
 | 
			
		||||
如果以小小开头的一段话,那吗是开启记录的事件内容,同时把生成的那一条数据记录下来。说的下一句话,不做记录。
 | 
			
		||||
 | 
			
		||||
### 多句话
 | 
			
		||||
 | 
			
		||||
如果是小小,记录事件,这是开启记录的事件的语音指令,其他的任何行为都是记录事件,时刻保持监听。
 | 
			
		||||
 | 
			
		||||
暂停和继续的指令
 | 
			
		||||
 | 
			
		||||
退出指令:并在触发退出的音频是 退出,停止,关闭等语音指令进行关闭。
 | 
			
		||||
 | 
			
		||||
### 自定义的指令模块
 | 
			
		||||
 | 
			
		||||
其他的额外的可能附加的指令。
 | 
			
		||||
 | 
			
		||||
## 因为功能的局限性
 | 
			
		||||
 | 
			
		||||
具体只需要实现的功能,单句话。把内容传递到服务器的 logger-list 的数据当中。
 | 
			
		||||
 | 
			
		||||
logger-list 可以操作一些额外的事件。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 获取ai的storage的today的数据
 | 
			
		||||
 | 
			
		||||
每次推送一端文字?
 | 
			
		||||
							
								
								
									
										1
									
								
								src/data/blogs/logger-life/25-06-07-服务.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/data/blogs/logger-life/25-06-07-服务.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
你要多想想自己,服务亮点是什么,有没有特殊的优势,考虑的够不够周全。
 | 
			
		||||
							
								
								
									
										7
									
								
								src/data/blogs/logger-life/25-06-07-记录列表.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/data/blogs/logger-life/25-06-07-记录列表.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
## 需要一个库
 | 
			
		||||
 | 
			
		||||
获取 ai 下的资源的 json 的数据的内容。然后保存。
 | 
			
		||||
 | 
			
		||||
## 通过api
 | 
			
		||||
 | 
			
		||||
使用html的页面的代码,直接实现,获取页面的内容。
 | 
			
		||||
							
								
								
									
										27
									
								
								src/data/blogs/logger-life/25-06-08-关于ai生成项目的方案.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/data/blogs/logger-life/25-06-08-关于ai生成项目的方案.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
# ai-editor 创建项目
 | 
			
		||||
 | 
			
		||||
在打开文件夹的时候,显示一个操作弹窗。
 | 
			
		||||
 | 
			
		||||
创建一个前或者后端项目,直接生成保存代码内容。根据提示词生成。
 | 
			
		||||
 | 
			
		||||
例外的思考需要后端的。创建 kevisual.json,如果是 node 端的程序,可以下载到本地的助手的开发环境下,自己手动运行。
 | 
			
		||||
 | 
			
		||||
纯前端的页面的内容,部署方式,前端的开发预览。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## ai
 | 
			
		||||
 | 
			
		||||
要做什么,等于是插件式的功能
 | 
			
		||||
 | 
			
		||||
AI,属于应用插件。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 构思一个开发的一个流程过程
 | 
			
		||||
 | 
			
		||||
web上开发,同时进行部署。(预览使用开源的项目)
 | 
			
		||||
 | 
			
		||||
web上开发,就是页面打开这个文件夹,然后触发 `deploy` 的 `ai` 动作. 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								src/data/blogs/logger-life/25-06-08-目录命名-kevisual命名.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/data/blogs/logger-life/25-06-08-目录命名-kevisual命名.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
# kevisual 命名
 | 
			
		||||
 | 
			
		||||
两级命名,在寻常的开发过程,路由的使用的时候我推荐 route 使用两级命名,但是我在开发 editor 编辑器的过程中,实际发现,在日常的时候也有效果。
 | 
			
		||||
 | 
			
		||||
在系统的文件夹管理当中,当一个目录的文件夹过多,是比较难去找到自己想要找到的目录,除非是通过搜索目录。人能够很简单的找到,量不多的时候,有记忆,我大概位置,那么对整个文件的掌控性是非常强的。能够通过直觉知道这个目录在哪里。
 | 
			
		||||
 | 
			
		||||
一般情况下,一个目录中最多 100 个子的目录,每一个子目录也是。所有的目录的包函的内容,就能够包函 10000 个。每一个目录等于是一个标签,在查询方面,更加的迅速。
 | 
			
		||||
 | 
			
		||||
## 延伸能做的一个
 | 
			
		||||
 | 
			
		||||
可以开发一个图的结构的文件夹模式。然后创建文件和创建文件夹,然后对内容进行操作更加的便捷。
 | 
			
		||||
							
								
								
									
										20
									
								
								src/data/blogs/logger-life/25-06-09-弱智能代码.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/data/blogs/logger-life/25-06-09-弱智能代码.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
# 代码
 | 
			
		||||
 | 
			
		||||
当前的 ai 因为是弱智能的,所以要生成的代码都需要先人为的固定生成的模式,才能继续去生成。
 | 
			
		||||
 | 
			
		||||
## 关联
 | 
			
		||||
 | 
			
		||||
如何把 ai 关联到开发的项目当中。
 | 
			
		||||
 | 
			
		||||
## 在浏览器当中
 | 
			
		||||
 | 
			
		||||
通过 import-map,直接实现在页面能够直接跑代码,
 | 
			
		||||
 | 
			
		||||
比如设定提示词,直接能够在页面中使用。
 | 
			
		||||
 | 
			
		||||
```ts
 | 
			
		||||
const propmts = {
 | 
			
		||||
  role: 'assistant',
 | 
			
		||||
  content: '你是一个前端开发',
 | 
			
		||||
};
 | 
			
		||||
```
 | 
			
		||||
@@ -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<User | null> {
 | 
			
		||||
    const me = await this.getMe(token, false);
 | 
			
		||||
    if (me.code === 200) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user