手写一个简单的 Claude Code

本文将带你手把手写一个简单的 Claude Code,以了解 harness 的基本原理。 openai 库 Chat Completions API 是由 OpenAI 提出的一套对话接口规范,很多模型厂商都选择兼容它(比如本文要用的 DeepSeek,接口格式和 OpenAI 几乎一模一样)。 在 Python 中,OpenAI 提供了一个叫 openai 的库,可以用来调用所有兼容该接口的模型,而不只是 OpenAI 自家的模型。 pip install openai 对话 单轮对话 以下是 DeepSeek 官方接口文档的单轮对话示例: import os from openai import OpenAI client = OpenAI( api_key=os.environ.get('DEEPSEEK_API_KEY'), base_url="https://api.deepseek.com") response = client.chat.completions.create( model="deepseek-v4-pro", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": "Hello"}, ], stream=False, # 非流式输出,一次性输出完整的响应 reasoning_effort="high", extra_body={"thinking": {"type": "enabled"}} # `thinking` 是 DeepSeek 官方额外提供的字段,原 API 并没有这一个设置 ) print(response.choices[0].message.reasoning_content) # 思考内容 print(response.choices[0].message.content) # 正文 多轮对话 上面一个单轮对话的例子,也就是说,LLM 本身并不存储上下文,需要你来记录上下文,在每一轮对话前提供给 LLM: # 第一轮对话 messages.append({'role': 'user', 'content': '你好呀,我叫 Alice'}) response = client.chat.completions.create( ... messages=messages ) messages.append(response.choices[0].message) # assistant: 你好呀,Alice!很高兴认识你 😊 # 第二轮对话 messages.append({'role': 'user', 'content': '我叫什么名字?'}) response = client.chat.completions.create( ... messages=messages ) messages.append(response.choices[0].message) # assistant: 你叫 Alice 呀~😄 刚才你告诉我的,我记得呢! 每次都把聊天记录附给 LLM,这样 LLM 就有了上下文。 ...

2026/08/15 · 10 min · 2073 words · zzy2357

Oh My OpenAgent 只显示 plan/build 两个 Agent 的修复记录

问题 装了 oh-my-openagent 之后,opencode agent list 和执行 npx oh-my-openagent doctor 都显示正常,但 opencode TUI/Desktop 的 Agent 选择器里只显示 plan 和 build,没有 Sisyphus、Prometheus、Oracle 等 OMO Agent。 这个问题在官方仓库有多人在追踪: #3456 — “[Question]: installed OMO, reopen opencode can not find Sisyphus in agents” #3835 — “[Bug]: oh-my-openagent custom agents not showing in OpenCode Desktop UI after v1.14.x update” anomalyco/opencode#30855 — “Plugin-registered Agents Unavailable after Update Operation on Opencode Desktop” 原因分析 实际导致这个症状的原因有三种,严重程度递增: 原因一:配置作用域不匹配 OpenCode 的配置文件有两个层级: 作用域 路径 优先级 全局 ~/.config/opencode/opencode.json 低 项目本地 .opencode/opencode.json(启动目录下) 高 通过 npx oh-my-openagent install 安装时,写入的是全局配置。但如果启动 opencode 的工作目录下恰好存在 .opencode/opencode.json(哪怕只有简单几行),opencode 就会优先读这个本地配置,而本地配置可能没有注册插件。 ...

2026/06/28 · 3 min · 462 words · zzy2357