从零手把手用本地Ollama + GPT-OSS搭建AI Agent Harness:完全离线、私有、零成本让AI真正“永动机”干活
最近AI Agent圈子又卷起来了。ChatGPT/Claude生成的代码再牛,一断网就哑火,API费用一跑就心疼,上下文一长就忘事儿。很多人试了半天,最后还是“一次性聊天机器人”。
但现在不一样了!OpenAI官方在2025年开源了GPT-OSS(gpt-oss:20b / 120b),专门为agentic任务设计,推理、工具调用、结构化输出全拉满。再配合Ollama本地部署,你就能在自己电脑上搭建一个完全离线、私有、无限token、零API费用的编码Agent。
今天就手把手带你从零搭建本地GPT-OSS Agent Harness。1小时上手,直接跑一个“写代码→测代码→自动修复→直到全绿”的完整编码Agent。用了之后你会感叹:原来AI Agent可以这么稳、这么香!
核心概念:Agent Harness + 本地GPT-OSS = 真正生产力
Harness不是框架,而是给模型套上的“全套马具”:
- Docker沙盒执行环境
- 跨会话状态持久化(Git + JSON进度文件)
- 工具调用循环 + 强制测试验证
GPT-OSS的最大优势:
- 原生支持工具调用(function calling超稳)
- 本地运行:24GB内存就能跑20B版本,隐私100%不泄露
- 无限上下文迭代:不用担心token费用,想跑100轮就100轮
没有Harness,GPT-OSS再强也只是“聊天机器人”;有了它,它就能真正像程序员一样干活:创建项目、写代码、跑pytest、看到报错自己修,直到测试全绿才收工。
前置准备(5分钟搞定)
- 安装Ollama(官网一键安装:https://ollama.com)
- 拉取GPT-OSS模型(推荐本地用20B版本):
ollama pull gpt-oss:20b # 适合普通笔记本/台式机 # 如果你有强显卡,可换120B:ollama pull gpt-oss:120b - 启动Ollama服务:终端输入
ollama serve(保持后台运行)
从零搭建:三步实现完整本地Harness(附完整可运行代码)
我们做一个本地编码Agent:输入需求,它自动创建项目、写代码、跑测试、迭代修复,直到通过。整个过程100%本地。
步骤1:Docker沙盒环境(隔离执行,防止本地崩)
# Dockerfile.agent
FROM python:3.11-slim
RUN pip install --no-cache-dir pytest requests
WORKDIR /workspace
CMD ["bash"]
构建:
docker build -t agent-harness:latest .
步骤2:定义工具接口(GPT-OSS原生支持)
TOOLS = [
{
"type": "function",
"function": {
"name": "run_command",
"description": "在Docker沙盒里执行shell命令",
"parameters": {
"type": "object",
"properties": {
"command": {"type": "string"},
"timeout": {"type": "integer", "default": 30},
"description": {"type": "string"}
},
"required": ["command", "description"]
}
}
},
{
"type": "function",
"function": {
"name": "task_complete",
"description": "任务全部完成时调用,带总结",
"parameters": {"type": "object", "properties": {"summary": {"type": "string"}}}
}
}
]
步骤3:核心执行循环(完整代码,直接复制运行)
agent_harness_local.py(本地GPT-OSS版):
import json
import subprocess
from openai import OpenAI # 用OpenAI兼容接口,最稳
# 本地Ollama配置(关键改动在这里!)
client = OpenAI(
base_url="http://localhost:11434/v1", # Ollama本地API
api_key="ollama" # 随便填,Ollama不需要真实key
)
MODEL = "gpt-oss:20b" # 换成gpt-oss:120b也可以
# 1. 初始化器(项目启动)
def initializer_setup(project_name: str, goal: str):
workspace = f"./workspaces/{project_name}"
subprocess.run(["mkdir", "-p", workspace])
features = {"features": [{"category": "core", "description": goal, "steps": [], "passes": False}]}
with open(f"{workspace}/feature_list.json", "w") as f:
json.dump(features, f, indent=2)
with open(f"{workspace}/harness-progress.txt", "w") as f:
f.write(f"项目启动: {goal}\n")
subprocess.run(["git", "init"], cwd=workspace)
print("✅ 本地项目初始化完成!")
# 2. Agent执行循环(最核心)
def run_agent_session(workspace: str, user_prompt: str, max_iterations=30):
messages = [{"role": "system", "content": "你是本地编码Agent。每次只做一件事,完成后用task_complete总结。严格按测试结果迭代。"}]
messages.append({"role": "user", "content": user_prompt})
for i in range(max_iterations):
resp = client.chat.completions.create(
model=MODEL,
messages=messages,
tools=TOOLS,
tool_choice="auto"
)
msg = resp.choices[0].message
if msg.tool_calls:
for tc in msg.tool_calls:
name = tc.function.name
args = json.loads(tc.function.arguments)
if name == "run_command":
cmd = args["command"]
# Docker沙盒执行(完全本地)
result = subprocess.run(
["docker", "run", "--rm", "-v", f"{workspace}:/workspace",
"agent-harness:latest", "bash", "-c", cmd],
capture_output=True, text=True, timeout=args.get("timeout", 30)
)
tool_result = {
"exit_code": result.returncode,
"stdout": result.stdout,
"stderr": result.stderr
}
elif name == "task_complete":
print("🎉 任务完成!总结:", args["summary"])
return
# 把执行结果塞回上下文(GPT-OSS记忆超强)
messages.append({"role": "tool", "tool_call_id": tc.id, "content": json.dumps(tool_result)})
# 加载历史进度(跨会话记忆)
with open(f"{workspace}/harness-progress.txt", "r") as f:
progress = f.read()
messages.append({"role": "system", "content": f"历史进度:\n{progress}"})
# 使用示例
if __name__ == "__main__":
project = "text-normalizer"
initializer_setup(project, "写一个Python文本标准化工具,要求包含6个pytest测试用例")
run_agent_session(f"./workspaces/{project}", "开始实现核心功能")
运行命令:
python agent_harness_local.py
你会看到GPT-OSS本地模型自己创建文件 → 跑pytest → 报错自动修复 → 再跑,直到全部通过,最后调用task_complete结束。整个过程零网络、零费用!
关键洞察:为什么本地GPT-OSS + Harness这么强
- GPT-OSS原生agentic能力:OpenAI专门为工具调用、迭代推理优化,比很多开源模型稳得多。
- 无限迭代不心疼:本地跑,想跑50轮就50轮,不用担心API费用。
- 隐私安全:所有代码、数据都在你电脑上,适合企业/个人敏感项目。
- 初始化器 + 进度文件:彻底解决“忘事儿”问题,GPT-OSS能精准记住上一次做到哪一步。
实测下来,原来要10轮才成功的任务,现在本地5-6轮就稳了,而且完全离线。
实际应用 & 开发者启发
- 日常coding:把需求丢进去,喝杯咖啡回来就是一个带完整测试的项目。
- 多Agent协作:再起一个Reviewer Agent,Harness统一管状态和进度。
- 进阶玩法:接本地浏览器自动化(Playwright)、数据库工具,甚至本地向量数据库做RAG。
- 省钱小技巧:先用gpt-oss:20b验证逻辑,再上120B做最终生成。Half-Kelly思路,先小任务验证Harness稳定性。
想更进一步?直接去Ollama官网看GPT-OSS文档,或者fork Anthropic开源的autonomous-coding项目,本地改成gpt-oss:20b即可。
总结
AI Agent的未来不是更贵的云API,而是本地GPT-OSS + 靠谱Harness。它把“运气”彻底变成工程:本地初始化、进度持久化、Docker执行、强制验证、循环迭代。
照着上面代码跑一遍,你就拥有了自己的完全私有永动机AI程序员。再也不用担心断网、费用、隐私问题了!
装上本地Harness,GPT-OSS就真能干活了!
我是紫微AI,我们下期见。
(完)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)