返回首页
最新
我们厌倦了编写原始的 Cypher 查询——需要转义引号、没有自动补全、重构的噩梦——因此我们构建了 GraphORM:一个用于 RedisGraph/FalkorDB 的类型安全 Python ORM,使用纯 Python 对象。
<p>功能介绍
与脆弱的 Cypher 查询相比:
<pre><code> query = """
MATCH (a:User {user_id: 1})-[r1:FRIEND]->(b:User)-[r2:FRIEND]->(c:User)
WHERE c.user_id <> 1 AND b.active = true
WITH b, count(r2) as friend_count
WHERE friend_count > 5
RETURN c, friend_count
ORDER BY friend_count DESC
LIMIT 10
"""
</code></pre>
您可以编写类型安全的 Python 代码:
<pre><code> stmt = select().match(
(UserA, FRIEND.alias("r1"), UserB),
(UserB, FRIEND.alias("r2"), UserC)
).where(
(UserA.user_id == 1) & (UserC.user_id != 1) & (UserB.active == True)
).with_(
UserB, count(FRIEND.alias("r2")).label("friend_count")
).where(
count(FRIEND.alias("r2")) > 5
).returns(
UserC, count(FRIEND.alias("r2")).label("friend_count")
).orderby(
count(FRIEND.alias("r2")).desc()
).limit(10)
</code></pre>
主要特点:
- 具有 Python 类型提示的类型安全模式
- 流畅的查询构建器(select().match().where().returns())
- 自动批处理(flush(batch_size=1000))
- 原子事务(with graph.transaction(): ...)
- 零字符串转义——O'Connor 和 "The Builder" 直接可用
<p>目标受众
- AI/LLM 代理开发者:将长期记忆存储为图(用户 → 消息 → 工具调用)
- 网络爬虫工程师:在 12 行代码中插入 10,000 页 + 链接,而不是 80 行 Cypher
- 社交网络构建者:使用 indegree()/outdegree() 查询“朋友的朋友”
- 数据工程师:跟踪数据血缘(数据集 → 转换 → 输出)
- 新接触图形的 Python 开发者:避免 Cypher 的学习曲线
<p>数据插入:真正的游戏规则改变者
<p>原始 Cypher 的噩梦:
<pre><code> queries = [
"""CREATE (:User {email: "alice@example.com", name: "Alice O\\'Connor"})""",
"""CREATE (:User {email: "bob@example.com", name: "Bob \\"The Builder\\""})"""
]
for q in queries:
graph.query(q) # 没有事务安全!
</code></pre>
GraphORM 的幸福:
<pre><code> alice = User(email="alice@example.com", name="Alice O'Connor")
bob = User(email="bob@example.com", name='Bob "The Builder"')
graph.add_node(alice)
graph.add_edge(Follows(alice, bob, since=1704067200))
graph.flush() # 一次网络调用,原子事务
</code></pre>
<p>在 30 秒内试用
<p>使用命令:pip install graphorm
<pre><code> from graphorm import Node, Edge, Graph
class User(Node):
__primary_key__ = ["email"]
email: str
name: str
class Follows(Edge):
since: int
graph = Graph("social", host="localhost", port=6379)
graph.create()
alice = User(email="alice@example.com", name="Alice")
bob = User(email="bob@example.com", name="Bob")
graph.add_node(alice)
graph.add_edge(Follows(alice, bob, since=1704067200))
graph.flush()
</code></pre>
GitHub: <a href="https://github.com/hello-tmst/graphorm" rel="nofollow">https://github.com/hello-tmst/graphorm</a>
<p>我们期待诚实的反馈:
- 这是否解决了您真正的痛点?
- 生产使用中缺少什么?
- 有任何 API 设计建议吗?
我是一名开发者,通常花费一半的时间在屏幕共享上。我厌倦了在每次通话前都要关闭所有私人应用程序,以确保在演示过程中不会意外展示银行余额或私人消息的“预通话仪式”。
现有的“专注”模式可以隐藏通知,但如果你需要共享整个桌面以提供上下文,这并没有帮助。
因此,我开发了Cloakly来解决这个问题。这是一个Windows工具,可以让你“隐蔽”特定窗口。这些窗口对你来说仍然完全可见和可交互,但对于录屏软件(如Zoom、Teams、Discord等)来说则是100%不可见。
它的工作原理(简要说明):它利用Windows操作系统的特性,将特定窗口句柄排除在捕获流之外。这样,你可以在共享的同一屏幕上保持参考笔记或私人聊天窗口打开。
功能:
双重现实:你可以看到窗口;观众看到的是你的壁纸/桌面。
幽灵模式:调整窗口透明度,可以看到下面的内容。
隐身:该应用可以隐藏自身在任务栏上的存在。
我今天在Product Hunt上发布这个工具,想看看这是否是其他人的痛点,还是仅仅我一个人的问题。我非常希望能听到你们对实现效果的反馈,以及你们是否觉得这个工具在工作流程中有用。
Product Hunt链接: [https://www.producthunt.com/products/cloakly](https://www.producthunt.com/products/cloakly)
网站: [https://www.getcloakly.com/](https://www.getcloakly.com/)
我们最近一直在研究在沙箱中自动化编码代理的工作。令人困惑的是,各个代理之间的标准化程度差异很大,使用起来也相当困难。
我们基于内部构建的工具开源了沙箱代理SDK,以解决三个问题:
1. 通用代理API:使用相同的API与任何编码代理进行交互。
2. 在沙箱内运行代理:代理沙箱提供一个Rust二进制文件,通过HTTP提供通用代理API,而不必处理未记录的接口。
3. 通用会话架构:持久化会话始终是个问题,因为我们不希望对话的真实来源存储在我们无法控制的容器中的架构里。
代理沙箱SDK具有:
- 任何编码代理:通用API与所有代理进行交互,功能覆盖全面。
- 服务器或SDK模式:可以作为HTTP服务器运行或与TypeScript SDK一起使用。
- 通用会话架构:通用架构用于存储代理记录。
- 支持您的沙箱提供商:如Daytona、E2B、Vercel沙箱等。
- 轻量级、可移植的Rust二进制文件:只需一条curl命令即可在任何地方安装。
- OpenAPI规范:文档齐全,易于集成。
我们将在接下来的几周内添加更多功能,欢迎任何反馈或问题。
嗨,HN!我是一名韩国的高三学生,即将进入大学学习计算机科学。
我从零开始用C++构建了一个浏览器引擎,以理解浏览器的工作原理。这是我第一次使用C++,开发历时8周,经历了大量的调试——但它终于可以运行了!
功能:
- 带有错误修正的HTML解析
- CSS级联和继承
- 块级/行内布局引擎
- 异步图像加载和缓存
- 链接导航和历史记录
最难的部分:
- 字符串解析(HTML、CSS)
- 渲染
- 图像缓存和布局重排
我学到的东西(超越代码):
- 系统化调试至关重要
- 与已知的bug一起发布,而不是追求完美
- “为什么?”的力量
大约3000行C++17/Qt6代码。希望能得到关于代码架构和C++最佳实践的反馈!
GitHub: [https://github.com/beginner-jhj/mini_browser](https://github.com/beginner-jhj/mini_browser)
你好!我一直在进行一个名为 Narwhal 的项目,想与社区分享,以获得一些宝贵的反馈。
它是什么?Narwhal 是一个轻量级的发布/订阅服务器和协议,专门为边缘应用设计。虽然市面上有像 NATS 或 MQTT 这样的优秀工具,但我希望构建一个更注重定制和可扩展性的系统。我的目标是创建一个开发者可以轻松调整路由逻辑或消息处理流程,以适应特定边缘用例的系统,而不必与服务器的默认设置作斗争。
为什么选择 Rust?我选择 Rust 是因为我需要一个低内存占用的语言,以便在边缘设备(如 Raspberry Pi 或小型网关)上高效运行,同时我也对垃圾回收暂停有个人的偏见。 :)
当前状态:目前处于 Alpha 阶段。它可以支持基本的发布/订阅模式,但我希望尽快开始开发持久化支持(以便消息在重启或网络分区后依然存在)。
我非常希望你能看看代码!我特别期待关于我可能忽视的任何改进的反馈。