Add setting for number of "relevant_docs_count"

This commit is contained in:
Qu Yi 2024-12-17 00:33:18 +08:00
parent b1dad6beda
commit 72397c4c33
2 changed files with 6 additions and 10 deletions

View file

@ -30,6 +30,7 @@ export default
"allow_insecure_coding": false, // allows newAction command and model can write/run code on your computer. enable at own risk "allow_insecure_coding": false, // allows newAction command and model can write/run code on your computer. enable at own risk
"code_timeout_mins": 3, // minutes code is allowed to run. -1 for no timeout,set 3.Set 3 min to timely code adjustments "code_timeout_mins": 3, // minutes code is allowed to run. -1 for no timeout,set 3.Set 3 min to timely code adjustments
"relevant_docs_count": 5, // number of relevant docs to show when generating code
"max_messages": 15, // max number of messages to keep in context "max_messages": 15, // max number of messages to keep in context
"max_commands": -1, // max number of commands to use in a response. -1 for no limit "max_commands": -1, // max number of commands to use in a response. -1 for no limit

View file

@ -4,7 +4,7 @@ import { getCommandDocs } from './commands/index.js';
// import { getSkillDocs } from './library/index.js'; // import { getSkillDocs } from './library/index.js';
import { stringifyTurns } from '../utils/text.js'; import { stringifyTurns } from '../utils/text.js';
import { getCommand } from './commands/index.js'; import { getCommand } from './commands/index.js';
import settings from '../../settings.js';
import { Gemini } from '../models/gemini.js'; import { Gemini } from '../models/gemini.js';
import { GPT } from '../models/gpt.js'; import { GPT } from '../models/gpt.js';
import { Claude } from '../models/claude.js'; import { Claude } from '../models/claude.js';
@ -178,19 +178,14 @@ export class Prompter {
} }
if (prompt.includes('$COMMAND_DOCS')) if (prompt.includes('$COMMAND_DOCS'))
prompt = prompt.replaceAll('$COMMAND_DOCS', getCommandDocs(this.agent.blocked_actions)); prompt = prompt.replaceAll('$COMMAND_DOCS', getCommandDocs(this.agent.blocked_actions));
if (prompt.includes('$CODE_DOCS')){ if (prompt.includes('$CODE_DOCS')) {
// Find the most recent non-system message containing '!newAction(' const code_task_content = messages.slice().reverse().find(msg =>
let code_task_content = messages.slice().reverse().find(msg =>
msg.role !== 'system' && msg.content.includes('!newAction(') msg.role !== 'system' && msg.content.includes('!newAction(')
)?.content || ''; )?.content?.match(/!newAction\((.*?)\)/)?.[1] || '';
// Extract content between '!newAction(' and ')'
const match = code_task_content.match(/!newAction\((.*?)\)/);
code_task_content = match ? match[1] : '';
prompt = prompt.replaceAll( prompt = prompt.replaceAll(
'$CODE_DOCS', '$CODE_DOCS',
await this.skill_libary.getRelevantSkillDocs(code_task_content, 5) await this.skill_libary.getRelevantSkillDocs(code_task_content, settings.relevant_docs_count)
); );
} }
if (prompt.includes('$EXAMPLES') && examples !== null) if (prompt.includes('$EXAMPLES') && examples !== null)