基于 Shell 脚本实现的 AI Agent,使用 OpenAI API 调用。
- ✅ Skills 机制: 从 SKILL.md 文件加载领域知识
- ✅ 工具调用: bash, read_file, write_file, edit_file
- ✅ Todo 管理: 跟踪多步骤任务
- ✅ OpenAI API: 使用 gpt-4o 或其他 OpenAI 模型
- ✅ 轻量级: 纯 Shell 实现,无需 Python
# Ubuntu/Debian
sudo apt-get install jq curl
# macOS
brew install jq curl- 设置 OpenAI API Key:
export OPENAI_API_KEY="sk-your-api-key-here"- (可选) 自定义配置:
# 使用不同的模型
export MODEL="gpt-4o-mini"
# 使用自定义 API 端点
export OPENAI_BASE_URL="https://your-api-endpoint.com/v1"# 赋予执行权限
chmod +x claude_code.sh
# 运行 agent
./claude_code.shYou: 创建一个 hello.py 文件,打印 "Hello World"
[INFO] Tool: write_file
→ Wrote 54 bytes to hello.py...
我已经创建了 hello.py 文件,内容如下:
- 导入必要的模块
- 定义 main 函数打印 "Hello World"
- 使用 if __name__ == "__main__" 执行
You: 运行这个文件
[INFO] Tool: bash
→ Hello World...
成功运行!输出结果是 "Hello World"
- 在
skills/目录下创建技能文件夹:
mkdir -p skills/my-skill- 创建
SKILL.md文件:
---
name: my-skill
description: 这个技能的简短描述,用于触发条件
---
# My Skill
## 使用方法
详细的使用说明...
## 示例
\`\`\`bash
example command
\`\`\`
## 注意事项
- 注意点 1
- 注意点 2- (可选) 添加资源文件:
skills/my-skill/
├── SKILL.md
├── scripts/ # 辅助脚本
│ └── helper.sh
├── references/ # 参考文档
│ └── spec.md
└── assets/ # 模板文件
└── template.txt
Agent 会自动在合适的时机加载技能:
You: 帮我处理这个 PDF 文件
[INFO] Tool: Skill
→ Skill loaded (1234 chars)...
[INFO] Tool: bash
→ pdftotext output...
执行 shell 命令。
{
"command": "ls -la"
}读取文件内容。
{
"path": "example.txt",
"limit": 100 // 可选,限制行数
}写入文件。
{
"path": "output.txt",
"content": "Hello World"
}替换文件中的文本。
{
"path": "script.py",
"old_text": "old value",
"new_text": "new value"
}加载技能。
{
"skill": "pdf"
}更新任务列表。
{
"items": [
{
"content": "任务描述",
"status": "pending", // pending | in_progress | completed
"activeForm": "正在做什么"
}
]
}- ✅ 路径验证:所有文件操作限制在工作目录内
- ✅ 命令过滤:阻止危险命令(rm -rf /, sudo, shutdown)
- ✅ 超时保护:命令执行最多 60 秒
- ✅ 输出限制:工具输出限制在 50KB 以内
echo $OPENAI_API_KEY echo $OPENAI_BASE_URL
curl -s $OPENAI_BASE_URL/v1/models
-H "Authorization: Bearer $OPENAI_API_KEY" | jq .
确保 API 返回的是有效 JSON:
# 启用调试模式
set -x
./claude_code.sh检查 SKILL.md 格式:
# 验证 frontmatter
head -10 skills/pdf/SKILL.md欢迎提交 Issue 和 Pull Request!
MIT License