有的没的
Vercel的function竟然需要手动去调整它部署的机房 默认的话是部署在北美 调整的方法就是在settings然后function

那么应该把它部署到亚太地区,比如东京或者是新加坡或者是香港,和家里网络出口尽可能相近。

静态网页应该都是部署在全球各地的cdn,这个就不用调整。

这是最近发现连接upstash 延迟比较高而发现的

#programming
编辑 cf worker、vercel单文件工程的 workflow:

cf worker: 更新一版,文件名前头加个 [v1], 然后把修改完的代码粘贴到 panel 里,完美。然后再 git commit

vercel: 工程新建一个分支效仿以上

#programming
vercel 纯动态网页的 prompt:
请帮我创建一个单JS文件的Vercel Web应用工程,要求如下:

🎯 **核心架构要求**:

- 使用纯动态网页架构,HTML内容通过JS模板字符串动态生成
- 所有逻辑写在单个JS文件中,不拆分多个文件
- 同时提供网页访问和RESTful API接口功能
- 采用现代ES6+语法,支持async/await
- 响应式设计,支持移动端访问

📋 **具体功能需求**:

* 实现一个北京时间的实时时钟,精确到秒。
* 前端展示方面,时间要大一点,因为后面要放在公共大屏展示。
* 并且提供api接口/json来返回相关时间数据,包含年月日时分秒
* 前端展示的时间应该使用vercel的后短时间,方式用户浏览器时间不准

⚙️ **技术规范**:

- 单一入口文件处理所有路由(网页、API、静态资源等)
- 使用 `req.url` 和 `req.method` 进行路由判断
- HTML使用 Tailwind CSS 或现代CSS,默认暗色模式
- 代码注释清晰,便于理解和维护
- 考虑性能优化和用户体验

📁 **部署配置**:

- 主要部署平台:Vercel Serverless Functions
- 文件结构:`package.json` + `vercel.json` + `api/index.js`
- 兼容 Vercel 的请求/响应对象规范
- 可以使用vercel.json的rewrite,不要用redirect和route.

📦 **输出要求**:

1. **项目结构**:完整的文件目录和配置
2. **核心代码**:单文件实现,包含路由、业务逻辑、UI渲染
3. **配置文件**:package.json、vercel.json等部署配置

**质量标准**:

- 代码具备良好的可读性和可维护性
- UI设计现代美观,避免纯文本展示
- 性能优化:缓存策略、响应压缩等

#programming #prompt
gemini pro 和 claude 相互做代码审查非常好。

以下是我写的一个 telegram聊天记录搜索api.他部署在 cf worker.
他接到请求之后会先读取存储到 r2 的聊天记录 ndjson,再按照关键字搜索。
上次我已经更改了诸多特性,请你进行代码审查。
下面我附上上次的 checkpoint prompt,以及代码


每次审查出问题修复,并且出一个 checkpoint prompt
好的,就目前版本做出的改变和脚本总体的feature,总结一个 checkpoint prompt, 以便下轮对话使用。


ai 优化后的 checkpoint summary prompt:
请根据截至目前的对话内容,生成一个结构化的 checkpoint 总结,用于在后续对话中快速恢复上下文。总结应包含以下部分:

1. 【项目目标】简要重述当前脚本的核心功能与设计初衷。
2. 【已实现功能】列出目前已完成的主要特性或模块,按优先级或逻辑分组。
3. 【关键变更记录】概述本轮迭代中做出的重要修改及其原因(如重构、新增逻辑、修复问题等)。
4. 【待办事项 & 下一步计划】明确接下来需要实现的功能、待验证的问题或潜在优化方向。
5. 【上下文提示】提取可用于下轮对话的关键词、技术栈、约束条件或特殊需求。

请保持语言简洁准确,便于复制粘贴作为新对话的起始 prompt。

#ai #programming #prompt
说到agent vibe coding, 我已经被最先使用全自动agent vibe coding的那些人落下了得有一年的时间了

以前以为用个copilot edit打开VSc,然后对我标签页的代码删删改改就是vibe coding

现在才知道啥是真正的vibe coding

但是这最大的原因是因为我感觉cursor搞起来很麻烦 经常被和谐 这么繁琐的事情也并不是我急切需要,没有就不行的 所以也就一直搁置了

还好现在有gemini qwen 两个大善人能给我开放免费名额,让我一试

还是便宜治百病呀~

#ai
经过了AI编程差不多两三年的时间

越来越能理解一些广东非白化区的人说粤语识听唔识讲了

因为看的多了也就能理解了,但是想要主动输出那就是另外一码事了。。。

以上指的就是我在做js后端编程,网络编程方面的感想

#programming
前天课上无聊,在妖火发了一个帖子,询问现在agent编程的大家的选择. 要火总是每个人都很热情, 大家各种推荐.

当天下午我就下载了gemini-cli,还有qwen code.

以前一直都是在用github pilot edit, 只针对于单文件. 或者是干脆就是在claude的网页端询问.

这次使用了agent之后, 第一次感受到了vibe coding 原来是这样子. 可以自己扫描工作目录下的文件, 自己创建或者是删除.但是我还是偏向于ask every time, 而不是给full permission.

以后编程真的像是在做游戏了.

就像这几天一直在修缮我的tg索引. 把他一个从纯前端的实现做成一个后端的动态网页加上r2.

在来来回回debug的过程中, 感觉到我发挥的作用还是非常明显的. 因为没有一站式的本地开发环境, 没有nodejs,wrangler之类的, 只能靠用cf面板来进行编程, 所以说agent无法完成一个闭环,可能有了本地环境他也能做一些测试.
这样他在产出代码之前,我会先看一遍逻辑,检查一遍里边儿是否和他提出的目标相符.

实际上检查出了很多次说了改,但是实际上没改的情况. 这也就不得不提到前端,后端分离的框架带来文件增多,然后llm可能就是拆东墙补西墙. 这种情况发生在qwen3模型上很多

因为我对js还处于一个比较基础的小白水平, 但是对于Python就比较懂。 看他们写出来的Python代码 差不多就了解了他们的逻辑 看出了一些他们漏掉的东西,然后抓紧让他们继续修补。

对于js我的控制能力可能就没那么强,只能当英文作文看

总的来说,人工代码审查还是非常有必要的。 否则llm也是其实在试错,比如借助本地开发环境的多次运行查看编译错误来进行下次修补. 但是如果没有本地运行环境,那只能靠人眼或者手动部署了

#ai #programming
觉得llm的quota快到了,可以让他导出目前聊天的checkpoint:
请导出目前聊天的Chat checkpoint prompt, 以便我下次接续目前的工作进度


#ai #programming
1. 理发
2. 订婚衣服
3. 制作导引牌子

4. 锦旗
5. 婚纱照
【Vercel】为什么推送了提交之后,网站没有自动部署?

在Vercel上,每次向Github项目push时会自动部署,免费账户每天限100次。公共库的所有PR都会触发部署,但私有库仅限团队成员的推送。判断依据是提交者的邮箱地址,需确保与Vercel团队成员邮箱匹配。要修改git邮箱,可参考相关配置文章,然后在Vercel后台邀请用户加入团队。
通常,在 Vercel 上部署了一个 Github 上的项目,每次 git push 的时候,就自动触发部署,Vercel 把部署过程做得很丝滑。如果频繁提交,还要注意不要超过部署额度,免费账户每天的部署次数最多100次。

对于 Github 上的公开库,任何人推送或合并 PR,都将触发自动部署。但对于私有库,只有 Vercel 上团队成员的推送才会触发自动部署。也就是说,非团队成员推送提交到私有库,不会触发自动部署。

Vercel 怎么判断一个推送提交者是不是团队成员呢?唯一的判断是改提交用户的邮箱地址。如何修改git用户邮箱地址,可以参考这篇文章:【git】配置邮箱地址及用户名。

修改好git用户邮箱之后,就可以在 Vercel 项目管理后台,邀请用户加入团队。

#programming
vercel太坑爹了!!integration 页面提供的 upstash-kv 的 token 都不对!!

最后还是点一下“Open in upstash" 跳转到 upstash 官网,那上面提供的 token 是对的。

#programming
主流 AI 提示词优化工具推荐(2025 全面对比指南)

via 掘金人工智能本月最热 (author: 一点一木)



#bm #ai
Vercel 的 rewrites 在这两种情况下的行为是不同的:

---

### 情况一:静态路径重写 (没有使用正则表达式捕获)

这是您最开始的例子:

"rewrites": [
  {
    "source": "/w",
    "destination": "/api/index"
  }
]


* 行为: 这种配置像一个**别名**。你告诉 Vercel:“/w 这个路径就是 /api/index 的一个别名”。
* `request.url`: 当请求到达时,Vercel 查找这个别名,然后把请求完全交给 /api/index 处理。此时,对于 api/index 函数来说,它看到的 request.url 就是它自己的地址:`/api/index`。原始的 /w 在这个阶段已经被“翻译”掉了。

---

### 情况二:动态路径重写 (使用正则表达式捕获)

这是您的第二个例子:

"rewrites": [
  {
    "source": "/(.*)",
    "destination": "/api/index.js"
  }
]


* 行为: 这种配置像一个**前端控制器**或**网关**。`/(.*) 中的 (.*) 是一个正则表达式的“捕获组”,它会捕获所有传入的路径。你告诉 Vercel:“无论用户访问什么路径,都把它捕获下来,然后交给 /api/index.js` 这个函数去处理”。
* `request.url`: 为了让 /api/index.js 能正确处理请求(例如,根据 URL 显示不同的页面内容),Vercel 必须把**原始捕获到的路径**告诉它。因此,在这种情况下,函数内部拿到的 request.url **就是用户访问的原始 URL**。

---

### 总结

| source 的写法 | 行为模式 | 函数收到的 request.url |
| :----------------------- | :------------- | :------------------------ |
| "/w" (静态路径) | 别名 (Alias) | "/api/index" (目标地址) |
| "/(.*)" (动态正则捕获) | 网关 (Gateway) | "/w" (原始请求地址) |



#programming
这几天开发了一下vercel的无框架后端玩法,对比了一下和cf worker的不同。

其实就是多了vercel.json的一层路由,还有package.json的包定义。

用的node.js的后端,所以比cf worker强大,但是回回得compile, 需要时间。

然后kv的话可以在integration中连接别家服务。目前还没测试过。

相对来说比cf worker重不少


#programming
完成了一个 tg searcher 的小改版。
现在 json 经过压缩之后再上传到 cf r2,客户端访问的时候解压再搜索。

小 manual:

1. 在本地准备上传文件:

* 确保你的 channel_content.json 文件在电脑上。

* 打开命令行终端,进入该文件所在目录,运行 gzip 命令进行压缩:


     gzip channel_content.json
     


* 这会生成一个 channel_content.json.gz 文件。

2. 上传压缩文件:

* 使用 curl 命令上传这个 .gz 文件。注意 Content-Type 现在是 `application/gzip`。


     curl -X POST "https://<你的Worker地址>/upload?token=<你的AUTH_TOKEN>" \
          -H "Content-Type: application/gzip" \
          --data-binary "@channel_content.json.gz"
     


* --data-binary 确保文件以二进制形式上传,不会被修改。

* 成功后,你会看到 Successfully uploaded channel_content.json.gz. 的消息。


#programming
Back to Top