<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Internals on yzchen.space</title>
    <link>https://www.yzchen.space/tags/internals/</link>
    <description>Recent content in Internals on yzchen.space</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 09 Jul 2026 12:00:00 +0800</lastBuildDate>
    <atom:link href="https://www.yzchen.space/tags/internals/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>用 Pi 学习 Agent 怎么运行</title>
      <link>https://www.yzchen.space/posts/20260709/learning-agent-harness-with-pi/</link>
      <pubDate>Thu, 09 Jul 2026 12:00:00 +0800</pubDate>
      <guid>https://www.yzchen.space/posts/20260709/learning-agent-harness-with-pi/</guid>
      <description>&lt;h2 id=&#34;pi-是学习-harness-的好帮手&#34;&gt;pi 是学习 harness 的好帮手&lt;/h2&gt;&#xA;&lt;p&gt;想搞懂一个 agent 到底怎么跑起来，最好的办法不是读别人的文章，而是拿一个真正可观察的 agent 自己跑一遍。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;agent = model + harness&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;model&lt;/strong&gt; 做的事很单纯——收到一个 &lt;code&gt;messages&lt;/code&gt; 列表，返回一段文本。它不知道文件系统在哪、不知道你项目里有什么、不知道上一次对话发生了什么。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;harness&lt;/strong&gt;（中文是缰绳还是线束什么的，随便把，反正是把模型和外部环境连起来的那一层）是让模型&amp;quot;变聪明&amp;quot;的关键：它把模型包进一个循环，负责拼装上下文、调用工具、把结果塞回下一轮对话。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;harness 的核心是一个循环：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;拼装 &lt;code&gt;system prompt&lt;/code&gt; + 历史消息 → HTTP 请求体&lt;/li&gt;&#xA;&lt;li&gt;发给模型 API，拿到响应&lt;/li&gt;&#xA;&lt;li&gt;解析响应——是普通文本还是 tool call？是 tool call 就执行&lt;/li&gt;&#xA;&lt;li&gt;把执行结果塞进下一轮的 &lt;code&gt;messages&lt;/code&gt;，回到第 1 步&lt;/li&gt;&#xA;&lt;li&gt;模型不再调工具，结束&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;想理解 agent，就得理解这个循环。而 pi 是学这个最好的工具。&lt;/p&gt;&#xA;&lt;h2 id=&#34;例如可以让它帮你理解-harness-过程因为它极度透明&#34;&gt;例如可以让它帮你理解 harness 过程，因为它极度透明&lt;/h2&gt;&#xA;&lt;p&gt;大多数 agent 工具把和模型的对话过程藏起来，你只能看到最终输出的文本。pi 不一样：它把整个生命周期都暴露成事件——session 启动、消息拼装、API 请求发出去之前、响应回来之后、工具执行……每一个节点你都能插手。&lt;/p&gt;&#xA;&lt;p&gt;换句话说，harness 在 pi 里不是黑盒，而是一组你能监听的事件。理解 agent 怎么运行，本质上就是理解 harness 在那个循环里做了什么——而 pi 让你直接看见它，甚至改写它。&lt;/p&gt;&#xA;&lt;h2 id=&#34;比如我们可以让它展示在请求大模型时发送的-http-内容&#34;&gt;比如我们可以让它展示在请求大模型时发送的 HTTP 内容&lt;/h2&gt;&#xA;&lt;p&gt;一个直接的例子：让 pi 展示它发给大模型 API 的完整请求。我写了一个 extension &lt;code&gt;model-api-inspector&lt;/code&gt; 做这件事——监听 provider 的请求 / 响应事件，把每次调用的 request body 和 response body 都渲染到终端里：&lt;/p&gt;</description>
    </item>
    <item>
      <title>pi System Prompt 构成详解</title>
      <link>https://www.yzchen.space/posts/20260630/pi-system-prompt-internals/</link>
      <pubDate>Tue, 30 Jun 2026 12:00:00 +0800</pubDate>
      <guid>https://www.yzchen.space/posts/20260630/pi-system-prompt-internals/</guid>
      <description>&lt;p&gt;pi 的 system prompt 采用&lt;strong&gt;分层拼装&lt;/strong&gt;机制，启动时按固定顺序叠放各层，最终拼接为发送给 LLM 的完整系统提示。&lt;/p&gt;&#xA;&lt;h2 id=&#34;拼装顺序&#34;&gt;拼装顺序&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;┌─────────────────────────────────────────────┐&#xA;│  ① 基础系统提示 (pi 内置)                     │&#xA;│     角色、工具说明、行为准则、文档路径           │&#xA;│     ↓ 可被替换                                │&#xA;│  ② SYSTEM.md (如存在)                        │&#xA;│     完全替换①，而非追加                        │&#xA;│     ~/.pi/agent/SYSTEM.md 或 .pi/SYSTEM.md    │&#xA;│     ↓                                        │&#xA;│  ③ APPEND_SYSTEM.md (如存在)                  │&#xA;│     追加在②之后                                │&#xA;│     ↓                                        │&#xA;│  ④ 上下文文件                                 │&#xA;│     AGENTS.md / CLAUDE.md 全部拼接            │&#xA;│     来源：全局 + 沿目录树向上收集                │&#xA;│     ↓                                        │&#xA;│  ⑤ 技能列表 (XML)                             │&#xA;│     仅名称 + 描述，遵循 Agent Skills 规范       │&#xA;│     ↓                                        │&#xA;│  ⑥ 最终 System Prompt → 发送给 LLM            │&#xA;└─────────────────────────────────────────────┘&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;工具-schema-不在-system-prompt-中&#34;&gt;工具 Schema 不在 system prompt 中&lt;/h3&gt;&#xA;&lt;p&gt;工具定义（&lt;code&gt;read&lt;/code&gt;、&lt;code&gt;write&lt;/code&gt;、&lt;code&gt;edit&lt;/code&gt;、&lt;code&gt;bash&lt;/code&gt; 及扩展注册的自定义工具）作为 API 请求的 &lt;code&gt;tools&lt;/code&gt; 参数单独传递，&lt;strong&gt;不进入 system prompt 正文&lt;/strong&gt;。system prompt 中只包含工具的简要描述说明。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
