丙烯腈
*来自拉丁语 裁决 --自由判断、掌握、控制。决定和指挥的权力。在Velle意志和Expergis感知的地方,Arbitrium指挥。*
持久化shell MCP服务器 克劳德代码.
Arbitrium为代理提供了持久的shell会话,这些会话可以在工具调用中生存。生成一个shell,运行命令,读取输出——shell保留交互之间的所有状态(环境变量、工作目录、正在运行的进程)。每个命令及其输出都记录到 ./logs/.
运作原理
arbitrium_spawn -> bash subprocess with stdin/stdout pipes
arbitrium_exec -> write command + sentinel to stdin, read output until sentinel
arbitrium_close -> graceful termination无控制台注入,无缓冲区刮擦。只有管道和哨兵模式来检测命令完成。shell是无头的——输出通过MCP工具响应返回。
MCP工具
| 工具 | 说明 |
|---|---|
arbitrium_spawn | 打开一个新的持久shell会话 |
arbitrium_exec | 执行命令并返回完整输出+退出代码 |
arbitrium_list | 列出带有元数据的活动会话 |
arbitrium_close | 关闭会话并终止子流程 |
主要特点
- 状态持久性 —
cd,export、别名、shell函数都在调用中存活 - 完整输出捕获 --返回命令和下一个提示符之间的所有内容,而不仅仅是一个截断的窗口
- 退出代码 --每个命令都返回其退出代码
- 超时处理 --可配置每个命令超时,超时时部分输出
- 会话日志记录 --每节课都会写一份完整的成绩单
./logs/ - 多个会话 --使用不同的工作目录同时运行多个shell
安装
需要Python 3.10+和 紫外线.
git clone https://github.com/PStryder/arbitrium.git
cd arbitrium
uv sync添加到克劳德代码:
claude mcp add -s user arbitrium -- /path/to/arbitrium/.venv/Scripts/python -m arbitrium.server或手动输入 ~/.claude.json:
{
"mcpServers": {
"arbitrium": {
"command": "/path/to/arbitrium/.venv/Scripts/python",
"args": ["-m", "arbitrium.server"],
"cwd": "/path/to/arbitrium"
}
}
}用法
Agent: arbitrium_spawn(shell="bash", cwd="/my/project")
-> session_id: "shell-a1b2c3"
Agent: arbitrium_exec(session_id="shell-a1b2c3", command="export API_KEY=test123")
-> ok, exit_code: 0
Agent: arbitrium_exec(session_id="shell-a1b2c3", command="echo $API_KEY")
-> output: "test123", exit_code: 0 # state persisted!
Agent: arbitrium_exec(session_id="shell-a1b2c3", command="cd src && ls")
-> output: "main.py utils.py", exit_code: 0
Agent: arbitrium_exec(session_id="shell-a1b2c3", command="pwd")
-> output: "/my/project/src", exit_code: 0 # directory persisted!
Agent: arbitrium_close(session_id="shell-a1b2c3")
-> closed, 4 commands executed安全
Arbitrium提供 不受限制的shell访问 --代理发送的任何命令都将在运行Claude Code的用户的权限下执行。没有沙盒。
所有命令和输出都记录到 ./logs/ 带有时间戳。查看日志以审核代理行为。
