大家好,
我构建了一个运行时环境,用于通过 WebAssembly 沙箱隔离不可信代码。基本上,它保护您的主机系统免受不可信代码可能引发的问题。最近我们对 Python 中的沙箱化进行了深入讨论,更详细地阐述了这个问题[1]。在 TypeScript 中,由于两个生态系统之间的紧密联系,WebAssembly 的集成显得更加自然。
核心部分是用 Rust 编写的。在此基础上,我通过 wasmtime 和组件模型使用了 WASI 0.2,并结合自定义 SDK,使其尽可能符合语言习惯。
例如,在 Python 中,我们有一个简单的装饰器:
```python
from capsule import task
@task(
name="analyze_data",
compute="MEDIUM",
ram="512mb",
allowed_files=["./authorized-folder/"],
timeout="30s",
max_retries=1
)
def analyze_data(dataset: list) -> dict:
"""在一个隔离的、资源受控的环境中处理数据。"""
# 您的代码在 Wasm 沙箱中安全运行
return {"processed": len(dataset), "status": "complete"}
```
在 TypeScript 中,我们有一个包装器:
```typescript
import { task } from "@capsule-run/sdk"
export const analyze = task({
name: "analyzeData",
compute: "MEDIUM",
ram: "512mb",
allowedFiles: ["./authorized-folder/"],
timeout: 30000,
maxRetries: 1
}, (dataset: number[]) => {
return {processed: dataset.length, status: "complete"}
});
```
您可以设置 CPU(通过 compute)、内存、文件系统访问权限和重试次数,以精确控制您的任务。
虽然现在还处于早期阶段,但我非常希望能听到反馈。我会在这里回答问题。
GitHub: [https://github.com/mavdol/capsule](https://github.com/mavdol/capsule)
[1] [https://news.ycombinator.com/item?id=46500510](https://news.ycombinator.com/item?id=46500510)
返回首页
最新
我对 Go 验证器中的运行时反射感到沮丧,因此我采用了代码生成的方法。
govalid 读取结构体标记并生成普通的 Go 验证代码。没有反射,运行时没有内存分配,速度比 go-playground/validator 快 5-44 倍。还支持 CEL 以处理复杂规则。
欢迎反馈 :)
你好,HN。
我想首先说明,我是一名开发者,开始这个研究项目是为了挑战自己。我知道像MCP这样的标准协议是存在的,但我想探索一条不同的道路,并享受为桌面应用程序创建专门通信层的乐趣。
这个项目旨在以一种自主的方式处理桌面应用程序之间的通信,因此重点严格放在这个进程间通信(IPC)层上(忘记HTTP API调用吧)。
RAIL(远程代理调用层)的核心有两个基本概念。名字可能听起来有些吓人,但请记住这是一个研究项目:
内存逻辑注入 + 反射
范式转变:聊天是服务器,应用程序是客户端。
为什么采用这种方法?这个想法是避免创建庞大的包装器或API端点,仅仅为了调用内部方法。相反,代理应用程序将其自己的实例传递给SDK(例如,RailEngine.Ignite(this))。
我发现以下流程非常有趣:
- 应用程序将其实例传递给在其自身进程中运行的RailEngine库。
- 聊天(协调者)接收可用方法的清单。模型决定该做什么,并通过命名管道将命令发送回去。
- 触发器:应用程序中的RailEngine接收到命令,并对持有的实例使用反射直接执行.Invoke()。
本质上,我是通过SDK将“代理逻辑”直接注入到应用程序的内存空间中,使聊天能够远程触发本地方法。
关于代码库的说明:GitHub仓库已经变得庞大。核心关注点是RailEngine和RailOrchestrator。你会发现其他连接器(C++、Python),坦率地说,它们是“垃圾代码”或不完整的实验。我在C++中强行使用RTTR实现反射,但对此并不太满意。请跳过这些,它们与架构讨论无关。
我希望能将讨论集中在内存管理语言(如C#/.NET)上,并请教你们:
- 架构:这种反转的架构(应用程序通过IPC“拨打回家”)对于本地代理来说,与标准的服务器/API模型相比是否有意义?
- 性能:关于每次调用都使用反射——是否值得在启动时实现一个机制,将方法缓存为委托?还是考虑到LLM本身的延迟,这种优化无关紧要?
- 安全性:由于我们实际上绕过了API层,假设的安全层应该是什么,以防止恶意使用?(例如,用户签名的能力清单?)
我很想听听关于架构的比较和批评。
受到这个 Ask HN 的启发:https://news.ycombinator.com/item?id=46834977
但我想更早地回顾一下,看看这里是否还有人使用计算尺?
我开发了一个人工智能命名工具,它将心理语言学研究应用于品牌名称生成。令人感兴趣的并不是它使用了人工智能,而是其代理的结构以及它们所优化的内容。
核心问题是:如果你让任何大型语言模型(LLM)为一个企业命名,你会得到相同的[形容词][名词]组合。比如NovaTech、BrightPath、SwiftFlow。这些名称在语言上是死的——没有音韵质感,没有语义深度,虽然认知流畅性高,但却毫无独特性。
该流程分为六个阶段:
1. 一个发现代理分析企业并生成战略简报。重要的是,它还会生成一个“旁支类别”(与之完全无关的东西,比如“奢华蜡烛品牌”用于一个SaaS工具)和一个“伪装的背景”(一个相邻行业)。
2. 三个创意代理并行运行,每个代理对同一简报有不同的框架。一个代理诚实地根据简报工作。一个代理被告知它是在为伪装的背景命名。另一个代理被告知它是在为旁支类别命名。伪装和旁支代理产生的名称通常更有趣,因为它们不受类别惯例的限制——大型语言模型无法依赖明显的行业词汇。
3. 一个语言过滤器使用声音象征研究对大约90个候选名称进行评分:
- Bouba/kiki效应(圆润的声音如b、m、l、o与友好/柔和相关;尖锐的声音如k、t、p、i与前卫/精准相关)
- 处理流畅性(发音、拼写、回忆的难易程度)
- Von Restorff孤立效应(与类别规范的独特性)
- 辅音/元音平衡和音节结构
每个名称获得0-100的评分。前25个名称存活下来。
4. 检查约280个组合的域名可用性(7个顶级域名与多个变体)。
5. 一个综合代理对最终的10个名称进行排名。这个阶段使用Claude而不是OpenAI——排名需要平衡语义相关性、品牌契合度、声音象征评分、域名可用性和“极化潜力”(能够引发反应的名称往往是更强的品牌)。在我的测试中,Claude在这种多因素整体判断方面表现得明显更好。
6. 针对USPTO数据库进行商标筛查,并与第一阶段识别的尼斯分类类别交叉参考。
这两种模型的分拆是一个务实的选择。GPT-4o-mini在结构化生成和分析(第1-4阶段)中快速且便宜。Claude Opus在第5阶段的主观排名权衡方面表现更好,但在所有并行创意代理中运行成本过高。
我认为最有趣的是语言评分。声音象征在心理语言学中已得到充分验证,但在命名中很少系统性应用。Lexicon Branding(为Sonos、Pentium、Blackberry命名的公司)使用这些原则——Sonos中的“s”音传达了顺滑和流畅,这与他们的产品体验相映衬。该工具试图以程序化的方式进行相同的分析。
我真心想知道HN对它生成的名称有什么看法。试着用你熟悉的企业进行测试,看看输出是否与ChatGPT给出的结果有所不同。
Ember的移动应用体验不佳,我更希望在我已经在看的屏幕上看到我的咖啡杯。此外,现在我可以把它放在我的Claude Code旁边,看起来非常不错。
如果您发现任何问题,请在Github上提交问题反馈。也欢迎提交PR。
<a href="https://ember-mug.benjaminjsinger.com/" rel="nofollow">https://ember-mug.benjaminjsinger.com/</a>
<a href="https://www.npmjs.com/package/ember-mug" rel="nofollow">https://www.npmjs.com/package/ember-mug</a>
<a href="https://github.com/singerbj/ember-mug" rel="nofollow">https://github.com/singerbj/ember-mug</a>