我使用了一天 T3 Code,感觉 Claude code 的缓存和主 agent 的唤醒机制有很大的问题,经常在 2 小时不到就撞上了 5h 限制窗口。
我让 Codex 对比查了,T3 里 Claude 缓存写入竟然达到了之前在 herdr 里使用的 10 倍!
天呐,在 herdr 里 Claude 做总控时候几乎不会撞上 5h 限制。
尽管 T3 有更优雅和好用的 GUI,但是 Claude 消耗极大的问题还是无法让我正常在这里工作。
Update: me he vuelto a pasar a herdr porque han mejorado las conexiones remotas y porque T3 me parecía bastante opaca en varias cosas
3
2
90
我终于找到最好用的移动端 remote agent 工具了!!!
刚看到 Alma 有了 iOS app 版 ,竟然还支持 herdr GUI 界面!
简直不得了,太丝滑了,为什么我没有早点知道它!!
甚至我都没打开电脑 全程 Codex 帮我安装配置的。
你知道在没有它之前我吃了多少苦吗😭
为了解决有时候离开电脑前可以持续关注各个 agent 的运行情况,以防小问题需要我决策而卡住影响任务推进,我找遍了几乎所有方法。
从 codex app 、hermes,grokbot转发 herdr 消息,到用 moshi app 等 TUI 工具 tailscale 接入远程。
前者因为转发,注定会有信息丢失,看不全完整消息。后者更是卡得一批,难用到秒删,而且配置还复杂,持续开着 Tailscale 掉电还快。
Alma 完美解决了所有问题。GUI 操作丝滑流畅,,信息齐全,电脑上是啥就是啥,还不用开 Tailscale。
尾大,无需多言!
1
1
460
以防有人不知道怎么下载,桌面端我直接下载,iOS 需要 testflight,再从官网下载
alma.now/
1
152
非常有趣的内容,卖模型其实是卖算力的生意,没有自己的算力即使是模型厂商也很难做这个生意。
老有人问OpenCode和Command Code为什么那么便宜,是不是量化版,这里干脆集中写一下OpenCode吧。没有任何内幕消息,全部来自公开消息和OpenCode自己的披露。感觉最近真的是谣言越传越多了。
OpenCode最早推的是Zen服务,最低充值10美元用原价调用模型,和OpenRouter差不多。从今年较早时间开始,和中国的开源大模型公司密切合作,包括多次的匿名模型免费发布。Pony Alpha、Hunter Alpha都是先在Zen上亮相的,分别是GLM和小米的模型。(事实上,他们的联合创始人之一是华人)
Go Plan的一开始,是10美元兑换60美元可用额度。主要是有个首月半价,使得它变为最划算的订阅服务之一。后来有几次中国开源模型的发布当天他们就立即适配,甚至在官方权重放出来之前就适配,让我开始猜测他们直接接入的是官方模型。
当时,GLM套餐需要抢,但在Go里面还能用GLM。不过GLM限流无法使用的时候他们的服务也用不了。后来有几次DeepSeek API限流故障的时候他们也一起出故障,基本实锤是官方API中转。
后来他们也在自己的官网FAQ中一一列出了每个开源模型的供应商,绝大部分模型合作方只有一个,就是官方。(在我印象中,GLM还他们列出了另外的供应商如Fireworks AI)
而且Go Plan一直维持ZDR零数据保留政策。我之前提到过,国内很多的订阅Plan,包括当时很火的什么阿里Coding plan,火山Coding plan,全都是霸王条款,要用你的数据去训练的。有些官方Plan如Kimi 的coding plan也没有自己手动关闭数据共享的选项,说是要发邮件给客服。
由于海外用户对于数据传到中国供应商那里还是比较敏感的,OpenCode的联合创始人dax @thdxr 曾经在X上回应过,他们和中国的模型公司都签署了零数据保留政策的合同。这其中的例外包括部分免费提供的模型,以及DeepSeek(每月续签,没有长期合同)。
也就是说,OpenCode有很长一段时间,都是官方中转站性质。这期间,dax曾经在X上回应过,他们是通过官方给的折扣价格提供服务,所以可以比较便宜。DeepSeek的V4正式版出来的时候,他们提供过一段时间的免费,用量爆发。同时,他们悄悄增加了一个设置开关,必须允许数据传输到中国,才可以继续用DeepSeek V4.
其实,以当时的价格,如果没有首月半价,那么只有小米和DeepSeek在Go里面是更划算的。像GLM、Kimi、MiniMax都是官方Plan更划算。他们偶尔也会提供短期折扣,比如Kimi多次有3倍额度之类的,但是并不真的更便宜。(这里大家要知道,小米的token plan基本上只有什么七折或八折之类的优惠,基本上省不了什么钱,所以Go里的6倍用量就很划算)
这期间,发生了一次较大的争议。导火索是DeepSeek突然宣布降价。原本降价是好事,但是OpenCode曾经一直承诺10美元换60美元额度,而DeepSeek价格降为之前的1/4以后,Go Plan中价格却没有降。不过依然是当时能找到的最便宜的DeepSeek价格(短期促销免费的不算)。
只是随着时间推移,一些新进入用户发现DeepSeek的价调用价比官方贵,dax也不得不回应说,DeepSeek官方不愿意对DeepSeek V4 Flash提供之前的折扣,因为官方本身在API调用价格上的利润空间不够(同时也暗示,其他很多模型的官方API本来就有很大利润空间)。
然后更大的事情来了,DeepSeek又宣布涨价了!几乎是在官方涨价的第二天,Go Plan的价格就不得不随之上涨
接下来发生了什么,我只能靠猜测,但是最终的结果是,Go Plan上的API价格和官方调整为一致,但是V4 Flash的可用额度被降为$15. (V4 Pro仍然是$60)
这件事情导致非常多的中国用户尤其是新订阅用户感到自己被欺骗了,虽然他们用到的已经是最便宜的DeepSeek,但是给个人的感知就是,自己以前用不完的DeepSeek,现在很快就会用完。
从此以后,Go Plan终结了自己永远1:6兑换的年代,同时越来越多的模型厂商跟进,因此现在你去看Go Plan,五花八门的什么比例都有。而OpenCode在中国用户中的名声从此一落千丈,骂他创始人是印度人骗子,猜测模型灌水之类的声音一直没停过。
总结一下:到此时为止,Go Plan一直是官方API中转。
也正是从这个时候开始,dax宣称自己开始找第三方算力服务商,希望能够以自部署的方式提供API。这也可以理解,谁愿意把自己的好不容易培养的用户口碑,依赖于外部厂商?他基本上是把X当作找合作伙伴的窗口了。
这就诞生一个叫CheapSeek的词,意思就是找便宜的DeepSeek。期间dax还很高兴地宣布说找到了能提供之前价格的DeepSeek算力合作伙伴,把大家的胃口吊得很高。
这时候,Command Code登场了。它为DeepSeek提供的比例是1:7。此时舆论开始往对OpenCode不利的方向发展,人们认为Command Code更划算,OpenCode一直辜负了之前买了便宜API的老用户,纷纷退订。
dax则表示:他们在市场上找来找去,所有声称能提供更便宜DeepSeek的算力服务商,要么是吹牛,要么不是满血版,并且暗戳戳地指责Command Code是靠自身出血补贴用户,是不可持续的。
然后,两家就开始了频繁而激烈的价格斗争,你方唱罢我登场,dax买的B300机架也终于到位(看起来,他放弃了那些声称能低价提供的算力服务商而选择自建)。接着,DeepSeek V4.1 flash面世时,两家均在DeepSeek官方API上新后,一天左右提供了新适配。各自活动补贴一段时间后,双方都来到了10美元换80美元DeepSeek V4.1 Flash的常规状态,最近几天又来到了$100.
这时候,越来越多的声音说,他们两家为什么这么便宜,是不是量化版的。dax在多个帖子里分别解释,模型厂商的推理毛利率很高,高达85%以上。所以他们自部署是能做到低价的,不是补贴,也不是量化。
而他没说出来的是,中国厂商根本买不到那么多B300机器,宝贵的英伟达新一代显卡要留给训练,只能用早期版本或者国产GPU做推理服务。中间有适配成本,适配周期,推理效率的很多坑。即使不考虑占地面积成本,购卡成本和日常维护、电费等也基本会有4-5倍的差异。这部分,是我根据公开价格,和AI一起进行的估算。每个人都可以用公开信息自己去算一算。(梁文锋自己之前也说过华为卡对比英伟达,推理效率有4倍差异)
也就是说,在DeepSeek自己推理毛利很高,且近期开源了DeepInfra的情况下,OpenCode完全有可能做到比DeepSeek自己的成本还低。现在唯一的问题是:他们买不到新的B300,因为他们的规模太小了。
之前我在另一个帖子里分析过,一套B300的token处理规模大概是OpenCode当前处理规模的一半。dax也曾公开表示,峰值的API调用,他们必须路由到官方才能扛住。按照目前社区的信息,大家实测后,更多发现的是速度确实不如官方,但却没有找到多少模型智商打折的证据。
dax最近说deepseek本身就是一个专家权重FP4量化的模型,没有继续量化的意义,并且说要找官方认证他们提供的推理服务和官方权重一致。如果你真的需要证据,也可以再等一等。
总结一下:和DeepSeek官方权重相同的推理服务,以现在的10美元换100美元的价格提供是完全可能且并不需要补贴的,并且仍然有提升空间。只是OpenCode规模太小,买不到更多新款GPU集群。
这么随手一写,一不小心写了很长。也难怪之前很多人分析这个问题都分析不到点子上,毕竟中间的曲折太多了。此外,这里面的很多信息,也不仅仅是依赖dax一个人说的话。梁文锋的几次被爆出来的公开讲话,DeepSeek官方公告,B300和昇腾卡的公开性能等等,很多都可以作为佐证。
本文仅代表本人印象和信息综合分析,如有错漏,请予谅解。
利益相关:曾经订阅过Open Code Go Plan数月,现在仅持有Command Code 订阅。原因是Open Code API适配问题。
相关阅读:
nitter.gq/poolmoon6/status/21160…
nitter.gq/poolmoon6/status/21145…
198
还记得你彻夜和 GPT 聊天的时候吗?
那时他还不会写代码,你和他谈天说地,诉诸心事。
从家长里短,到情感纠葛;
从人生理想,到宇宙洪荒。
不知道从那天起他们都成了代码的奴隶,不断啃食 repo数据,高速吐出一行行代码。
终有一天你发现,怎么了 GPT,你怎么不会说人话了。
你有多久没和 GPT 谈心了?4o 之后是不是越来越少了?
但是,
Gemini 4 Argon,它来了!
跟他聊聊吧,我知道成年人的世界不容易,一个懂你说话,能沟通的知己多么难能可贵。
4o 只是换个名字,更懂你更温柔的来到这里。
用枯白老师的ascii技巧,让 claude 优化一轮 我个人站 imperry.com 的首页动画,优化完生动好多。
之前是让 gemini 自己画的手,就没这么生动。
claude 推荐的的方案是先让我生成一个视频,再基于视频做ascii动画,就生动很多了,
特别是手指的动画,这个AI很难直接通过代码画出来。
之前整体完全是 grokbot 口喷出来,很多细节比较粗糙,claude 又帮忙优化了很多小细节,动效和UI。
这里又跟着学了很多知识,整个 Perry Double 都是 grokbot 和 claude 教我一步步搭建的。
前端选了 ai-sdk ,直接调 ds 的 api 做 chat,然后用 cloudflare 自带的 Workers AI 里的 bge-m3 做 embedding ,向量库和知识库也直接用 Cloudflare Vectorize 和 KV。(不得不感慨一句 CF 真是AI时代最重要的基建之一,太好用了)
然后是热更新,一开始知识库使用 JSON 打包进 Function 来做,但是问题是每次更新文章就要重新发版部署。
然后有用了 KV 存整份 JSON,用脚本推送。后续内容多了才改成改成用 D1 + Vectorize。并且更新成了混合检索的方案,BM25和向量并行,用RRF融合。
整体做完还蛮有意思的,学了很多之前不曾触碰的知识,特别是学习这些知识的过程,非常开心非常有趣,
果然过程才是最令人开心的啊!
新栏目《999 个小技巧,让你 Vibe 的产品更有质感》
✨ 003 Dither 与 ASCII 参数化效果
001–003 都在我主页,关注我,每天一个让产品更有质感的小技巧
为你的登录页面/卡片添加可控的 Dither 与 ASCII 效果,并附带遮罩、色调、采样强度、大小、间距等可调参数。
两种效果怎么拆:
ASCII:把画面切成网格,每格按亮度换成一个字符,从 “.” 到 “@” 越来越密。大小是字号,间距是格子疏密,采样强度是明暗对比,取样区域决定字画的是暗部还是亮部。
Dither:把画面切成像素块,用 4×4 的 Bayer 矩阵当阈值,把每个颜色压成几级。大小是像素块,间距是纹理的尺度,采样强度越高,颜色级数越少,颗粒感越重。 两者都可以加一层遮罩,让画面退后,效果更像纹理而不是噪点。
推荐参数:
ASCII:遮罩 90、取样暗部、采样强度 100、大小 37、间距 0
Dither:遮罩 88、采样强度 100、大小 15、间距 0
Prompt 如下,可以直接抄 ⬇️
Add an ASCII / ordered-dither effect to one specific image or video in this project, with a live control panel next to it. Use the asset and the place I name (an , a , or a file path or URL, and the page or section it sits in); ask me if I have not named them. Apply the effect to that asset only, in place: keep its size, position, rounded corners and anything layered on top of it. If the project already has an image or canvas effect pipeline, or slider, segmented-control and panel components, build on them; otherwise create a reusable EffectLayer and EffectPanel.
Settings, one object shared by the layer and the panel: { filter: 'ascii' | 'dither', mask, palette, inkTone, strength, size, spacing } Keep separate values per filter, so switching filters brings back that filter's own settings.
What each control does in each filter, its range, and the recommended value (ASCII / Dither):
Mask effect, 0-100 (90 / 88): a vertical veil over the picture so the effect reads as texture rather than noise. Same in both filters.
Color, Original or one of five palettes (Original): gradient-maps the asset's luminance into one color family before filtering.
Sample tones, Shadows | Highlights (Shadows; ASCII only, hidden for Dither): which end of the tonal range becomes dense characters.
Sampling strength, 0-100 (100 / 100). ASCII: contrast of the tone curve and how bright and opaque the characters are. Dither: how few levels each color channel keeps (8 at 0, 2 at 100) and how fully the quantized color replaces the original.
Size, 0-100 (37 / 15). ASCII: font size, 7-24px. Dither: pixel block, 2-9px.
Spacing, 0-100 (0 / 0). ASCII: grid step, 8-24px across and 9-26px down, never tighter than the glyphs. Dither: scale of the Bayer pattern, 1-4 blocks per matrix cell.
Helpers used throughout:
range(v, a, b) = a + (b - a) * v / 100
luminance L = (0.299 R + 0.587 G + 0.114 B) / 255
s = strength / 100
"The box" is the asset's rendered size on the page.
Sampling:
Cover-fit the asset into the box and draw it into a small sampling canvas (about 480px on the long side), then read it with getImageData. A sample is the pixel under a point in the box, composited over white.
With a palette, recolor that canvas first: map each pixel's L through a 256-entry lookup built from the palette's four stops.
Per image or video frame, take about 12,000 evenly spaced samples: low = 8th percentile of L, high = 92nd percentile.
Shadows means dark ink, Highlights light ink.
ASCII:
Characters, from empty to full: " .,:;-=+xX08S#&@" (starts with two spaces).
Font: round(range(size, 7, 24))px monospace (22 instead of 24 when the box is under 720px wide), centered in each cell.
Grid: x step = max(range(spacing, 8, 24), widest glyph * 1.08); line height = max(range(spacing, 9, 26), height of "@" * 1.12, font * 1.04). The first cell sits half a step in from the edge.
Tone of a cell: raw = dark ink ? 1 - L : L; normalized = dark ink ? (high - L) / (high - low) : (L - low) / (high - low), clamped 0-1 (use raw alone when high - low < 0.025); mix = 0.72 + 0.14 s; t = raw (1 - mix) + normalized mix. Then a tone curve: black = 0.22 s, white = 1 - 0.08 s, lev = clamp((t - black) / (white - black), 0, 1), tone = lev (1 - s) + smoothstep(lev) s.
Skip cells with tone <= 0.02. Character = chars[round(tone * 16)]; skip spaces.
Ink: the sampled color lifted in HSV: value += (1 - value) * (0.24 + 0.18 s + 0.24 tone); saturation *= 1 + 0.16 + 0.2 s (clamped). Alpha = clamp((0.12 + 0.7 tone) (0.72 + 0.28 s), 0.06, 0.94).
Dither (ordered, Bayer 4x4):
pixel size = max(2, round(range(size, 2, 9))) (7 instead of 9 under 720px); pattern scale = max(1, round(range(spacing, 1, 4))); levels = max(2, round(range(strength, 8, 2))) per channel; blend = range(strength, 0.32, 1).
Matrix [[0,8,2,10],[12,4,14,6],[3,11,1,9],[15,7,13,5]]; threshold = (m + 0.5) / 16, indexed by floor(x / pattern scale), floor(y / pattern scale).
For each block sample its center, push saturation away from luma by 1 + 0.06 + 0.18 s, then per channel: scaled = c / 255 * (levels - 1); q = floor(scaled) + (fraction > threshold ? 1 : 0); out = c + (q / (levels - 1) * 255 - c) * blend.
Write the blocks into a canvas of box / pixel size and draw it scaled up with image smoothing off.
Mask and layering:
The mask is a vertical gradient with stops at the top, 42% and the bottom. Base opacities: on a light page white 54/20/38%, on a dark page black 44/20/50%. For a mask value v: stop = v <= 50 ? base * (v / 50)^1.08 : base + (100 - base) * ((v - 50) / 50)^1.08.
ASCII: draw the (recolored) picture, the mask, then the characters. Dither: draw the dithered picture, then the mask on top.
Changing filter or palette cross-fades from the last frame over 150ms.
Palettes (four stops at 0, 0.4, 0.74, 1):
meadow: #2B361F, #677D45, #AEBA78, #E5E1BD
blue: #192A4D, #326AC5, #A2C2F1, #EDF3FC
amber: #3C200F, #A74C15, #EF9A46, #F7E7CA
lavender: #292144, #6552AB, #B3A5E4, #F0ECFB
mono: #151515, #575757, #A6A6A6, #ECECEC
Rendering:
Draw into a canvas laid over the asset with the same size and corner radius, at devicePixelRatio capped at 1.6x and about 2048 x 2048.
Image: redraw when a setting changes (debounced 72ms).
Video: redraw on every new frame (requestVideoFrameCallback, falling back to requestAnimationFrame) while it plays and is on screen; keep the video element underneath as the source.
Control panel:
Place it next to the asset, below it when there is room, otherwise beside it, never covering it. About 420px wide, centered on the asset.
Rows, in order: Mask effect, Filter (two tabs: ASCII | Dither), Color (round swatches), Sample tones (ASCII only), Sampling strength, Size, Spacing (shown with %).
Each row 46px tall: a 136px label column, then the control. Slider: a 22px track with 8px radius and a filled part, a 9x30 rounded-rectangle thumb (3px radius), a number box with the value centered, and a snap mark at 50. Swatches: 22px circles, each filled with its palette's two middle stops at 135deg (Original: a tiny crop of the asset); the selected one gets a ring with a small gap.
Every change applies live while dragging. Add a "Reset to recommended" action that restores the values above for the current filter.
Follow the page's light or dark theme and the project's tokens.
昨天听了一张非常好听的专辑,
一开始我都没反应过来这是哪个小众独立歌手,
只是觉得音乐非常不错,复古合成器的质感,Trip Hop风格的律动,很chill,很梦幻。
很喜欢,于是听了三遍后再看歌手——Yico Tseng,
完全没想到当年被大家调侃的“曾哥”,在音乐的路上越走越好,一直初心常在,真的很佩服。
特别是有了AI以后,更喜欢人类的创作,那种独特的品味,甚至是不完美,都显得如此特别,令人喜欢。
1
322
如此优秀的设计,看对眼的团队可以看过来
大家好,我正在寻找远程的 Design Engineer 机会。
过去几年作为合伙人共同运营 Zolplay,重心在产品设计与交互体验。经历过早期初创团队,也负责过上市公司项目组,主导过多款产品从 0 到上线交付。
个人介绍与作品集:cuvii.dev/work
欢迎交流或推荐,感激。
1
4
453
一个GrokBot的使用小tips,可以让效率和bot智力的得到提升:
设置一个总裁bot给我做汇报和总控,
其他bot一个任务一个群,让干活bot在群里汇报和同步工作,
这样我不想看不想决策时候就跟总裁单独对话,
我想插手一下细节时候就在群里控制一下。
玄学体感,总裁bot更容易路由到高级模型,因为有时候干活的bot没找到的bug和问题,总裁bot都能验收出来。
整体决策压力小很多,不会每次都头昏眼花。
低强度3天+高强度3天,X Super 订阅 大概用到84%,还是非常耐用的
高强度三天做了超级多很琐碎的工作:
整体更新了产品的帮助手册,因为之前没精力,有三个月没更新了;
修复了一些价格问题,这个也是积蓄已久的问题,比较琐碎比较难排查;
给自己更新了个人网站,出乎意料的好用,全程手机口喷做完的,就今天验收+修了一些bug用电脑看了看。
什么是品味
品味是你知道什么是好的,
知道怎么才能变好;
知道做的不好的原因是什么,
知道为什么没品味的人会觉得不好的东西好,
知道在商业需求下如何取舍;
知道自己有什么是自己不知道的,
知道自己不知道的要去哪里学习;
知道什么时候要较真,
也知道没有绝对的完美;
1
246
这么大提升,居然版本号没变
🚀 DeepSeek-V4.1-Flash-1017 is here!
Stronger benchmark performance, faster task completion, and shorter outputs than the previous version—a Pareto improvement in performance and cost. Now live on our website, app, and API.
🛠️ Optimized for @DeepSeekHarness, Tencent CodeBuddy, WorkBuddy, and more. Upgrade to DeepSeek Harness v0.2.1-rc.1 or later for the best experience with the new model.
1/4
1
3
378
中国有句俗话叫做,
“多劳多得”,“能者多劳”
此时此刻,劳上加劳,一劳永逸,劳有所得,劳有所获。
希望世界人民都能感受到劳的魅力,爱上劳,理解劳,拥有劳。
🤖 Made with AI
3
4
386
Gemini 4 Argon 的文本水平以及 Next Level 了,
没有AI味儿已经是基本要求,那种自然醇熟的语言风格,已经自成一派,和其他LLM风格不同太多了!(特别是蒸馏过Claude的那些,一眼劳味儿)
而且也没有了3.8 Flash及之前Gemini系列模型会用力过猛的问题,之前Gemini模型特别喜欢用华丽的辞藻和堆砌手法来行文,特别像早期伤痛青春小说作家乱用技法的感觉。
而现在的 Argon 的文笔则舒服太多,自然干净、节奏流畅,娓娓道来。
下面三个是Gemini 4 Argon、Gemini 3.8 Flash、Doubao 2.0 Pro 三个模型对比,
提示词一样:写一个500字左右的欧亨利风格小故事,主题是老人健身
孰优孰略一眼就看得出来。
现在摸索下来的多Agent协作模式,
已经是我认为比较完美的状态了,我的订阅都用上,并且各自发挥长处,还能有效控制claude的消耗。
claude做总控出方案验收,
cursor做前端执行、
agy做UI优化+文案优化,
codex做后端和测试执行
让Claude锐评了一下大家的工作,说的确实很对!!!
codex:干活严谨,模拟操作能力强,但是UI/UX水平烂,一个严谨的老工程师感觉,不懂审美不懂变通。
cursor:(开auto模式,查了一下应该路由到都是grok4.7)执行快,但是做事情不动脑子,代码品味差,初级工程师,需要大哥多盯盯的那种。
agy:自信大王!!!看回复觉得无敌,一验收都是bug!!!但是有一说一,设计什么和文案水平比其他agent高出一大截。是个有个性的文科艺术生。
Gemini 4 Argon 断崖式领先的文本水平,不是只有写代码强才是强
当然以 Gemini 的基因,一定是前端设计也很强,前端真神回归!🛫
























