返回首页
最新
嗨,HN——我们一直在开发 Coasts(“容器化主机”),旨在让您能够在同一台计算机上跨多个 git 工作树运行多个本地实例和多个 docker-compose 运行时。这里有一个演示:<a href="https://www.youtube.com/watch?v=yRiySdGQZZA" rel="nofollow">https://www.youtube.com/watch?v=yRiySdGQZZA</a>。我们的文档中也有一些视频,提供了很好的概念概述:<a href="https://coasts.dev/docs/learn-coasts-videos">https://coasts.dev/docs/learn-coasts-videos</a>。
代理可以在不同的工作树中独立进行代码更改,但在没有多个本地运行时的情况下,很难测试这些更改,而这些运行时又必须与这些工作树隔离且范围有限。虽然可以通过端口黑客技巧做到这一点,但当您有复杂的 docker-compose 配置,涉及多个服务和多个卷时,这种方法变得不切实际。
我们在今年年初开始使用 Codex 和 Conductor,并不得不想出一系列临时解决方案,以便让代理访问隔离的运行时。在对我们自己的 docker-compose 设置进行了一番折腾后,我们提出了 Coasts,作为一种让代理拥有自己运行时的方式,而无需更改原始的 docker-compose。
一个容器化主机(从现在开始我们简称为“coast”)是您项目运行时的一个表示,类似于 devcontainer,但不包含 IDE 的内容——它专注于运行时。您在项目根目录下创建一个 Coastfile,通常从那里指向项目的 docker-compose。当您在 Coastfile 旁边运行 `coast build` 时,您将获得一个构建(本质上是一个 docker 镜像),可以用来启动多个 Docker-in-Docker 的项目运行时。
一旦您有了一个 coast 运行,您可以像这样将其分配给一个工作树:`coast assign dev-1 -w worktree-1`。然后,coast 将指向 worktree-1 的根目录。
在底层,主机项目根目录和任何外部工作树目录在创建时会通过 Docker 绑定挂载到容器中,但 `/workspace` 目录(我们从中运行 coast 的服务)是我们在运行的容器内部创建的一个单独的 Linux 绑定挂载。当切换工作树时,我们基本上只需执行 `umount -l /workspace`,然后 `mount --bind <path_to_worktree_root>`,接着在运行的 coast 内部执行 `mount --make-rshared /workspace`。`rshared` 标志设置了挂载传播,这样当我们重新挂载 `/workspace` 时,变化会传递到内部 Docker 守护进程的容器中。
主要思想是,代理可以继续在主机侧工作,但如果需要测试运行时更改或访问运行时日志,可以针对特定的 coast 实例运行 exec 命令。这使得我们与代理或在主机侧运行的代理工具无关,并实现了互操作性。
每个 coast 都有自己的一组动态端口:您在 Coastfile 中定义希望暴露回主机的端口。您还可以“检出”一个 coast。当您这样做时,socat 会将您的 coast 的标准端口(例如,web 3000,db 5432)绑定到主机上。如果您的项目中有硬编码的端口,或者需要测试 webhook,这将非常有用。
在您的 Coastfile 中,您指向主机上存储项目工作树的所有位置(例如,~/.codex/worktrees)。当代理从主机侧工作树目录运行 `coast lookup` 时,它能够找到正在运行的 coast 实例的名称,从而可以执行类似 `coast exec dev-1 make tests` 的操作。如果您的代理需要使用 Playwright 进行测试,它可以通过使用前端的动态端口在主机侧完成。
您还可以配置卷拓扑,省略代理不需要的服务和卷,以及共享某些主机侧服务,以免给每个 coast 实例增加额外负担。您还可以定义每个服务在工作树分配更改后应如何行为的策略(例如,无、热重启、重启、重建)。这有助于您优化工作树切换,从而不必每次都执行完整的 docker-compose down 和 up 循环。
我们非常乐意回答任何问题并获取您的反馈!
嗨,HN,
我开发了 SEARCH WIZARD——一个可以让你使用自然语言在电脑上搜索的工具。
传统的文件搜索仅在你记得文件名时才能工作。
但大多数时候,我们记得的内容是这样的:
“我在会议上时的截图”
“关于变压器的PDF”
“关于机器学习的笔记”
智能搜索会对你的文件进行索引,让你可以根据意义而不是文件名进行搜索。
目前支持:
- 图片
- 视频
- 音频
- 文档
示例查询:
“一个男人在看显示器的旧照片”
系统会立即检索到正确的文件。
除了嵌入部分,所有操作都在本地进行。
我希望能得到以下方面的反馈:
- 索引方法
- 隐私问题
- 你希望在这样的工具中看到的功能
GitHub:
[https://github.com/deepanmpc/SMART-SEARCH](https://github.com/deepanmpc/SMART-SEARCH)
演示:
[https://deepanmpc.github.io/SMART-SEARCH/](https://deepanmpc.github.io/SMART-SEARCH/)
上周,我发布了 SentrySearch,这是一个基于 Gemini 嵌入 API 的语义视频搜索命令行工具。用户最迫切的需求是支持本地模型。
结果发现,Qwen3-VL-Embedding 可以原生地将视频嵌入到相同类型的向量空间中,无需 API,完全离线。该模型可在 Apple Silicon(MPS)和 NVIDIA GPU(CUDA)上运行。8B 模型需要大约 18GB 的内存,或者在较小的机器上使用 2B 模型。
使用命令:sentrysearch index /path --backend local
此外,还增加了相似度阈值,以抑制弱匹配,并添加了特斯拉元数据覆盖层,将速度和位置信息渲染到匹配的剪辑上。
详细信息请查看 README。
人工智能正迅速成为人们构建软件的默认方式。<p>即使你试图执行一些规则,安全性往往还是会出现漏洞。需要覆盖的面太多,情况很快就会变得复杂。<p>我不断遇到同样的模式:项目虽然能正常运行,但却存在容易被忽视的安全漏洞。<p>因此,我开发了 Data Hogo——一个扫描你的代码库并用通俗易懂的语言指出安全问题的工具。没有冗长的报告,只有问题所在、其重要性以及如何修复的简明说明。<p>如果你想试试,可以扫描你的代码库,看看会出现什么结果。<p>这只需几分钟,我也很想知道大家会得到什么样的结果——即使什么都没发现。<p>请在 <a href="https://www.datahogo.com" rel="nofollow">https://www.datahogo.com</a> 进行免费的扫描。