Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6e874c7a8e | |||
| 75b7c07a4d | |||
| d864bcd6fb |
@@ -120,6 +120,9 @@ fi
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MEMIND_GIT_HEAD="$(git -C "${MEMIND_SRC}" rev-parse HEAD 2>/dev/null || echo unknown)"
|
||||||
|
MEMIND_GIT_BRANCH="$(git -C "${MEMIND_SRC}" branch --show-current 2>/dev/null || echo detached)"
|
||||||
|
|
||||||
say "打包 Memind 共享模块到 memind-lib"
|
say "打包 Memind 共享模块到 memind-lib"
|
||||||
rm -rf "${MEMIND_LIB}"
|
rm -rf "${MEMIND_LIB}"
|
||||||
mkdir -p "${MEMIND_LIB}"
|
mkdir -p "${MEMIND_LIB}"
|
||||||
@@ -133,10 +136,32 @@ rsync -a \
|
|||||||
--include '*.js' \
|
--include '*.js' \
|
||||||
--exclude '*' \
|
--exclude '*' \
|
||||||
"${MEMIND_SRC}/" "${MEMIND_LIB}/"
|
"${MEMIND_SRC}/" "${MEMIND_LIB}/"
|
||||||
|
|
||||||
|
if [[ -d "${MEMIND_SRC}/skills" ]]; then
|
||||||
|
say "打包 Memind 平台技能目录到 memind-lib"
|
||||||
|
mkdir -p "${MEMIND_LIB}/skills"
|
||||||
|
rsync -a \
|
||||||
|
--exclude '.DS_Store' \
|
||||||
|
--exclude '__pycache__/' \
|
||||||
|
"${MEMIND_SRC}/skills/" "${MEMIND_LIB}/skills/"
|
||||||
|
fi
|
||||||
|
|
||||||
[[ -f "${MEMIND_LIB}/user-auth.mjs" ]] || {
|
[[ -f "${MEMIND_LIB}/user-auth.mjs" ]] || {
|
||||||
echo "memind-lib 缺少 user-auth.mjs" >&2
|
echo "memind-lib 缺少 user-auth.mjs" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
[[ -f "${MEMIND_LIB}/skills/excel-analyst/SKILL.md" ]] || {
|
||||||
|
echo "memind-lib 缺少 Excel Analyst 技能" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
grep -q 'EXCEL_ANALYST_SKILL_NAME' "${MEMIND_LIB}/skills-registry.mjs" || {
|
||||||
|
echo "memind-lib 缺少 Excel Analyst 技能授权映射" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
grep -q 'tkmind-excel' "${MEMIND_LIB}/capabilities.mjs" || {
|
||||||
|
echo "memind-lib 缺少 Excel Analyst runtime 扩展映射" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
if [[ "${AUTO_YES}" -ne 1 && "${DRY_RUN}" -ne 1 ]]; then
|
if [[ "${AUTO_YES}" -ne 1 && "${DRY_RUN}" -ne 1 ]]; then
|
||||||
say "发布确认"
|
say "发布确认"
|
||||||
@@ -158,6 +183,8 @@ say "生成发布清单"
|
|||||||
echo "root=${ROOT}"
|
echo "root=${ROOT}"
|
||||||
echo "git_head=$(git -C "${ROOT}" rev-parse HEAD 2>/dev/null || echo unknown)"
|
echo "git_head=$(git -C "${ROOT}" rev-parse HEAD 2>/dev/null || echo unknown)"
|
||||||
echo "git_branch=$(git -C "${ROOT}" branch --show-current 2>/dev/null || echo detached)"
|
echo "git_branch=$(git -C "${ROOT}" branch --show-current 2>/dev/null || echo detached)"
|
||||||
|
echo "memind_git_head=${MEMIND_GIT_HEAD}"
|
||||||
|
echo "memind_git_branch=${MEMIND_GIT_BRANCH}"
|
||||||
echo "git_status_begin"
|
echo "git_status_begin"
|
||||||
git -C "${ROOT}" status --short --branch || true
|
git -C "${ROOT}" status --short --branch || true
|
||||||
echo "git_status_end"
|
echo "git_status_end"
|
||||||
|
|||||||
@@ -122,6 +122,12 @@ const CAPABILITIES: Array<{
|
|||||||
fields: [
|
fields: [
|
||||||
{ key: 'enabled', label: '启用组合召回', type: 'boolean' },
|
{ key: 'enabled', label: '启用组合召回', type: 'boolean' },
|
||||||
{ key: 'episodicEnabled', label: '事件记忆', type: 'boolean' },
|
{ key: 'episodicEnabled', label: '事件记忆', type: 'boolean' },
|
||||||
|
{ key: 'episodicMode', label: '历史会话召回模式', type: 'select', options: [
|
||||||
|
{ value: 'off', label: 'Off · 关闭' },
|
||||||
|
{ value: 'canary', label: 'Canary · 仅指定用户' },
|
||||||
|
{ value: 'active', label: 'Active · 全量' },
|
||||||
|
] },
|
||||||
|
{ key: 'episodicCanaryUserIds', label: '历史会话 Canary 用户 ID(逗号分隔)', type: 'text' },
|
||||||
{ key: 'semanticEnabled', label: '语义记忆', type: 'boolean' },
|
{ key: 'semanticEnabled', label: '语义记忆', type: 'boolean' },
|
||||||
{ key: 'preferenceEnabled', label: '用户偏好', type: 'boolean' },
|
{ key: 'preferenceEnabled', label: '用户偏好', type: 'boolean' },
|
||||||
{ key: 'goalEnabled', label: '活跃目标', type: 'boolean' },
|
{ key: 'goalEnabled', label: '活跃目标', type: 'boolean' },
|
||||||
@@ -346,7 +352,7 @@ function defaultConfig(): MemoryV2AdminConfig {
|
|||||||
candidateMemory: { enabled: false, mode: 'active', minImportance: '0.7', minConfidence: '0.8', maxPending: '500', persistenceEnabled: false },
|
candidateMemory: { enabled: false, mode: 'active', minImportance: '0.7', minConfidence: '0.8', maxPending: '500', persistenceEnabled: false },
|
||||||
runtimeControl: { agentResolveEnabled: false, agentInjectionMode: 'off', agentCanaryUserIds: '', agentResolveLimit: '3', agentResolveTimeoutMs: '1200', promotionEnabled: false, compactionV2Enabled: false, reflectionEnabled: false, lifecycleWorkerEnabled: false, lifecycleRolloutMode: 'off', lifecycleRolloutUserIds: '' },
|
runtimeControl: { agentResolveEnabled: false, agentInjectionMode: 'off', agentCanaryUserIds: '', agentResolveLimit: '3', agentResolveTimeoutMs: '1200', promotionEnabled: false, compactionV2Enabled: false, reflectionEnabled: false, lifecycleWorkerEnabled: false, lifecycleRolloutMode: 'off', lifecycleRolloutUserIds: '' },
|
||||||
policy: { enabled: false, saveExplicit: true, rejectSensitive: true, requireEvidence: true, retentionDays: '365' },
|
policy: { enabled: false, saveExplicit: true, rejectSensitive: true, requireEvidence: true, retentionDays: '365' },
|
||||||
retriever: { enabled: false, episodicEnabled: true, semanticEnabled: true, preferenceEnabled: true, goalEnabled: true, limit: '12', tokenBudget: '1800', timeoutMs: '1200' },
|
retriever: { enabled: false, episodicEnabled: true, episodicMode: 'off', episodicCanaryUserIds: '', semanticEnabled: true, preferenceEnabled: true, goalEnabled: true, limit: '12', tokenBudget: '1800', timeoutMs: '1200' },
|
||||||
lifecycle: { enabled: false, dedupeEnabled: true, conflictReview: true, decayEnabled: false, forgettingEnabled: true, compactIntervalHours: '24' },
|
lifecycle: { enabled: false, dedupeEnabled: true, conflictReview: true, decayEnabled: false, forgettingEnabled: true, compactIntervalHours: '24' },
|
||||||
persona: { enabled: false, provider: 'none', shadowMode: true, maxTokens: '400', cacheTtlSeconds: '300' },
|
persona: { enabled: false, provider: 'none', shadowMode: true, maxTokens: '400', cacheTtlSeconds: '300' },
|
||||||
graph: { enabled: false, provider: 'postgres', maxDepth: '2', relationLimit: '20' },
|
graph: { enabled: false, provider: 'postgres', maxDepth: '2', relationLimit: '20' },
|
||||||
|
|||||||
Reference in New Issue
Block a user