完整智能体主网页和增强型代理服务器代码,部署到 Hermes(或任意标准 LAMP/LEMP 环境)的原子级操作指令。整个系统实现了:
完整的智能体循环、用户界面、工具定义和处理函数。文件操作通过调用 proxy.php 的 file_read / file_write / file_edit 等动作完成。
| 工具 | 描述 | 供应商 |
|---|---|---|
| web_search | 搜索互联网,返回结构化结果 | MiniMax-M2.7 |
| vision_recognition | 识别图片内容 | MiniMax-M2.7 |
| image_generation | 根据文字描述生成图片 | image-01 |
| video_generation | 根据描述生成视频(轮询等待) | MiniMax-Hailuo-2.3 |
| music_generation | 生成音乐或歌曲 | music-2.6 |
| text_to_speech | 文本转语音 | speech-01 |
| bash | 执行 Shell 命令(浏览器模拟) | — |
| read | 读取个人文件夹的文件 | proxy.php |
| write | 写入文件到个人文件夹 | proxy.php |
| edit | 查找替换编辑文件 | proxy.php |
| AskUserQuestion | 向用户提问获取信息 | — |
| thinking_mode | 深度思考模式(仅 DeepSeek) | DeepSeek-V4 |
系统实现了一个完整的 PAVR(Plan-Act-Verify-Refine)循环:
区别于 PAVR 的多次往返,此实现采用单次调用的高效模式:LLM 一次思考,连续执行工具,最终输出结果。
内置 Agent Drift Guard 技能定义,防止 AI 在执行过程中偏离用户目标。包含三级严重程度:
所有文件读写操作通过 proxy.php 的 file_read / file_write / file_edit 动作完成:
/users/<username>/..)proxy.php 作为统一的后端代理网关,承担以下职责:
| 特性 | 详情 |
|---|---|
| 多供应商路由 | 根据 _provider 参数自动路由到 MiniMax / DeepSeek 等不同 API 端点 |
| 多 Key 轮换 | 每个供应商配置多个 API Key,429 限流时自动换 Key |
| Token 验证 | 每个请求需携带有效 ACCESS_TOKEN |
| CORS 支持 | 跨域请求头完全配置 |
| 用户文件系统 | file_read/file_write/file_edit/list_files/get_quota 五个文件操作端点 |
MiniMax 配置了 3 个 API Key,DeepSeek 配置了 4 个 API Key:
proxy_all_keys_exhausted 错误完整的部署流程,每一步都是可执行的原子操作:
# 创建部署目录
mkdir -p /var/www/html/deepcode
cd /var/www/html/deepcode
# 保存 index.html(完整前端代码)
cat > index.html << 'INDEXHTML'
...(完整 index.html 代码,见上方 section)
INDEXHTML
# 保存 proxy.php
cat > proxy.php << 'PROXYPHP'
...(完整 proxy.php 代码,见上方 section)
PROXYPHP
# 创建用户数据目录
mkdir -p users
/etc/nginx/sites-available/deepcode
─────────────────────────────────
server {
listen 80;
server_name your-domain.com;
root /var/www/html/deepcode;
index index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
# 限制用户文件访问
location ^~ /users/ {
internal; # 不直接对外暴露
}
}
# 安装依赖(如果尚未安装)
apt install php7.4-cli php7.4-fpm php7.4-mysql php7.4-curl php7.4-mbstring
# 调整 PHP 配置
sed -i 's/upload_max_filesize = .*/upload_max_filesize = 100M/' /etc/php/7.4/fpm/php.ini
sed -i 's/post_max_size = .*/post_max_size = 100M/' /etc/php/7.4/fpm/php.ini
sed -i 's/max_execution_time = .*/max_execution_time = 300/' /etc/php/7.4/fpm/php.ini
systemctl restart php7.4-fpm
编辑 proxy.php,填写 $MINIMAX_KEYS 和 $DEEPSEEK_KEYS 数组:
// proxy.php 第 1 行附近
$MINIMAX_KEYS = ['sk-minimax-key1', 'sk-minimax-key2', 'sk-minimax-key3'];
$DEEPSEEK_KEYS = ['sk-deepseek-key1', 'sk-deepseek-key2', 'sk-deepseek-key3', 'sk-deepseek-key4'];
$ACCESS_TOKEN = 'your-secret-token'; // 前端必须匹配
# 1. 检查 PHP
php -r "echo 'PHP OK\n';"
# 2. 检查 Web 服务
curl -s -o /dev/null -w "%{http_code}" http://localhost/deepcode/index.html
# 应返回 200
# 3. 测试 proxy.php
curl -s -X POST http://localhost/deepcode/proxy.php \
-H "Content-Type: application/json" \
-d '{"_token":"your-secret-token","_provider":"minimax","_path":"/chat/completions","model":"MiniMax-M2.7","messages":[{"role":"user","content":"ping"}],"max_tokens":1}'
# 应返回 JSON
# 4. 测试文件操作
curl -s -X POST http://localhost/deepcode/proxy.php \
-H "Content-Type: application/json" \
-d '{"_token":"your-secret-token","_action":"file_write","username":"test","file_path":"hello.txt","content":"Hello World"}'
# 应返回 {"success":true,...}
# /etc/systemd/system/deepcode-agent.service
[Unit]
Description=DeepCode Agent - AI Coding Assistant
After=network.target php7.4-fpm.service
[Service]
Type=simple
ExecStart=/usr/sbin/php-fpm7.4 --nodaemonize
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
systemctl enable deepcode-agent
systemctl start deepcode-agent
../ 目录穿越(strpos('..') !== false → 拒绝).html/.js/.css/.json/.md/.txt/.png/.jpg 等)| 问题 | 原因 | 解决方案 |
|---|---|---|
| proxy.php 返回 403 | Token 不匹配或未传递 _token 参数 |
检查前端 ACCESS_TOKEN 与 PHP 中 $ACCESS_TOKEN 是否一致 |
| 文件写入失败 | 目录权限或配额超限 | chown -R www-data:www-data users/,检查配额 |
| LLM 返回空结果 | API Key 限流或模型名错误 | 检查 proxy.php 日志,确认模型名正确 |
| CORS 跨域错误 | 前端域名不在 proxy.php 的允许列表中 | 更新 proxy.php 中 Access-Control-Allow-Origin |