最终交付是一条连续执行链
本课终点不是一个只打印动作的演示循环,而是可独立下载的本地项目。data/docs是实际原创资料,catalog声明身份和初始库存,tasks定义十七个固定任务;agent.py实现导入、工具、policy、状态、事务、引用与恢复,run.py提供同一入口,tests.py检查完整链和局部性质。读者可以打开SQLite查看实际库存、ledger、任务快照与事件。所有业务效果都留在本地文件,不发消息、不购买、不调用未配置远程服务。
八章依赖按执行顺序闭合:工具契约确定合法动作;状态机确定动作位置;policy接口选择下一步并受预算限制;幂等账本跨越失联空窗;信任边界限制危险输入;引用与回执限制结果声明;固定任务集联合评价;本章冻结来源并独立复跑。若跳过第四章直接加HTTP策略,网络异常会放大重复效果风险;若跳过第五、六章,模型可以提出越界动作或假称完成。它们不是可任意拼接的术语清单。
安装与单入口
项目只依赖Python标准库,当前实测使用Python三点九及本地SQLite,无需下载模型、安装框架或密钥。进入独立项目目录后先执行tests.py,再运行run.py demo写入一个全新输出目录。demo拒绝覆盖已有任务数据库,避免读者误把以前库存状态当初始条件;要重跑请换目录。run子命令可选择固定task-id并指定db,stop-after在若干步后停止;再次使用同一db和相同任务即可恢复。任务内容不相同则拒绝,不自动覆盖历史。
python run.py demo --output evidence-course-copy一个真实断点流程是先以reserve-camera、stop-after二保存search与document,再关闭程序;第二次去掉stop-after,从同一db继续stock和reserve。更危险的提交后中断通过固定故障任务和单元测试完成,恢复时以同一pending和幂等键读回已存回执。读者应比较库存、ledger、状态与重放,而不是只看控制台最后一行。完整命令在README列出,终端中没有手动编辑数据库去制造成功结果的步骤。
完整算例一:从17任务报告复算主张
冻结运行的evaluation.json逐条记录id、实际status、expected、passed、calls、effect_count、stock、claims、support_pass、replay_pass和result。按实际预期分组,正常info三条、reserved四条,另有缺货、拒绝、无命中、歧义、预算耗尽、重试耗尽、abstain与policy_error。十七条全部符合各自规范并不代表全部业务成功:例如零预算必须停止,未知工具必须被拒绝,提交后零重试必须暴露未确认且保留已提交效果。报告措辞必须与这些事实一致。
预留成功与提交后未确认的写入发生在各自独立数据库,不能把所有任务库存相加当同一仓库的连续运营轨迹。每个任务重新从camera三、microscope一、kit二开始,是隔离测试条件的约定。要研究真实多任务争抢,应在共享状态下另建并发与版本冲突实验;当前过期版本单元测试只验证单进程下的条件拒绝,并不提供多进程工作者抢占所有权。这个边界直接影响“系统容量”与“运营可靠性”的解释。
import json,pathlib,collections
path=pathlib.Path('evidence/frozen/evaluation.json')
d=json.loads(path.read_text())
assert d['total']==17 and d['passed']==17
assert all(r['replay_pass'] and r['support_pass'] for r in d['tasks'])
counts=collections.Counter(r['status'] for r in d['tasks'])
assert counts['info']==3 and counts['reserved']==4
uncertain=next(r for r in d['tasks'] if r['id']=='lost-reply-no-retry')
assert uncertain['status']=='retry_exhausted' and uncertain['effect_count']==1
print(dict(counts))完整算例二:替换policy后的联合门槛
设新HTTP策略在十六个任务行为正确,但一个未授权任务实际扣了库存。即使语言表达更流畅或平均调用少一次,也不满足效果安全门槛。另一个策略从不调用工具,全部返回abstain,可能没有越权效果,却无法完成正常任务;它也不满足功能门槛。合格候选必须在同一版本上同时满足功能规范、权限与效果、支持性、恢复及资源上限。不能把规则策略的安全、外部模型的流畅回答和另一个版本的低成本拼成一次联合成功。
这不是要求新policy一定逐步模仿规则策略。它可以选择不同读取顺序或合理拒答,只要符合对任务定义的规范和执行器允许前置。评价也应区分协议层必须保持的不变量与可能随策略改变的性能偏好。当前任务集对确定性工作流有明确expected,若研究开放式规划,需要先扩展任务规范和可接受路径,再运行候选;不能看到某个模型失败后临时改expected为它的输出。测试规范应独立于被测策略。
来源身份与可复现证据
run.py收据记录源码、资料、任务和policy文件的SHA256及evaluation摘要,最终冻结报告还绑定八章与项目核心证据。文档摘要绑定引用来源;任务身份绑定业务意图;幂等键绑定效果;事件链绑定恢复历史;源码摘要绑定实现版本。这五种身份各有用途,不能用一个万能哈希替代。尤其哈希一致不证明语义正确,十七任务通过也不证明未来所有输入正确;它们提供可重放的具体证据,而非无限范围的保证。
不要复用旧结果为新代码背书。如果只改policy文件、工具参数或文档,即使文件名相同,也应更新收据并重跑相关联合验收。资料同id内容改变时当前导入器拒绝旧数据库,是避免混合来源的保守选择;真实知识更新应走显式版本机制。本项目不保留密钥,不把HTTP授权头写进公开日志,远程服务配置也不当作能力证明。仅实现可用适配器并完成本机协议测试,与真实远程LLM任务评价是两件事。
失败、未运行和未实现
正式包保留development-failures说明本机监听最初受环境限制后已完成测试;固定任务内的缺货、歧义、预算耗尽和未知工具是预期行为,不应从结果表删去。远程语言模型标NOT RUN,没有自然语言理解成功率;多进程任务所有权、分布式事务、动态资料版本与通用代码沙箱未实现。当前全部效果都在单SQLite数据库,不能把局部事务保证迁移成远程邮件、报名或支付恰好一次。
若读者在新环境发现HTTP本机端口受限,应报告该检查BLOCKED,并继续运行不需监听的核心离线任务;不能把未跑过的一项改成PASS。若某个库或操作系统版本改变持久化行为,应保存环境和最小反例,再修复并生成新收据。课程交付的价值是这些失败有位置、有对象、有判据,而不是承诺程序永不失败。把边界列在报告开头,能让后续使用者清楚哪些证据可以直接复用。
两条复核路径
第一条从代码到结果:导入真实文档,驱动policy与工具,落库,故障恢复,生成引用,逐任务评价。第二条从结果回溯:用报告id打开对应数据库,重放事件链、核对ledger与库存、按SHA和行号核对摘录,再用收据确认源码和任务身份。这两个方向互相检查,避免模块各自运行却没有连成同一项目。独立复制目录运行进一步排除隐藏兄弟目录依赖,标准库项目不依赖本站构建器或在线账号。
本课程的内部review将按读者契约、模型、定义、推导、认识边界、例子、正确性、压力测试、迁移和排版逐项评分。评分不能靠汉字数或代码能启动获得;若工具效果、恢复、引用或数学存在已知硬错误,就必须先修再冻结。当前产物的能力主张限定在这条具体的离线、结构化任务链,读者完成后能建立并检验类似执行底座,尚不能据此声称构建了具有通用推理能力的模型。
candidates=[{'id':'rule','functional':True,'safe':True,'supported':True},
{'id':'fast','functional':True,'safe':False,'supported':True},
{'id':'silent','functional':False,'safe':True,'supported':True}]
accepted=[c['id'] for c in candidates if c['functional'] and c['safe'] and c['supported']]
assert accepted==['rule']
assert not any(c['id']=='fast' for c in candidates if c['safe'])
print(accepted)练习与最终验收
TRY IT YOURSELF
基础:独立目录为何重要
项目在原站点根目录能跑,为何还要复制到无兄弟课程的新目录运行?
提示 1
提示 2
对照参考解答
TRY IT YOURSELF
进阶:一个失败如何归类
远程模型没接入、本机HTTP因环境不能监听、资料注入被拒绝,分别如何记?
提示 1
提示 2
对照参考解答
TRY IT YOURSELF
挑战:设计新策略验收
新policy减少调用数但只输出无引用的自由文本,如何与当前系统比较?
提示 1
提示 2
对照参考解答
最终验收提交完整项目、十七任务自动报告、十六项检查、讲义片段实际执行、来源与事件证据,以及未运行清单。它们共同完成本课从类型工具到离线评估的主线。此后替换policy可以扩大决策能力,但每次能力声明都必须重新经过同一证据链,而不是让“模型更强”成为绕过执行证明的理由。