Token导航 LogoToken导航TokenDH.com
Agent Repl Jl logo
AI代理HTTP官方级别未说明来源级核验

Agent Repl Jl

MCP Server

AgentREPL是一个通过MCP协议为AI代理提供持久化Julia会话的工具,支持多隔离会话和热重载功能,显著减少重复启动开销。

工具数

8

提示词数

0

GitHub Stars

4

资源数

0
ClaudeAI代理工作流自动化Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

samtalki

提供方

samtalki

最后核验

2026/5/17 20:51

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

代理REPL.jl

通过MCP(模型上下文协议)为AI代理持久化Julia REPL。支持多个独立会话和Revise.jl热重载。

问题: Julia的“Time to First X”(TTFX)问题严重影响了AI代理的工作流程。每 julia -e "..." 调用需要1-2s的启动+包加载+JIT编译。像Claude Code这样的AI代理每个命令都会生成新的Julia进程,浪费了几分钟的计算时间。

解决方案: AgentREPL通过MCP STDIO传输提供持久的Julia会话。Julia进程仍然有效,因此您只需支付一次TTFX成本。

为什么选择AgentREPL?

AgentREPL是为Claude Code提供持久Julia会话的最简单方法。有三件事使它与众不同:

  1. 零摩擦设置。 STDIO传输意味着Claude Code会自动生成和管理Julia进程。无需启动服务器,无需配置端口,无需监控进程。安装插件并开始编码。
  1. 工作流原生Revise.jl。 每个工人都会自动加载Revise.jl。插件的PostToolUse钩子会自动调用 revise 编辑后 .jl 文件夹。您永远不会手动重新加载代码。
  1. 真正的进程隔离。 每个会话都是一个单独的Distributed.jl worker。您可以重新定义结构,终止崩溃的会话,并在没有交叉污染的情况下运行并行工作负载。 reset 按照它所说的去做——包括类型定义在内的完全状态擦除。

AgentREPL不是Julia IDE的替代品。它有8个工具,而不是35个。它没有调试、语义搜索或仪表板。如果你需要这些,请查看 比较部分 在......下面AgentREPL的方法是 eval 加上Julia现有的自省功能(您可以直接通过以下方式调用 eval)以最小的复杂性覆盖大多数代理工作流。

安装

using Pkg
Pkg.add(url="https://github.com/samtalki/AgentREPL.jl")

或用于开发:

Pkg.dev("https://github.com/samtalki/AgentREPL.jl")

快速开始

选项A:使用插件(推荐)

使用AgentREPL最简单的方法是通过附带的Claude Code插件:

claude /plugin add samtalki/AgentREPL.jl

这提供了:

  • 自动配置MCP服务器(无需手动设置)
  • 8项技能: /julia-reset, /julia-info, /julia-pkg, /julia-activate, /julia-log, /julia-session, /julia-revise, /julia-develop
  • Julia评估最佳实践和语言专业知识的自动触发技能
  • Hooks:之前的代码显示验证 eval,自动 revise 之后 .jl 文件编辑

选项B:手动MCP配置

claude mcp add julia-repl -- julia --project=/path/to/AgentREPL.jl /path/to/AgentREPL.jl/bin/julia-repl-server

使用代理REPL

启动新的Claude Code会话。当Claude需要时,Julia MCP服务器将自动启动。

让Claude运行Julia代码:

“计算Julia中的前10个斐波那契数”

克劳德将使用 eval 工具和显示REPL样式输出:

julia> [fibonacci(i) for i in 1:10]

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

JIT编译的第一次调用可能需要几秒钟;后续呼叫是即时的。

建筑

AgentREPL使用 多会话工作者子流程模型 通过Distributed.jl:

┌─────────────────────────────────────────────────────────┐
│ Claude Code                                             │
│   ↕ STDIO (MCP)                                        │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ AgentREPL MCP Server (Main Process)                 │ │
│ │   ↕ Distributed.jl                                  │ │
│ │ ┌──────────────────┐  ┌──────────────────┐          │ │
│ │ │ Session "default" │  │ Session "testing" │  ...    │ │
│ │ │ (Worker 2)        │  │ (Worker 3)        │         │ │
│ │ └──────────────────┘  └──────────────────┘          │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘

为什么是worker子流程?

  • reset 可以杀死并重生工人 真正的硬重置
  • 类型/结构重新定义工作(进程内重置不可能)
  • 每个会话都有独立的变量、包和项目环境
  • 激活的环境在重置后仍然存在
  • 第一次使用时,工人会懒散地出生,以避免STDIO冲突

提供的工具

eval

在持久会话中评估Julia代码。输出采用熟悉的REPL格式:

julia> x = 1 + 1

2
julia> x + 10

12

变量持续存在!多行代码也适用:

julia> function fib(n)
           n  println("Computing..."); 42

Computing...
42

截断堆栈跟踪会捕获错误:

julia> undefined_var

UndefVarError: `undefined_var` not defined
Stacktrace:
 [1] top-level scope
  ... (truncated)

特征:

  • 变量和函数在调用中保持不变
  • 一旦装载,包裹就会保持装载状态
  • 返回值和打印输出都被捕获
  • 错误被捕获并通过回溯报告

reset

硬重置:杀死工人进程并产生一个新的进程。

Session reset complete.
- Old worker (ID: 2) terminated
- New worker (ID: 3) spawned
- All variables, functions, and types cleared
- Packages will need to be reloaded with `using`

这使得:

  • 清除所有变量
  • 卸载所有包裹
  • 重新定义类型/结构 (软重置不可能)
  • 从全新的朱莉娅州开始

激活的环境在重置后仍然存在。

info

获取会话信息,包括工作进程ID。

Julia Version: 1.12.2
Active Project: /home/user/MyProject
User Variables: x, fib, data
Loaded Modules: 42
Worker ID: 3
Session: default
Revise.jl: loaded

activate

切换活动的Julia项目/环境。

activate(path=".")
# Activated project: /home/user/MyProject
# Use `pkg(action="instantiate")` to install dependencies if needed.

activate(path="/path/to/OtherProject")
# Activated project: /path/to/OtherProject

activate(path="@v1.10")
# Activated shared environment: @v1.10

激活后,安装依赖项:

pkg(action="instantiate")

pkg

在当前环境中管理Julia包。

pkg(action="status")
# Package Status:
# Project MyProject v0.1.0
# Status `~/MyProject/Project.toml`
#   [682c06a0] JSON3 v1.14.0
#   [a93c6f00] DataFrames v1.6.1

pkg(action="add", packages="CSV, HTTP")
# Package add complete.

pkg(action="test")
# Test Summary: | Pass  Total
# MyProject     |   42     42

pkg(action="develop", packages="./MyLocalPackage")
# Development mode: MyLocalPackage -> ~/MyLocalPackage

pkg(action="free", packages="MyLocalPackage")
# Freed MyLocalPackage from development mode

行动:

操作描述所需包
add安装软件包
rm删除包
status显示已安装的软件包
update更新包(如果未指定,则全部更新)
instantiate从Project.toml/Manifest.toml安装
resolve解析依赖关系图
test运行测试(如果未指定,则为当前项目)
develop使用本地代码而不是注册表
free返回注册表版本

packages 参数接受空格或逗号分隔的名称。

log_viewer

打开一个实时显示Julia输出的终端。

log_viewer(mode="auto")
# Log viewer enabled.
# Log file: ~/.julia/logs/repl.log
# A terminal window should have opened.

log_viewer(mode="tmux")
# tmux session 'julia-repl' created. Attach with: tmux attach -t julia-repl

log_viewer(mode="file")
# Log file: ~/.julia/logs/repl.log
# Run manually: tail -f ~/.julia/logs/repl.log

log_viewer(mode="off")
# Log viewer disabled.

对于实时查看打印输出很有用,特别是对于长时间运行的计算。

session

管理多个命名的Julia REPL会话。每个会话都有自己的具有隔离状态的工作进程。

session(action="create", name="analysis")
# Session 'analysis' created and set as current.
# Worker will spawn on first eval.

session(action="list")
# Sessions:
#  * default — worker 2, /home/user/MyProject, Revise (5.2min)
#    analysis — not spawned, default env, no Revise (0.1min)

session(action="switch", name="analysis")
# Switched to session 'analysis'.

session(action="destroy", name="analysis")
# Session 'analysis' destroyed.

行动:

操作描述名称必填
create创建新的命名会话
switch切换活动会话
list显示所有状态为否的会话
destroy杀死会话的worker并将其删除

revise

使用Revise.jl热重新加载Julia代码更改--不需要重新启动会话。

revise(action="revise")
# Revise completed — all tracked changes reloaded.

revise(action="track", path="src/myfile.jl")
# Now tracking src/myfile.jl — changes will auto-reload on next revise().

revise(action="includet", path="scripts/analysis.jl")
# Included scripts/analysis.jl with Revise tracking.

revise(action="status")
# Revise.jl Status (session: default):
# Watched packages: MyPackage
# Tracked files: 3 files
#   - src/core.jl
#   - src/utils.jl
#   - scripts/analysis.jl

行动:

操作描述需要路径
revise触发Revise.review()以获取所有文件更改
track开始跟踪文件(自动检测到更改)
includet包含带有修订跟踪的文件
status显示Revise当前正在跟踪的内容

使用 revise 编辑后 .jl 文件夹。使用 reset 仅适用于结构布局更改(Julia\ [packages] |包管理| | /julia:julia-activate |激活项目/环境| | /julia:julia-log |控制日志查看器| | /julia:julia-session [name] |管理多个会话| | /julia:julia-revise [action] [path] |热重载代码更改| | /julia:julia-develop [path]` |设置开发工作流程|

自动触发: julia-evaluation (REPL使用的最佳实践)和 julia-language (深厚的Julia专业知识:类型、调度、元编程、性能)。

钩子

  • 预工具使用(eval):在调用eval之前,验证Julia代码是否以可读格式显示
  • PostTool使用(写入/编辑):自动呼叫 revise 编辑后 .jl 要热重新加载的文件更改

安装

claude /plugin add samtalki/AgentREPL.jl

或者为了当地发展:

claude --plugin-dir /path/to/AgentREPL.jl/claude-plugin

claude插件/README.md 了解详情。

安全

安全.md 出于详细的安全考虑。

太长,读不下去了:

  • STDIO传输=无网络攻击面
  • 代码以用户权限运行
  • 当Claude会话结束时,进程终止
  • 没有针对恶意代码的保护(AI决定运行什么)

发展

运行测试

julia --project=. -e "using Pkg; Pkg.test()"

本地测试

using AgentREPL
AgentREPL.start_server()  # Blocks, waiting for MCP messages on stdin

贡献.md 详细的贡献指南。

API 参考

导出的函数

start_server(; project_dir=nothing)

使用STDIO传输启动AgentREPL MCP服务器。

论据:

  • project_dir::Union{String,Nothing}:要在worker上激活的Julia项目的可选路径

例子:

using AgentREPL
AgentREPL.start_server(project_dir="/path/to/myproject")

环境变量

变量描述默认值
JULIA_REPL_PROJECT启动时激活Julia项目的路径
JULIA_REPL_VIEWER日志查看器模式: auto, tmux, file, nonenone
JULIA_REPL_LOG日志文件的路径~/.julia/logs/repl.log
JULIA_REPL_HIGHLIGHT启用/禁用语法突出显示true
JULIA_REPL_OUTPUT_FORMAT输出格式: ansi, markdown, plainansi

内部架构

对于扩展AgentREPL的开发人员:

文件结构:

src/
  AgentREPL.jl           # Main module (imports, includes, exports)
  types.jl               # State structs (SessionState, SessionRegistry, LogViewerState, HighlightConfig)
  highlighting.jl        # Julia syntax highlighting (JuliaSyntaxHighlighting.jl)
  formatting.jl          # Result formatting, stacktrace truncation
  sessions.jl            # Multi-session lifecycle (create, switch, list, destroy)
  worker.jl              # Distributed worker lifecycle
  revise.jl              # Revise.jl integration (revise, track, includet, status)
  packages.jl            # Pkg actions, project activation
  logging.jl             # Log viewer functionality
  tools.jl               # MCP tool definitions (8 tools)
  server.jl              # start_server function

关键部件:

组件文件描述
SessionStatetypes.jl每个会话状态:工作进程ID、项目路径、修订状态
SessionRegistrytypes.jl包含当前会话跟踪的所有会话的注册表
LogViewerStatetypes.jl可选日志查看器终端状态
HighlightConfigtypes.jl语法高亮显示配置
ensure_worker!(session)worker.jl确保会话中存在worker
capture_eval_on_worker(code; session_name)worker.jl使用输出捕获来评估代码
reset_worker!(session)worker.jl杀死并重新分配会话的worker
resolve_session(name)sessions.jl将可选会话名称解析为SessionState
revise_on_worker!(session)revise.jl在worker上触发revise.review()
activate_project_on_worker!(path; session_name)packages.jl切换工作环境

所有函数都可以通过以下方式访问文档字符串 ?function_name Julia REPL。

更新日志

更改日志.md 查看版本历史和发行说明。

许可证

Apache许可证2.0-请参阅 许可证 了解详情。

贡献

欢迎投稿!看 贡献.md 关于以下方面的指导方针:

  • 建立开发环境
  • 代码风格和文档标准
  • 拉取请求流程
  • 添加新功能

致谢

目录标签

目录标签

ClaudeAI代理工作流自动化Julia本地部署Julia语言REPL工具热重载多会话管理

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

HTTP

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

HTTPsession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP