refactor: replace Task tool with Agent tool and fix schema compliance

## Task -> Agent Replacement
- Replace all Task({}) calls with Agent({}) across .claude/ directory
- Update allowed-tools declarations from Task to Agent
- Update documentation references from "Task tool" to "Agent tool"

## Schema Compliance Fixes

### Agent Schema
- Add missing required `description` parameter in 6 files
- Add missing `run_in_background: false` for subagent calls
- Add missing `subagent_type` parameter

### AskUserQuestion Schema
- Fix issue-manage/SKILL.md: reduce options from 5 to 4 (max allowed)

### SendMessage Schema
- Fix team-worker.md: use correct params (type, content, summary)
- Remove invalid `team_name` parameter

### TaskCreate/TaskUpdate Schema
- Remove invalid `blockedBy`, `owner`, `status` from TaskCreate calls
- Use separate TaskUpdate calls for dependencies and ownership
- Fix TaskUpdate syntax to use object parameter

### TeamDelete Schema
- Remove parameters from TeamDelete() calls (should be no params)

### TaskOutput Schema
- Fix Python-style syntax to JavaScript object syntax

## Files Changed
- 146 files updated across commands/, skills/, skills_lib/, agents/
This commit is contained in:
catlog22
2026-03-04 22:40:39 +08:00
parent 64e772f9b8
commit 16bbfcd12a
146 changed files with 505 additions and 516 deletions

View File

@@ -1,7 +1,7 @@
---
name: skill-tuning
description: Universal skill diagnosis and optimization tool. Detect and fix skill execution issues including context explosion, long-tail forgetting, data flow disruption, and agent coordination failures. Supports Gemini CLI for deep analysis. Triggers on "skill tuning", "tune skill", "skill diagnosis", "optimize skill", "skill debug".
allowed-tools: Task, AskUserQuestion, Read, Write, Bash, Glob, Grep, mcp__ace-tool__search_context
allowed-tools: Agent, AskUserQuestion, Read, Write, Bash, Glob, Grep, mcp__ace-tool__search_context
---
# Skill Tuning

View File

@@ -193,7 +193,7 @@ async function execute(state, workDir) {
type: 'agent_failure',
severity: 'medium',
location: { file: 'SKILL.md' },
description: 'Task tool used but not declared in allowed-tools',
description: 'Agent tool used but not declared in allowed-tools',
evidence: [`${totalCalls} Task calls found, but Task not in allowed-tools`],
root_cause: 'Tool declaration mismatch',
impact: 'May cause runtime permission issues',

View File

@@ -216,7 +216,7 @@ async function execute(state, workDir) {
file: 'phases/*.md',
action: 'modify',
diff: `+ try {
const result = await Task({...});
const result = await Agent({...});
+ if (!result) throw new Error('Empty result');
+ } catch (e) {
+ updateState({ errors: [...errors, e.message], error_count: error_count + 1 });

View File

@@ -99,8 +99,9 @@ async function runOrchestrator(workDir) {
target_skill: { name: state.target_skill.name, path: state.target_skill.path }
};
const result = await Task({
const result = await Agent({
subagent_type: 'universal-executor',
description: `Execute skill-tuning action: ${actionId}`,
run_in_background: false,
prompt: `
[CONTEXT]

View File

@@ -114,18 +114,21 @@ Write(`${workDir}/final-output.json`, finalResult); // 只存最终结果
// 上下文流转模式
async function executePhase(context) {
const { previousResult, constraints, config } = context;
const result = await Task({
const result = await Agent({
subagent_type: 'universal-executor',
description: 'Execute phase with context passing',
run_in_background: false,
prompt: `
[CONTEXT]
Previous: ${JSON.stringify(previousResult)}
Constraints: ${constraints.join(', ')}
[TASK]
Process and return result directly.
`
});
return {
...context,
currentResult: result,

View File

@@ -140,8 +140,10 @@ function updateHistory(state, newItem) {
```javascript
// Add summarization before passing to next phase
const summary = await Task({
const summary = await Agent({
subagent_type: 'universal-executor',
description: 'Summarize content for context compression',
run_in_background: false,
prompt: `Summarize in <100 words: ${fullContent}\nReturn JSON: { summary, key_points[] }`
});
nextPhasePrompt = `Previous summary: ${summary.summary}`;
@@ -268,12 +270,17 @@ function validateAgentResult(result, requiredFields) {
### flatten_nesting
```javascript
// Before: Agent A's prompt tells it to call Task({subagent_type: 'B'})
// Before: Agent A's prompt tells it to call Agent({subagent_type: 'B'})
// After: Agent A returns signal, orchestrator handles
// Agent A: return { needs_agent_b: true, context: {...} }
// Orchestrator:
if (parsedA.needs_agent_b) {
resultB = await Task({ subagent_type: 'B', prompt: `Context: ${parsedA.context}` });
resultB = await Agent({
subagent_type: 'B',
description: 'Handle delegated task from Agent A',
run_in_background: false,
prompt: `Context: ${parsedA.context}`
});
}
```