(话题已被作者删除) 1 个帖子 - 1 位参与者 阅读完整话题
stream disconnected before completion: Transport error: timeout 问一下 最近频繁出现这个问题 自己接的cpa 是vps的问题还是我的网络问题啊 之前好像基本没有这个问题的 这两天好严重 求佬友解答 1 个帖子 - 1 位参与者 阅读完整话题
各位佬,最近nba季后赛开始了,想看看球赛,今天库里已经回家说晚安了。 想问问有没有ios端能看NBA比赛的软件,不是腾讯和咪咕的 2 个帖子 - 2 位参与者 阅读完整话题
Hi friends! Awesome news! We had started our playtest. It will last for about a month, maybe more, depending on demand. The goal of this playtest is to check the game from Chapter 1 to Chapter 3, and collect your feedback. Please write all your thoughts in the game's community hub. You can playtest Shop Crush on the game's Steam page. Comments URL: https://news.ycombinator.com/item?id=47816464 Points: 1 # Comments: 1
非开发出身一直对Obsidian敬而远之,但最近还是入了Obsidian的坑,先说结论就是舒服极了。Vibe coding 都能上手的人Obsidian 几乎也算是0门槛了。 Notion转Obsidian原因有几个: 1、Notion 现在功能越做越臃肿了,仿佛看到了当年使用印象笔记的影子,这个是我不喜欢的 2、教育账户多少感觉存在风险,笔记日益多了,那天挂了就惨了。 3、AI 好用但也贵,不舍得花钱,也不愿意组别人空间 4、 不得不承认很喜欢notion 的强大数据库多维表格功能,唯一还创建了一个套第二大脑笔记系统,非常舒服,但迁移成本很高。用数据库创建的笔记后面迁移到Obsidian 出现大量格式问题。 5、CC大行其道后,感觉.MD格式文件才能顺应AI潮流,我迁移差不多了就出现Karpathy爆款记录笔记方法,也证明了我的判断。 目前没事就折腾obsidian 的格式主题,怎么弄好看。虽然时间花在这些东西上很不值得,因该去记录,但让自己舒服才符合自己使用习惯。 推荐几个好用的插件吧: #主题 : Minimal 强推! 配合Minimal Theme Settings; #AI: Claudian 强推! Obsidian 中直接操作笔记; 导航管理: notebook navigator 强推! 比Obsidian 原生导航好用一万倍的神奇,如果让我只推荐一个插件那必是它了; 附件管理: Custom Attachment Location 强推! obsidian 笔记文件中包含的图片等格式附件有个专门文件夹管理,这个工具就是随笔记一起管理附件好用 多端同步: Remotely Save 强推! 配合云端工具,实现多端同步 4 个帖子 - 4 位参与者 阅读完整话题
GAI is a flexible Go library for building agent-style applications on top of LLMs Comments URL: https://news.ycombinator.com/item?id=47816285 Points: 1 # Comments: 0
<script setup> import { ref } from 'vue'; import { onLoad } from '@dcloudio/uni-app'; import request from '@/utils/request'; import { getFiles, getRandomFile, getFileArray } from '@/utils/yangUtils'; const imageSuffix = ['png', 'jpg', 'jpeg']; const videoSuffix = ['mp4', 'avi', 'mov']; const imageNum = ref(0); const videoNum = ref(0); // 获取父级传入的数据 const props = defineProps(["modelValue", "limit", "message", "isDelete", "isAdd"]); // 定义 emits const emit = defineEmits(['update:modelValue']); // const listData = ref(["https://yxdjpw.oss-cn-beijing.aliyuncs.com/uploadDefault/20260417192542-d3ea46.png", "https://yxdjpw.oss-cn-beijing.aliyuncs.com/uploadDefault/20260417194449-bfb1ba.mp4"]); const listData = ref([]) const onSelectFile = async () => { let result; // #ifdef APP || APP-PLUS || MP-WEIXIN || MP-TOUTIAO || MP-LARK || MP-JD || MP-HARMONY || MP-XHS result = await uni.chooseMedia({ count: props.limit || 9, mediaType: ['image', 'video'], sourceType: ['album', 'camera'], maxDuration: '30s' }) // #endif // #ifdef WEB || H5 result = await uni.chooseFile({ count: props.limit || 9, type: 'all', }) // #endif let arr = []; console.log(result); for (let filePath of result.tempFiles) { // 判断文件是否超出10M if (filePath.size > 10 * 1024 * 1024) { uni.showModal({ title: '提示', content: '文件大小不能超过10M!', showCancel: true, }) return; } if (imageSuffix.includes(filePath.name.replaceAll('"', '').split('.').pop()?.toLowerCase())) { imageNum.value++; } else if (videoSuffix.includes(filePath.name.replaceAll('"', '').split('.').pop()?.toLowerCase())) { // 判断之前有没有上传过视频或者图片 if (imageNum.value >= 1 || videoNum.value >= 1) { uni.showModal({ title: '提示', content: '图片和视频不能同时上传,并且视频只能上传一个!', showCancel: true, }) return; } videoNum.value++; } const data = await request("/upload/uploadFile", filePath.path, "post"); arr.push(getFileArray(data)[0]); } listData.value = listData.value.concat(arr); // 将数据返回出去 emit("update:modelValue", listData.value.join(",")); } // 删除 const onDelete = (index) => { // 1. 先拿到要删除的项(必须在 splice 之前拿!) const deletedItem = listData.value[index]; // 2. 判断类型,更新计数 const ext = deletedItem.split('.').pop()?.toLowerCase(); if (imageSuffix.includes(ext)) { imageNum.value--; } else if (videoSuffix.includes(ext)) { videoNum.value--; } // 3. 再删除元素 listData.value.splice(index, 1); // 4. 更新双向绑定 emit("update:modelValue", listData.value.join(",")); } // 查看 const onView = (item) => { } // 类型判断 const isSuffix = () => { return listData.value.some(item => { // 获取后缀(转小写,避免大小写问题) const ext = item.split('.').pop()?.toLowerCase() return videoSuffix.includes(ext) }) } </script> <template> <view> <view class="header"> <view v-if="props.message" class="message">{{ props.message }}</view> <view class="numCount">{{ `${listData.length}/${props.limit || 9}` }}</view> </view> <view class="image-grid" :class="isSuffix() ? 'grid-video' : ''"> <template v-for="(item, index) in listData" :key="index"> <view class="grid-item grid-item-content" :class="isSuffix() ? 'grid-item-video' : ''" @click="onView(item)"> <image v-if="imageSuffix.includes(item.split('.').pop())" class="img" :src="item" mode="aspectFill" /> <video v-else-if="videoSuffix.includes(item.split('.').pop())" class="video" :src="item" /> <view class="grid-item-delete" v-if="(isAdd ?? true)" @click="onDelete(index)"><uni-icons class="icon-delete" type="closeempty" color="#D3D4D6" size="24" /></view> </view> </template> <view class="grid-item icon-add" v-if="(isAdd ?? true) && !isSuffix() && listData.length < (props.limit ?? 9)" @click="onSelectFile()"> <uni-icons type="plusempty" size="60" color="#F1F1F1"></uni-icons> </view> </view> </view> </template> <style lang="scss" scoped> .header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20rpx; } .image-grid { display: grid; grid-template-columns: repeat(3, 1fr); /* 一行3个,自动均分 */ gap: 20rpx; /* 格子间距 */ box-sizing: border-box; } .grid-item { width: 240rpx; height: 240rpx; } .grid-video { grid-template-columns: repeat(1, 1fr) !important; } .grid-item-video { width: 100%; height: 400rpx; } .numCount { display: flex; flex-direction: row-reverse; font-size: 26rpx; } .img, .video { width: 100%; height: 100%; } .grid-item-content { position: relative; } .icon-add { background: #FFFFFF; line-height: 240rpx; text-align: center; border: 1rpx solid #EEEEEE; border-radius: 6rpx; } .grid-item-delete { position: absolute; top: 0rpx; right: 0rpx; z-index: 1; } </style> 方法解析 文件后端返回的是 /api/upload/xxx.png getFiles 将图片拼接成正常能访问的 比如 http://域名.com/api/upload/xxx.png getRandomFile 是随机访问 getFileArray 是拼接成数组 limit → 最多上传数量 默认为9 message → 提示 比如请上传视频 可不填 isDelete → 是否可以删除重新上传 默认为true isAdd → 是否可以新增,比如有些地方可以直接回显 比如产品的图片,但是你不想让它显示新增的框 可以为false 默认为true // 文件加载 export const getFiles = (url) => { if (!url) { return ""; } if (url.startsWith("http://") || url.startsWith("https://")) { return cleanString(url); } else { return baseURL + cleanString(url); } }; // 随机加载文件 export const getRandomFile = (url) => { if (!url) { return ""; } const urls = url.split(","); const randomIndex = Math.floor(Math.random() * urls.length); const selectedUrl = urls[randomIndex]; if ( cleanString(selectedUrl).startsWith("http://") || cleanString(selectedUrl).startsWith("https://") ) { return cleanString(selectedUrl); } else { return baseURL + cleanString(selectedUrl); } }; export const getFileArray = (url) => { if (!url) { return []; } let baseUrl = []; url.split(",").forEach((v) => { if ( cleanString(v).startsWith("http://") || cleanString(v).startsWith("https://") ) { baseUrl.push(cleanString(v)); } else { baseUrl.push(baseURL + cleanString(v)); } }); console.log(baseUrl); return baseUrl; }; 请求就是 uni.request的请求 你们按照你们自己的改 当前只支持H5 你们需要的话 我会再更新 如果上传了视频就直接独占一行 并且不能上传其他视频和图片 仿照的是朋友圈 其他页面调用就是 比如文件名叫uploadFile.vue吧 import UpLoadFile from '@/components/uploadFile.vue' // 页面代码 <UpLoadFile v-model="form.media" /> 第一次封装 还有些问题 我会持续更新的 1 个帖子 - 1 位参与者 阅读完整话题
我这么大一个 不支持codex,只支持/v1/chat/completions请求 没人看见吗? 后台全是报错。。。。。。 (刚好当鉴别机器人了。。。。。。) 17 个帖子 - 12 位参与者 阅读完整话题
Readox is a Chrome extension that reads web pages, PDFs, selections, text files (ie markdown), and text input notes aloud with TTS. You can just play the current page, or save things to a library and queue them up. It highlights as it reads, keeps your place across items, and can OCR scanned PDFs. TTS (for text and PDF) and OCR run on-device, and it works offline after setup. I’m interested on feedback on the library collections as a "playlist-like" functionality, or if most people just want a play button for the current page. Also interested in anything that feels missing or awkward. Thanks! Comments URL: https://news.ycombinator.com/item?id=47815638 Points: 2 # Comments: 0
I built LogsGo as a learning project to explore log ingestion, querying, and storage tradeoffs. It’s a small Go-based system where logs come in over gRPC, land in memory first, then flush into local storage and optionally S3-compatible object storage. I also added a simple query language plus a small UI to inspect log occurrences over time. This wasn’t built because I think the world needed “another logging system” or because I’m an expert here. I mostly wanted to learn by building something end to end: ingestion paths, storage layering, querying, retention, auth/TLS, and some UI work. Repo: https://github.com/Saumya40-codes/LogsGO I’d genuinely appreciate feedback, including “this design is wrong for X reason” type feedback. If parts of it feel overengineered / naive / badly thought through, that’s useful for me too. Comments URL: https://news.ycombinator.com/item?id=47815402 Points: 1 # Comments: 0
当前对话出现retry,重开另一个session却可以正常使用,切回原对话还是retry 。这是any轮询的问题吗?还是新版cluade code的原因 而且感觉any现在retrying明显变多了 个人感觉还和上下文有关,上下文一长retry出现概率更大 报错多为: API Error: 503 {“error”:{“message”:“Service Unavailable”,“type”:“error”},“type”:“error”} · check status.claude.com 明明前一周还能爽蹬 2 个帖子 - 2 位参与者 阅读完整话题
150 applications. One offer. Each application took 5+ manual steps. Separate tools, separate tabs, separate sites — none of them talking to each other. Generic output. Over an hour per application. Paste a job description — or pull it from any job site with the Chrome extension — and five AI agents run an orchestrated pipeline in under 30 seconds: analyzing the role, scoring your fit, researching the company, writing a targeted cover letter, and tailoring your resume to the role. Sequential where it needs to be, parallel where it can be, each agent's output feeding the next. Also includes a dashboard to track every application. And tools for everything around it: interview prep with mock sessions, salary negotiation, job comparison, follow-ups, thank you notes, and references. Runs on your machine. No subscriptions, no data stored on our servers — just your own Gemini API key connecting directly to Google. Comments URL: https://news.ycombinator.com/item?id=47815326 Points: 1 # Comments: 0
Ricci Flow – AI Web Scraper for Chrome: AI Data Extraction Tool for Web Scraping to CSV, Excel, JSON Comments URL: https://news.ycombinator.com/item?id=47815071 Points: 2 # Comments: 1
Article URL: https://github.com/eph5xx/tweakidea Comments URL: https://news.ycombinator.com/item?id=47815028 Points: 1 # Comments: 0
上海办公室线下活动 GCP 5刀赠金(限4月18日) trygcp.dev Google Cloud Credit and Account Distribution App 5 个帖子 - 5 位参与者 阅读完整话题
IT之家 4 月 18 日消息,尼康中国周四宣布推出全新双筒望远镜系列 ——ACTION 和 ACTION ZOOM。 新系列共包含七款型号:8×42、10×42、7×50、10×50、12×50、16×50 以及 10-22×50 变焦型号,国行售价暂未公布,不过京东全球购已经上架进口版本,美国市场建议零售价从 119.95 美元至 199.95 美元(IT之家注:现汇率约合 819.8 元至 1366 元人民币)不等。 京东 尼康(Nikon)Action Zoom 10-22x50 双筒望远镜高倍变焦大物镜多层镀 观看体育赛事、自然观察 券后 2404.08 元 领 0.98 元券 2026 年数码家电政府补贴持续进行中,IT 之家为大家汇总国补领券地址,买数码家电之前记得领取: 点此查看 。 数码补贴: 点此领券 手机 / 平板 / 3C 数码支持 8.5 折政府补贴,不超过 6000 元的产品至高立减 500 元。 家电补贴: 点此领券 6 类家电支持 8.5 折政府补贴,单品至高补贴 1500 元。 全系列新品均配备尼康全新开发的光学系统与焕新的外观设计,在光学品质与人机工学操控两方面均较前代产品实现明显提升。 在光学性能方面,新系列较 ACULON A211 提供了更宽广的视野。其中,10×42、12×50 和 16×50 三个型号的表观视场均达到 60° 以上,属于广角视野机型,能够在不频繁转动望远镜的情况下观察到更大范围的画面,适用于观鸟、风景观察等场景。 尼康香港官网资料显示,10×42 型号的表观视场为 61.4°,12×50 和 16×50 型号均为 60.8°。此外,全系列大多数型号的“眼点距”得以延长 —— 除 16×50 外,其他所有型号的眼点距均在 15 毫米以上,意味着即便佩戴眼镜或太阳镜的用户也能舒适地获得完整清晰的视野。 外观与人机工学方面,新系列采用符合人体工学的造型设计,机身采用铝合金材质制造,外部包覆橡胶护套,既保证了握持的稳固性与舒适性,也提升了抗冲击能力和耐用性,适合户外环境下的长期使用。镜片均经过多层镀膜处理,配合大口径物镜,能够呈现明亮清晰的影像。其中,10-22×50 变焦型号通过变焦拨杆可实现平滑的倍率调节,并可通过选购的三脚架适配器(TRA-2 及 TRA-3)安装于三脚架上使用。
使用hermes agent 通过MCP的方法将二者连接。 原理大概是这样 Notion ↔ [Notion 官方 MCP] ↔ Hermes Agent ↔ [FNS MCP / SSE] ↔ Obsidian ↑ ↑ hermes与FNS自部署在 VPS 都使用了什么 1.hermes agent 无需多言,类似于小龙虾openclaw这种 2.notion mcp 官方的,使用OA认证挂载后 Agent 能读 / 写 / 创建 / 搜索 Notion 页面 为什么不用 api的形式? 因为闲鱼上卖的都是那种商业试用版,hermes 本身内置了 Notion API 适配,但因为访客账号无法在 workspace 里创建 internal integration、拿不到 integration token,所以只能走官方 MCP 的 OAuth 路径。 3. Fast Note Sync (FNS):Obsidian 插件,把本地 Vault 同步到服务器,同时暂开 SSE 协议的 MCP 服务,Agent 走这个接口读写 Vault,这个插件是L站一位佬友制作的,十分的好用。 为什么要这样做 主要还是看重他notion的AI功能。现在的notion的ai可以去闲鱼,一个月才5块钱,可以基本上无限使用opus4.7这种模型,而且对笔记的优化相当好,这个是obsidian比不了的,但是notion这个始终是云端,而且我觉得分类做的不太好,慢慢就会变成垃圾场那种。 我看过不少人同时用notion和obsidian一起用,但每次都得手动整理,**手动搬的本质是「哪天懒了,整个系统就废了」**现在已经出现了这种例如小龙虾与hermes,利用一下。 使用hermes连接笔记软件有一个好处,你根本不用打开笔记软件,与hermes聊天,聊到一个东西,直接和他说记录到笔记中,他就会帮你整理记录。或者说你在notion中记录,在obsidian中,他都可以帮你找出来,而不用打开软件去操作。 我的notion与obsidian设置 noiton 🗂️ Hermes 知识流转中心 ├─ 📥 待归档 ← 我把要归档的东西什在这里 ├─ ✅ 已归档 ← Hermes 搬完后自动移过来 ├─ 📋 Hermes 操作日志 ← Hermes 每次干活都写一行 └─ 📖 Hermes 使用说明 ← 写给 Hermes 看的手册(关键!) obsidian Vault/ ├─ 00-Inbox/ ← Hermes 搬来的全进这里 ├─ 10-信息/ ├─ 20-配置/ └─ 30-数学/ ← 这些是我手动分类的永久位置 三条铁律 绝不做双向同步,单向: Notion → Obsidian 。搬到 Obsidian 后相当于快照,想改就在 Obsidian 里新写一份,不改已归档的。 Agent 不碰正文,ermes 只做三件事: 读取 · 搬运,加一下标签或者双链。 操作日志必须有。 踩过的坑 1.假如你是在像我一样在VPS中部署的hermes,notion的mcp OA跳转主要注意 VPS 是 headless 环境,Notion MCP 的 OAuth 回调地址默认是 http://127.0.0.1 : ,本地浏览器访问不到服务器的 loopback。解决办法是用 SSH 本地端口转发,然后在本地浏览器点授权链接,回调会落到本地端口再转回服务器完成认证。 2.hermes暂不支持SSE的mcp配置,需要补充上为 Hermes 补上 SSE MCP 支持。 1 个帖子 - 1 位参与者 阅读完整话题
之前看过佬发的instruction.md,这个文件的破限仅限于逆向呢,还是说安装后所有的话题都破掉了呢?有佬实验过么。。。 1 个帖子 - 1 位参与者 阅读完整话题
IT之家 4 月 18 日消息,IO Interactive 今天公布《007:初露锋芒》游戏的开场动画,主题曲《First Light》由打雷姐(拉娜 · 德雷)与大卫・阿诺德联袂词曲创作,IT之家附上视频如下: 作为参考, 《007:初露锋芒》将在 5 月 27 日登陆 PC、PS5、Xbox Series X|S 平台 ,任天堂 Switch 2 版今夏发售。 IO Interactive 将本作称为其迄今为止“最具野心”的项目。游戏旨在打造一段“令人难忘的詹姆斯・邦德体验”,内容涵盖全球各地的场景切换、深度的间谍活动、高科技装备运用以及惊心动魄的飞车追逐战。 在剧情方面,本作将讲述这位标志性超级间谍的“起源故事”,为玩家揭示 007 这一代号背后的成长历程,而非单纯改编某部电影。
LobeHub的ios app是不是还不支持连接私有化部署? 2 个帖子 - 2 位参与者 阅读完整话题