Skip to content

Repository files navigation

Min Agent

一个可观察、可本地运行的最小 Agent 机制演示器。

它不是生产级 Agent,也不是迷你版 Claude Code。这个项目只做一件事:让你从页面上看清楚 Agent 如何围绕目标持续判断、调用受控工具、吸收执行结果,最后完成任务。

Min Agent V1.1 Web Agent

你能从中看到什么

  • 一条真实运行的 Agentic Loop,而不是前端预设动画。
  • 模型如何基于当前上下文提出下一步结构化动作。
  • 工具结果如何以 Observation 回到下一轮判断。
  • 多步骤目标如何被拆成顺序任务,并通过结构化产物传递信息。
  • write_filerun_command 为什么必须先得到使用者批准。
  • 同一份结构化 Trace 如何支撑实时观察、错误定位和历史回放。

快速开始

运行环境:Python 3.10 或更高版本;支持 macOS 和 Linux。当前稳定源码版本为 V1.1,以克隆仓库直接运行的方式发布,不承诺 PyPI 安装入口。

git clone https://github.com/JinweiX/min-agent.git
cd min-agent
PYTHONPATH=src python3 -m min_agent.web_app \
  --workspace examples/workspace \
  --runs-dir runs \
  --port 8765

打开终端输出的本机网址。服务只监听 127.0.0.1,默认使用不访问外部模型的 Fake 模式。

第一次运行建议直接点击页面上的预置任务:

  1. 请阅读这个工作区里的资料,并总结这个 demo 是怎么工作的
  2. 请阅读 project.md 并生成 summary.md
  3. 阅读 workspace 中的项目资料,获取当前时间,并生成一份带时间的 summary.md。

第一个任务演示只读循环;第二个任务会等待写文件批准;第三个任务会展示任务分解、命令权限和跨任务产物。

Agent 如何运行

flowchart LR
    Goal["用户目标"] --> Context["组装当前上下文"]
    Context --> Model["DecisionModel 判断下一步"]
    Model -->|"工具动作"| Registry["ToolRegistry 校验"]
    Registry -->|"危险动作"| Permission["用户权限确认"]
    Permission --> Tool["本地工具执行"]
    Registry -->|"只读动作"| Tool
    Tool --> Observation["Observation"]
    Observation --> Context
    Model -->|"final_answer"| Answer["最终答案"]
    Context -.-> Trace["Trace + run record"]
    Model -.-> Trace
    Tool -.-> Trace
Loading

模型不能直接读写文件或执行命令。它只能返回受支持的 AgentAction;路径校验、命令白名单、权限确认和实际执行都由本地运行时负责。

更完整的组件职责和数据流见 架构说明

Fake 与 DeepSeek

模式 适合场景 是否访问外部服务 说明
Fake 第一次体验、教学、自动测试 确定性的有限决策器,根据目标和 Observation 选择演示动作
DeepSeek 观察真实模型参与下一步判断 页面输入 Key 后,真实模型返回本地 AgentAction,工具仍只在本机执行

Web 模式的 DeepSeek Key 只保存在当前服务进程内存中,不写入 .env、Trace、运行记录或浏览器持久化存储。页面刷新不能取回 Key,服务停止后 Key 失效。

数据与安全边界

在把服务指向自己的工作区之前,请先理解这些边界:

  • workspace 在服务启动时固定,页面不能传入或切换其他目录。
  • 文件工具拒绝 .. 逃逸、工作区外绝对路径和指向外部的 symlink。
  • write_file 只创建新文本文件,不能覆盖已有文件,并且每次都需要批准。
  • run_command 只接受本地注册的固定命令,不接受任意命令字符串、参数、shell、管道或重定向。
  • DeepSeek 模式会把任务目标、模型上下文和被选中的相关文件内容发送给配置的模型服务。
  • runs/*.json 可能保存任务目标、文件内容、模型输入输出、工具结果和完整 Trace。不要用敏感工作区做首次体验,也不要公开提交运行记录。
  • 同一时间只允许一个活动运行;历史记录仅供只读回放,不能再次执行工具。

V1.1 的边界

V1.1 已包含:网页发起 Fake/DeepSeek 任务、实时过程观察、网页权限确认、任务计划与产物展示、只读历史回放,以及兼容的单次 CLI 入口。在 V1.0 能力基础上,V1.1 统一了页面视觉语言,强化 Goal -> Decide -> Tool -> Observe 阅读路径,并补齐表单、权限抽屉、异步反馈、历史分页和 390px 窄屏体验。

V1.1 不增加新的 Agent 能力,也不包含:远程访问、登录、多用户、多 workspace、并发队列、停止/恢复/重试、动态改计划、任意命令、覆盖文件、长期记忆、多 Agent、MCP、Hook 或插件系统。

当前项目以 V1.1 作为稳定公开版本,短期内进入维护冻结期。发现运行问题或边界描述不一致时,请通过 GitHub Issues 反馈。

CLI 入口

原有单次 CLI 仍可用于脚本和机制测试:

PYTHONPATH=src python3 -m min_agent.cli \
  "请阅读这个工作区里的资料,并总结这个 demo 是怎么工作的" \
  --workspace examples/workspace

CLI 的 DeepSeek 模式从环境变量读取 DEEPSEEK_API_KEY;Web 模式不读取这个环境变量。

测试

python3 -m unittest discover -s tests

测试覆盖机制边界、Agent 场景、Web API 和前端结构。页面相关改动还必须完成真实浏览器验收,源码检查不能替代浏览器运行。

继续阅读

License

MIT

About

An observable local Agent loop with controlled tools, permission gates, trace viewing, and history replay.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages