Install
openclaw skills install @thcjp/code-runner-tool-freeopenclaw skills install @thcjp/code-runner-tool-free代码执行工具免费版为个人开发者提供在非交互环境中执行编程任务的能力。工具使用 PTY(伪终端)方式运行,适配容器、CI/CD、后台进程等非 TTY 环境,并自动应答执行过程中的确认提示。
免费版聚焦单任务执行,提供文件同步、超时控制、输出捕获等核心能力。
| 特性 | 说明 |
|---|---|
| 非 TTY 适配 | 在容器、CI/CD、后台进程等环境运行 |
| 自动应答 | 自动回答执行过程中的确认提示 |
| 完整输出 | 捕获并返回完整的 stdout/stderr |
| 文件同步 | 复制项目到临时目录执行,完成后同步回 |
输入: 用户提供PTY 伪终端执行所需的指令和必要参数。 处理: 按照skill规范执行PTY 伪终端执行操作,遵循单一意图原则。 输出: 返回PTY 伪终端执行的执行结果,包含操作状态和输出数据。
1. 复制项目到临时目录
2. 切换文件所有权到指定用户
3. 通过 PTY 执行编程任务
4. 自动应答确认提示
5. 将变更同步回原目录
6. 清理临时文件
输入: 用户提供执行流程所需的指令和必要参数。 处理: 按照skill规范执行执行流程操作,遵循单一意图原则。 输出: 返回执行流程的执行结果,包含操作状态和输出数据。
input_params参数,支持创建/查询/导出操作工具自动识别并应答常见确认提示:
# 示例
if b'Do you want to' in output:
os.write(master_fd, b'y\n')
if b'Are you sure' in output:
os.write(master_fd, b'y\n')
if b'Continue?' in output:
os.write(master_fd, b'y\n')
输入: 用户提供自动应答机制所需的指令和必要参数。 处理: 按照skill规范执行自动应答机制操作,遵循单一意图原则。 输出: 返回自动应答机制的执行结果,包含操作状态和输出数据。 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:方式在非交互环境、中执行编程任务、支持自动应答与文、面向个人开发者的、代码执行工具、在非交互环境中以、方式运行编程任务、核心能力、适配非、项目文件同步与结、果回传、可配置超时与清理等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。
input_params参数,支持创建/查询/导出操作对项目自动执行代码审查,识别潜在问题。
from code_runner import run_code_task
result = run_code_task(
workdir='/path/to/project',
prompt='审查代码库,识别潜在 Bug 和改进点',
user='developer',
timeout=300
)
print(result)
自动执行代码重构任务。
result = run_code_task(
workdir='/path/to/legacy-app',
prompt='将数据库访问层从原生 SQL 重构为 ORM 模式',
user='developer',
timeout=600
)
添加新功能并自动测试。
result = run_code_task(
workdir='/path/to/api-service',
prompt='''
添加用户资料管理的 REST 端点:
- GET /api/users/{id}/profile
- PUT /api/users/{id}/profile
- 包含输入验证和错误处理
- 添加单元测试
''',
user='developer',
timeout=600
)
# 确认 Python 版本
python3 --version # 需要 3.8+
# 依赖说明
which claude
# 赋予脚本执行权限
chmod +x scripts/run_code.py
通过 Python API:
from code_runner import run_code_task
result = run_code_task(
workdir='/path/to/project',
prompt='实现一个简单的健康检查端点',
user='developer',
timeout=300
)
print(result)
通过命令行:
python3 scripts/run_code.py /path/to/project "实现健康检查端点"
result = run_code_task(
workdir='/path/to/project',
prompt='''
1. 审查代码库
2. 识别安全漏洞
3. 修复发现的问题
4. 添加相应测试
''',
user='developer',
timeout=600 # 10 分钟
)
run_code_task(workdir, prompt, user='developer', timeout=300)
参数说明:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
workdir | str | 必需 | 项目工作目录 |
prompt | str | 必需 | 自然语言任务描述 |
user | str | 'developer' | 执行用户 |
timeout | int | 300 | 超时时间(秒) |
返回值:
| 类型 | 说明 |
|---|---|
| str | 合并的 stdout 和 stderr 输出 |
# 默认执行用户
export CODE_RUNNER_USER="developer"
# 默认超时时间
export CODE_RUNNER_TIMEOUT="300"
# 临时目录位置(可选)
export CODE_RUNNER_TEMP_DIR="/tmp/code-runner"
| 配置项 | 默认值 | 说明 |
|---|---|---|
CODE_RUNNER_USER | developer | 默认执行用户 |
CODE_RUNNER_TIMEOUT | 300 | 默认超时(秒) |
CODE_RUNNER_TEMP_DIR | /tmp/code-runner | 临时目录 |
好的任务描述应包含:
# 好的描述(具体明确)
prompt='''
重构 src/auth/login.py:
- 将密码比对改为 bcrypt 哈希
- 添加登录失败限流(5次/分钟)
- 增加异常日志记录
- 遵循 PEP 8 规范
'''
# 不好的描述(过于模糊)
prompt='修复登录问题'
| 任务类型 | 建议超时 |
|---|---|
| 简单修改 | 300 秒(5分钟) |
| 功能开发 | 600 秒(10分钟) |
| 大规模重构 | 1200 秒(20分钟) |
| 全项目审查 | 1800 秒(30分钟) |
# 创建专用执行用户(推荐)
sudo useradd -m -s /bin/bash code-runner
# 已知限制
sudo chown -R code-runner:code-runner /path/to/projects
# 使用该用户执行
export CODE_RUNNER_USER="code-runner"
# 工具自动清理临时文件,但可手动确认
import os
temp_dir = os.environ.get('CODE_RUNNER_TEMP_DIR', '/tmp/code-runner')
if os.path.exists(temp_dir):
# 检查是否有残留
remaining = os.listdir(temp_dir)
if remaining:
print(f"发现残留临时文件: {remaining}")
确保脚本有足够权限创建临时目录、切换文件所有权、切换用户:
# 以 root 或 sudo 运行
sudo python3 scripts/run_code.py /path/to/project "任务描述"
确认代码 CLI 已安装且在系统 PATH 中:
which claude
# 如果未找到,安装:
npm install -g @anthropic-ai/claude-code
增加超时时间:
result = run_code_task(
workdir='/path/to/project',
prompt='复杂任务描述',
timeout=600 # 10 分钟
)
在脚本中添加新的提示模式:
# 编辑 scripts/run_code.py
if b'new prompt text' in output:
os.write(master_fd, b'y\n')
免费版需要 Unix-like 环境(Linux/macOS),因为使用 PTY 功能。Windows 建议在 WSL 中使用。
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Python 3.8+ | 运行时 | 必需 | python.org |
| 代码 CLI | CLI 工具 | 必需 | npm install -g @anthropic-ai/claude-code |
| LLM API | API | 必需 | 由代码 CLI 内置 LLM 提供 |
| pty 模块 | Python 标准库 | 必需 | Python 自带 |
export ANTHROPIC_API_KEY="your-api-key"
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
输入:用户提供操作指令和必要参数
输出:返回执行结果,包含操作状态和输出数据
用户: 执行核心功能
Skill: 正在执行核心功能...
Skill: 执行完成,结果如下: 操作成功