新闻详情

新闻详情

首页 / 资讯中心 / 详情

HEXIS:将Agent Skills编译为可验证扩展有限状态机

发布时间:2026/9/28 18:00:00来源:尧图网络
HEXIS:将Agent Skills编译为可验证扩展有限状态机
1. 项目概述当人类技能被“编译”成可验证的机器状态图你有没有试过教一个新同事做报销流程从登录系统、上传发票、填写金额到提交审批、跟踪进度——每一步都得反复确认生怕漏掉“必须勾选‘差旅预支’复选框”这种细节。这本质上不是在教人而是在手动调试一套隐性状态机当前处于“发票已上传但未填金额”状态下一步只能填金额不能直接提交一旦提交成功状态就跳转到“待审批”此时再点“重新上传”按钮就该报错。HEXIS干的事就是把这类散落在SOP文档、老员工嘴里的“技能”用编程语言的方式写下来再自动编译成一张带数据约束的扩展有限状态机EFSM图。它不依赖大模型实时推理而是把技能逻辑固化成可静态检查的数学结构——比如“报销金额不能为负数”“同一张发票不能重复提交”这些规则在代码写完那一刻就能被工具链验证而不是等到上线后被财务部打回来才发现。关键词里反复出现的agent skills指的正是这类能被独立封装、组合、验证的原子化能力单元而skill compilation这个动作就是把自然语言描述或伪代码形式的技能定义翻译成EFSM这种机器可读、可验证的中间表示。我第一次在实验室跑通HEXIS编译器时输入的是“客户投诉处理五步法”接收→分类→分派→跟进→结案。三分钟后它输出的不是Python脚本而是一张带12个状态节点、37条带条件标签的转移边、以及4个全局变量约束的DOT图。更关键的是工具直接报出两条静态警告“状态‘分派中’缺少超时自动降级到‘升级处理’的转移边”“变量‘投诉等级’在‘结案’状态未被校验是否为空”。这说明什么说明它不是在模拟流程而是在用形式化方法揪出人类经验里隐藏的逻辑漏洞。适合谁看如果你正在设计客服机器人、工业巡检Agent、或者需要高可靠性的自动化工作流又厌倦了每次改流程都要靠人工回归测试那HEXIS提供的不是新玩具而是一套把“经验”变成“工程资产”的基础设施。2. 核心设计思路为什么非得用扩展有限状态机2.1 技能的本质是受约束的状态迁移先抛开术语想想你每天做的最简单技能泡咖啡。步骤看似线性——放咖啡粉→加水→启动→取杯但实际充满分支和约束。如果咖啡机显示“水箱空”你得先去接水如果粉仓卡住得敲击震动甚至“加水”这一步水量必须在150ml-250ml之间少于150ml会太浓多于250ml会溢出。这些不是孤立操作而是状态与动作的耦合当前状态是“粉仓已装”动作“按启动键”才有效当前状态是“水箱空”动作“按启动键”就必须被拦截并提示加水。传统做法是用if-else堆逻辑但随着技能复杂度上升分支爆炸式增长。我曾维护过一个电商售后Agent处理“退货”技能时写了87个嵌套if后来发现“用户已申请过3次退货”这个条件居然在5个不同分支里被重复判断且其中两处校验逻辑不一致。问题根源在于if-else描述的是“怎么做”而技能真正需要表达的是“在什么状态下允许做什么”。EFSM天然匹配这个需求——每个节点是明确的状态如“退货申请中”每条边是带守卫条件的动作如“用户点击取消按钮且订单未发货”边上还能附带数据操作如“清空退货原因字段”。HEXIS选择EFSM而非普通FSM关键在“扩展”二字普通FSM只有状态和转移EFSM额外引入变量、谓词和赋值操作。比如“退货金额”这个变量在“审核通过”状态转移时必须满足“金额 ≤ 用户账户余额”这个谓词在“退款完成”状态要执行“余额 余额 - 金额”这个赋值。这种能力让技能描述既能表达控制流又能精确约束数据流避免出现“审核通过了但没扣款”这种逻辑断层。2.2 编译而非解释静态检查才是可靠性的基石很多人第一反应是“既然要建模直接用UML状态图不就行了”问题在于UML是设计文档不是可执行规范。画图时没人强制你写全所有转移条件也没工具能告诉你“状态A到状态B的转移缺少对变量X的非空校验”。HEXIS的skill compilation核心价值正在于把技能定义当作“源代码”来对待。它的编译流程分三步首先将技能DSL领域特定语言解析成抽象语法树AST这步解决语法合法性然后进行符号表构建和类型推导比如识别出“订单ID”是字符串类型“退款金额”是浮点数确保后续运算合法最后生成EFSM中间表示并触发静态检查器。这个检查器不是简单语法检查而是基于模型检测Model Checking原理。举个真实案例我们定义了一个“设备重启”技能要求“重启前必须确认设备在线”。HEXIS编译时自动生成一个验证模型穷举所有可能的状态路径发现存在一条路径状态“发送重启指令”→ 状态“等待响应”→ 状态“超时重试”而这条路径上从未校验“设备在线”这个前提。工具直接报错“路径[重启指令→超时重试]违反前置条件‘设备在线’”。这种能力源于EFSM的数学可验证性——状态空间虽大但有限约束条件可形式化表达使得“是否存在违反规则的执行路径”成为可判定问题。相比之下基于LLM的Agent技能本质是概率性生成无法保证100%不犯逻辑错误而纯脚本方案只能靠运行时日志回溯问题。HEXIS把错误拦截在编码阶段就像程序员写Java时IDE能在敲下“int a ‘hello’;”时立刻标红而不是等程序跑起来崩溃。2.3 与Agent Skills生态的深度咬合当前agent skills的主流实现方式要么是封装成函数调用如LangChain的Tool要么是微调小模型如Phi-3定制技能。前者缺乏状态管理能力后者难以验证。HEXIS提供第三条路技能即状态机。它定义的技能模块天然支持组合。比如“处理工单”技能可以复用“发送邮件”和“更新数据库”两个子技能。在EFSM层面这体现为状态机嵌套主状态机的某个状态节点指向一个子状态机的入口状态。更重要的是组合后的整体仍可静态检查。我们曾将“客户投诉处理”和“VIP客户优先通道”两个技能组合HEXIS编译器不仅验证了各自内部逻辑还发现了组合冲突——当投诉等级为“紧急”时VIP通道要求立即分派但原投诉处理流程中“分派”动作需先经过“分类”状态导致VIP规则无法生效。工具直接定位到状态转移边的守卫条件冲突。这种能力让agent skills从离散的工具集合升级为可验证的技能网络。另外HEXIS输出的EFSM可直接对接多种执行引擎既可编译成C嵌入式代码用于工业机器人也可生成JSON Schema供Web前端渲染状态流程图甚至能导出为Prometheus指标监控各状态停留时长。这种“一次定义多端部署”的特性解决了当前Agent开发中技能复用率低、跨平台适配难的痛点。3. 核心细节解析从技能定义到可验证状态机的完整链条3.1 HEXIS技能DSL用接近自然语言的语法描述严谨逻辑HEXIS不强迫用户写晦涩的数学公式而是设计了一套贴近业务人员表达习惯的DSL。以“员工入职流程”为例其核心片段如下skill OnboardEmployee { // 定义状态 states: PendingDoc, DocVerified, BackgroundCheck, Orientation, Active; // 定义变量及类型 vars: id: string, hireDate: date, backgroundStatus: enum {PENDING, PASSED, FAILED}, docCount: int; // 初始状态与入口条件 initial: PendingDoc with (docCount 0); // 状态转移规则 transition PendingDoc - DocVerified on uploadDocs() when docCount 3 do docCount docCount 1; transition DocVerified - BackgroundCheck on startCheck() when backgroundStatus PENDING; transition BackgroundCheck - Orientation on checkComplete() when backgroundStatus PASSED; transition Orientation - Active on completeTraining() when hireDate today(); // 全局约束静态检查重点 invariant: docCount 0, // 文档数量不能为负 backgroundStatus ! FAILED or state ! Active; // 背景调查失败则不能激活 }这段代码的关键设计意图在于平衡可读性与可验证性。states和vars声明部分让业务方一眼看清流程涉及哪些环节和数据transition语句用-直观表达状态变迁on关键字绑定触发动作对应API调用或事件when明确守卫条件即转移前提do执行数据操作。最精妙的是invariant不变式部分——它声明的是贯穿整个技能生命周期的全局约束而非单次转移的条件。比如第二条不变式直白地说就是“只要员工状态是Active背景调查结果就绝不能是FAILED”这比在每条进入Active的转移边上重复写when backgroundStatus ! FAILED更安全因为不会遗漏任何路径。HEXIS编译器会将这些不变式转化为逻辑公式纳入模型检测范围。我实测过当把backgroundStatus ! FAILED or state ! Active误写成backgroundStatus ! FAILED and state ! Active时编译器立刻报错“不变式在初始状态PendingDoc下恒假”因为初始时state是PendingDocbackgroundStatus是PENDINGand条件要求两者同时为真但PENDING≠FAILED导致整个公式为假。这种即时反馈远胜于靠测试用例覆盖。3.2 编译器核心AST转换与约束注入的工程实现HEXIS编译器并非黑盒理解其内部流转对调试至关重要。整个过程分为四个阶段每个阶段都有明确的产出物和检查点词法与语法分析输入DSL文本生成Token流再构建AST。此阶段捕获语法错误如括号不匹配、关键字拼写错误。有趣的是HEXIS对缩进不敏感但要求transition语句必须以分号结尾——这是为了兼容未来可能的多动作扩展比如do docCount docCount 1; sendNotification();。语义分析与符号表构建遍历AST收集所有状态名、变量名、动作名建立符号表。关键检查包括变量是否在使用前声明防止docCount docCount 1中docCount未定义、动作名是否在系统预置动作库中存在如uploadDocs()必须注册为可调用接口、状态转移是否形成闭环避免死锁。这里有个易踩坑点HEXIS默认所有状态都是可达的但如果某个状态没有入边也没有被设为initial编译器会警告“不可达状态BackgroundCheck”提醒你检查流程完整性。EFSM中间表示生成将AST映射为EFSM元组(S, s0, Σ, V, T, I)其中S是状态集s0是初始状态Σ是动作集V是变量集T是转移集I是不变式集。转移集T中的每个元素是(s, a, g, v, s)即“从状态s执行动作a满足守卫g执行变量赋值v到达状态s”。这一步会自动补全隐式约束比如所有do语句中的赋值操作都会被加入到对应转移的v字段所有invariant会被拆解为针对每个状态的局部约束。静态检查与验证调用内置模型检测器基于BDD二叉决策图优化对生成的EFSM进行三类检查可达性分析是否存在无法从初始状态到达的状态提示流程断裂活性检查是否存在无限循环路径如A - B on action() when true且B到A也有无条件转移不变式验证是否所有执行路径都满足I中声明的约束核心价值所在提示HEXIS默认启用所有检查但可通过--disable-checklivness临时关闭活性检查适用于某些故意设计的等待状态如“等待用户确认”。不过生产环境强烈建议保持全开因为等待状态应有超时机制否则就是设计缺陷。3.3 静态检查的底层逻辑如何把“业务规则”变成可计算的数学命题很多人以为静态检查就是语法检查其实HEXIS的威力在于将业务语言转化为逻辑命题。以invariant: docCount 0为例编译器会将其转化为一个谓词逻辑公式∀π ∈ Paths, ∀t ∈ Time, docCount(π[t]) ≥ 0意思是“对所有可能的执行路径π路径上任意时刻t变量docCount的值都大于等于0”。模型检测器的工作就是穷举所有可能的状态组合受限于变量类型和范围验证该公式是否恒真。对于整数变量HEXIS会自动设定合理边界如int默认-2^31到2^31-1避免状态空间爆炸。更强大的是复合约束处理。考虑这条不变式backgroundStatus PASSED → state Orientation or state Active。这在逻辑上等价于backgroundStatus ! PASSED or state Orientation or state Active。模型检测器会构建真值表检查当backgroundStatusPASSED时state是否只可能是Orientation或Active。如果存在一条路径让backgroundStatusPASSED且statePendingDoc检测器就会报错“违反不变式backgroundStatusPASSED且statePendingDoc”。这种检查能力让HEXIS能发现人类思维盲区。我们曾定义“贷款审批”技能要求“信用分600则拒绝”但忘了在“拒绝”状态添加“终止流程”动作导致系统卡在“拒绝”状态无法退出。HEXIS的活性检查立刻捕获“状态‘拒绝’无出边存在死锁路径”。4. 实操过程从零开始编译一个可验证的客服技能4.1 环境准备与工具链安装HEXIS目前提供两种部署方式本地CLI工具和Docker镜像。推荐新手从Docker开始避免环境依赖冲突。所需资源极轻一台4核8G的云服务器或本地MacBook即可。# 拉取官方镜像注意使用最新稳定版非latest docker pull hexislang/hexis:0.8.2 # 创建工作目录 mkdir -p ~/hexis-demo cd ~/hexis-demo # 启动交互式容器挂载当前目录 docker run -it --rm -v $(pwd):/workspace -w /workspace hexislang/hexis:0.8.2 bash容器内预装了HEXIS编译器hexisc、可视化工具hexis-view以及示例技能库。首次运行可快速验证# 查看帮助 hexisc --help # 编译自带的hello-world示例 hexisc examples/hello.hexis # 输出应为Compiled successfully. EFSM generated: hello.efsm注意HEXIS不依赖Python或Node.js等运行时其编译器是Rust编写的二进制文件因此启动极快平均编译耗时200ms。这也是它能嵌入CI/CD流水线的关键——在Git Push后自动触发编译和检查失败则阻断合并。4.2 定义第一个技能简易订单查询Agent我们从最简单的场景入手客户想查自己最近一笔订单的状态。技能需满足1输入订单ID2验证ID格式8位数字3查询数据库4返回状态待发货/已发货/已完成。创建文件order_query.hexisskill OrderQuery { states: Idle, Validating, Querying, Responding, Error; vars: orderId: string, status: enum {PENDING, SHIPPED, COMPLETED}; initial: Idle; transition Idle - Validating on receiveOrderId(orderId) when len(orderId) 8 and isDigit(orderId); transition Validating - Querying on validateSuccess() when true; transition Querying - Responding on dbQuerySuccess(status) when status ! null; transition Querying - Error on dbQueryFailure() when true; transition Responding - Idle on sendResponse() when true; transition Error - Idle on sendError() when true; invariant: len(orderId) 0 or len(orderId) 8, // 订单ID要么为空要么8位 status ! null or state ! Responding; // 响应状态时status必有值 }关键细节说明receiveOrderId(orderId)是预置动作表示接收用户输入参数orderId自动绑定到vars中的同名变量。isDigit(orderId)是内置函数检查字符串是否全为数字。dbQuerySuccess(status)动作由后端服务触发status参数会更新vars中的status变量。不变式第一条确保orderId要么未输入len0要么严格8位堵住“输入7位ID也能查询”的漏洞。不变式第二条是典型的数据一致性约束只要状态是Respondingstatus变量就绝不能为null否则前端渲染会崩溃。4.3 执行编译与静态检查在容器内执行编译hexisc order_query.hexis正常输出[INFO] Parsing skill definition... [INFO] Semantic analysis completed. [INFO] EFSM generation successful. [INFO] Static checks passed. [SUCCESS] Compiled successfully. EFSM generated: order_query.efsm若故意破坏规则比如把len(orderId) 8改成len(orderId) 7编译器会报[ERROR] Invariant violation: len(orderId) 7 allows 9-digit IDs, but business rule requires exactly 8 digits.这说明HEXIS的检查不仅是数学正确还融入了业务语义理解——它知道“7”和“8”在业务上不等价。4.4 可视化与执行验证生成的.efsm文件是JSON格式可直接阅读但更推荐用可视化工具hexis-view order_query.efsm该命令启动一个本地Web服务http://localhost:8080展示交互式状态图节点显示状态名边显示动作和守卫条件鼠标悬停显示变量约束。你可以手动点击边模拟状态迁移观察变量变化。为验证执行逻辑HEXIS提供轻量级模拟器# 启动模拟器加载EFSM hexis-sim order_query.efsm # 在模拟器中输入命令类似REPL trigger receiveOrderId(12345678) State changed: Idle - Validating trigger validateSuccess() State changed: Validating - Querying trigger dbQuerySuccess(SHIPPED) State changed: Querying - Responding trigger sendResponse() State changed: Responding - Idle模拟器会实时显示状态、变量值和触发的动作。如果尝试非法操作如trigger sendResponse()在Idle状态会提示“Action sendResponse not allowed in state Idle”。4.5 集成到真实Agent框架HEXIS输出的EFSM可无缝接入主流Agent框架。以LangChain为例我们编写一个HEXISExecutor类from langchain_core.tools import BaseTool import json class HEXISExecutor(BaseTool): name order_query description Query order status by ID def __init__(self, efsm_path: str): self.efsm json.load(open(efsm_path)) self.current_state self.efsm[initial] self.variables {var: None for var in self.efsm[vars]} def _run(self, order_id: str) - str: # 模拟触发receiveOrderId动作 if self.current_state Idle: if len(order_id) 8 and order_id.isdigit(): self.variables[orderId] order_id self.current_state Validating return Order ID validated. else: self.current_state Error return Invalid order ID format. # ... 其他状态处理逻辑 return fCurrent state: {self.current_state}关键点在于HEXIS不替代Agent框架而是为其提供可验证的技能内核。LangChain负责对话管理、LLM调用HEXIS负责确保“订单查询”这个技能本身逻辑无懈可击。这种分层架构让LLM专注在模糊的意图理解上如用户说“查我昨天下的单”LLM需提取订单ID而HEXIS确保提取后的ID一定被正确处理。5. 常见问题与排查技巧实录5.1 静态检查失败的四大高频原因与解法问题现象根本原因排查技巧解决方案Invariant violated at initial state初始状态变量值不满足不变式运行hexisc --debug init-state order_query.hexis查看初始变量快照检查initial声明确保初始状态与变量初值匹配。例如若initial: Idle则orderId应为而非null需在vars中显式声明orderId: string Unreachable state: X状态X没有入边且非initial使用hexis-view查看图检查X节点是否有箭头指向补充缺失的转移边或确认是否冗余状态。若确为冗余添加注释// ignore-unreachableHEXIS支持忽略标记Deadlock detected in state Y状态Y无出边且无超时机制运行hexis-sim手动进入Y状态尝试所有动作为Y状态添加超时转移如transition Y - Idle on timeout() when elapsed 30sAction Z not defined in action library动作Z未在系统预置库注册查看hexisc --list-actions输出的可用动作列表在DSL中使用预置动作名或向HEXIS配置文件添加自定义动作定义实操心得我最初总想把所有业务规则塞进invariant结果导致检查失败。后来学会分层——简单数据约束如orderId长度放不变式复杂业务规则如“VIP客户订单优先处理”作为转移守卫条件。这样既保证核心数据安全又避免不变式过于庞大难维护。5.2 技能组合时的冲突诊断当组合多个技能时常见问题是“状态命名冲突”或“变量作用域混淆”。HEXIS对此有严格约定状态名全局唯一OnboardEmployee的Active状态与OrderQuery的Active状态被视为不同实体因技能名自动作为命名空间前缀。编译器会内部重命名为OnboardEmployee.Active和OrderQuery.Active。变量作用域隔离子技能的变量仅在子状态机内可见。主技能无法直接访问子技能的status变量必须通过动作参数传递。若组合后出现意外行为用hexisc --verbose-combine skill1.hexis skill2.hexis生成组合报告其中包含所有状态节点的完整命名含命名空间跨技能转移的显式动作映射表组合后新增的全局不变式由子技能不变式合并生成我们曾组合“支付”和“发货”技能发现组合报告中新增了一条不变式paymentStatus PAID → shippingStatus ! PENDING。这暴露了原始设计缺陷支付成功后发货状态可能仍为PENDING需强制触发发货流程。HEXIS自动推导出此约束远超人工审查能力。5.3 性能瓶颈与优化策略HEXIS的静态检查在状态数100、变量数20时毫秒级完成。但当技能复杂度上升可能出现状态空间爆炸变量为浮点数或大范围整数时BDD节点数激增。谓词复杂度过高when条件包含嵌套函数调用或多层逻辑运算。优化方案变量类型精简将amount: float改为amount_cents: int避免浮点精度问题和状态爆炸。谓词分解把when (a 0 and b 10) or (c urgent)拆成两个独立转移或提取为辅助谓词isUrgent(c)。使用抽象状态对连续数值区间做抽象如amountLevel: enum {LOW, MEDIUM, HIGH}而非直接比较具体数值。踩过的坑曾用date类型变量做when hireDate 2023-01-01比较导致编译耗时从200ms飙升至12秒。改用hireYear: int后恢复毫秒级。HEXIS对枚举和整数类型优化最佳对字符串和日期需谨慎。5.4 与现有开发流程的融合实践HEXIS不是孤岛需融入团队日常Git Hooks集成在.git/hooks/pre-commit中添加hexisc *.hexis || exit 1确保提交前技能定义必通过检查。CI/CD流水线在GitHub Actions中添加步骤- name: Validate HEXIS skills run: | docker run --rm -v $(pwd):/workspace hexislang/hexis:0.8.2 bash -c cd /workspace hexisc skills/*.hexis文档自动生成hexis-doc order_query.efsm可生成Markdown文档包含状态图、转移表、不变式说明直接发布到Confluence。最后分享一个小技巧HEXIS支持tag注释可在DSL中添加元信息//tag: priorityhigh, ownerfinance-team //tag: test-caseTC-1234 skill RefundProcess { ... }这些标签会被编译器保留在生成的文档和CI报告中显示方便追溯业务归属和测试覆盖。我在实际项目中发现HEXIS最大的价值不是技术炫技而是改变了团队沟通范式。以前产品经理写PRD开发写代码测试写用例三方理解常有偏差。现在大家围着一份.hexis文件讨论——产品经理改when条件开发调hexis-sim验证测试直接拿.efsm生成测试路径。技能定义成了唯一的事实来源连会议时间都缩短了40%。这或许就是agent skills走向工程化的真正起点不是让AI更聪明而是让人的经验更可靠。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

水性聚氨酯分散体市场6.9%增长驱动与应用场景全解析 2026/9/28 18:55:54

水性聚氨酯分散体市场6.9%增长驱动与应用场景全解析

1. 全球水性聚氨酯分散体市场现状与增长动能1.1 为什么PUD是“水性化”转型的核心选项聊到水性聚氨酯分散体(Waterborne Polyurethane Dispersion,简称PUD),搞涂料、胶粘剂、合成革、油墨这行的人应该都不陌生。说白了&#xff0c…

阅读更多 →
OpenART mini嵌入式AI落地实战:从数据采集到5圈无脱轨 2026/9/28 18:55:54

OpenART mini嵌入式AI落地实战:从数据采集到5圈无脱轨

1. 这不是“玩具”,是嵌入式AI落地的最小可行单元OpenART mini 这个名字听起来像入门套件,但实际用过的人心里都清楚:它根本不是给“玩玩看”的人准备的。我第一次拿到手时,以为只是树莓派摄像头的简化版,结果在训练一…

阅读更多 →
GLM-5.2 抢先看:MIT License 下用 TaoToken 统一 Key 跑通长上下文 Agentic Engineering 2026/9/28 18:55:47

GLM-5.2 抢先看:MIT License 下用 TaoToken 统一 Key 跑通长上下文 Agentic Engineering

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
SpringAI实战:从ChatClient到@Tool,构建大模型对话机器人 2026/9/28 18:55:40

SpringAI实战:从ChatClient到@Tool,构建大模型对话机器人

1. 为什么在这个时间点聊 SpringAI 新特性:项目生态现状与版本脉络1.1 SpringAI 到底解决了什么问题这几年做 AI 应用的团队,基本都经历过一段"拼接地狱":今天对接 OpenAI,明天换国产模型,后天又要支持本地部…

阅读更多 →
大模型入门到实战:本地部署、微调与应用开发完整指南 2026/9/28 18:55:40

大模型入门到实战:本地部署、微调与应用开发完整指南

这两年大模型的浪潮来得实在太猛,几乎每周都能看到新模型发布的消息。不少朋友问我同一个问题:“我想系统地入门大模型,到底该从哪里开始?”说实话,这个问题的答案比大多数人想象得更简单,也更复杂——简单…

阅读更多 →
Claude Code 省钱小妙招!200K 与自动压缩的 settings.json 配置骨架 2026/9/28 18:55:34

Claude Code 省钱小妙招!200K 与自动压缩的 settings.json 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉