真实编码Agent
Codex、Claude Code与Copilot的公开机制
沿着对象与状态理解本章
比较编码产品时,先使用同一条公开的可诊断链:上下文组成、模型提议、宿主执行、结果回填、状态恢复。闭源产品未公开的内部机制保持未知;教学泳道不是对三款产品逐行源码的共同断言。
下方图解的固定输入在“输入与适用条件”中声明。它用于解释本章机制,不与本章其他独立例子的数值暗中接续。
把一个Agent任务拆成真正发生的几轮
同一句用户任务,为什么可能调用模型不止一次?
LLM生成下一步提议,宿主执行获准的动作,把结果再交给LLM。这是外层任务循环;每次模型调用内部还要经历逐Token生成。外层的一轮工具行动不等于内部生成一个Token,两种“循环”不能混用。
输入与适用条件:构造的只读教学任务:文件config.txt含timeout=30。泳道展示职责边界,不声称调用了真实商业API;数据和动作顺序固定。
1 / 8 · 1. 用户任务:读config.txt中的timeout
窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。
模型尚未看到磁盘文件。先区分用户给的任务与环境真实内容。
未读取默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。
为什么需要
模型可以借助工具获得新证据,而不把一切都塞入参数。
怎样实现
按请求、校验、执行、结果回填、继续决策组织循环。
可能的代价与误解
忘记回填工具结果会让模型重复请求;把输出文本当执行证明会误报完成。
如何判断是否做对
对照每轮模型输入和工具日志,确认结果与call_id匹配。
产品机制与公开证据
Codex、Claude Code、Copilot包含客户端、模型、工具和服务,并持续变化。公开文档说明能力,开源代码说明某版本实现,一次日志只证明某次运行。不能从界面表现推断隐藏Prompt,也不能把CLI规则套用到所有IDE或云端。[S004][S068][S076]
本章以核验日2026-10-17可获得的资料解释机制,不保证所有账号与版本相同。具体源码文件名、模型名单与默认阈值不在未核验时写成事实。
Codex:每轮输入怎样形成
Codex公开Agent Loop描述了输入准备、模型输出分派、工具执行和结果回填。搜索、文件内容、补丁与测试结果是在循环中动态进入上下文,不是用户初始Prompt天然包含的全部知识。[S004]
对假想exclude任务,第1轮选择搜索,第2轮看到匹配后读代码,第3轮生成修改,第4轮检查测试。每轮可见内容不同,压缩前后也不同。因此排查失败要问“此时实际看到了什么”,而不只问“最初要求写得够不够长”。
开源仓库可用于跟踪配置、会话、消息构建、工具分派与状态保存。本书没有审计某个完整提交,不把文章中历史文件路径当当前固定接口。[S066]
App Server与托管Harness
Codex App Server公开说明以双向协议连接客户端与核心,并用Thread、Turn、Item组织交互。应理解长期会话、一次请求推进和中间事件的层次,而不只记字段名。客户端断线、取消、审批和重连都需要被表达。[S064]
原创启发:界面展示进度不应成为任务事实的唯一存储。终端与桌面界面可共享核心,但权限和任务状态必须稳定。托管Agents API把部分会话、编排和恢复交给服务,应用仍要提供工具与执行边界。[S067]
Harness Engineering:环境也能提高质量
OpenAI的工程文章来自特定团队案例,强调知识在仓库中有组织地可发现,重要边界由可执行检查维护,而不是把全部规则堆进巨大入口文件。不能把案例结果外推成所有项目的效率承诺。[S065]
原创应用:入口告诉Agent项目结构、关键约束和测试入口;领域规则放相应目录;稳定且重要的限制用测试和静态检查落实。对exclude,明确路径相对仓库根还是配置目录,比反复写“你是专业工程师”更有用。
Claude Code:上下文与记忆
官方说明围绕获取上下文、行动、验证组织工作。长会话会管理工具结果和历史;Skills可以按需展开;子Agent可在独立上下文完成工作后返回结果。这是Harness机制,不是模型注意力结构。[S068][S069][S071]
CLAUDE.md、自动记忆与AGENTS.md支持应看版本和配置。当前文档描述有条件的AGENTS.md加载,不能写成所有版本始终读取,也不能沿用永远不支持的旧结论。项目指令与自动记忆均属于上下文,不是不可违反的程序配置。[S070]
子Agent不应默认获得父Agent所有历史和权限。委派要给目标、边界、证据要求与结果格式。主Agent收到摘要仍要判断是否遗漏关键限制。Hooks在生命周期节点执行确定性动作;权限系统限制资源,Skill不能代替这些边界。[S071][S073][S074]
Copilot:先确认使用表面
Copilot CLI、IDE交互与其他Agent能力不完全相同。Instructions、Skills、自定义Agent、Hooks、MCP、插件各有职责与支持范围,不能因为一个表面支持就推断全部支持。[S076][S079]
CLI提供上下文查看和压缩能力,但一次压缩输出不能证明内部算法。自定义Agent组织角色配置,Skill组织任务方法和资源,插件负责组合分发。记忆跨哪些任务生效、如何验证证据,要看当前产品规则。[S077][S080][S081][S082]
程序化调用还要处理退出码、输出结构、授权和非交互行为。终端最后一行“完成”不足以判脚本成功,应核验目标文件与测试。[S083]
三产品对照实验
原创实验固定仓库、Bug与验收,记录首次读取、必要证据、修改范围、工具失败、压缩、委派、总成本与结果。端到端比较允许模型和Harness不同;机制比较则应尽量固定变量。不能把组合差异全部归因于模型。
基线代码、任务与授权:
客户端、模型、配置、日期:
实际证据与变更:
运行过的验证:
压缩、委派和恢复事件:
成功、失败或阻塞:
总成本、耗时、人工接管:
自检:界面没显示读取,就证明模型没看到吗?不能,可能默认注入。源码存在功能就代表当前能用吗?不能,还受发布版本、后端和权限影响。
逐项中文讲义
保留拓展阅读目录编号与A/B/C优先级;每项包括机制解释、边界与原创练习。
A6.1 · Codex输入组装与执行循环
对应资料:Unrolling the Codex Agent Loop
Codex的公开循环把输入准备、模型输出、工具执行与结果回填连接起来。模型可以提出搜索或修改动作,Harness负责分派、权限与状态;这不是模型直接拥有操作系统访问能力。
本条关注每轮输入的变化:规则与目标可能稳定,源码片段、错误日志和已完成状态不断新增。长任务中的压缩又会改变历史的表示方式,因此不能只检查最初一句用户Prompt。
输入中工具不可见时不能归因于模型漏选
输入与条件。实际请求只含read,不含search。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1请求清单 | 确认search未暴露 | 模型无法按正常工具定义调用它。 |
| 2修入口 | 查工具计划、配置与权限 | 先恢复正当可用能力。 |
| 3再评测 | 工具确实可见仍误选时 | 才研究路由语义。 |
把过程连起来。诊断应沿可观察输入链,而不是只看最终未调用现象。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:为同一Bug画出读取前、测试失败后、压缩后的三份输入摘要,标明哪些事实新增、哪些仍未验证。再删除一次工具观察,指出哪些后续结论失去依据。
完成标准是能解释行为与证据之间的因果关系,而不是猜测隐藏系统指令或把一次日志当成所有版本的固定实现。
拓展阅读目录事实依据 [S004] · 练习与工程推导为本书独立编写。
A6.2 · Codex App Server与会话原语
对应资料:Unlocking the Codex Harness
Codex App Server文章介绍核心运行能力与客户端之间的接口,并使用Thread、Turn和Item等原语组织会话与事件。这些概念帮助区分持续会话、一次交互及过程中产生的不同输出。
界面显示与执行事实应该分开。客户端断线后,屏幕没有更新不代表任务一定停止;收到一个进度事件也不代表最终状态已经完成。具体恢复行为依协议与实现而定。
Thread与Turn的生命周期差异
输入与条件。同一线程先问解释配置,再问修复。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1Thread | 承载连续会话身份 | 包含多个交互回合。 |
| 2Turn | 一次用户请求推进直到结束或中断 | 内部仍可多次模型调用。 |
| 3工具步骤 | 每个turn可有多次执行 | 不能把turn数当LLM请求数。 |
把过程连起来。术语必须按具体接口核对,示意区分会话、用户回合和模型步。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:设计“模型请求审批→用户批准→工具执行→结果显示”的事件顺序,指出哪些事件需要持久化、哪些只是展示。再考虑客户端在批准后断线时如何避免重复动作。
不要把文章中的接口原语当成所有Agent框架的统一术语,也不要由界面相似推断后端完全相同。
拓展阅读目录事实依据 [S064] · 练习与工程推导为本书独立编写。
A6.3 · 面向Agent的工程环境
对应资料:Harness Engineering
Harness Engineering讨论如何为Agent构建容易发现知识、执行工作和验证结果的环境。它来自特定团队的实践,不能把其产出规模或效率外推到任意仓库。
入口指导适合提供地图,详细规则放在相关位置,稳定的重要边界可以用测试或静态检查落实。模型因此更容易取得必要信息,而不是通过一份无限增长的说明书记住一切。
仓库可读性怎样减少反复搜索
输入与条件。项目有一个短README链接构建规则、测试入口和关键模块。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1定位 | 从README找到测试命令 | 不用猜五种工具。 |
| 2按需读 | 只读当前模块规则 | 不加载整库文档。 |
| 3验证 | 运行命令并看当前结果 | 文档提供入口,不替代执行证据。 |
把过程连起来。工程环境的价值在信息可发现且能验证,而不是规则越长越好。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:把假想项目的规则分成全局约束、模块事实、任务临时状态和可执行检查,分别决定存放位置。检查“必须保持兼容”是否有相应测试,而不只是口号。
完成标准是说明每项环境改造具体减少哪种失败。没有真实问题支持的复杂治理,不应因为冠以Harness名称就默认保留。
拓展阅读目录事实依据 [S065] · 练习与工程推导为本书独立编写。
B6.4 · 如何阅读Codex的公开实现
对应资料:OpenAI Codex Repository
Codex公开仓库适合研究配置、会话、输入构建、工具分派与状态管理之间的连接。本书没有对某个提交进行逐文件审计,因此不列未经确认的当前源码符号作为事实。
读源码应固定版本,从可运行入口向下追踪,再用测试或日志验证理解。文档中的架构描述与某一提交实现可能存在时间差,文件名也会变化。
固定commit再追一条调用链
输入与条件。选择已存档Codex提交,查看router与registry。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1锁版本 | 记录完整commit与路径 | 避免跨版本拼接结论。 |
| 2追输入 | ResponseItem如何转ToolCall | 检查匹配的类型分支。 |
| 3追输出 | ToolInvocation怎样到dispatch | 同时保留错误/取消路径。 |
把过程连起来。只读一个成功分支不足以解释整个执行系统。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:选一个只读工具调用,追踪“定义→暴露给模型→参数接收→执行→结果回传”五个位置,记录真实路径与提交。不要先扫描全部仓库后再猜调用关系。
这一条的目标是获得可复核的源码阅读方法,不是让读者依赖英文仓库才能理解前面的中文机制。
拓展阅读目录事实依据 [S066] · 练习与工程推导为本书独立编写。
B6.5 · 托管Harness的职责边界
对应资料:Introducing the Agents API
托管Agents API把部分Harness与执行基础设施交给服务方,应用仍需提供业务目标、工具和环境。托管并不意味着用户的数据边界、授权与验收自动被正确设计。
应区分服务负责的会话或恢复能力,与应用负责的外部副作用、业务规则和身份权限。一个调用被接受,与长任务最终成功,是不同状态。
托管执行环境不替应用决定业务授权
输入与条件。服务托管会话和工具进程,用户应用仍拥有项目权限表。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1服务能力 | 运行和持久化 | 解决基础设施部分问题。 |
| 2应用授权 | 校验用户u7只读P1 | 不能让模型自填admin绕过。 |
| 3故障责任 | 工具业务失败仍要解释与恢复 | 托管不等于自动正确。 |
把过程连起来。职责迁移要明确边界,不把产品名当完整可靠性保证。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:把本地Agent迁移到托管环境,列出仍必须保留的资源授权、结果查询、错误处理和成本上限。再检查哪些本地路径或凭据不应直接复制到远端。
产品能力与生命周期会变化。本书说明职责分层,不把某次发布的套餐、限额或模型清单写成永久事实。
拓展阅读目录事实依据 [S067] · 练习与工程推导为本书独立编写。
A6.6 · Claude Code工作机制
对应资料:How Claude Code Works
Claude Code官方说明把获取上下文、行动和验证组织为循环。工具让模型读取或改变环境,观察再影响下一步;长会话管理属于产品Harness,而不是模型自动修改了参数。
理解一次运行要看当前已读内容、工具结果、会话状态以及是否使用子Agent。用户界面展示的最后回答不能替代实际补丁和测试记录。
Claude Code式循环先观察再继续
输入与条件。只读config得到timeout=3,测试日志显示请求耗时4秒。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1事实取得 | 两份工具结果进入上下文 | 可形成候选原因。 |
| 2决策 | 模型可能建议检查超时定义 | 不是文件一读就自动写5。 |
| 3执行约束 | 若用户只读则不修改 | 权限始终独立。 |
把过程连起来。此为公开Agent循环的教学场景,不冒充一次Claude实测。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:给一个小Bug任务,记录第一次修改之前取得了哪些证据,修改后执行了哪些验证。若模型直接宣称完成,检查文件与测试是否支持该声明。
完成标准是能解释公开机制与观察到的行为,不据此推断私有Prompt、未公开压缩算法或所有账号都具有相同配置。
拓展阅读目录事实依据 [S068] · 练习与工程推导为本书独立编写。
A6.7 · Claude Code的上下文组成
对应资料:Explore the Context Window
上下文窗口文档帮助区分项目指导、会话消息、工具定义、文件内容与工具结果等信息来源。窗口大小描述容量,不等于每条内容都会被准确使用。
查看上下文占用能发现某类内容过多,但比例本身不能说明价值。一个短小的兼容性要求可能比很长的日志更重要;工具结果清理也可能删掉未来需要的线索。
上下文由不止当前聊天组成
输入与条件。本轮有用户任务、仓库指令、工具schema和旧工具日志。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1列对象 | 分别统计来源与用途 | 知道成本是谁贡献。 |
| 2去无关 | 旧大日志只留证据路径与必要状态 | 不要丢当前限制。 |
| 3复核 | 模型实际收到的与UI历史不同 | 不能只凭聊天滚动条判断上下文。 |
把过程连起来。上下文管理是数据选择与组织,不只是聊天摘要。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:为同一任务建立“必要约束、当前证据、可外置历史”三栏,比较压缩前后是否仍可回答关键问题。不要仅以Token下降作为成功标准。
产品的具体显示和自动处理规则应按当前版本核实。本书不假设所有内容都以相同角色、相同顺序注入。
拓展阅读目录事实依据 [S069] · 练习与工程推导为本书独立编写。
A6.8 · 项目指令与自动记忆
对应资料:How Claude Remembers Your Project
项目指令与自动记忆是两种不同的信息来源。前者表达明确指导,后者保存可在以后使用的内容;它们作为上下文并不具有确定性程序的强制执行能力。
Claude Code对CLAUDE.md、AGENTS.md及记忆的支持存在版本和配置条件,不能写成“始终读取全部同名文件”或“永远不支持某文件”的绝对结论。
项目规则与个人偏好冲突
输入与条件。个人偏好“尽量自动修复”,项目当前任务明确只读审查。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1范围 | 个人长期偏好更宽泛 | 不自动覆盖当前具体限制。 |
| 2执行 | 只读检查并提出建议 | 不实际写入。 |
| 3记忆维护 | 偏好可以保留但带适用条件 | 无需因一次只读任务删除所有自动化偏好。 |
把过程连起来。持久信息的作用域与当前授权需要同时判断。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:在测试项目中放入一条无害且可观察的局部规则,检查加载范围、文件共存与新会话行为。将“文件存在”“已加载”“已遵循”分别记录。
记忆还应检查过期和冲突。旧项目约定被读到,不代表它适用于当前代码版本,更不应自动覆盖用户本次明确要求。
拓展阅读目录事实依据 [S070] · 练习与工程推导为本书独立编写。
A6.9 · 子Agent的隔离与权限
对应资料:Create Custom Subagents
子Agent可提供独立上下文和专门配置,帮助隔离探索过程。独立上下文减少主会话噪声,也意味着返回摘要可能丢失证据或限制条件。
父Agent的全部历史、工具与权限是否继承,必须依据产品设置,不能仅因它是“子Agent”就假定完全共享。角色名称也不是实际能力或权限证明。
子Agent交接没有自动复制所有历史
输入与条件。父上下文有“禁止联网”,子任务只写“寻找资料”。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1缺失 | 子任务消息没含限制 | 可能选择不适合的动作。 |
| 2补交接 | 带目标、禁止项和可读证据 | 保留最小必要上下文。 |
| 3权限层 | 对子Agent禁用网络工具 | 比只写一句禁止更稳固。 |
把过程连起来。独立上下文节约成本也引入交接责任。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:委派一次只读路径调查,明确问题、范围、已知事实和返回证据。检查子Agent是否重复主Agent已完成工作,主Agent能否回溯结论。
只有独立任务边界、足够输入和可验证交接同时成立时,隔离才可能带来净收益;否则只是增加调用与信息搬运。
拓展阅读目录事实依据 [S071] · 练习与工程推导为本书独立编写。
B6.10 · Claude Code技能扩展
对应资料:Extend Claude with Skills
Skills把任务相关指导与资源组织成可按需使用的工作包。技能被发现、被加载、被正确执行是三个阶段,不能因为安装了文件就认为本次任务已经应用。
元数据影响选择,正文解释方法,附属资源提供进一步证据或脚本。不同资源应按需要展开,避免每个任务都携带全部专业细节。
技能名出现不等于正文已读
输入与条件。候选列表包含test-debug技能。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1发现 | 模型看到名称/描述 | 只是相关性判断入口。 |
| 2加载 | 读取完整步骤 | 此后才知道具体约束。 |
| 3执行 | 实际工具与验证日志 | 才能确认专业流程参与了任务。 |
把过程连起来。把发现、加载、执行分开追踪,定位问题才准确。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:为路径问题写两个技能描述,一个只覆盖精确关键词,一个说明语义与不适用条件;用同义任务及相邻领域测试漏选与误选。
这一条关注Claude Code中的使用边界;开放技能规范并不意味着各客户端对所有扩展字段和执行模式都完全一致。
拓展阅读目录事实依据 [S072] · 练习与工程推导为本书独立编写。
B6.11 · 执行节点与Hooks
对应资料:Automate Actions with Hooks
Hooks在明确的生命周期事件上执行程序化动作。它们适合可重复的检查、记录或自动化,不是让模型凭文字承诺一定执行某个步骤。
Hook本身也可能失败、耗时或产生副作用。应明确触发条件、输入、退出行为与错误处理,避免一次普通读取触发重型扫描。
Hook拦截提交时检查哪个版本
输入与条件。Hook运行测试v8通过,但提交前又产生v9。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1检查时刻 | 证据属于v8 | 不能自动迁移到v9。 |
| 2绑定对象 | 提交对象应与验证对象一致 | 否则重跑或阻止。 |
| 3结果处理 | Hook失败向用户/Agent返回具体原因 | 不是静默删除修改。 |
把过程连起来。确定性Hook也需要正确的对象和时序。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:设计一个只记录工具调用摘要的Hook,再比较把完整敏感输入写入日志的方案,说明后者的隐私风险。对校验Hook还应测试正常与异常路径。
不应把所有业务规则塞进Hooks。需要语义判断的部分与确定性门槛可以协作,但职责必须清楚,不能形成难以解释的隐式工作流。
拓展阅读目录事实依据 [S073] · 练习与工程推导为本书独立编写。
B6.12 · Claude Code权限控制
对应资料:Configure Permissions
权限配置控制工具或操作是否允许,和Prompt中的行为建议不同。访问目录、命令、网络及审批机制需要按产品规则配置与测试。
仅允许某工具名仍可能过宽,因为参数决定真实作用范围。允许读取工作区不代表可以读取用户全部文件;允许执行测试也不等于允许任意远端写入。
命令名允许,不代表所有参数都安全
输入与条件。允许read_file,但参数指向越界目录。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1工具层 | read_file本身可用 | 不足以决定动作合法。 |
| 2目标层 | 规范化和实际访问路径不在范围内 | 拒绝。 |
| 3返回 | 说明范围错误而不泄露文件内容 | 可让任务选择合法资料。 |
把过程连起来。授权是工具加参数加环境,不是单个名字白名单。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:列出读取源码、修改本地文件、上传产物、删除远端资源四类操作,为它们设计不同授权边界。用无害测试验证拒绝是否真正发生。
完成标准是能指出限制由哪一层执行。模型表示理解权限,不是权限隔离已经生效的证据。
拓展阅读目录事实依据 [S074] · 练习与工程推导为本书独立编写。
B6.13 · 有效的编码任务组织
对应资料:Best Practices for Claude Code
编码Agent的使用实践强调提供清晰任务、必要上下文与可验证反馈。有效任务组织不是把所有可能步骤都规定死,而是让模型知道目标与完成条件。
对简单修复,可以直接定位、修改、测试;对跨模块问题,需要更多证据与计划。相同的长模板未必适合两者。
小修直接做与复杂设计分开
输入与条件。任务A改错字,B改变任务并发状态机。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1A | 局部修改后检查 | 不用启动完整架构研究。 |
| 2B | 明确状态、竞争和恢复反例 | 需要更多分析。 |
| 3共同终点 | 满足目标并验证 | 不为固定流程强加轮次。 |
把过程连起来。复杂度由真实风险与证据决定。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:比较模糊要求、增加验收标准、再叠加长固定流程三种输入。记录实际成功、无关修改、验证与耗时,而非只看回答是否显得认真。
最佳实践是起点。用户环境、模型版本和仓库质量变化后,应重新验证其价值,不把历史技巧永久累积成冗长规则。
拓展阅读目录事实依据 [S075] · 练习与工程推导为本书独立编写。
A6.14 · Copilot CLI的执行环境
对应资料:GitHub Copilot CLI
Copilot CLI是具体的产品表面,不能与IDE扩展或其他Copilot服务的能力清单混为一谈。上下文、工具、授权和运行方式应以CLI文档及安装版本为准。
查看上下文与压缩功能可以帮助观察长会话,但一次运行不能揭示全部内部算法。程序实际执行状态仍需要文件、命令结果或结构化输出支持。
CLI的当前目录改变了可见项目
输入与条件。终端位于repoA,但用户以为在repoB。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1查工作目录 | 工具实际cwd是repoA | 从源头发现错项目。 |
| 2读文件 | 同名config内容也可能不同 | 不能只看文件名。 |
| 3修正 | 切到明确授权的目标仓库 | 再检索和分析。 |
把过程连起来。在比较模型回答前先确认执行环境身份。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:在同一小仓库记录交互式CLI任务与编辑器任务各自获得的文件范围,解释差异可能来自哪些输入来源。
完成标准是先确认使用表面,再讨论能力。不应看到某个Copilot教程支持一项功能,就推断所有客户端都同步支持。
拓展阅读目录事实依据 [S076] · 练习与工程推导为本书独立编写。
A6.15 · Copilot自定义Agent
对应资料:About Custom Agents
自定义Agent用于组织专门角色及相关配置。它与Skill不同:前者通常定义执行角色或能力边界,后者提供某类任务的专业方法与资源。
一个名为“reviewer”的Agent不天然拥有独立证据,也不保证只读。应检查实际模型、工具、作用域和交接方式。
自定义Agent职责太宽会重复工作
输入与条件。A负责分析,B负责实现,但两者指令都要求全仓库探索。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1A输出 | 已定位文件与证据 | 形成可交接结果。 |
| 2B重复 | 重新扫全库 | 成本增加且可能得不同版本。 |
| 3调整 | B先核查交接关键事实,再按缺口扩展 | 不是绝对禁止B读源码。 |
把过程连起来。职责边界应减少无意义重复,同时保留核查能力。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:设计一个只读审查者,明确它读取补丁、相关代码和测试结果,并返回具体问题与依据。再测试没有问题时是否能正常结束,而不是为了角色存在强行挑错。
自定义角色的收益应来自职责清晰和任务适配,不是角色数量。过多重叠Agent会增加重复阅读与协调成本。
拓展阅读目录事实依据 [S077] · 练习与工程推导为本书独立编写。
A6.16 · Copilot CLI的任务流程
对应资料:Using GitHub Copilot CLI
CLI工作流把用户输入、工具执行、状态展示和结束结果结合起来。理解它时应区分交互式确认、非交互自动化和任务恢复,不把某一种运行模式的默认行为推广到全部场景。
终端最后一行并不是唯一成功信号。自动化需要检查退出状态、实际环境变化和必要验证;工具失败后生成的解释不能冒充成功执行。
程序化启动任务也要检查退出状态
输入与条件。CLI输出一段漂亮总结,但进程退出码非0。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1采集 | 同时保存stdout、stderr和exit code | 不能只拿总结。 |
| 2判定 | 退出码代表运行失败或未完成 | 核查其具体含义。 |
| 3交付 | 缺少测试证据时不报告成功 | 文字输出不替代状态。 |
把过程连起来。程序调用与人工聊天都需要结果核验。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:模拟测试命令失败但Agent仍输出总结,设计脚本如何识别“已完成修改但验证失败”。保留部分成果,同时明确未通过部分。
这一条侧重操作闭环;模型能力、上下文组织和权限配置仍需结合其他条目理解。
拓展阅读目录事实依据 [S078] · 练习与工程推导为本书独立编写。
A6.17 · 区分五种定制机制
对应资料:Copilot Customization Cheat Sheet
定制能力对照表帮助区分Instructions、Skills、Agents、Hooks和MCP等扩展点。选择应根据要改变的是长期指导、专业流程、角色编排、确定性事件还是外部连接。
把所有需求塞进一种机制会造成边界混乱。例如,技能可以说明如何部署,但实际部署权限应该由工具或平台控制。
五种扩展分别解决不同需求
输入与条件。需求含项目禁止项、专业测试方法、执行检查、事件触发和角色委派。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1文字/方法 | Instructions放通用约束,Skill放专业流程 | 避免全部常驻。 |
| 2执行/时机 | Tool做检查,Hook控制何时必须运行 | 语义不同。 |
| 3角色 | Agent承接独立任务 | 不只把文件换个名字。 |
把过程连起来。组合前先分职责,避免一种机制承担所有东西。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:把代码风格、数据库迁移步骤、提交前检查、远端查询和独立审查分别匹配到合适机制,并说明不选择其他机制的理由。
完成标准不是记住名称,而是能减少重复配置。相同规则若在多处维护,发生冲突时必须知道哪个来源才是权威。
拓展阅读目录事实依据 [S079] · 练习与工程推导为本书独立编写。
B6.18 · Copilot技能加载
对应资料:About Agent Skills
Copilot Skills将可复用指导与资源提供给相关任务。支持范围随具体产品表面和版本变化,开放格式并不意味着所有实现细节完全一致。
技能入口描述影响是否被选择,正文质量影响选中后的执行。路由和专业内容应分别评测,避免把一次未加载误诊为模型读不懂正文。
技能匹配必须包括相邻反例
输入与条件。技能面向数据库迁移,任务是修改SQL注释。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1表面关联 | 都含SQL | 不代表需要迁移流程。 |
| 2真实动作 | 没有结构或数据迁移 | 通常不应加载重型迁移技能。 |
| 3边界正例 | 新增不可空列涉及现有数据 | 确需对应方法。 |
把过程连起来。词面相似不等于任务机制相同。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:准备需要技能、不需要技能和语义相近但领域不同的任务,观察加载行为与最终结果。不能只用最容易命中的示例证明设计有效。
技能不是永久参数学习,也不是强制执行脚本;涉及重要约束时仍需要测试或权限机制支撑。
拓展阅读目录事实依据 [S080] · 练习与工程推导为本书独立编写。
B6.19 · Copilot记忆与证据
对应资料:About GitHub Copilot Memory
Copilot记忆文档描述可用于后续任务的信息保留机制。记忆与当前仓库、用户或任务的适用关系需要检查,不能假设所有表面共享一份无限制永久记忆。
保存一条结论只是开始,还需要来源、有效性和冲突处理。模型曾经说过的话,不自动成为独立事实证据。
仓库记忆与当前代码冲突
输入与条件。记忆说test命令为npm test,当前项目已迁到另一个脚本入口。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1记忆召回 | 提供历史线索 | 不当成当前事实。 |
| 2读当前配置 | 核对package或构建文件 | 取得实际命令。 |
| 3更新 | 记录来源版本并失效旧条目 | 避免下次重复误用。 |
把过程连起来。有效记忆应帮助核查,而不是阻止读取新证据。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:保存一个带版本的项目约定,然后改变版本并提供新证据,检查系统是否仍误用旧记忆。分别统计正确使用、错误使用与必要时不使用。
完成标准是证明记忆改善任务,而非仅证明文件或数据库里多了一条记录。记忆维护成本也应计入收益比较。
拓展阅读目录事实依据 [S081] · 练习与工程推导为本书独立编写。
B6.20 · 插件的组合与分发
对应资料:About GitHub Copilot Plugins
插件可以组织和分发Skills、Agent、Hooks或工具连接等扩展。它主要解决能力包装与接入,不代表安装后每项能力都会被调用或自动获得授权。
插件带来的脚本、网络服务和配置属于供应链的一部分。需要检查来源、版本、权限及与已有规则的冲突。
插件包含工具,但安装不等于自动授权
输入与条件。插件分发Skill、配置和MCP服务定义。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1安装 | 文件进入环境 | 能力存在。 |
| 2发现 | 工具元数据可读 | 还未获当前任务权限。 |
| 3授权 | 限定账户、路径与动作 | 按风险启用,不因来自插件就信任所有输出。 |
把过程连起来。分发单元与安全边界不是同一件事。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:列出一个假想插件新增的文件、命令和外部连接,分别判断读取、执行和网络风险。比较只安装文档型Skill与安装可执行Hook的差别。
不要把分发便利等同于安全或正确性保证。插件升级后也应运行必要回归,而不是只确认安装成功。
拓展阅读目录事实依据 [S082] · 练习与工程推导为本书独立编写。
B6.21 · 程序化调用与工具访问
对应资料:Copilot CLI Programmatic Reference
程序化参考用于把CLI纳入脚本和自动化。关键不仅是命令能启动,还包括输入传递、输出格式、退出状态、工具授权和错误处理。
非交互场景不能依赖用户随时回答审批。需要预先限定可执行范围,并允许明确返回阻塞,而不是绕过必要确认。
自动化脚本需要记录可复现输入
输入与条件。脚本只保存一条用户提示,没有模型或仓库版本。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1复跑变化 | 默认模型和远程分支可能更新 | 结果不同原因不明。 |
| 2补记录 | 仓库版本、配置、工具集、输入与时间 | 保持必要可追踪性。 |
| 3敏感信息 | 不要直接记录凭据和完整私密Prompt | 使用最小化与脱敏。 |
把过程连起来。可复现与隐私应一起设计。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:为一个只读分析脚本定义成功、部分完成和失败三种结果,保存实际证据与退出状态。测试输出截断、工具超时和无权限情形。
完成标准是调用方能够可靠解释结果。不要解析某句自然语言“看起来像完成”来驱动部署或其他重要副作用。
拓展阅读目录事实依据 [S083] · 练习与工程推导为本书独立编写。