Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 11 additions & 26 deletions app/src/main/assets/packages/extended_memory_tools.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,15 +102,10 @@
]
},
{
"name": "update_user_preferences",
"description": { "zh": "更新用户偏好信息(至少提供一个字段)。", "en": "Update user preferences (provide at least one field)." },
"name": "update_user_profile",
"description": { "zh": "用完整 Markdown 更新 user.md。", "en": "Update user.md with the complete Markdown document." },
"parameters": [
{ "name": "birth_date", "description": { "zh": "可选:出生日期(Unix 毫秒时间戳)", "en": "Optional: birth date (Unix ms timestamp)" }, "type": "number", "required": false },
{ "name": "gender", "description": { "zh": "可选:性别", "en": "Optional: gender" }, "type": "string", "required": false },
{ "name": "personality", "description": { "zh": "可选:性格特征", "en": "Optional: personality" }, "type": "string", "required": false },
{ "name": "identity", "description": { "zh": "可选:身份/角色", "en": "Optional: identity/role" }, "type": "string", "required": false },
{ "name": "occupation", "description": { "zh": "可选:职业", "en": "Optional: occupation" }, "type": "string", "required": false },
{ "name": "ai_style", "description": { "zh": "可选:偏好 AI 交互风格", "en": "Optional: preferred AI interaction style" }, "type": "string", "required": false }
{ "name": "markdown", "description": { "zh": "必需:user.md 的完整内容", "en": "Required: complete contents of user.md" }, "type": "string", "required": true }
]
}
]
Expand Down Expand Up @@ -214,21 +209,11 @@ const ExtendedMemoryTools = (function () {
});
return { success: typeof result === 'string' ? result.length > 0 : !!result, message: '记忆链接删除完成', data: result };
}
async function update_user_preferences(params) {
const toolParams = {};
if (params.birth_date !== undefined)
toolParams.birth_date = params.birth_date;
if (params.gender !== undefined)
toolParams.gender = params.gender;
if (params.personality !== undefined)
toolParams.personality = params.personality;
if (params.identity !== undefined)
toolParams.identity = params.identity;
if (params.occupation !== undefined)
toolParams.occupation = params.occupation;
if (params.ai_style !== undefined)
toolParams.ai_style = params.ai_style;
const result = await toolCall({ name: "update_user_preferences", params: toolParams });
async function update_user_profile(params) {
const result = await toolCall({
name: "update_user_profile",
params: { markdown: params.markdown },
});
const success = typeof result === 'string' ? result.length > 0 : !!result;
return { success, message: '用户偏好更新完成', data: result };
}
Expand Down Expand Up @@ -256,7 +241,7 @@ const ExtendedMemoryTools = (function () {
results.push({ tool: 'query_memory_links', result: { success: null, message: '未测试(只读查询)' } });
results.push({ tool: 'update_memory_link', result: { success: null, message: '未测试(会修改记忆库链接)' } });
results.push({ tool: 'delete_memory_link', result: { success: null, message: '未测试(会删除记忆库链接)' } });
results.push({ tool: 'update_user_preferences', result: { success: null, message: '未测试(会修改用户偏好)' } });
results.push({ tool: 'update_user_profile', result: { success: null, message: '未测试(会修改 user.md)' } });
complete({
success: true,
message: "拓展记忆工具包加载完成(未执行破坏性测试)",
Expand All @@ -272,7 +257,7 @@ const ExtendedMemoryTools = (function () {
query_memory_links: (params) => wrapToolExecution(query_memory_links, params),
update_memory_link: (params) => wrapToolExecution(update_memory_link, params),
delete_memory_link: (params) => wrapToolExecution(delete_memory_link, params),
update_user_preferences: (params) => wrapToolExecution(update_user_preferences, params),
update_user_profile: (params) => wrapToolExecution(update_user_profile, params),
main,
};
})();
Expand All @@ -284,5 +269,5 @@ exports.link_memories = ExtendedMemoryTools.link_memories;
exports.query_memory_links = ExtendedMemoryTools.query_memory_links;
exports.update_memory_link = ExtendedMemoryTools.update_memory_link;
exports.delete_memory_link = ExtendedMemoryTools.delete_memory_link;
exports.update_user_preferences = ExtendedMemoryTools.update_user_preferences;
exports.update_user_profile = ExtendedMemoryTools.update_user_profile;
exports.main = ExtendedMemoryTools.main;
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ class EnhancedAIService private constructor(private val context: Context) {
var notifyReplyOverride: Boolean? = null,
var chatModelConfigIdOverride: String? = null,
var chatModelIndexOverride: Int? = null,
var preferenceProfileIdOverride: String? = null,
var memorySpaceIdOverride: String? = null,
var stream: Boolean = true,
var disableWarning: Boolean = false
)
Expand Down Expand Up @@ -759,7 +759,7 @@ class EnhancedAIService private constructor(private val context: Context) {
isSubTask: Boolean = false,
chatModelConfigIdOverride: String? = null,
chatModelIndexOverride: Int? = null,
preferenceProfileIdOverride: String? = null,
memorySpaceIdOverride: String? = null,
stream: Boolean = true,
publishEstimate: Boolean = true
): Int {
Expand All @@ -785,7 +785,7 @@ class EnhancedAIService private constructor(private val context: Context) {
isSubTask = isSubTask,
functionType = functionType,
modelConfig = modelConfig,
preferenceProfileIdOverride = preferenceProfileIdOverride,
memorySpaceIdOverride = memorySpaceIdOverride,
dispatchHistoryHooks = PromptHookRegistry::dispatchPromptEstimateHistoryHooks,
dispatchSystemPromptComposeHooks = ::bypassPromptHooks,
dispatchToolPromptComposeHooks = ::bypassPromptHooks
Expand Down Expand Up @@ -906,7 +906,7 @@ class EnhancedAIService private constructor(private val context: Context) {
val notifyReplyOverride = options.notifyReplyOverride
val chatModelConfigIdOverride = options.chatModelConfigIdOverride
val chatModelIndexOverride = options.chatModelIndexOverride
val preferenceProfileIdOverride = options.preferenceProfileIdOverride
val memorySpaceIdOverride = options.memorySpaceIdOverride
val stream = options.stream
val disableWarning = options.disableWarning
val onNonFatalError: suspend (error: String) -> Unit = { error ->
Expand Down Expand Up @@ -991,7 +991,7 @@ class EnhancedAIService private constructor(private val context: Context) {
isSubTask,
functionType,
modelSnapshot.config,
preferenceProfileIdOverride
memorySpaceIdOverride
)
val tAfterPrepareHistory = messageTimingNow()
AppLogger.d(TAG, "sendMessage本地耗时: prepareConversationHistory=${tAfterPrepareHistory - startTime}ms")
Expand Down Expand Up @@ -1284,7 +1284,7 @@ class EnhancedAIService private constructor(private val context: Context) {
notifyReplyOverride,
chatModelConfigIdOverride,
chatModelIndexOverride,
preferenceProfileIdOverride,
memorySpaceIdOverride,
stream,
enableGroupOrchestrationHint,
disableWarning
Expand Down Expand Up @@ -1709,7 +1709,7 @@ class EnhancedAIService private constructor(private val context: Context) {
notifyReplyOverride: Boolean? = null,
chatModelConfigIdOverride: String? = null,
chatModelIndexOverride: Int? = null,
preferenceProfileIdOverride: String? = null,
memorySpaceIdOverride: String? = null,
stream: Boolean = true,
enableGroupOrchestrationHint: Boolean = false,
disableWarning: Boolean = false
Expand All @@ -1736,7 +1736,7 @@ class EnhancedAIService private constructor(private val context: Context) {
isSubTask = isSubTask,
chatId = chatId,
notifyReplyOverride = notifyReplyOverride,
preferenceProfileIdOverride = preferenceProfileIdOverride
memorySpaceIdOverride = memorySpaceIdOverride
)
return
}
Expand All @@ -1761,7 +1761,7 @@ class EnhancedAIService private constructor(private val context: Context) {
characterName = characterName,
avatarUri = avatarUri,
notifyReplyOverride = notifyReplyOverride,
preferenceProfileIdOverride = preferenceProfileIdOverride
memorySpaceIdOverride = memorySpaceIdOverride
)
return
}
Expand Down Expand Up @@ -1803,7 +1803,7 @@ class EnhancedAIService private constructor(private val context: Context) {
notifyReplyOverride = notifyReplyOverride,
chatModelConfigIdOverride = chatModelConfigIdOverride,
chatModelIndexOverride = chatModelIndexOverride,
preferenceProfileIdOverride = preferenceProfileIdOverride,
memorySpaceIdOverride = memorySpaceIdOverride,
stream = stream,
enableGroupOrchestrationHint = enableGroupOrchestrationHint,
toolResultOverrideMessage = pureThinkingWarning,
Expand Down Expand Up @@ -1878,7 +1878,7 @@ class EnhancedAIService private constructor(private val context: Context) {
characterName = characterName,
avatarUri = avatarUri,
notifyReplyOverride = notifyReplyOverride,
preferenceProfileIdOverride = preferenceProfileIdOverride
memorySpaceIdOverride = memorySpaceIdOverride
)
return
}
Expand Down Expand Up @@ -1916,7 +1916,7 @@ class EnhancedAIService private constructor(private val context: Context) {
notifyReplyOverride = notifyReplyOverride,
chatModelConfigIdOverride = chatModelConfigIdOverride,
chatModelIndexOverride = chatModelIndexOverride,
preferenceProfileIdOverride = preferenceProfileIdOverride,
memorySpaceIdOverride = memorySpaceIdOverride,
stream = stream,
enableGroupOrchestrationHint = enableGroupOrchestrationHint,
toolResultOverrideMessage = warningStatus,
Expand Down Expand Up @@ -1953,7 +1953,7 @@ class EnhancedAIService private constructor(private val context: Context) {
notifyReplyOverride,
chatModelConfigIdOverride,
chatModelIndexOverride,
preferenceProfileIdOverride,
memorySpaceIdOverride,
stream = stream,
enableGroupOrchestrationHint = enableGroupOrchestrationHint,
disableWarning = disableWarning
Expand All @@ -1971,7 +1971,7 @@ class EnhancedAIService private constructor(private val context: Context) {
characterName = characterName,
avatarUri = avatarUri,
notifyReplyOverride = notifyReplyOverride,
preferenceProfileIdOverride = preferenceProfileIdOverride
memorySpaceIdOverride = memorySpaceIdOverride
)
logMessageTiming(
stage = "enhanced.processStreamCompletion.complete",
Expand All @@ -1997,7 +1997,7 @@ class EnhancedAIService private constructor(private val context: Context) {
characterName: String? = null,
avatarUri: String? = null,
notifyReplyOverride: Boolean? = null,
preferenceProfileIdOverride: String? = null
memorySpaceIdOverride: String? = null
) {
// Mark conversation as complete
context.isConversationActive.set(false)
Expand All @@ -2019,8 +2019,8 @@ class EnhancedAIService private constructor(private val context: Context) {
runCatching {
val currentChatId = chatId?.takeIf { it.isNotBlank() }
val profileId =
preferenceProfileIdOverride?.takeIf { it.isNotBlank() }
?: preferencesManager.activeProfileIdFlow.first()
memorySpaceIdOverride?.takeIf { it.isNotBlank() }
?: preferencesManager.activeMemorySpaceIdFlow.first()
if (currentChatId.isNullOrBlank()) {
AppLogger.w(TAG, "自动保存长期记忆入队跳过:chatId为空")
} else {
Expand Down Expand Up @@ -2069,7 +2069,7 @@ class EnhancedAIService private constructor(private val context: Context) {
notifyReplyOverride: Boolean? = null,
chatModelConfigIdOverride: String? = null,
chatModelIndexOverride: Int? = null,
preferenceProfileIdOverride: String? = null,
memorySpaceIdOverride: String? = null,
stream: Boolean = true,
enableGroupOrchestrationHint: Boolean = false,
toolResultOverrideMessage: String? = null,
Expand Down Expand Up @@ -2114,7 +2114,7 @@ class EnhancedAIService private constructor(private val context: Context) {
allToolResults, context, functionType, promptFunctionType, collector, enableThinking,
enableMemoryAutoUpdate, onNonFatalError, onTokenLimitExceeded, maxTokens, tokenUsageThreshold, isSubTask,
characterName, avatarUri, roleCardId, chatId, onToolInvocation, notifyReplyOverride,
chatModelConfigIdOverride, chatModelIndexOverride, preferenceProfileIdOverride, stream, enableGroupOrchestrationHint,
chatModelConfigIdOverride, chatModelIndexOverride, memorySpaceIdOverride, stream, enableGroupOrchestrationHint,
disableWarning = disableWarning
)
} else if (!toolResultOverrideMessage.isNullOrEmpty()) {
Expand All @@ -2140,7 +2140,7 @@ class EnhancedAIService private constructor(private val context: Context) {
notifyReplyOverride = notifyReplyOverride,
chatModelConfigIdOverride = chatModelConfigIdOverride,
chatModelIndexOverride = chatModelIndexOverride,
preferenceProfileIdOverride = preferenceProfileIdOverride,
memorySpaceIdOverride = memorySpaceIdOverride,
stream = stream,
enableGroupOrchestrationHint = enableGroupOrchestrationHint,
toolResultMessageOverride = toolResultOverrideMessage,
Expand Down Expand Up @@ -2188,7 +2188,7 @@ class EnhancedAIService private constructor(private val context: Context) {
notifyReplyOverride: Boolean? = null,
chatModelConfigIdOverride: String? = null,
chatModelIndexOverride: Int? = null,
preferenceProfileIdOverride: String? = null,
memorySpaceIdOverride: String? = null,
stream: Boolean = true,
enableGroupOrchestrationHint: Boolean = false,
toolResultMessageOverride: String? = null,
Expand Down Expand Up @@ -2470,7 +2470,7 @@ class EnhancedAIService private constructor(private val context: Context) {
notifyReplyOverride,
chatModelConfigIdOverride,
chatModelIndexOverride,
preferenceProfileIdOverride,
memorySpaceIdOverride,
stream,
enableGroupOrchestrationHint,
disableWarning
Expand Down Expand Up @@ -2649,7 +2649,7 @@ class EnhancedAIService private constructor(private val context: Context) {
isSubTask: Boolean = false,
functionType: FunctionType = FunctionType.CHAT,
modelConfig: ModelConfigData,
preferenceProfileIdOverride: String? = null,
memorySpaceIdOverride: String? = null,
dispatchHistoryHooks: (PromptHookContext) -> PromptHookContext =
PromptHookRegistry::dispatchPromptHistoryHooks,
dispatchSystemPromptComposeHooks: (PromptHookContext) -> PromptHookContext =
Expand Down Expand Up @@ -2692,7 +2692,7 @@ class EnhancedAIService private constructor(private val context: Context) {
useToolCallApi,
chatModelHasDirectImage,
toolExposureMode,
preferenceProfileIdOverride,
memorySpaceIdOverride,
dispatchHistoryHooks,
dispatchSystemPromptComposeHooks,
dispatchToolPromptComposeHooks
Expand Down Expand Up @@ -3145,7 +3145,7 @@ class EnhancedAIService private constructor(private val context: Context) {
fun saveConversationToMemoryAsync(
conversationHistory: List<Pair<String, String>>,
lastContent: String,
preferenceProfileIdOverride: String? = null,
memorySpaceIdOverride: String? = null,
onSuccess: (suspend () -> Unit)? = null,
onError: (suspend (Exception) -> Unit)? = null
) {
Expand All @@ -3159,7 +3159,7 @@ class EnhancedAIService private constructor(private val context: Context) {
conversationHistory = conversationHistory,
content = lastContent,
aiService = memoryService,
profileIdOverride = preferenceProfileIdOverride,
profileIdOverride = memorySpaceIdOverride,
onSuccess = {
AppLogger.d(TAG, "手动记忆更新成功")
onSuccess?.invoke()
Expand Down
Loading