@陳瑋 你在台湾?那边的行业形势怎么样?
williamlouis
-
求助 win11系統下如何實現瀏覽器實時託管 -
站点开放了zip格式上传,有其他格式需求的可以提意见@terry 真给力啊。老特。gz的压缩率 嘎嘎给力。
-
M5pro 64G LLM性能参考.Mac 适合 用 在线算力。做一个 API集合路由 狂剽 免费API。生产力肯定不行。办公室 缩减开资是可以实现的。chat生态推荐。
-
5700G AX370 +32G 内存、系统linux mint 想入手RX 7900XTX 跑本地大模型写代码,玩文生图,文生视频,各位大佬看看这套配置可以吗,欢迎各位大神来喷,显卡到货长期更新此贴,实战报告奉上!!@woaikuancheng0 Hermes 论坛中比较成熟的卡了。上吧。小霸王学习机 你值得拥有。
-
请教各路大神, 有没有全linux生态的使用经验?@Tony-Wang 输入法 有 fix5 原生的。没广告。
-
请教各路大神, 有没有全linux生态的使用经验?linux mint 让 AI推荐个版本给你。linux mint有笔记本的专用版。对品牌做了 电源优化。其他的没什么特别的。装就行了。优化版主要针对 盒盖不灭屏。休眠睡不醒。这些问题。用不上就直接上最新版就行了。应该是23
-
LTX2.3工作流分享,刘悦大神出品沙发坐坐。先下了看看。感谢老特的分享。
-
站点开放了zip格式上传,有其他格式需求的可以提意见沙发坐坐。我的包都是这个格式:tar.gz
-
Mac 丐版 低配篇。大众基本都是这个版本的用户。敬请参考!@eddie-hk 硬盘可以咸鱼,不过得你过保的。不过。别人插了。用不了。反正是有收的。
-
请教大家M5 Max 128G MacBook Pro上的oMLX如何优化@zorg 作用不一样。我的一直在干活。列队很长。干不完的干。主要就靠功耗低活着。服务器都靠这个小ai 干活。人是干不过来的。过一段在给它雇一个 伙伴吧。还没想好是继续Mac 还是换 塔式主机了。这段学习考量。老特的配置 应该一个能顶Mac 4个还得多了。不考虑功耗和噪音。塔式是ztmd 合适啊。想研究搞一个 托管到 本地机房。有空研究下。本地 联通和移动应该都有对外业务。
-
大佬们你 这3090 这成色能入吗? 5500@applejuice 看就不用了。太费劲了。直接上机开烤吧。因为只保留原卡的核心。能看出来不行了。一般 这种大厂直接就 pass了。很良心的不能给你用。只有小作坊出品可能有。小作坊的主要进货渠道之一也是大厂挑剩的配件。
-
【紧急】Nginx潜伏18年漏洞!不用密码直接远程控制,30%服务器中招 | CVE-2026-42945 Nginx Rift漏洞。@Tony-Wang 你服务器太少。网站也少。被攻击是常态。被打进来了。也是常态。最有效的方式是备份。有防火墙后。我都不想看。一天就好几万。因为是多域名。被扫。被打。被入侵。固态防御就行了。反正它什么也干不了。
小技巧。不维护就给文件降权。特定就需要脚本了。给 AI 一点权限 让他把活干了。 -
请教大家M5 Max 128G MacBook Pro上的oMLX如何优化@zorg 更新了个中间件。你可以去看看。应该有效果。我的硬盘应该是没你的贵。带宽不一样。
-
Mac 丐版 低配篇。大众基本都是这个版本的用户。敬请参考!在 Hermes 和 OMLX 之间插一个本地代理,自动数对话轮数,第 15 轮时后台调用 35B 自身做静默总结,把前 14 轮压成一段系统记忆,KV Cache 瞬间从 15 轮降到 2 轮。Hermes 完全无感知。
1. 保存代理脚本
cat > ~/omlx_compress_proxy.py << 'EOF' #!/usr/bin/env python3 import json, time, copy from http.server import HTTPServer, BaseHTTPRequestHandler from urllib.request import Request, urlopen from urllib.error import HTTPError OMLX_BASE = "http://127.0.0.1:8201" # OMLX 新地址 PROXY_PORT = 8200 # 接管 Hermes 原来的端口 COMPRESS_EVERY = 15 KEEP_RECENT = 1 SUMMARY_MAX_TOKENS = 400 SUMMARY_TEMP = 0.1 SUMMARY_SYSTEM = ( "你是后台上下文压缩器。请用中文极度精简地总结以下对话," "保留所有关键决策、代码、数据、未完成任务。只输出总结内容," "不要任何解释、问候、格式标记。" ) class Store: def __init__(self): self.sessions = {} def get(self, body): key = body.get("conversation_id") or body.get("session_id") or body.get("user") or "default" return self.sessions.get(key, []), key def set(self, key, messages): self.sessions[key] = messages def count(self, messages): return sum(1 for m in messages if m.get("role") in ("user", "assistant")) store = Store() def call_omlx(messages, max_tokens=None, temperature=None): payload = {"model": "Qwen3.5-35b-a3b-4bit-mlx", "messages": messages, "stream": False} if max_tokens: payload["max_tokens"] = max_tokens if temperature is not None: payload["temperature"] = temperature req = Request(f"{OMLX_BASE}/v1/chat/completions", data=json.dumps(payload).encode(), headers={"Content-Type": "application/json"}, method="POST") return json.loads(urlopen(req, timeout=300).read().decode()) def compress(messages): sys_msgs = [m for m in messages if m.get("role") == "system"] non_sys = [m for m in messages if m.get("role") != "system"] if len(non_sys) <= KEEP_RECENT: return messages to_compress = non_sys[:-KEEP_RECENT] keep = non_sys[-KEEP_RECENT:] prompt = [] if not sys_msgs: prompt.append({"role": "system", "content": SUMMARY_SYSTEM}) prompt.append({"role": "user", "content": "\n\n".join(f"[{m['role']}] {m['content'][:2000]}" for m in to_compress)}) summary = call_omlx(prompt, max_tokens=SUMMARY_MAX_TOKENS, temperature=SUMMARY_TEMP)["choices"][0]["message"]["content"].strip() new_msgs = list(sys_msgs) new_msgs.append({"role": "system", "content": f"[历史压缩] {summary}"}) new_msgs.extend(keep) return new_msgs class H(BaseHTTPRequestHandler): def log_message(self, *args): pass def do_POST(self): if self.path != "/v1/chat/completions": return self._proxy() body = json.loads(self.rfile.read(int(self.headers.get("Content-Length", 0))).decode()) history, key = store.get(body) history = body.get("messages", []) if store.count(history) >= COMPRESS_EVERY: t0 = time.time() history = compress(history) print(f"[Compress] {key}: done in {time.time()-t0:.1f}s") store.set(key, history) omlx_body = copy.deepcopy(body) omlx_body["messages"] = history for k in ["conversation_id", "session_id", "user"]: omlx_body.pop(k, None) req = Request(f"{OMLX_BASE}/v1/chat/completions", data=json.dumps(omlx_body).encode(), headers={"Content-Type": "application/json"}, method="POST") try: with urlopen(req, timeout=600) as r: data = r.read() self.send_response(r.status) for k, v in r.headers.items(): if k.lower() != "transfer-encoding": self.send_header(k, v) self.end_headers(); self.wfile.write(data) try: msg = json.loads(data.decode())["choices"][0]["message"] history.append(msg); store.set(key, history) except: pass except HTTPError as e: self.send_response(e.code); self.send_header("Content-Type", "application/json"); self.end_headers(); self.wfile.write(e.read()) def _proxy(self): body = self.rfile.read(int(self.headers.get("Content-Length", 0))) if int(self.headers.get("Content-Length", 0)) else b"" req = Request(f"{OMLX_BASE}{self.path}", data=body, headers={k:v for k,v in self.headers.items()}, method="POST" if body else "GET") try: with urlopen(req) as r: self.send_response(r.status); [self.send_header(k,v) for k,v in r.headers.items()]; self.end_headers(); self.wfile.write(r.read()) except HTTPError as e: self.send_response(e.code); self.end_headers(); self.wfile.write(e.read()) if __name__ == "__main__": print(f"Proxy http://127.0.0.1:{PROXY_PORT}/v1 -> {OMLX_BASE}") print(f"Compress every {COMPRESS_EVERY} turns") HTTPServer(("127.0.0.1", PROXY_PORT), H).serve_forever() EOF chmod +x ~/omlx_compress_proxy.py
2. 调整端口(核心)
假设你之前 Hermes 连的是
127.0.0.1:8200:# 先停掉 OMLX pkill -f "omlx serve" # OMLX 改绑到 8201(让出 8200 给代理) omlx serve --port 8201 --model Qwen3.5-35b-a3b-4bit-mlx
3. 启动代理(占原端口 8200)
另开一个终端:
python3 ~/omlx_compress_proxy.py日志应显示:
Proxy http://127.0.0.1:8200/v1 -> http://127.0.0.1:8201/v1 Compress every 15 turns
4. Hermes 配置(保持不变)
你在 Hermes SSH 终端界面里不要改任何端口,保持原来的
127.0.0.1:8200。因为代理已经占了 8200,Hermes 的请求会先经过代理,代理再转发给 OMLX 的 8201。如果你之前在 Hermes 里配的是其他端口(比如 11434 或 5001),把上面脚本里的
PROXY_PORT和OMLX_BASE对应改一下即可。
5. 验证压缩触发
正常聊天到第 15 轮,代理终端会打印:
[Compress] default: done in 1.8s此时 KV Cache 从 15 轮瞬间降到 2 轮,内存压力解除。Hermes 前端看不到任何异常。
关键提醒
项目 说明 第 15 轮延迟 35B 总结前 14 轮需 1-3 秒,这是物理限制(OMLX 单线程)。建议 COMPRESS_EVERY设 12~15,别设太小。总结质量 SUMMARY_TEMP=0.1已锁死,防止总结时模型发散。内存效果 压缩后 KV Cache 从 ~15 轮降到 ~2 轮,按 35B 每轮 300MB 算,瞬间释放 3-4GB。 失败回退 如果代理挂了,Hermes 直接连不上;OMLX 本身不受影响,重启代理即可。 按这个顺序部署:先改 OMLX 端口 → 启动代理 → Hermes 保持原配置继续用。
16和24 需要改小总结轮数测试。测试机型32G M4。
请勿直接使用。 -
用3090如果只跑llm, 平均一个月用多少kwh 的电?好像比订阅的费用还要贵@mankit-fu 又不是 intel 显卡。 关机后 再开机到底多久你是机主。你现场看看。不就知道多久了。 远程启动的时候你再看看表。OK?
-
Openclaw與Hermes的一個小比較安装 PowerShell 7 重来试试
-
零刻GTI15+显卡坞+蓝宝石9700XTX从组装开始求帮助

实在怕炸就再买一个电源 单独给显卡供电。只买一个电源就行。这个省钱。但是不能和电脑统一管理了。
短接后 电源就工作了。
需要和主板连通一起控制需要动手能力。不建议。或不采纳。 -
【紧急】Nginx潜伏18年漏洞!不用密码直接远程控制,30%服务器中招 | CVE-2026-42945 Nginx Rift漏洞。@Tony-Wang 嗯。我用的是付费破解版。
GitHub 有开源项目。 -
虽迟但到,交作业了@pilipala 够用就是最好的。不用折腾了。
-
【紧急】Nginx潜伏18年漏洞!不用密码直接远程控制,30%服务器中招 | CVE-2026-42945 Nginx Rift漏洞。@Tony-Wang 宝塔付费版有防火墙。在waf 固化机制下。这个漏洞无法进入更深层。免费版就躺了。