用途:该技能用于与运行中的 Clojure 系统通过 nREPL 交互,借助 clj-nrepl-eval CLI 工具在活动 REPL 中求值代码、测试函数、查询数据库连接、检查已加载命名空间与变量、调试运行中的应用状态,并在提交前验证代码改动。
主要能力:支持发现可用 nREPL 端口、求值单条或多条表达式、重载命名空间、设置超时、持久会话(命名空间变更与 def 在多次调用间保留)、自动修复不匹配的括号、返回便于模型理解的错误信息。
使用方式:先运行 which clj-nrepl-eval 做预检,若未找到则提示用户在该技能目录运行 ./install.sh。常用命令:clj-nrepl-eval --discover-ports 发现端口;clj-nrepl-eval -p <port> "<code>" 求值;clj-nrepl-eval -p <port> "(require '[ns.name] :reload)" 重载单个命名空间;clj-nrepl-eval -p <port> "(require '[ns.name] :reload-all)" 重载命名空间及其依赖;clj-nrepl-eval -p <port> --timeout 5000 "<code>" 设置超时。标准流程为:编辑文件、重载命名空间、调用函数验证。
适用场景:在运行中的 Clojure 系统里测试函数而无需重启 REPL、查询数据库连接、检查已加载命名空间、调试实时应用状态、验证改动。资料还提到 Banzai 相关模式,如通过 integrant.repl.state/system 访问 Integrant 系统组件。
限制与注意:编辑任何 Clojure 文件后必须在 REPL 中显式重载,否则内存中仍是旧代码;:reload-all 更慢但更彻底;默认超时为 2 分钟(120000ms);会话会持续,可用 (in-ns 'user) 或 (ns user) 重置;应先发现端口而非假设端口号,并显式 require 命名空间。其他平台、收费与效果信息暂未提供。