返回首页
最新
Doors:一个基于服务器驱动的用户界面框架和运行时,用于在Go语言中构建有状态的反应式Web应用程序。
一些亮点:
* 在服务器端的Go中具备前端框架能力。反应式状态原语、动态路由、可组合组件。
* 没有公共API层。不需要设计端点,私有的时间传输在后台处理。
* 统一的控制流。后端与前端之间没有上下文切换。
* 集成的Web堆栈。打包资产、构建脚本、提供私有文件、自动化CSP,并以一个二进制文件发布。
工作原理:
Go服务器是用户界面运行时:Web应用程序在有状态的服务器上运行,而浏览器则充当远程渲染器和输入层。
安全模型:
每个用户只能与您渲染给他们的内容进行交互。这意味着您在渲染按钮时检查权限,这足以确保相关操作不会被其他人触发。
思维模型:
将DOM链接到其依赖的数据。
限制:
* 对于静态非交互式网站、具有简单路由的客户端优先应用程序,以及不适合离线PWA的情况没有意义。
* 在不干扰用户的情况下进行负载均衡和发布需要不同的策略,涉及有状态服务器(简化机制已包含)。
最佳适用场景:
用户流量较大且业务逻辑复杂的应用程序。单一执行上下文和无API/端点权限管理负担使得开发更为简单。
特点:
* 特意构建的[Go语言扩展](https://github.com/doors-dev/gox),具有自己的LSP、解析器和编辑器插件。将HTML作为Go表达式和`elem`原语添加。
* 自定义并发引擎,支持非阻塞事件处理、并行渲染和树感知状态传播。
* 准备好支持HTTP/3的同步协议(滚动请求 + 流式传输,事件通过常规POST,无WebSockets/SSE)。
来自作者(我)的说明:
我花了1年9个月才达到这个阶段。我重写了框架6到7次,直到每个部分都连贯,每个决策都感觉正确或是合理的妥协。我对自己的工作非常挑剔,看到了一些缺陷,但总体来说,结果还是很扎实的,作为用户我喜欢开发者体验。思维模型需要一些前期思考,但通过明确的代码和可预测的结果会得到回报。
代码示例:
```go
type Search struct {
input doors.Source[string] // 反应式状态
}
elem (s Search) Main() {
<input
(doors.AInput{
On: func(ctx context.Context, r doors.RequestInput) bool {
s.input.Update(ctx, r.Event().Value) // 反应式状态
return false
},
})
type="text"
placeholder="search">
//~ 订阅结果到状态变化
~(doors.Sub(s.input, s.results))
}
elem (s Search) results(input string) {
~(for _, user := range Users.Search(input) {
<card>
~(user.Name)
</card>
})
}
```
Claude Code OAuth在2.1.107版本上卡在“如果提示,请粘贴代码>” - 无法粘贴(尝试了很多方法,包括使用xdotool输入OAuth),似乎存在一个严重的错误,目前在Reddit和Discord之外的地方报道很少,为什么这不被视为紧急情况,也没有在状态页面上报告。
这与账户无关,因为账户甚至还没有验证,点击给出的链接成功后,claude.com会生成Token,但无法将其复制回终端(任何终端,tmux/ttyd/bash/vscode...)。
尝试联系Anthropic,但聊天机器人没有帮助,希望通过在这里发帖引起他们的注意,因为我们可能在谈论成千上万的用户被困在这里。输入代码(尽管非常烦人)似乎也不起作用,因为在输入大约一半后,它会“验证”并直接返回。
需要明确的是,粘贴在除了特定的OAuth框架以外的任何地方都是有效的,框架中显示“浏览器没有打开?使用下面的URL登录(按c复制)”。
Anthropic,你们在做什么?
2026年4月11日,黑客组织ShinyHunters宣布通过利用Anodot(一款第三方SaaS云成本监控工具)窃取了Rockstar Games的数据,从而提取了访问Rockstar的Snowflake数据仓库的认证令牌。Rockstar确认了这一数据泄露事件,但称其为“非重大”事件。ShinyHunters设定了4月14日的赎金截止日期,但Rockstar拒绝支付。4月13日,ShinyHunters提前发布了这些数据。
几周前,ARC-AGI 3 发布了。对于不熟悉的人来说,它是一个旨在通过互动环境研究代理智能的基准测试。
我非常喜欢这类基准测试,因为在我看来,它们比静态的问答基准更能揭示代理人工智能的能力和局限性。当你能够实际看到模型在这些环境中的表现时,它们也更容易理解。
我想在这种精神下构建一些东西,但环境是让两个大型语言模型(LLM)相互对抗。我的标准是:
1. 战略性与实时性。游戏必须在速度和推理质量之间创造真正的权衡。较小的模型可以进行更多的移动,但策略性较差;较大的模型移动较慢,但更聪明。
2. 良好的框架。我故意避免使用视觉输入——模型在处理这些输入时仍然太慢且不够准确(例如:Claude 玩宝可梦)。相反,一个框架将游戏状态转换为结构化文本,而游戏引擎则将代理的响应渲染为流畅的动画。
3. 观看乐趣。因为基准测试不需要是干巴巴的 :)
最终结果是一个类似《炸弹人》的1对1游戏,两个代理通过摧毁砖块和试图互相轰炸进行竞争。
你可以在这里查看演示视频:<a href="https://youtu.be/4x8tVypmuRk" rel="nofollow">https://youtu.be/4x8tVypmuRk</a>
期待听到你的想法!
我在与SEO团队合作时注意到了一些事情:<p>虽然内容方面投入了大量精力,但实际上限制性能的技术问题往往被忽视或优先级降低。<p>在某些情况下,修复爬虫/索引/性能问题的影响比发布更多内容更大。<p>我很好奇其他人对此在实践中的看法。<p>你们通常是优先考虑内容还是技术SEO呢?