用途与实际影响
这项功能怎样使用
为什么需要它
能返回一段文字和能做完一个有工具的任务是两种能力;后者必须同时检查模型、执行路线、工具活动、产物和清理。
举个实际例子
我说:“在这个练习项目里修好区间合并函数,运行已有测试,并告诉我改了什么。”只有已核验能用工具的编程路线才会真正改文件和跑检查。
最后我会得到什么
拿到实际修改的文件、测试结果与仍失败的地方;主 AI 再核对功能是否符合原任务。只有文字答复或旧成功记录不足以证明这次编程工作完成。
正常时
指定编程工具在对应工作区完成任务、产物和清理都能核对。
发现问题时
文件有修改但测试或清理没结束时明确只完成了一部分。
入口不可用或证据不足时
路线、模型或工作区条件不齐时在启动前停下,不冒称已做过工具任务。
从哪里开始
在已接入 Toolkit 的主 AI 对话中指定受控练习或项目工作区,提出明确的修复或数据处理任务。
需要准备什么
- 具体工作区与目标
- 允许的工具、时间和权限
- 可执行的验收方式
从开始到拿到结果
- 1
核对工作区和执行能力
系统确认目标目录、现有编程工具和本次允许的权限;没有真实工具能力就不把聊天回答算任务完成。
- 2
由已验证 CLI(命令行工具) 处理
选定路线在指定目录实际使用工具、修改产物并运行可用检查。
- 3
核对真实结果
交回修改、测试与未完成项;当前路线没有精确证据或清理未确认时不宣称智能体任务完成。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
当前精确配置允许有界使用;模型Live与受控工作单另验关键规则与设计选择
按runner_capabilities选择真实权限:Codex程序化入口为danger-full-access,其他CLI(命令行工具)使用其声明的workspace-write或read-only;权限宽度不扩大用户授权。
普通 Agent 默认 watchdog_only、900 秒,不加默认步数/工具次数上限;bounded 才接受显式硬上限。
completion_driven 的旧输入仍识别,但当前 AICLI 未声明可续期 idle lease 时提前拒绝,不静默改模式。
LocalAsyncWorker 只使用隔离 workspace-write 根,提供 start / wait / cancel / result;它不是原生子代理,不继承最高权限或再次委派。
如果受控工作单没有完整的运行身份证明,就返回 configured_unverified / not_ready。取消必须确认进程树结束且 GPU 租约释放,否则保持 cleanup_unconfirmed,不能伪造 CANCELLED。
本模块用到的名词
- Harness(执行环境)
- 为模型提供原生工具、权限和会话运行方式的 CLI(命令行工具) 环境。
- 权限不等于目标
- 能写目录外文件并不允许自行扩大用户交给它的任务。
专业定义
让指定模型在明确目录中做事,再检查产物
解决什么
超时、协议字段不完整或旧模型证据不能对应当前配置时,会失败而非降到普通聊天或其他 CLI(命令行工具)。
当前怎样实现
- agent_runners.py通过调用者的LLM_TOOLKIT_AICLI_ENTRY固定受管入口;preflight用真实参数解析器与能力声明核对请求,不创建任务或读材料。可显式比较另一个安装入口,但比较不允许fallback(后备路线)。
- data_factory/codex-cli当前绑定codex-ollama-main与qwen3.8-27b:256k。configured允许按当前接口预检后有界运行,但没有自动继承旧0.3.12/2026-08-14模型Live;worker-contract仍是另一条非原生工作单证明合同。
- 受管 Codex 可通过 AICLI 的 public_web_search 使用真实搜索工具;观察台只消费安全 lifecycle,搜索工具调用不等于获得有效结果。
- 数据工厂与通用基准使用独立、不可写入候选工作区的 verifier;CLI(命令行工具) 完成、产物通过、稳定性与压力测试分别记录。
- LocalAsyncWorker.start 强制 fresh_execution=true / force=true,禁止 cache key。接受 legacy local-default→data_factory→codex-cli,或运行时精确解析的非云 benchmark_only backend(模型后端);后者网络禁止、搜索关闭、固定 7200 秒 watchdog,均无 fallback(后备路线)。
- 受控工作单的 requested binding 涵盖模型/配置/digest、AICLI 与事件协议、工具来源、独占 GPU 租约、沙箱、任务/工作区、检查器和预算。初始 configured_unverified;只有运行期同时提供上下文与保留输出等 observed binding 才可 eligible_after_runtime_proof。result 只读终态,缺字段返回 local_worker_binding_incomplete。
- wait 是建议时机后的一次有界查询,不是循环监视。cancel 依赖宿主注入的 controlled_bridge,须返回 process_tree.confirmed_absent 和 gpu_lease.released;请求本身不能注入取消命令。当前合同和取消桥不等于通用生产适配已就绪。
执行流程
- 1
选择已有 Agent route(处理路线)
- 2
绑定工作区、权限与时间预算
- 3
由原生 CLI(命令行工具) 完成工具活动
- 4
核验结果、运行身份与清理
边界
- 当前可选择路线依注册表和精确证据判断,不按 CLI(命令行工具) 安装清单猜可用。
- 历史成功不证明新版本兼容。
失败与恢复
- AICLI 入口不存在或 receipt(执行回执) 不符
- 调用前关闭该路线。
- 预算或原生协议失败
- 返回具体状态和已有产物,不升格为已完成。
真实入口
src/llm_backend_toolkit/agent_runners.py已有 CLI(命令行工具) 的窄适配
docs/agent-data-factory.md数据工厂任务
docs/aicli-agent-acceptance-contract.md精确验收
docs/local-async-worker-contract.md工作单
如何验证
- 9月17日Owner联动归档记录真实合成文件读写回读、正常结束和取消清理;这不把当前注册表configured写成通用模型能力通过,也不证明LocalAsyncWorker全部绑定。
与其他模块的关系
调用身份由注册表拥有,结果进入同一 JobStore 和观察台。
