智能助手网
标签聚合 开启

/tag/开启

www.ithome.com · 2026-04-18 21:58:24+08:00 · tech

IT之家 4 月 18 日消息,《异环》全平台公测将于 4 月 23 日正式开启,登陆 PC、Mac、移动端(安卓、iOS、鸿蒙)、PS5,预下载将于 4 月 21 日 9:00 开启。 在今晚的《异环》公测前瞻特别节目中,完美世界官方宣布《异环》将与罗森、雷蛇、北通、支付宝等品牌开启联动,并将与保时捷开启多项载具联动,还将与《P5R》《P5X》《幻塔》展开音乐联动。 配置需求方面,PC 端《异环》最低要求英特尔酷睿 i7-10700 处理器、英伟达 GeForce GTX 1660 显卡,推荐使用 i7-12700 及以上处理器、RTX 3060 及以上显卡,推荐使用 32GB(最低要求 16GB)内存。 安卓端最低要求骁龙 855 及联发科同等性能芯片,推荐使用高通骁龙 8 Gen2、Gen3 及联发科同等性能芯片;iOS 要求最低 iPhone 12 Pro Max,推荐使用 iPhone 14 Pro 及以上。 游戏机制方面,《异环》承诺卡池永远不歪,常驻池设定 50 抽必出 S 级角色;角色池 70 次提高概率、90 次保底不歪,支持保底继承;武器池 60 抽触发小保底(产出金色武器)、80 抽大保底(必得当期 UP 武器);游戏公测可轻松获得 120 抽,整个 1.0 版本可获得 470 多抽,最多包括 28565 环石(约 179 限定抽)+169 普池抽 +32 限定抽 +105 武器抽。 IT之家附直播奖励兑换码,共计 300 环石(有效期至 5 月 7 日 23:59): YHNOWTOENJOY YHNANALLYGO YHOB0423 相关阅读: 《 开放世界 RPG 游戏〈异环〉将于 4 月 21 日开启预下载,4 月 23 日全平台公测 》

linux.do · 2026-04-18 20:40:28+08:00 · tech

any路由器因为跟claude code有一些参数适配的问题,所以我们可以在本地架设一个简单的网关,将参数在本地拦截,然后修改一下,再传给any大善人,就可以绕过这些参数适配的小问题了。 claudecode最新版本适用,不需要回退版本 这个本地网关做了什么 在本地监听 127.0.0.1:1998。 把 Claude Code 的请求转发到上游any的端口。 自动补认证头(Authorization / x-api-key)。 对 haiku 请求额外修正:补 context-1m-2025-08-07,并加 thinking.budget_tokens=1024。 把请求和响应写到 gateway_requests.jsonl 方便排错。 极简启动步骤 先开网关 export ANTHROPIC_BASE_URL=“any大善人地址” export ANTHROPIC_AUTH_TOKEN=“你的真实token” python3 /Users/Apple/Desktop/code/claude_gateway.py 新开一个终端再开 Claude Code ANTHROPIC_BASE_URL=“ http://127.0.0.1:1998 ” claude --enable-auto-mode 截图为证: 网关代码如下(vibe写的,很多冗余,大佬可以自行修改): #!/usr/bin/env python3 import base64 import json import os import threading from datetime import datetime, timezone from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from urllib.error import HTTPError, URLError from urllib.parse import urlsplit, urlunsplit from urllib.request import Request, urlopen LISTEN_HOST = os.getenv("CLAUDE_GATEWAY_HOST", "127.0.0.1") LISTEN_PORT = int(os.getenv("CLAUDE_GATEWAY_PORT", "1998")) UPSTREAM_BASE_URL = os.getenv( "ANTHROPIC_BASE_URL", "https://a-ocnfniawgw.cn-shanghai.fcapp.run" ) UPSTREAM_AUTH_TOKEN = os.getenv("ANTHROPIC_AUTH_TOKEN", "") UPSTREAM_TIMEOUT = float(os.getenv("CLAUDE_GATEWAY_TIMEOUT", "120")) LOG_PATH = os.getenv( "CLAUDE_GATEWAY_LOG", os.path.join(os.path.dirname(__file__), "gateway_requests.jsonl") ) LOG_LOCK = threading.Lock() def utc_now_iso() -> str: return datetime.now(timezone.utc).isoformat() def ensure_log_parent_exists() -> None: parent = os.path.dirname(LOG_PATH) if parent: os.makedirs(parent, exist_ok=True) def decode_body_for_log(body: bytes) -> dict: if not body: return {"encoding": "utf-8", "text": ""} try: return {"encoding": "utf-8", "text": body.decode("utf-8")} except UnicodeDecodeError: return {"encoding": "base64", "text": base64.b64encode(body).decode("ascii")} def append_log(record: dict) -> None: ensure_log_parent_exists() line = json.dumps(record, ensure_ascii=False) with LOG_LOCK: with open(LOG_PATH, "a", encoding="utf-8") as f: f.write(line + "\n") def build_upstream_url(base_url: str, incoming_path: str) -> str: base = urlsplit(base_url) incoming = urlsplit(incoming_path) incoming_path_only = incoming.path or "/" base_path = base.path.rstrip("/") if base_path: merged_path = f"{base_path}{incoming_path_only}" else: merged_path = incoming_path_only return urlunsplit((base.scheme, base.netloc, merged_path, incoming.query, "")) def rewrite_request_headers(headers: dict, path: str) -> dict: rewritten = dict(headers) if UPSTREAM_AUTH_TOKEN: has_x_api_key = any(k.lower() == "x-api-key" for k in rewritten) has_authorization = any(k.lower() == "authorization" for k in rewritten) if not has_x_api_key: rewritten["x-api-key"] = UPSTREAM_AUTH_TOKEN if not has_authorization: rewritten["Authorization"] = f"Bearer {UPSTREAM_AUTH_TOKEN}" # 先做骨架,后续按 any 规则逐步覆写。 return rewritten def rewrite_request_body(body: bytes, headers: dict, path: str) -> bytes: if not body: return body content_type = "" for k, v in headers.items(): if k.lower() == "content-type": content_type = v break if "application/json" not in content_type.lower(): return body try: payload = json.loads(body.decode("utf-8")) except (UnicodeDecodeError, json.JSONDecodeError): return body model = str(payload.get("model", "")).lower() if not model.startswith("claude-haiku"): return body beta_key = None for k in headers.keys(): if k.lower() == "anthropic-beta": beta_key = k break raw_beta = headers.get(beta_key, "") if beta_key else "" beta_features = [item.strip() for item in raw_beta.split(",") if item.strip()] if "context-1m-2025-08-07" not in beta_features: beta_features.append("context-1m-2025-08-07") merged_beta = ",".join(beta_features) if beta_key: headers[beta_key] = merged_beta else: headers["anthropic-beta"] = merged_beta payload["thinking"] = {"type": "enabled", "budget_tokens": 1024} return json.dumps(payload, ensure_ascii=False, separators=(",", ":")).encode("utf-8") class ClaudeGatewayHandler(BaseHTTPRequestHandler): protocol_version = "HTTP/1.1" def do_GET(self): self._handle_proxy() def do_POST(self): self._handle_proxy() def do_PUT(self): self._handle_proxy() def do_PATCH(self): self._handle_proxy() def do_DELETE(self): self._handle_proxy() def do_OPTIONS(self): self._handle_proxy() def do_HEAD(self): self._handle_proxy() def log_message(self, fmt, *args): return def _read_request_body(self) -> bytes: content_length = int(self.headers.get("Content-Length", "0") or "0") if content_length <= 0: return b"" return self.rfile.read(content_length) def _copy_request_headers(self) -> dict: headers = {} for key, value in self.headers.items(): key_l = key.lower() if key_l in {"host", "content-length", "connection", "accept-encoding"}: continue headers[key] = value return headers def _send_response(self, status: int, headers: dict, body: bytes) -> None: self.send_response(status) ignored = {"transfer-encoding", "content-length", "connection"} for k, v in headers.items(): if k.lower() in ignored: continue self.send_header(k, v) self.send_header("Content-Length", str(len(body))) self.send_header("Connection", "close") self.end_headers() if self.command != "HEAD" and body: self.wfile.write(body) def _handle_proxy(self): req_body = self._read_request_body() req_headers = self._copy_request_headers() req_headers = rewrite_request_headers(req_headers, self.path) req_body = rewrite_request_body(req_body, req_headers, self.path) upstream_url = build_upstream_url(UPSTREAM_BASE_URL, self.path) request_log = { "timestamp": utc_now_iso(), "client_ip": self.client_address[0] if self.client_address else "", "method": self.command, "path": self.path, "upstream_url": upstream_url, "headers": dict(self.headers.items()), "body": decode_body_for_log(req_body), "body_length": len(req_body), } try: upstream_req = Request( url=upstream_url, data=req_body if req_body else None, headers=req_headers, method=self.command, ) with urlopen(upstream_req, timeout=UPSTREAM_TIMEOUT) as resp: resp_status = resp.getcode() resp_headers = dict(resp.headers.items()) resp_body = resp.read() request_log["response"] = { "status": resp_status, "headers": resp_headers, "body": decode_body_for_log(resp_body), "body_length": len(resp_body), } append_log(request_log) self._send_response(resp_status, resp_headers, resp_body) return except HTTPError as e: err_body = e.read() if hasattr(e, "read") else b"" err_headers = dict(e.headers.items()) if getattr(e, "headers", None) else {} request_log["response"] = { "status": e.code, "headers": err_headers, "body": decode_body_for_log(err_body), "body_length": len(err_body), } append_log(request_log) self._send_response(e.code, err_headers, err_body) return except (URLError, TimeoutError, Exception) as e: error_payload = { "error": "gateway_upstream_error", "message": str(e), } error_body = json.dumps(error_payload, ensure_ascii=False).encode("utf-8") request_log["response"] = { "status": 502, "headers": {"Content-Type": "application/json; charset=utf-8"}, "body": {"encoding": "utf-8", "text": error_body.decode("utf-8")}, "body_length": len(error_body), } append_log(request_log) self._send_response( 502, {"Content-Type": "application/json; charset=utf-8"}, error_body, ) def main(): server = ThreadingHTTPServer((LISTEN_HOST, LISTEN_PORT), ClaudeGatewayHandler) print(f"[gateway] listening on http://{LISTEN_HOST}:{LISTEN_PORT}") print(f"[gateway] upstream: {UPSTREAM_BASE_URL}") print(f"[gateway] auth token configured: {bool(UPSTREAM_AUTH_TOKEN)}") print(f"[gateway] log file: {LOG_PATH}") server.serve_forever() if __name__ == "__main__": main() 3 个帖子 - 2 位参与者 阅读完整话题

www.ithome.com · 2026-04-18 19:19:51+08:00 · tech

IT之家 4 月 18 日消息,哈弗品牌旗下中大型新能源 SUV—— 哈弗猛龙 PLUS 今晚正式开启预售。新车共推出 3 款配置车型,IT之家汇总如下: 195 Max 版预售价 18.98 万元 195 Max 领航版预售价 19.98 万元 255 Ultra 领航版预售价 21.58 万元 在外观方面,哈弗猛龙 PLUS 延续了猛龙家族经典的“方盒子”造型,并融入“方圆之道 · 棱角之美”的设计理念,整体造型硬朗方正。车辆通过 37 处圆角设计优化了风阻表现,风阻系数降低约 40counts。前脸配备全新样式的棱盾式中网与棱眸大灯,中央车标采用可点亮设计。 车身尺寸为 4912 毫米、1950 毫米、1905 毫米,轴距在原有基础上增加 112 毫米,达到 2850 毫米。新车提供 5 座和 7 座两种座椅布局,后备厢容积为 669 升至 1691 升,后排座椅放倒后可形成近乎纯平的空间。车尾采用侧开式设计,可选装外挂备胎或“小书包”储物箱。 内饰方面,哈弗猛龙 PLUS 采用环抱式座舱布局,配备 15.6 英寸 2.5K 悬浮式中控屏和 W-HUD 抬头显示系统,搭载 Coffee OS 3 智慧空间系统及 Coffee GPT 大模型。新车换装了全新的三幅式多功能方向盘,继续采用怀挡式换挡设计,中控屏下方保留了常用功能的物理按键。配置方面,车内提供了 5.4L 智能温控冰箱、12 扬声器音响系统(含主驾头枕扬声器)、副驾 50W 无线快充、小桌板及露营驱蚊灯等装备。前后排座椅均支持加热、通风及按摩功能。车内共设有 45 处储物空间,后备厢常规容积 669L,二排座椅放倒后可扩展至 1691L。 新车搭载长城 Hi4 智能四驱电混系统,其中 1.5T 发动机最大功率为 115 千瓦,系统综合最大功率达到 330 千瓦,综合最大扭矩为 660 牛 · 米,零百加速 5.8 秒。 电池方面,新车提供磷酸铁锂和三元锂两种类型,容量分为 23.7 千瓦时、33.7 千瓦时和 44.7 千瓦时三个版本,WLTC 工况纯电续航里程最高可达 191 公里,对应 CLTC 工况约为 255 公里。在满油满电状态下,WLTC 综合续航里程可超过 1000 公里。 越野性能方面,车辆配备后桥电控机械牙嵌式差速锁,支持蠕行模式和坦克转弯功能,空载最小离地间隙 221 毫米,最大涉水深度 580 毫米,最大爬坡度不低于 60%。底盘采用前麦弗逊、后多连杆独立悬架,并配备电控减振器。 智能驾驶方面,哈弗猛龙 PLUS 搭载 Coffee Pilot 3 辅助驾驶系统,硬件配置包括车顶的 1 个激光雷达、3 个毫米波雷达、11 个高清摄像头及 12 个超声波雷达。 该系统支持高速 NOA 领航辅助、城市 NOA 领航辅助、全场景自动泊车、记忆泊车、遥控泊车及倒车循迹等功能。

www.ithome.com · 2026-04-17 21:04:16+08:00 · tech

IT之家 4 月 17 日消息,长城旗下魏牌 V9X 在今天的发布会中正式开启预售,该车定位“AI 豪华六座旗舰”,搭载混动技术架构“超级 Hi4”, 预售价 37.18 万元起 。 魏牌 V9X 车型 预售价(万元) 豪华家庭版 38.18 豪华加长版 37.18 行政加长版 41.18 魏牌 V9X 汽车采用“东方经典建筑美学”,前脸采用星环式贯穿灯带,配备发光悬浮车标;车身使用传统造型门把手;车尾配备贯穿式尾灯组,两侧采用椭圆形设计并集成智驾状态指示灯。 该车内部采用双联屏设计,将中控屏与副驾娱乐屏连为一体。二排配备了零重力座椅,并带有腿托功能,此外后排还配备了吸顶娱乐屏、后排小桌板,三排座椅同样提供按摩等舒适性功能。 规格方面,魏牌 V9X 提供标轴版和长轴版两种轴距车型,标轴版长度为 5205mm,较长轴版减少了 84mm,宽度和高度保持一致,轴距为 3050mm,较长轴版缩短了 100mm。车辆搭载由 2.0T 发动机、4 挡混动专用变速箱及 800V 高压架构组成的超级 Hi4 混动系统,支持 6C 超充技术。车辆满电状态下 0-100km/h 加速时间为 4.4 秒。底盘方面配备自研大角度后轮转向系统及闭式双腔空气悬架。 官方强调,魏牌 V9X 是基于归元 S 平台打造的首款车型,该平台旨在打造真正“会思考、懂共情、能执行”的 AI 智能体座舱与整车系统,其基于 OMS+VLM 双感知系统,结合 Loffee EEA 4.0 电子电气架构,提供“车辆识人、记事、懂情绪”的能力,满足用户全场景的用车需求。

www.ithome.com · 2026-04-17 20:18:49+08:00 · tech

IT之家 4 月 17 日消息,在今晚的《鸣潮》二周年 3.3 版本前瞻通讯中,库洛官方宣布 3.3 版本「自星海尽处回响」将于 4 月 30 日正式开启。 另外,《鸣潮》还公布了与万代南梦宫、卡普空《PRAGMATA》、《怪兽 8 号》、《愤怒的小鸟》、《Resident Evil 30th Anniversary》、《极限国度》、《排球少年!!》、名创优品等厂商的 IP 联动及合作,还将与雷蛇推出联名鼠标键盘。《鸣潮》二周年「线下生日会」将于广州、上海举行。 版本更新方面,《鸣潮》3.3 版本增加了新剧情、新角色(绯雪 + 达尼亚)、新区域、新活动,支持飞行摩托,上线饰品外观系统;3.3 版本上半期卡池为绯雪、莫宁、尤诺;下半期为达妮娅、千咲、弗洛洛。 此外,《鸣潮》3.3 版本 PC 端新增画面设置,将新增 DLAA 图形选项,开启后将以原生分辨率运行;移动端自研插帧技术;游戏体积优化,移动端可选择清理地图。 IT之家附直播兑换码: FACEALEPH1 2NDANNIVERSARY EVERSHINE

linux.do · 2026-04-17 18:01:53+08:00 · tech

一、/命令: 新手/powerup 新手教程 /model; /config; /effort; /permissions alt + t 开启当前session是否额外思考 alt+m 权限切换 Esc Esc 回滚状态 /tasks 查看后台任务,运行命令 +& 可以后台测试 /remote-control 远程操控 /teleport 将远程历史结果等拉到本地 /status 查看状态 /context 查看上下文使用情况 /compact 传递指令怎么进行上下文压缩,比如保留xx计划 /diff opens an interactive viewer for uncommitted changes — useful for reviewing what Claude has done before committing. /doctor checks installation health 二、Memory: /init 生成CLAUDE.md; /memory在线修改, CLAUDE.md三级 repo/home/ per-directory overrides 对于较大的项目,可以将指令拆分成 .claude/rules/ .md 文件。规则可以是全局的项目,也可以用 Frontmatter 范围到路径。一条带有路径的规则:src/api/**/ .ts 只有在 Claude 处理匹配文件时才会激活: paths: src/api/**/*.ts --- All API endpoints must validate input with Zod. Return 400 with field-level errors on validation failure. CLAUDE_CODE_NEW_INIT=1; CLAUDE_CODE_DISABLE_AUTO_MEMORY=1; 默认自动维护memory; 记住某件事,就自然地问,比如“记住API测试需要Redis。”如果你想把它写进 CLAUDE.md,可以明确要求Claude把它加进去。 三、Project Setup: 代码开始进行init; CLAUDE.md怎么写: A good `CLAUDE.md` is concise and specific. Aim for under 200 lines per file. Every line should be relevant to nearly every session — if something only matters for one feature, put it in a path-scoped rules file instead. The most valuable sections are: tech stack and versions, development commands (install, test, build, lint), naming conventions that aren’t obvious, and known gotchas that would trip up a new developer. eg: # Project: Payment Service ## Stack - Node.js 20, TypeScript 5, PostgreSQL 15 - Express for API, Prisma for ORM, Jest for tests ## Commands - `npm run dev` — start with hot reload - `npm test` — run test suite - `npm run migrate` — apply pending migrations - `npm run lint` — ESLint + Prettier check ## Conventions - All monetary values stored as integers (cents) - Use `Result<T, E>` pattern for error handling, never throw in service layer - Database columns: snake_case; TypeScript: camelCase 三层配置文件: .claude/settings.local.json, .claude/settings.json, ~/.claude/settings.json 四、Commands in Depth 进阶命令 当上下文不够时组合命令: /context /compact focus on the auth refactor /branch /rename auth-refactor-v2 /export auth-refactor-v2.md claude code 内置skills: /simplify:指的是对最近修改的文件进行代码质量审查,同时启动多个并行的审查代理,每个代理专注于不同的审查方面(如安全性、性能、可读性等)。 /batch <instruction>: 对大量文件进行大规模修改,会先规划工作流程,确保变更有序进行。使用隔离的 Git 工作树,以避免对主分支造成干扰,确保操作安全。能够协调验证过程,并支持以拉取请求(PR)为导向的后续跟进,提高协作效率。 /loop 5m check deploy status:以5分钟为间隔周期性执行“检查部署状态”的操作。 会按设定的时间间隔反复运行一个提示或检查任务。 这种重复检查机制特别适用于监控耗时较长的后台操作(如部署、构建等)的状态变化。 /debug:该命令用于启用详细日志记录,帮助诊断Claude行为或工具使用过程中出现的问题。 /claude-api:该命令用于加载项目所用语言的Anthropic SDK参考文档,当检测到项目中导入了@anthropic-ai/sdk或Python的anthropic包时会自动激活。 eg: /simplify /batch add JSDoc comments to all public functions in src/ /loop 2m check if the build finished /debug Fast Mode 使 Claude Opus 4.6 的速度约为 2.5 倍,但token更多;不会降低质量,有次数限制,但/effort会降低质量;{快速模式符号↯} eg: /fast # toggle on/off /fast on # explicitly enable /fast off # explicitly disable 五、快捷键: Ctrl+O :实时查看工具调用和思考步骤 /btw:用于提出一个附加问题或补充信息,不会将其加入对话历史,适合用于核实事实或询问语法细节,避免干扰当前对话上下文。 Ctrl+B:将正在运行的bash命令或代理任务置于后台执行,使用户可以在不中断任务的情况下继续向Claude发出其他指令。 Ctrl+X Ctrl+K:官方快捷键,用于终止所有在后台运行的代理任务 /insights :生成会话分析报告,包含统计数据,说明已完成的任务。 六、Skills .claude/skills/code-review/ ├── SKILL.md # Instructions (required) ├── templates/ │ └── review-checklist.md └── scripts/ └── analyze-metrics.py 技能描述存储:上下文1%+8000字符;更多通过辅助文件引入:比如 For the full review checklist, see [templates/review-checklist.md](templates/review-checklist.md). SKILL.md 通过bash读入,不超过500行,超过的建议加到单个文件中引入; !command 举例: name: pr-summary description: Summarize pull request changes. Use when asked to review or summarize a PR. context: fork agent: Explore --- ## PR context - Diff: !`gh pr diff` - Comments: !`gh pr view --comments` - Changed files: !`gh pr diff --name-only` Summarize the intent and key changes in this pull request. 技能调用: disable-model-invocation: true; 模型不能自动调用skill,deploys, pushes, sends等操作 user-invocable: false,用户不调用,让模型调用 paths: 接受一个 YAML 格式的通配符列表,用于限定技能适用的范围。工作目录匹配这些通配符时,技能才会被加载 eg: --- name: api-generator description: Generate REST API endpoints from schema definitions. paths: ["src/**/*.ts", "tests/**"] --- 七、Hooks 定义: 在 Claude Code 会话中特定事件触发时自动执行的脚本,用于响应系统事件并执行预设操作。 它们通过标准输入(stdin)接收 JSON 格式的输入数据,以便获取事件相关信息。 它们通过退出码和标准输出(stdout)返回 JSON 格式的执行结果,实现与系统通信。 钩子架构与配置 钩子在设置文件中通过一个名为 hooks 的键进行配置。 每个事件都包含一个匹配器数组,每个匹配器又包含一个钩子定义数组。 匹配器字段是一个正则表达式模式,用于匹配工具名称——‘Bash’ 仅精确匹配该工具名,‘Write|Edit’ 匹配其中任意一个,‘ ’ 匹配所有工具,'mcp__github__. ’ 匹配所有以 mcp__github__ 开头的 GitHub MCP 工具。 eg: { "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "python3 \"$CLAUDE_PROJECT_DIR/.claude/hooks/validate-bash.py\"", "timeout": 10 } ] } ] } } Matchers也支持一个条件性的if字段(v2.1.85),该字段使用权限规则语法进一步过滤钩子触发的时机。 虽然matcher通过名称选择工具,但if可将范围缩小到该工具的特定调用。 当您只关注工具调用的子集时这很有用——例如,仅拦截git push命令而不对每次Bash调用都执行操作。 eg: { "hooks": { "PreToolUse": [ { "matcher": "Bash", "if": "Bash(git push*)", "hooks": [ { "type": "command", "command": "/path/to/check-push.sh" } ] } ] } } Claude Code 支持30多个钩子事件。日常工作中最有用的有: PreToolUse(在工具运行前进行验证,可阻止执行) PostToolUse(在工具执行后观察或响应,可添加上下文) UserPromptSubmit(在 Claude 处理用户输入前拦截输入) Stop(在 Claude 完成响应时执行检查) (PermissionRequest), 还有用于权限处理的事件 notifications, 通知事件 subagent lifecycle (SubagentStart, SubagentStop)子代理生命周期事件; failures (PostToolUseFailure, StopFailure),故障事件 config changes, 配置变更事件; file watching (FileChanged) 文件监视事件; context compaction (PreCompact, PostCompact), 上下文压缩事件; worktree management 工作树管理事件。 多个新事件扩展了钩子可响应的范围。 CwdChanged(v2.1.83)在工作目录变更时触发,支持类似 direnv 的动态环境管理——例如,当 Claude 进入项目目录时自动加载环境变量。 TaskCreated(v2.1.84)在使用 TaskCreate 工具时触发,可用于记录或验证新任务的创建。 WorktreeCreate(v2.1.84)在创建工作树代理时触发,并支持 type: ‘http’ 类型的远程通知——适用于在并行工作开始时向外部服务发送警报。 Elicitation(v2.1.76)在 MCP 服务器通过交互式对话请求任务中的结构化用户输入时触发,可拦截并修改该请求内容,在展示给用户前进行调整。 ElicitationResult(v2.1.76)在用户对 MCP 的 elicitation 响应后触发,可拦截并覆盖响应内容,在发送回 MCP 服务器前进行修改。 “PreCompact” 是一个事件名称,指在 Claude Code 执行对话压缩以释放上下文空间之前触发的钩子事件。 它在压缩操作正式开始前运行,允许开发者或系统在关键时刻介入处理。 该事件可用于阻止压缩操作的进行,例如当需要保存当前状态、向用户发出警告或拒绝可能丢失关键信息的自动压缩时。 事件的 matcher 字段用于判断触发原因:当值为 ‘manual’ 时表示用户手动执行了 /compact 命令;当值为 ‘auto’ 时表示系统因上下文容量已满而自动触发了压缩。 若要阻止压缩发生,可通过返回退出码 2 或使用 JSON 决策负载(payload)来实现,例如: { "hooks": { "PreCompact": [ { "matcher": "auto", "hooks": [ { "type": "command", "command": "./scripts/snapshot-context.sh" } ] } ] } } 钩子返回: {"decision": "block", "reason": "active refactor in flight"} 钩子脚本通过 stdin 接收 JSON。Python 钩子的读法是这样的: import json, sys data = json.load(sys.stdin) tool_name = data.get("tool_name", "") tool_input = data.get("tool_input", {}) 退出码0表示成功,需从标准输出(stdout)中解析JSON格式的输出结果。 退出码2表示阻断性错误,Claude会停止运行,并显示你标准错误(stderr)中的信息。 其他任何退出码均表示非阻断性警告,仅在详细模式(verbose mode)下显示。 钩子(Hook)的常见分类和典型应用方式 在执行写入或编辑操作后触发的 工具使用后钩子 ,用于自动化后续处理。 系统会自动调用指定的格式化程序来整理内容。 确保 Claude 的输出始终整洁,表示无论用户输入如何,最终输出都会保持良好的排版和结构。 eg: #!/bin/bash INPUT=$(cat) FILE=$(echo "$INPUT" | python3 -c "import sys,json; print(json.load(sys.stdin).get('tool_input',{}).get('file_path',''))") case "$FILE" in *.ts|*.tsx|*.js) prettier --write "$FILE" 2>/dev/null ;; *.py) black "$FILE" 2>/dev/null ;; *.go) gofmt -w "$FILE" 2>/dev/null ;; esac exit 0 安全扫描在写入时使用PostToolUse和additionalContext输出警告Claude关于它刚刚写入的可能机密信息, 例如 SECRET_PATTERNS = [ (r"api[_-]?key\s*=\s*['\"][^'\"]+['\"]", "Potential hardcoded API key"), (r"password\s*=\s*['\"][^'\"]+['\"]", "Potential hardcoded password"), ] # ... check content, then: output = {"hookSpecificOutput": {"hookEventName": "PostToolUse", "additionalContext": f"Security warnings: {'; '.join(warnings)}"}} print(json.dumps(output)) 使用PreToolUse和正则表达式检查以及退出代码2来阻止危险命令: BLOCKED = [(r"\brm\s+-rf\s+/", "Blocking dangerous rm -rf /")] for pattern, message in BLOCKED: if re.search(pattern, command): print(message, file=sys.stderr) sys.exit(2) Advanced: Prompt Hooks and Component Scope 提示钩子和作用域 prompt 钩子 对于 Stop 和 SubagentStop 停止事件, prompt 类型的钩子使用LLM来评估任务完成情况。LLM阅读对话并返回一个关于是否让Claude停止或继续工作的结构化决策。这对于具有明确完成标准的工作任务来说非常强大。 eg: { "hooks": { "Stop": [ { "hooks": [ { "type": "prompt", "prompt": "Check: 1) Were all files modified? 2) Do tests pass? 3) Is the PR description updated? If anything is missing, explain what.", "timeout": 30 } ] } ] } } agent 钩子 钩子类型 “agent” 会派生一个子代理进行评估——与提示钩子(单轮)不同,代理钩子可以使用工具并执行多步推理。当检查需要读取文件或运行命令时使用此功能。 钩子也可以通过hooks frontmatter字段针对单个技能和代理进行范围限定。一个技能的前置工具使用钩子仅在执行该技能时触发: eg: --- name: production-deploy hooks: PreToolUse: - matcher: "Bash" hooks: - type: command command: "./scripts/production-safety-check.sh" once: true --- once : true : 只在会话中运行一次钩子,而不是在每次匹配工具使用时都运行。这对于只需要发生一次的设置检查很有用。 2 个帖子 - 1 位参与者 阅读完整话题

www.ithome.com · 2026-04-17 16:10:48+08:00 · tech

IT之家 4 月 17 日消息,vivo 官方今日宣布,vivo TWS 5i 耳机开启预约, 4 月 27 日正式发售 ,官方暂未公布这款耳机的价格。 预约界面显示,这款耳机拥有留白、墨黑、天青三种颜色可选。vivo TWS 5i 耳机拥有 50h 续航,蓝牙 5.4 支持多设备双连接,此外支持 AI 通话降噪功能。 作为参考,前代产品 vivo TWS 3i 发布于 2024 年 10 月,使用蓝牙 5.3 协议,续航约 45 小时(长续航版为 50 小时), 售价 99 元起 : 标准版: 99 元 长续航版:定价 169 元, 首发 129 元 IT之家附前代 vivo TWS 3i 无线耳机亮点功能如下:

www.ithome.com · 2026-04-17 15:38:30+08:00 · tech

IT之家 4 月 17 日消息,CyGames 今天宣布旗下新游《碧蓝幻想 Relink:无尽黄昏》将在日本时间 4 月 24 日 16:00(北京时间 15:00)开启 Beta 测试, 登陆 Switch 2、PS5、PS4、PC(Steam)等平台 ,预计 7 月 9 日发售。 据介绍,本次测试将主要验证游戏是否运行顺畅、跨平台联机功能是否有 Bug, 期间可能出现连接不稳定、未预期故障、崩溃等问题 。 同时,本次测试可游玩 4 种任务,完成前 3 个任务后可解锁高难度任务“塞菲拉的摇曳火焰”。此前封闭测试角色“贝阿特丽克斯”(Beatrix)仍可使用。 此外,本次测试支持在线游玩、跨平台联机,Switch 2 版本还支持本地联机功能,不过需要 Switch Online 才能联机。PlayStation 平台玩家无需订阅 PS+ 服务即可游玩。 IT之家注:《碧蓝幻想 Relink:无尽黄昏》是《碧蓝幻想 Relink》的升级扩展包,继承并深化此前备受好评的多人联机相关内容,更追加了众多单人离线挑战的新元素。

linux.do · 2026-04-17 14:38:35+08:00 · tech

根据官方文档,Opus 4.6 下可以设置 CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=“1” 来强制关闭自适应思考,而 Opus 4.7 在默认情况下就自动开启。 Opus 4.7 always uses adaptive reasoning. The fixed thinking budget mode and CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING do not apply to it. On Opus 4.6 and Sonnet 4.6, you can set CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 to revert to the previous fixed thinking budget controlled by MAX_THINKING_TOKENS . See environment variables . 参考 issue: [BUG] Opus 4.7 is trash. why is it severely so much worst than opus 4.6 · Issue #49725 · anthropics/claude-code · GitHub 1 个帖子 - 1 位参与者 阅读完整话题

www.ithome.com · 2026-04-17 14:30:02+08:00 · tech

IT之家 4 月 17 日消息,华为常务董事、产品投资评审委员会主任、终端 BG 董事长余承东今日公布全新一代问界 M9 系列三款全新配色:大漠金棕、赛里木青、沧海银蓝,4 月 22 日开启预订。 目前,全新一代问界 M9 系列的外观亮点已曝光,包括全新一代智慧投影大灯、全新一体贯穿灯、全新半隐藏式门把手、全新大饼轮毂 + 悬浮 LOGO 等。全新一代问界 M9 将首发搭载 6 激光雷达,C 柱新增侧向摄像头,同时还将提供高阶的智能感知、动力系统与底盘技术等。 新车长 5285mm、宽 2026mm、高 1845mm, 轴距 3125mm 。作为对比,现款问界 M9 长宽高分别为 5230× 1999 × 1800mm,轴距 3110mm,新款车型整体稍稍大了一圈。 IT之家汇总动力信息如下: 增程版:搭载重庆小康动力的 1.5T 增程器,排量 1496ml,功率 118kW;前后电机功率分别为 220kW/277kW;提供 75 度电池(75.408kWh)、60 度电池(60.014kWh)两种版本,纯电续航里程分别达到 335km / 320km / 315km、265km / 255km / 250km。 纯电版:前后电机功率分别为 220kW/277kW;搭载 120 度电池(120.04329kWh),续航里程达到 750km / 715km / 702km。

www.ithome.com · 2026-04-17 10:31:39+08:00 · tech

IT之家 4 月 17 日消息,小米米家高速水离子吹风机 Pro 预售今日开启,升级 12 万转 / 分钟高速马达,定价 799 元,京东小米官方旗舰店券后 719.1 元。 该吹风机可选薄暮金、雾凇紫、鸢尾蓝三种配色,其采用金属珠光漆机身,带有一块彩色屏幕,握柄处提供铝合金调温旋钮,拥有一定质感。 该机支持双恒温护头皮模式,搭载 TOF 传感器,能够实时监测头皮与出风口距离,自动调控风温在初始区间,同时其内置水离子技术,能够改善头皮微生态平衡。 IT之家附产品参数: 京东 小米米家高速水离子吹风机 Pro 券后 719.1 元 领 9 折券

www.ithome.com · 2026-04-17 08:20:48+08:00 · tech

IT之家 4 月 17 日消息,今天(4 月 17 日)上午,雷军开启小米汽车新 SU7 京沪续航挑战过程直播。途中,在回复网友“小米将来是否要推出 10 万元以内的车型”一问时,雷军表示,小米未来几年内都不会做 10 万元内车型,原因在于 电动汽车智能化要做好,成本会更高 ,比较难控制在 10 万元以内。 雷军还谈到了这次直播的压力:“ 不能说错话 ”是最大的心理负担,若说错话,就可能会被黑子抓住拼命黑。过去一年,小米长时间被负面舆情所笼罩,在面临这种压力的情况下,若是因为害怕被黑就不站出来讲,就可能会让一般人产生更多误解。“从今年年初,我就决定站出来,认认真真介绍我们的产品,让大家更了解小米。” 据IT之家此前报道,雷军曾在上个月谈到新一代 SU7 定价时表示,相较于初代 SU7,新车拥有超百项升级, 仅材料成本就增加了小 2 万元 ,但在定价上,新一代 SU7 只涨了 4000 元。主要原因在于,购置税政策退坡以后,不想让新车主觉得买新一代 SU7 超过自己的预算,所以最后 全系 只加了 4000 元 。