2作者: dselvaggio6 天前
嘿,HN,我们刚刚发布了 Hebo Gateway 的 v0.1 版本。<p>市面上已经有很多网关了,但我们一直遇到同样的问题:一旦你需要真正的定制化(身份验证、路由、速率限制、可观测性、请求/响应转换),大多数“现成”的网关就很难扩展了。<p>Hebo Gateway 适用于你希望网关成为你应用一部分的情况。你可以独立运行它,或者将其嵌入到现有的后端中。它公开了与 OpenAI 兼容的端点(/chat/completions、/embeddings、/models),与任何 Vercel AI SDK 提供商配合使用,并添加了一个钩子系统,因此你可以在不分叉核心的情况下将逻辑插入到请求生命周期中。<p>快速入门、示例和“下一步”都在文章中: <a href="https:&#x2F;&#x2F;hebo.ai&#x2F;blog&#x2F;260127-hebo-gateway" rel="nofollow">https:&#x2F;&#x2F;hebo.ai&#x2F;blog&#x2F;260127-hebo-gateway</a><p>我很乐意听取关于你遇到的 OpenAI 兼容性边缘案例的反馈(特别是与流式传输和推理相关的内容),以及你希望网关开箱即用提供哪些钩子。
9作者: dinunnob6 天前
嘿 HN, 我是一名从物理学家转行到量化领域的工程师。我和一些朋友“构建”了 SymDerive,因为我们想要一个从设计上就“原生支持 Agent”的符号数学库,同时仍然是一个对人类来说实用的工具。 它归结为两个主要目标: 1. Agent 可靠性:我发现,当 AI agents 坚持使用无状态的、函数式管道(Lisp 风格)时,它们编写的代码会更加可靠。这可以防止它们产生状态变化的幻觉,或者在冗长的程序脚本中迷失方向。我想要一个默认情况下强制执行“输入 -> 转换 -> 输出”流程的库。 2. 简化向 Python 的过渡:对于许多物理学家来说,Mathematica 是他们的母语。我希望有一种方法来简化这种过渡——提供一个桥梁,保持熟悉的语法(CamelCase、Sin、Integrate),同时严格使用 Python 科学栈。 我构建了什么:它是一个围绕标准栈(SymPy、PySR、CVXPY)的函数式封装,对于任何喜欢基于管道的工作流程的人——无论是人类还是 agent——来说,它都可以作为一个独立的引擎使用。 ```python # “管道”方法(对 agent 来说更简洁,对人类来说可读) result = ( Pipe((x + 1)**3) .then(Expand) .then(Simplify) .value ) ``` “Vibes”特性: Wolfram 语法:Integrate、Det、Solve。如果你懂数学,你就懂 API。 模块化:繁重的功能(符号回归、凸优化)是可选安装的(\[regression],\[optimize])。除非你要求,否则它不会让你的 venv 膨胀。 物理学相关内容:我添加了我实际使用的工具——用于广义相对论的抽象指标记号、用于因果模型的 Kramers-Kronig 等。 它绝对是主观的,但如果你正在构建 agent 来进行严谨的数学运算,或者只是想为自己的研究提供一个熟悉的函数式接口,这可能会有所帮助。 我发现编排器(Claude Code 等)非常擅长学习这些工具并将任务发送给正确的角色,我们对它的效果感到惊讶。 Repo 地址:https://github.com/closedform/deriver 如果被吐槽得太狠,我会哭的。
1作者: justvugg6 天前
我构建了 PolyMCP,目的是为了让将现有函数暴露为 MCP 工具变得轻而易举,无需重写逻辑或添加大量粘合代码。 目标:获取“普通”的 Python 或 TypeScript 函数,并立即让它们可供 MCP 客户端(Claude Desktop、代理、Ollama 等)使用。 Python 示例 ```python from polymcp.polymcp_toolkit import expose_tools def greet(name: str) -> str: """打招呼。""" return f"你好,{name}!" def add(a: int, b: int) -> int: """加两个数。""" return a + b app = expose_tools([greet, add], title="我的 MCP 工具") ``` 运行方式: ```bash uvicorn server:app --reload ``` MCP 端点出现在: * /mcp/list\_tools * /mcp/invoke TypeScript 示例 ```typescript import { z } from "zod"; import { tool, exposeTools } from "polymcp"; const uppercaseTool = tool({ name: "uppercase", description: "将文本转换为大写", inputSchema: z.object({ text: z.string() }), function: async ({ text }) => text.toUpperCase(), }); const app = exposeTools([uppercaseTool], { title: "文本工具" }); app.listen(3000); ``` 更多“真实”示例(Python) ```python import pandas as pd from polymcp.polymcp_toolkit import expose_tools def calculate_commissions(sales_data: list[dict]): df = pd.DataFrame(sales_data) df["commission"] = df["sales_amount"] * 0.05 return df.to_dict(orient="records") app = expose_tools([calculate_commissions], title="业务工具") ``` 您将获得 * 以最小的改动重用现有代码 * MCP 兼容(Claude Desktop、代理、Ollama 等) * 支持 HTTP、stdio 和 WASM * 自动输入验证 * 基本的生产特性(预算、重试、编辑、日志) * 用于测试和监控的内置检查器 安装 * Python:pip install polymcp * TypeScript:克隆仓库 → cd polymcp-ts → npm install → npm run build 仓库: [https://github.com/poly-mcp/Polymcp](https://github.com/poly-mcp/Polymcp) 很好奇,如果这么容易,人们会首先暴露什么样的函数。 非常欢迎反馈。
1作者: hpen6 天前
嘿,HN, 在2014年的一块报废硬盘上,曾经存着我写过的最好的东西。我不记得具体内容了,只记得当时的感觉。 那是让我不断回想起的时刻。不是我决定构建这个东西的时候——那是在后来——而是它背后的原因。十年创作音乐意味着十年散落的项目文件、报废的硬盘、名为“旧东西请勿删除”最终还是被删除的文件夹。 所以我构建了ScratchTrack。一个DAW(数字音频工作站),其中一切都经过版本控制。每一次编辑,每一次录音,每一个在你改变主意之前走过的分支。我深入研究了它的架构——事件溯源、内容可寻址存储、正确的提交历史。我希望它成为我曾经希望拥有的东西。 我上个月发布了它。在几个地方发了帖子。告诉了一些人。 很安静。只有少数人注册。没有进展。 我以为我会很沮丧。我投入了那么多。但今天早上我打开它来处理一些新的东西,意识到——我只是喜欢使用它。我的项目是安全的。历史记录都在那里。我为自己构建的东西确实对我有效。 所以我会继续构建它。如果一些在创作过程中丢失过歌曲的人发现它有用,那就是我的梦想。如果不是,它仍然是我的,而且它仍然存在。
5作者: smashah6 天前
大家好, 我希望找到一种可靠的方法来跟踪我的收据,而无需将它们保存在盒子里,所以我找到了 paperless - 但现有的 paperless AI 项目并没有真正将我的收据转换为可用的数据。 所以我创建了 nutlope 的 receipthero 的一个分支(实际上它是一个完全重写的版本,唯一保留的是系统提示)。 这个项目的目标是成为一个一站式解决方案,用于自动检测已标记的文档并使用模式定义将其转换为 JSON - 这包括发票,... 我现在想不出其他的了,也许你能想到?如果你有想法,请为此创建一个 issue! 感谢您的任何反馈/问题! (附注:我确保了它可以通过 dockge/基本的 docker-compose.yml 轻松设置) 仓库:[https://github.com/smashah/receipthero-ng](https://github.com/smashah/receipthero-ng) 教程:[https://youtu.be/LNlUDtD3og0](https://youtu.be/LNlUDtD3og0)