Skip to main content

Python SDK for mink — sandboxed AI coding agent

Project description

mink

简体中文

极简 AI coding agent。Rust 原生实现,专为 DeepSeek 优化。

默认交付为 mink 终端二进制,也可构建 SDK 精简二进制 mink-core,或作为 Rust 库嵌入到其他服务中编排。


特性

  • DeepSeek 原生优化 — 针对 DeepSeek V4 系列设计,最大化 prefix-cache 命中率
  • 两种终端模式 — REPL(-i,rustyline 行编辑)和 TUI(--tui,ratatui 全屏界面)
  • 信号驱动的信念系统 — 自动检测工具执行错误,低信念时注入修正提示并约束恢复首步;可用 MINK_SIGNAL_MODE=off 关闭
  • 自适应上下文压缩 — 三级压缩,自动摘要,保持上下文在窗口内
  • 维修流水线 — Scavenge → Truncation → Storm Breaker,三段自动修复
  • Session 持久化 — JSONL 格式,--continue 无缝恢复
  • 子代理(SubAgent) — 隔离或 fork 上下文,并发执行
  • 技能系统 — 按需加载 skill 文件,不污染后续 prompt
  • 自定义提示词--mission 加载 MISSION.md 文件,替换默认系统提示词,自由定义 agent 目标和行为
  • Python SDKmink-agent pip 包,内置无 TUI 的 mink-core 二进制,支持沙箱控制和全参数配置
  • 沙箱防护 — Linux nsjail/bubblewrap(完整文件系统隔离)、macOS sandbox-exec(写入隔离)
  • CPython WASI 沙箱PythonSandbox 工具,在 wasmtime + CPython WASI 中执行 Python 代码,WASI 级进程隔离
  • 运行时约束--disable-bash / --disable-sub-agent / --disable-web / --disable-python 按场景禁用工具;--enable-python-sandbox 启用沙箱 Python 工具
  • 机器协议--print 输出 ndjson 事件流并以 final 结束;--agent-jsonl 提供 single-shot Agent JSONL 协议

快速开始

# 前置:Rust 1.85+,设置 DEEPSEEK_API_KEY

# 编译
cargo build --release
# 或
make build

# REPL 交互模式
./target/release/mink -m flash -i

# TUI 全屏模式
./target/release/mink -m flash --tui

# 单次查询
./target/release/mink -m flash "explain this project"

# 继续上次会话
./target/release/mink -m flash --continue -i

# 使用自定义系统提示词
./target/release/mink --mission ./my-task.mission.md -i

Rust Library

mink-core 是 Rust 发布包名,库 crate 名为 mink。发布库只包含可嵌入 runtime 和 Display 协议层;REPL/TUI、二进制入口和终端依赖归属 mink-cli workspace 包。 Rust 服务通常只启用嵌入式 runtime:

[dependencies]
mink = { package = "mink-core", version = "0.1.8", default-features = false, features = ["runtime"] }

然后在代码中通过 mink::runtimemink::prelude 嵌入:

use mink::prelude::{AgentEvent, AgentOptions, AgentRuntime};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let rt = AgentRuntime::start_with_options(
        AgentOptions::new("/tmp/mink-home", ".")
            .with_api_key(std::env::var("DEEPSEEK_API_KEY")?)
            .with_model("flash"),
    ).await?;

    // 阻塞式 turn — 直接拿到 text/thinking
    let outcome = rt.run_turn("hello").await?;
    println!("{}", outcome.text);

    // 流式 turn — 实时事件
    let mut stream = rt.try_stream_turn("explain")?;
    while let Some(ev) = stream.recv().await {
        match ev {
            AgentEvent::Text { content } => print!("{content}"),
            AgentEvent::Final { .. } => break,
            _ => {}
        }
    }
    let outcome = stream.outcome().await?;

    rt.shutdown().await?;
    Ok(())
}

同进程 AgentRuntime 不会自动 sandbox 当前进程。需要完整进程级沙箱时,推荐参考 examples/web_api.rs 的 hidden worker 模式:业务服务 spawn 自身 worker 子进程,worker 先 re-exec 进沙箱,再调用 mink::runtime

库使用方应优先从 mink::preludemink::runtimemink::configmink::sandboxmink::sdk_protocol 导入类型。其他公开模块目前主要服务于内部 runtime 复用和过渡期测试,不建议作为稳定 API 依赖。


Workspace Packages

路径 职责
crates/mink-core Rust 发布包 mink-core,库 crate 名 mink,包含可嵌入 runtime、工具核心、session、sandbox 和 SDK 协议
crates/mink-cli workspace 内部二进制包,生成 mink 终端二进制和 mink-core SDK 精简二进制,持有 REPL/TUI 实现
mink_agent Python SDK,wheel 内置无 TUI 的 mink-core 二进制

Python SDK

通过 pip 安装使用:

pip install mink-agent
from mink_agent import AgentSession, SandboxConfig

session = AgentSession(SandboxConfig(
    api_key="sk-...",
    read_dirs=["src"],
    write_dirs=["src"],
    mission_file="./my-task.mission.md",
    signal_mode="full",
))
result = session.run("处理文档")
print(result["status"], result["events_path"])

详见 mink_agent/README.md


文档索引

文档 说明
使用手册 面向用户:CLI/SDK/Rust 嵌入、配置、沙箱、session、技能和常见工作流
工具参考 面向工具协议:内置工具参数、结果通道、资源 URL、审批和构建裁剪
架构说明 运行时分层、模块职责、核心数据流
设计文档 设计哲学、关键不变式、运行时和库化边界
信号系统设计 控制论 + 贝叶斯、冷却机制、信念度展示
Agent 开发指南 面向 AI agent:项目结构、模块索引、开发惯例

许可

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

mink_agent-0.1.9-py3-none-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

mink_agent-0.1.9-py3-none-manylinux_2_35_x86_64.whl (2.2 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

mink_agent-0.1.9-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

File details

Details for the file mink_agent-0.1.9-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for mink_agent-0.1.9-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b84513140bf17ed7856223503b75b098dc69e6fdc484cefe7c4feb94fa7375d3
MD5 9cf0aac422bf12bd3dfe64caa4665592
BLAKE2b-256 0cb5e95b8039d41a859535f887746efee93a589f40fd9051c0f9e52351b45cd4

See more details on using hashes here.

Provenance

The following attestation bundles were made for mink_agent-0.1.9-py3-none-musllinux_1_2_x86_64.whl:

Publisher: ci.yml on fierceX/mink

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mink_agent-0.1.9-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for mink_agent-0.1.9-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 05f2a08021238f6f8934810545f0b7451cbc8add42ea6fe8b1666eabcf7aef6c
MD5 3e1e4571f1a8eea36a5ce3a0750a7958
BLAKE2b-256 858ca42343aab97003d127e7390747c688f98a6cc2386a39b36f47eaeaddba22

See more details on using hashes here.

Provenance

The following attestation bundles were made for mink_agent-0.1.9-py3-none-manylinux_2_35_x86_64.whl:

Publisher: ci.yml on fierceX/mink

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mink_agent-0.1.9-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for mink_agent-0.1.9-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 7c8559b9833a50b0fde03826bb9682106aad62591e8227e0460229cc70d68123
MD5 3714bf693afb2a2204ac04f4ccbf288d
BLAKE2b-256 91b64daf9c8130a4a5d326e5b1fd40b348f9f9adfe9688025de1ed069eee560c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mink_agent-0.1.9-py3-none-macosx_15_0_arm64.whl:

Publisher: ci.yml on fierceX/mink

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page