feat(agent): 集数待确认的智能体兜底——查看上下文 / 模拟 / 写规则三个能力,写入前强制模拟,接后台调查与授权内恢复

能力 ID 的域名允许单个下划线分词(episode_mapping)。

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-10-03 20:08:20 +08:00
1 parent 45a114263b
commit 7793c7b3bc
27 files changed
+1747 -48

No files matched your search

+6 -1
View File
@@ -16,7 +16,12 @@ describe("能力 ID ↔ 工具名", () => {
expect(capabilityIdToToolName("task.retry_later")).toBe("task__retry_later");
expect(toolNameToCapabilityId("download__submit")).toBe("download.submit");
expect(toolNameToCapabilityId("task__retry_later")).toBe("task.retry_later");
for (const id of ["catalog.lookup", "policy.apply", "organize.execute"]) {
// 域名可用单个下划线分词:按第一个 `__` 切分仍无歧义
expect(capabilityIdToToolName("episode_mapping.apply_rule")).toBe("episode_mapping__apply_rule");
expect(toolNameToCapabilityId("episode_mapping__apply_rule")).toBe("episode_mapping.apply_rule");
expect(() => capabilityIdToToolName("episode__mapping.inspect")).toThrow();
expect(() => capabilityIdToToolName("episode_.inspect")).toThrow();
for (const id of ["catalog.lookup", "policy.apply", "organize.execute", "episode_mapping.inspect"]) {
expect(toolNameToCapabilityId(capabilityIdToToolName(id))).toBe(id);
}
expect(toolNameToCapabilityId("bash")).toBeUndefined();