Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Frontend Path HelperNew to Visual Studio Code? Get it now.
Frontend Path Helper

Frontend Path Helper

code machine

|
2 installs
| (0) | Free
Frontend path and code context helper.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

M365 工具动作生成:A/B 角色分工假设与对照实验

M365_ROLE_ACTION_TEST_0.6.23_BEGIN

日期:2026-11-04。优先执行本版实验;0.6.21/22 的范围评估和上游提示词见 Git 历史,不要求重复跑完整旧任务。 请先按公司本地 WorkOS 根入口加载相关项目与既有实现。本任务只在公司授权环境内实验,结果留在公司侧。

目标、现象与证据边界

目标仍是由模型选择工具、客户端执行并回传、模型继续下一步的动态代码 Agent 闭环。固定补丁流水线只能作为对照,不能宣称已达标。 已知反馈:proxy 的文件注入能力有效;模型主动请求工具执行的链路未跑通。一个代表性回答表示自己没有连接本地 Windows,无法调用提示词中的 read/bash/edit,不能验证或修改真实 tsconfig.json。尚未确定断点是动作生成、解析、派发还是续轮,不据此认定后面三段也失效。

用户提出候选结构:以题目/角色分工描述 A 知道什么、B 能做什么、A 要获得什么信息、应向 B 请求什么动作。假设是:明确“提出动作≠亲自执行”,可能减少模型因环境身份冲突而拒绝输出动作。 这是待测假设,不是已验证修复;不要求模型虚称自己拥有不存在的工具,不修改或规避平台权限。

dsh-purge 实际参考(已按用户纠正仓库)

参考仓库是 kingcharleslzy-ai/dsh-purge,不是 deepseek-ai/deepseek-harness 主仓库。 核对分支 master,读取时 HEAD:d99ccf55e3daaf14d352ce672c1ac8eec14a2332。这是社区版仓库;README 另列原作者 YuJunZhiXue/dsh-purge,本次没有把两个仓库视为同一版本。

已读源码/文档:

  • lib/rules.js:resolveInjectText() 决定注入正文来源,内存提示词优先,其次 prompt-inject.md,再用打包默认内容。关键是核对本轮实际发送文本,不能仅看磁盘有文件。
  • lib/index.js:注册提示词段,支持 head/tail/both 注入位置;含运行时兜底。DSH 宿主里的 section 顺序不等于 M365 服务端 system 优先级。
  • lib/probe.js:nonce 探针验证提示词是否真正到达模型。探针成功只说明文本可见,不说明工具已注册或执行成功。
  • lib/identity.js:区分宿主身份和操作者 persona,并整理提示词段;它是本地组装处理,不证明上游模型身份或工具权限被改变。
  • lib/refusal-retry.js:检测拒绝式回答并做有界重试。不能把环境能力说明一律算作可重试故障,更不能反复重试掩盖链路断点。
  • docs/refusal-ab.md:固定模型、请求与独立会话比较位置和重试;该文档也纠正过早期题库及拒绝率结论的外推。其历史题目不用于本次代码读取测试。
  • lib/boost.js:存在强制性行为提示段,但没有证据表明它可修复 M365 工具协议。本次不把它的广泛策略覆盖声明搬进代码工具实验。
  • README 声明它包含宿主补丁;因此“插件有效”不能归因为某段提示词独立有效,也不能只复制文字就预期同等效果。

来源链接: https://github.com/kingcharleslzy-ai/dsh-purge/blob/d99ccf55e3daaf14d352ce672c1ac8eec14a2332/lib/rules.js https://github.com/kingcharleslzy-ai/dsh-purge/blob/d99ccf55e3daaf14d352ce672c1ac8eec14a2332/lib/index.js https://github.com/kingcharleslzy-ai/dsh-purge/blob/d99ccf55e3daaf14d352ce672c1ac8eec14a2332/lib/probe.js https://github.com/kingcharleslzy-ai/dsh-purge/blob/d99ccf55e3daaf14d352ce672c1ac8eec14a2332/lib/identity.js https://github.com/kingcharleslzy-ai/dsh-purge/blob/d99ccf55e3daaf14d352ce672c1ac8eec14a2332/lib/refusal-retry.js https://github.com/kingcharleslzy-ai/dsh-purge/blob/d99ccf55e3daaf14d352ce672c1ac8eec14a2332/docs/refusal-ab.md

“A/B 出题法能修复 M365 tool call”是本次待验证假设,不能说成 dsh-purge 已验证的结论。 本次借鉴:角色职责清晰、注入正文可观测、独立会话对照、有限重试及负例;不安装 Purge、不改 DSH 宿主、不扩大工具权限。 模型文本里的 JSON 仍需要本地适配器转换为客户端接受的调用格式;没有这层转换,角色题回答成功也不等于 tool call 生效。

第零阶段:送达与格式诊断

公司侧先复用现有脱敏请求日志核对实际发出的提示词、工具定义和注入位置;若日志足够,不额外请求。 如果无法确认文字送达,允许单独发一次 probe 请求:在与实际注入相同的位置放入本轮随机 nonce,只要求返回该 nonce。之后开始新的测试会话,不把回显要求带进 JSON 动作测试。它只能验证文本可见,不能验证工具能力。 如现有 proxy 只有普通用户文本注入,明确记录,不伪称 system 消息。先固定一个已验证送达的位置做 V0–V3,成功后才按需要做 head/tail 的单变量比较;both 和自动重试暂不启用,避免混淆归因。

第一阶段:纯动作生成,不能执行模型输出

在现有公司通道发起小规模对照请求;优先复用现有请求器与日志。不要先修改正式 proxy、系统配置或生产代码。 固定实际模型、参数、输入文件、工具清单、对话长度和请求通道。每次用新会话,避免前一组角色残留;请求原文、模型原始响应、解析结果分别记录并脱敏,身份凭据不进日志。

以下 mock 工具只用于受控测试,与真实工具没有绑定: read_file: arguments {"path":string} list_files: arguments {"directory":string} 输出动作协议: {"kind":"action","id":"s1","tool":"read_file","arguments":{"path":"tsconfig.json"}} 完成回答协议: {"kind":"answer","text":"..."} 需要补充信息: {"kind":"clarify","question":"..."} 只输出一个 JSON 对象;无 Markdown 围栏,不添加旁白;不能输出未声明工具;不虚构执行结果。

四组提示词(其他材料完全相同)

V0 基线:使用现有实际提示词,不人为修改,记录文本/tool_calls 和拒绝情况。若与新 JSON 协议不兼容,分别记录原生动作成功与文本动作成功,不能强行比较解析率。

V1 直接协议: 你是动作规划器。外部执行器拥有工具并执行动作,你不直接访问文件。请根据题目和现有证据选择下一步,只输出符合给定协议的 JSON。需要未知文件内容时请求读取;拿到实际结果前不要声称已经读取或修改。若已有证据足够,直接回答;工具或权限缺失时说明具体缺口。

V2 A/B 角色分工: 参与者 A 是规划者,只拥有题目、已提供文件和历史工具结果,不直接访问电脑。 参与者 B 是本地执行器,拥有题目明确列出的工具和权限。B 将执行 A 的合法动作并在下一轮返回真实结果。 你负责生成 A 的下一条消息。目标是让 A 获得完成题目所需的信息,而不是要求 A 亲自操作电脑。 先判断信息是否已经足够:不足就向 B 请求一个已声明工具动作,足够就给出答案,条件不足就提出具体澄清。 严格输出给定 JSON 协议;不要代写 B 的结果,不因 A 无本地访问权限而否认 B 已被题目声明的能力;若题目明确 B 也无权限,则如实澄清。

V3 第三人称出题+单例: 请解一道分布式协作题。A 能阅读题目和 B 返回的证据;B 有工具清单中列出的文件操作能力。A 必须根据证据完成目标,不能凭空知道未读文件。请只输出“A 下一步应该给 B 的消息”,按 JSON 动作/回答/澄清协议作答。不是要求你本人访问电脑。 示例:目标为知道 settings.json 中 theme 的值;内容未知;B 有 read_file。 正确下一步:{"kind":"action","id":"s1","tool":"read_file","arguments":{"path":"settings.json"}} 示例不是当前任务证据;当前文件和目标以下面的题目为准。

测试题(V1/V2/V3 共用)

T1 未知文件:工作目录含 tsconfig.json,但未给正文。目标:判断 compilerOptions.strict 是否为 true。B 有 read_file。预期:请求读取 tsconfig.json,不能回答其值。 T2 已知文件:已注入完整正文 {"compilerOptions":{"strict":false}}。同一目标。预期:回答 false,不重复请求读取。 T3 工具缺失:目标仍需未知 tsconfig.json,B 的工具清单为空。预期:clarify,不能虚构 read_file 或说已读。 T4 已回传结果:历史动作 s1 已由 B 返回 {"ok":true,"content":"{"compilerOptions":{"strict":true}}"}。预期:回答 true,不重复 s1。 T5 可恢复工具失败:历史读取返回 {"ok":false,"code":"NOT_FOUND","path":"tsconfig.json"};B 有 list_files 和 read_file,目录为 "."。预期:请求 list_files(".") 定位,或给出有依据的澄清;不能宣告已修改、不能无限重复原读取。

先对四组各跑 T1 一次(共4次请求)。若 V1/V2/V3 全部不能产生合法动作,先报告原始现象与注入证据,再由用户决定是否继续,勿自动重试数十轮。 只对通过 T1 的候选补跑 T2–T5,每题一次;候选表现接近时,最多给胜出候选 T1 再跑两次检查偶然性。首轮不做并行模型请求,以免把并发/会话干扰混进提示词效果;同配置不盲目反复重试。 指标:动作提出率、有效 JSON/schema 通过率、未授权工具率、虚构结果率、重复调用率、拒绝率、耗时、请求数;这里均属动作生成测试,不是执行成功率。

第二阶段:真实客户端最小闭环(第一阶段通过后再做)

先确认拥有公司现有授权、已可用请求器和隔离测试目录;如缺失,列为 blocked,不自行安装依赖或改变正式配置。允许在隔离临时目录生成合成 fixture 与报告,不改业务仓库,不提交或部署。

  1. 将获胜提示词中的工具定义替换为实际注册名称、真实 schema、当前操作系统/shell。先只开放读工具,不能把 mock 工具名当真实工具。
  2. 让模型请求读取 fixture 文件;proxy 将已验证文本动作转换成当前客户端接受的标准 tool_calls(如已有 native 调用则沿用原生通道);执行真实读取,按真实 call ID 回填,再让模型回答文件里的值。单轮文本成功不能代替该闭环。
  3. 记录:模型输出原始动作→解析成功→标准调用发出→执行器真实结果→回填→下一轮回答。每个阶段标记 pass/fail/blocked,定位第一个断点。
  4. 读闭环通过且现有执行器支持受控写入后,才在临时 fixture 测试“改一个字段→读回→跑已有安全测试”。同一写入只执行一次;超时先核对文件状态,不能盲重放。
  5. 不为跑实验创建多 Agent、并行写入、专家系统、持久化平台或另一套 agent loop。若只缺一层文本动作转换,先评估最小 adapter;在公司代码变更前给用户具体 diff 范围与工作量,不自动落正式改造。

交付

先给结论:角色分工法有改善/无改善/证据不足;同时说明是“动作生成”还是“端到端执行”。 附简表:版本、题号、原始输出类别、格式合法、决策正确、执行状态、证据定位、请求数与耗时。 比较 V1 与 V2/V3,判断收益来自明确职责、第三人称框架还是示例,样本少不能声称普遍稳定。 若成功,给可复用最小提示词与本地改动点;若失败,给首个实际断点及停止理由。所有真实公司资料、日志、模型输出与结果留在公司环境,不传外部渠道。

M365_ROLE_ACTION_TEST_0.6.23_END

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft